package org.etk.orm.plugins.vt2;
import org.etk.orm.plugins.bean.mapping.jcr.PropertyMetaType;
import org.etk.orm.plugins.bean.type.SimpleTypeMapping;
import org.etk.orm.plugins.bean.type.SimpleTypeProvider;
import org.etk.orm.plugins.bean.type.SimpleTypeResolver;
import org.etk.reflect.api.TypeInfo;
public class ValueTypeFactory {
/** . */
private final SimpleTypeResolver typeResolver;
public ValueTypeFactory(SimpleTypeResolver typeResolver) {
this.typeResolver = typeResolver;
}
public <I> SimpleTypeProvider<I, ?> create(TypeInfo type, PropertyMetaType<I> jcrType) {
SimpleTypeMapping vti = typeResolver.resolveType(type, jcrType);
if (vti == null) {
throw new IllegalArgumentException("could not find type provider for " + type);
}
//
SimpleTypeProvider vt = vti.create();
//
if (!vt.getInternalType().equals(jcrType.getJavaValueType())) {
throw new AssertionError("todo with type " + type + " / property type" + vt);
}
//
return (SimpleTypeProvider<I, ?>)vt;
}
}