Open Source Repository

Home /jodd/jodd-3.3.2 | Repository Home



jodd/typeconverter/impl/ClassArrayConverter.java
// Copyright (c) 2003-2012, Jodd Team (jodd.org). All Rights Reserved.

package jodd.typeconverter.impl;

import jodd.typeconverter.ConvertBean;
import jodd.typeconverter.TypeConverter;

/**
 * Converts given object to <code>Class</code> array.
 * Conversion rules:
 <li><code>null</code> value is returned as <code>null</code>
 <li>object of destination type is simply casted
 <li>single Class is wrapped in 1-length array
 <li>string value is converted to string array (from CSV format) and
 * then each element is converted
 */
public class ClassArrayConverter implements TypeConverter<Class[]{

  protected final ConvertBean convertBean;

  public ClassArrayConverter(ConvertBean convertBean) {
    this.convertBean = convertBean;
  }

  public Class[] convert(Object value) {
    if (value == null) {
      return null;
    }

    Class type = value.getClass();
    if (type == Class[].class) {
      return (Class[]) value;
    }

    if (type == Class.class) {
      return new Class[] {(Classvalue};
    }
    
    String[] classNames = convertBean.toStringArray(value);
    Class[] result = new Class[classNames.length];
    for (int i = 0; i < classNames.length; i++) {
      result[i= convertBean.toClass(classNames[i]);
    }
    return result;
  }

}