Open Source Repository

Home /json/flexjson-2.1 | Repository Home



flexjson/factories/ArrayObjectFactory.java
package flexjson.factories;

import flexjson.ObjectFactory;
import flexjson.ObjectBinder;
import flexjson.JSONException;

import java.lang.reflect.Type;
import java.lang.reflect.Array;
import java.util.List;

public class ArrayObjectFactory implements ObjectFactory {

    public Object instantiate(ObjectBinder context, Object value, Type targetType, Class targetClass) {
        List list = (Listvalue;
        context.getCurrentPath().enqueue("values");
        try {
            Class memberClass = targetClass.getComponentType() != null ? targetClass.getComponentType() : context.findClassAtPathcontext.getCurrentPath() );
            ifmemberClass == null throw new JSONException("Missing concrete class for array.  You might require a use() method.");
            Object array = Array.newInstancememberClass, list.size() );
            forint i = 0; i < list.size(); i++ ) {
                Object v = context.bindlist.get(i), memberClass );
                Array.setarray, i, v );
            }
            return array;
        catchClassNotFoundException ex ) {
            throw new JSONExceptionString.format("%s: Could not find class %s", context.getCurrentPath(), ex.getMessage() ), ex );
        finally {
            context.getCurrentPath().pop();
        }
    }
}