if (cls == null) {
return properties;
}
for (Iterator<JavaField> fieldIt = cls.getDeclaredFields().iterator(); fieldIt.hasNext();) {
JavaField nextField = fieldIt.next();
int modifiers = nextField.getModifiers();
if (!helper.isAnnotationPresent(nextField, XmlTransient.class)) {
if (!Modifier.isTransient(modifiers) && ((Modifier.isPublic(nextField.getModifiers()) && onlyPublic) || !onlyPublic)) {
if (!Modifier.isStatic(modifiers)) {
Property property = buildNewProperty(info, cls, nextField, nextField.getName(), nextField.getResolvedType());
properties.add(property);
} else if (Modifier.isFinal(modifiers) && helper.isAnnotationPresent(nextField, XmlAttribute.class)) {
try {
Property property = buildNewProperty(info, cls, nextField, nextField.getName(), nextField.getResolvedType());
Object value = ((JavaFieldImpl) nextField).get(null);
String stringValue = (String) XMLConversionManager.getDefaultXMLManager().convertObject(value, String.class, property.getSchemaType());
property.setFixedValue(stringValue);
properties.add(property);
} catch (ClassCastException e) {
// do Nothing
} catch (IllegalAccessException e) {
// do Nothing
}
}
}
} else {
// If a property is marked transient ensure it doesn't exist in
// the propOrder
List<String> propOrderList = Arrays.asList(info.getPropOrder());
if (propOrderList.contains(nextField.getName())) {
throw JAXBException.transientInProporder(nextField.getName());
}
}
}
return properties;
}