Improved supports()

This commit is contained in:
Arjen Poutsma
2007-10-22 21:52:00 +00:00
parent beef3660b5
commit b0d1c71cd3
2 changed files with 13 additions and 1 deletions

View File

@@ -34,6 +34,7 @@ import org.exolab.castor.mapping.MappingLoader;
import org.exolab.castor.xml.ClassDescriptorResolverFactory;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.ResolverException;
import org.exolab.castor.xml.UnmarshalHandler;
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.xml.XMLClassDescriptorResolver;
@@ -200,7 +201,12 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
/** Returns <code>true</code> for all classes, i.e. Castor supports arbitrary classes. */
public boolean supports(Class clazz) {
return true;
try {
return classDescriptorResolver.resolve(clazz) != null;
}
catch (ResolverException e) {
return false;
}
}
protected final void marshalDomNode(Object graph, Node node) throws XmlMappingException {

View File

@@ -66,4 +66,10 @@ public class CastorMarshallerTest extends AbstractMarshallerTestCase {
handlerControl.verify();
}
public void testSupports() throws Exception {
assertTrue("CastorMarshaller does not support Flights", marshaller.supports(Flights.class));
assertTrue("CastorMarshaller does not support Flight", marshaller.supports(Flight.class));
}
}