示例#1
0
 private void resolveReferences(TypeDeclaration typeDeclaration)
     throws UnresolvableReferenceException {
   LOG.logDebug(
       "Resolving references in type declaration '"
           + typeDeclaration.getName().getLocalName()
           + "'.");
   if (typeDeclaration instanceof SimpleTypeDeclaration) {
     LOG.logDebug("SimpleType.");
     SimpleTypeDeclaration simpleType = (SimpleTypeDeclaration) typeDeclaration;
     TypeReference typeReference = simpleType.getRestrictionBaseType();
     if (typeReference != null) {
       LOG.logDebug("restriction base='" + typeReference.getName() + "'");
       try {
         resolveType(typeReference);
       } catch (XMLSchemaException e) {
         throw new UndefinedXSDTypeException(
             "Declaration of type '"
                 + typeDeclaration.getName()
                 + "' derives type '"
                 + typeReference.getName()
                 + "' which is not a defined simple type.");
       }
     }
   } else {
     LOG.logDebug("ComplexType.");
     ComplexTypeDeclaration complexType = (ComplexTypeDeclaration) typeDeclaration;
     TypeReference typeReference = complexType.getExtensionBaseType();
     if (typeReference != null) {
       LOG.logDebug("extension base='" + typeReference.getName() + "'");
       try {
         resolveType(typeReference);
       } catch (XMLSchemaException e) {
         throw new UndefinedXSDTypeException(
             "Declaration of type '"
                 + typeDeclaration.getName()
                 + "' derives type '"
                 + typeReference.getName()
                 + "' which is not a defined complex type.");
       }
     }
     ElementDeclaration[] elements = complexType.getExplicitElements();
     for (int i = 0; i < elements.length; i++) {
       resolveReferences(elements[i]);
     }
   }
 }