/** * @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); }
public boolean derivedFromType(TypeDefinition ancestorType, short derivationMethod) { if (ancestorType instanceof XercesTypeDefinition) { XercesTypeDefinition xercesType = (XercesTypeDefinition)ancestorType; return xsTypeDefinition.derivedFromType(xercesType.xsTypeDefinition, mapFlags(derivationMethod)); } else { return xsTypeDefinition.derivedFrom(ancestorType.getNamespace(), ancestorType.getName(), mapFlags(derivationMethod)); } }
if ( candidate.derivedFromType( typeDef, (short) ( DERIVATION_RESTRICTION | DERIVATION_EXTENSION | DERIVATION_UNION | DERIVATION_LIST ) ) ) {