use of org.whole.lang.pojo.model.Parameter in project whole by wholeplatform.
the class PojoNormalizerVisitor method createDefaultTypeInParameters.
public static void createDefaultTypeInParameters(Library entity, IBindingManager bindings) {
Path findAllParametersWithoutType = (Path) PojoTemplateManager.instance().create("findAllParametersWithoutType");
Path findParameterType = (Path) PojoTemplateManager.instance().create("findPropertyType");
bindings.wEnterScope();
for (Parameter parameter : BehaviorUtils.<Parameter>compileAndLazyEvaluate(findAllParametersWithoutType, entity, bindings)) {
PojoDeclaration pojo = (PojoDeclaration) bindings.wGet("pojo");
Type type = BehaviorUtils.<Type>evaluateFirstResult(findParameterType, pojo, bindings);
if (type != null)
parameter.setType(EntityUtils.clone(type));
else
throw new IllegalArgumentException("Missing " + bindings.wStringValue("name") + " property in " + pojo.getName().wStringValue() + " pojo declaration");
}
bindings.wExitScope();
}
use of org.whole.lang.pojo.model.Parameter in project whole by wholeplatform.
the class PojoUtils method createInstanceUsingConstructor.
public static Object createInstanceUsingConstructor(IEntity fromEntity, PojoDeclaration pojoDeclaration, Library library) throws Exception {
ReferenceType referenceType = pojoDeclaration.getName();
Class<?> clazz = Class.forName(referenceType.getValue(), true, ReflectionFactory.getPlatformClassLoader());
Constructor constructor = findConstructor(pojoDeclaration);
int params = constructor.getParameters().wSize();
List<Class<?>> parameterTypes = new ArrayList<Class<?>>(params);
List<Object> initargs = new ArrayList<Object>(params);
IBindingManager bindings = BindingManagerFactory.instance.createArguments();
Expression findPropertyByTemplate = (Expression) PojoTemplateManager.instance().create("findPropertyByTemplate");
Expression findParameterByTemplate = (Expression) PojoTemplateManager.instance().create("findParameterByTemplate");
IEntityIterator<Parameter> iterator = BehaviorUtils.<Parameter>compileAndLazyEvaluate(findParameterByTemplate, constructor, bindings);
while (iterator.hasNext()) {
iterator.next();
Property property = BehaviorUtils.<Property>evaluateFirstResult(findPropertyByTemplate, pojoDeclaration, bindings);
Type type = property.getType();
Name template = property.getTemplate();
FeatureDescriptor fd = fromEntity.wGetEntityDescriptor().getFeatureDescriptorEnum().valueOf(template.wStringValue());
IEntity fieldEntity = fromEntity.wGet(fd);
parameterTypes.add(getClass(type));
initargs.add(Matcher.match(PrimitiveType, type) ? fieldEntity.wGetValue() : create(fieldEntity, library));
}
return clazz.getConstructor(parameterTypes.toArray(new Class<?>[0])).newInstance(initargs.toArray());
}
use of org.whole.lang.pojo.model.Parameter in project whole by wholeplatform.
the class PojoNormalizerVisitor method createDefaultTemplateInParameters.
public static void createDefaultTemplateInParameters(Library entity, IBindingManager bindings) {
Path findAllParametersWithoutTemlate = (Path) PojoTemplateManager.instance().create("findAllParametersWithoutTemlate");
Path findParameterTemplate = (Path) PojoTemplateManager.instance().create("findPropertyTemplate");
bindings.wEnterScope();
for (Parameter parameter : BehaviorUtils.<Parameter>compileAndLazyEvaluate(findAllParametersWithoutTemlate, entity, bindings)) {
PojoDeclaration pojo = (PojoDeclaration) bindings.wGet("pojo");
Name name = BehaviorUtils.<Name>evaluateFirstResult(findParameterTemplate, pojo, bindings);
if (name != null)
parameter.setTemplate(EntityUtils.clone(name));
}
bindings.wExitScope();
}
use of org.whole.lang.pojo.model.Parameter in project whole by wholeplatform.
the class ParameterPart method getModelSpecificChildren.
protected List<IEntity> getModelSpecificChildren() {
Parameter parameter = getModelEntity();
List<IEntity> list = new ArrayList<IEntity>(4);
list.add(parameter.getAnnotations());
list.add(parameter.getType());
list.add(parameter.getName());
list.add(parameter.getTemplate());
return list;
}
Aggregations