/**
* @see org.apache.ode.utils.xsd.SchemaModel#isCompatible(javax.xml.namespace.QName,
* javax.xml.namespace.QName)
*/
public boolean isCompatible(QName type1, QName type2) {
XSTypeDefinition typeDef1;
XSTypeDefinition typeDef2;
if (knowsElementType(type1)) {
typeDef1 = _model.getElementDeclaration(type1.getLocalPart(),
type1.getNamespaceURI())
.getTypeDefinition();
} else if (knowsSchemaType(type1)) {
typeDef1 = _model.getTypeDefinition(type1.getLocalPart(),
type1.getNamespaceURI());
} else {
throw new IllegalArgumentException("unknown schema type: " + type1);
}
if (knowsElementType(type2)) {
typeDef2 = _model.getElementDeclaration(type2.getLocalPart(),
type2.getNamespaceURI())
.getTypeDefinition();
} else if (knowsSchemaType(type2)) {
typeDef2 = _model.getTypeDefinition(type2.getLocalPart(),
type2.getNamespaceURI());
} else {
throw new IllegalArgumentException("unknown schema type: " + type2);
}
return typeDef1.derivedFromType(typeDef2, (short)0)
|| typeDef2.derivedFromType(typeDef1, (short)0);
}