AbstractValueFactoryMetaData factory = new AbstractValueFactoryMetaData(annotation.bean(), annotation.method());
if (isAttributePresent(annotation.defaultValue()))
factory.setDefaultValue(annotation.defaultValue());
List<ParameterMetaData> parameters = new ArrayList<ParameterMetaData>();
if (isAttributePresent(annotation.parameter()))
parameters.add(new AbstractParameterMetaData(String.class.getName(), annotation.parameter()));
if (annotation.parameters().length > 0)
{
if (parameters.size() > 0)
throw new IllegalArgumentException("Cannot set both parameter and parameters!");
for(Parameter parameter : annotation.parameters())
{
AbstractParameterMetaData apmd = new AbstractParameterMetaData(createValueMetaData(parameter));
if (isAttributePresent(parameter.type()))
apmd.setType(parameter.type().getName());
parameters.add(apmd);
}
}
factory.setParameters(parameters);
factory.setDependentState(new ControllerState(annotation.dependantState()));