if (cls == null) {
return properties;
}
for (Iterator<JavaField> fieldIt = cls.getDeclaredFields().iterator(); fieldIt.hasNext();) {
JavaField nextField = fieldIt.next();
if (!helper.isAnnotationPresent(nextField, XmlTransient.class)) {
int modifiers = nextField.getModifiers();
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;
}