in juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java [3784:3867]
public <T> T validateOutput(T o, BeanContext bc) throws SchemaValidationException {
if (o == null) {
if (! isValidRequired(o))
throw new SchemaValidationException("Required value not provided.");
return o;
}
ClassMeta<?> cm = bc.getClassMetaForObject(o);
switch (getType(cm)) {
case ARRAY: {
if (cm.isArray()) {
if (! isValidMinItems(o))
throw new SchemaValidationException("Minimum number of items not met.");
if (! isValidMaxItems(o))
throw new SchemaValidationException("Maximum number of items exceeded.");
if (! isValidUniqueItems(o))
throw new SchemaValidationException("Duplicate items not allowed.");
HttpPartSchema items = getItems();
if (items != null)
for (int i = 0; i < Array.getLength(o); i++)
items.validateOutput(Array.get(o, i), bc);
} else if (cm.isCollection()) {
Collection<?> c = (Collection<?>)o;
if (! isValidMinItems(c))
throw new SchemaValidationException("Minimum number of items not met.");
if (! isValidMaxItems(c))
throw new SchemaValidationException("Maximum number of items exceeded.");
if (! isValidUniqueItems(c))
throw new SchemaValidationException("Duplicate items not allowed.");
HttpPartSchema items = getItems();
if (items != null)
c.forEach(x -> items.validateOutput(x, bc));
}
break;
}
case INTEGER: {
if (cm.isNumber()) {
Number n = (Number)o;
if (! isValidMinimum(n))
throw new SchemaValidationException("Minimum value not met.");
if (! isValidMaximum(n))
throw new SchemaValidationException("Maximum value exceeded.");
if (! isValidMultipleOf(n))
throw new SchemaValidationException("Multiple-of not met.");
}
break;
}
case NUMBER: {
if (cm.isNumber()) {
Number n = (Number)o;
if (! isValidMinimum(n))
throw new SchemaValidationException("Minimum value not met.");
if (! isValidMaximum(n))
throw new SchemaValidationException("Maximum value exceeded.");
if (! isValidMultipleOf(n))
throw new SchemaValidationException("Multiple-of not met.");
}
break;
}
case OBJECT: {
if (cm.isMapOrBean()) {
Map<?,?> m = cm.isMap() ? (Map<?,?>)o : bc.toBeanMap(o);
if (! isValidMinProperties(m))
throw new SchemaValidationException("Minimum number of properties not met.");
if (! isValidMaxProperties(m))
throw new SchemaValidationException("Maximum number of properties exceeded.");
m.forEach((k,v) -> {
String key = k.toString();
HttpPartSchema s2 = getProperty(key);
if (s2 != null)
s2.validateOutput(v, bc);
});
} else if (cm.isBean()) {
}
break;
}
case BOOLEAN:
case FILE:
case STRING:
case NO_TYPE:
break;
}
return o;
}