Hi,
I'm mapping XML to Java objects using a custom mapping.xml with 1.0.5. I
have some fields marked as required="true", but the required checks
don't look like they're happening even with Unmarshaller.setValidate(true).
I've had a dig through the UnmarshalHandler code and think I have found
why. In processAttributes(AttributeSet, XMLClassDescriptor) there is
this code:
for (int i = 0; i < descriptors.length; i++) {
XMLFieldDescriptor descriptor = descriptors[i];
String name = descriptor.getXMLName();
String namespace = descriptor.getNameSpaceURI();
int index = atts.getIndex(name, namespace);
if (index >= 0) {
processedAtts[index] = true;
}
//-- otherwise...for now just continue, this code needs to
//-- change when we upgrade to new event API
else continue;
try {
processAttribute(.....);
}
...
If an attribute is missing then index will be -1 and the continue will
be hit. The call to processAttribute will never happen and this appears
to be where the required flag is checked.
I'm not very familiar with the castor code, so it's possible that I'm
just talking rubbish. I don't have an easily submittable test case for
this, though I could knock one up if need be.
Thanks,
-Guy Coleman
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email