PObject jsonToUse = requestJsonAttributes;
if (defaultVal != null) {
final JSONObject obj = new JSONObject();
obj.put(attributeName, defaultVal);
PObject[] pValues = new PObject[]{requestJsonAttributes, new PJsonObject(obj, "default_" + attributeName)};
jsonToUse = new PMultiObject(pValues);
}
value = parser.parsePrimitive(attributeName, pAtt.getValueClass(), jsonToUse);
} else if (attribute instanceof DataSourceAttribute) {
DataSourceAttribute dsAttribute = (DataSourceAttribute) attribute;
value = dsAttribute.parseAttribute(parser, template, requestJsonAttributes.optArray(attributeName));
} else if (attribute instanceof ReflectiveAttribute) {
boolean errorOnExtraParameters = template.getConfiguration().isThrowErrorOnExtraParameters();
ReflectiveAttribute<?> rAtt = (ReflectiveAttribute<?>) attribute;
value = rAtt.createValue(template);
PObject pValue = requestJsonAttributes.optObject(attributeName);
if (pValue != null) {
PObject[] pValues = new PObject[]{pValue, rAtt.getDefaultValue()};
pValue = new PMultiObject(pValues);
} else {
pValue = rAtt.getDefaultValue();
}
parser.parse(errorOnExtraParameters, pValue, value);
} else {