neilg       2003/07/30 12:22:22

  Modified:    java/samples/xni PSVIWriter.java
  Log:
  fixing several small bugs in the PSVIWriter, found and fixed by Peter McCracken.
  
  Revision  Changes    Path
  1.20      +30 -10    xml-xerces/java/samples/xni/PSVIWriter.java
  
  Index: PSVIWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/samples/xni/PSVIWriter.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- PSVIWriter.java   28 Jul 2003 15:38:31 -0000      1.19
  +++ PSVIWriter.java   30 Jul 2003 19:22:22 -0000      1.20
  @@ -1063,18 +1063,18 @@
       }
   
       private void processPSVISchemaComponents(XSNamespaceItem item) {
  -        // typeDefinitions
  -        XSNamedMap components =
  -            item == null
  -                ? null
  -                : item.getComponents(XSConstants.TYPE_DEFINITION);
  -
  -        if (components == null || components.getLength() == 0) {
  +        if (item == null) {
               sendEmptyElementEvent("psv:schemaComponents");
               return;
  -
           }
  +
  +        // it we happen to not get any components, this will output a start tag
  +        // and a close tag, instead of an empty element tag.  This isn't a big
  +        // deal, though
           sendIndentedElement("psv:schemaComponents");
  +
  +        // typeDefinitions
  +        XSNamedMap components = item.getComponents(XSConstants.TYPE_DEFINITION);
           for (int i = 0; i < components.getLength(); i++) {
               processPSVITypeDefinition((XSTypeDefinition)components.item(i));
           }
  @@ -1642,7 +1642,7 @@
               sendIndentedElement("psv:term");
               switch (part.getTerm().getType()) {
                   case XSConstants.ELEMENT_DECLARATION :
  -                    processPSVIElementDeclaration(
  +                    processPSVIElementDeclarationOrRef(
                           (XSElementDeclaration)part.getTerm());
                       break;
                   case XSConstants.MODEL_GROUP :
  @@ -1747,6 +1747,26 @@
           }
       }
   
  +    private void processPSVIElementDeclarationRef(XSElementDeclaration elem) {
  +        if (elem == null)
  +            return;
  +        processPSVIElementRef("psv:elementDeclaration", elem);
  +    }
  +    
  +    private void processPSVIElementDeclarationOrRef(XSElementDeclaration elem) {
  +        if (elem == null)
  +            return;
  +        // for global attributes, and attributes that have already been printed,
  +        // we always want to print references
  +        if (elem.getScope() == XSConstants.SCOPE_GLOBAL
  +            || fDefined.contains(this.getID(elem))) {
  +                processPSVIElementDeclarationRef(elem);
  +        }
  +        else {
  +            processPSVIElementDeclaration(elem);
  +        }
  +    }
  +    
       /**
        * This method writes an empty element at the current indent level.
        *
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to