jochen      2005/07/28 12:49:25

  Modified:    src/js/org/apache/ws/jaxme/js Tag: JAXME-28 JavaSource.java
                        JavaSourceObject.java JavaQNameImpl.java
                        AbstractJavaMethod.java
               src/jaxme/org/apache/ws/jaxme/generator/sg/impl Tag:
                        JAXME-28 JAXBTypeSG.java LocalContext.java
                        GlobalContext.java ParsePrintSG.java
               src/js/org/apache/ws/jaxme/js/util Tag: JAXME-28
                        JavaParser.java
               src/jaxme/org/apache/ws/jaxme/junit Tag: JAXME-28
                        MarshallerTest.java
               src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg Tag:
                        JAXME-28 BeanGeneratingVisitor.java
                        SequenceHandlerSG.java GroupHandlerSG.java
                        ParticleVisitorImpl.java
               src/js/org/apache/ws/jaxme/js/pattern Tag: JAXME-28
                        CompiledClassReflector.java Ant.java
                        ChainGenerator.java
               src/js/org/apache/ws/jaxme/js/apps Tag: JAXME-28
                        XmlRpcClientGenerator.java
               src/test/jaxb Tag: JAXME-28 types.xsd
               src/jaxme/org/apache/ws/jaxme/generator/types Tag: JAXME-28
                        ListTypeSGImpl.java
               .        Tag: JAXME-28 .classpath
  Log:
  Got rid of JavaQNameImpl.getInstance(String, boolean).
  Submitted by: Frederic Ahring, fahring at de.ibm.com
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.10.2.3  +6 -6      ws-jaxme/src/js/org/apache/ws/jaxme/js/JavaSource.java
  
  Index: JavaSource.java
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/JavaSource.java,v
  retrieving revision 1.10.2.2
  retrieving revision 1.10.2.3
  diff -u -r1.10.2.2 -r1.10.2.3
  --- JavaSource.java   27 Jul 2005 19:46:11 -0000      1.10.2.2
  +++ JavaSource.java   28 Jul 2005 19:49:23 -0000      1.10.2.3
  @@ -1010,21 +1010,21 @@
        * type and default protection.
        */
       public JavaMethod newJavaMethod(String pName, String pType) {
  -     return newJavaMethod(pName, JavaQNameImpl.getInstance(pType, true), 
(Protection) null);
  +     return newJavaMethod(pName, JavaQNameImpl.getInstance(pType), 
(Protection) null);
       }
       
       /** Creates a new JavaMethod with the given name, return
        * type and protection.
        */
       public JavaMethod newJavaMethod(String pName, String pType, Protection 
pProtection) {
  -     return newJavaMethod(pName, JavaQNameImpl.getInstance(pType, true), 
pProtection);
  +     return newJavaMethod(pName, JavaQNameImpl.getInstance(pType), 
pProtection);
       }
       
       /** Creates a new JavaMethod with the given name, return
        * type and protection.
        */
       public JavaMethod newJavaMethod(String pName, String pType, String 
pProtection) {
  -     return newJavaMethod(pName, JavaQNameImpl.getInstance(pType, true),
  +     return newJavaMethod(pName, JavaQNameImpl.getInstance(pType),
                        Protection.valueOf(pProtection));
       }
       
  @@ -1160,14 +1160,14 @@
        * protection.
        */
       public JavaField newJavaField(String pName, String pType, Protection 
pProtection) {
  -     return newJavaField(pName, JavaQNameImpl.getInstance(pType, true), 
pProtection);
  +     return newJavaField(pName, JavaQNameImpl.getInstance(pType), 
pProtection);
       }
       
       /** Creates a new JavaField with the given name, type and
        * protection.
        */
       public JavaField newJavaField(String pName, String pType, String 
pProtection) {
  -     return newJavaField(pName, JavaQNameImpl.getInstance(pType, true),
  +     return newJavaField(pName, JavaQNameImpl.getInstance(pType),
                        Protection.valueOf(pProtection));
       }
       
  @@ -1175,7 +1175,7 @@
        * default protection.
        */
       public JavaField newJavaField(String pName, String pType) {
  -     return newJavaField(pName, JavaQNameImpl.getInstance(pType, true), 
(Protection) null);
  +     return newJavaField(pName, JavaQNameImpl.getInstance(pType), 
(Protection) null);
       }
       
       /** Creates a new JavaField with the given name, type and
  
  
  
  1.4.2.1   +1 -1      
ws-jaxme/src/js/org/apache/ws/jaxme/js/JavaSourceObject.java
  
  Index: JavaSourceObject.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/JavaSourceObject.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- JavaSourceObject.java     18 May 2005 22:09:10 -0000      1.4
  +++ JavaSourceObject.java     28 Jul 2005 19:49:23 -0000      1.4.2.1
  @@ -34,7 +34,7 @@
       if (pType == null) {
         throw new NullPointerException("Type must not be null");
       }
  -    setType(JavaQNameImpl.getInstance(pType, true));
  +    setType(JavaQNameImpl.getInstance(pType));
       setProtection(pProtection);
     }
   
  
  
  
  1.4.2.1   +12 -23    ws-jaxme/src/js/org/apache/ws/jaxme/js/JavaQNameImpl.java
  
  Index: JavaQNameImpl.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/JavaQNameImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- JavaQNameImpl.java        11 May 2005 10:41:49 -0000      1.4
  +++ JavaQNameImpl.java        28 Jul 2005 19:49:23 -0000      1.4.2.1
  @@ -259,32 +259,21 @@
       return result;
     }
   
  -  /** <p>Equivalent to <code>getInstance(pClassName, false)</code>.</p>
  -   */
  -  public static JavaQName getInstance(String pClassName) {
  -    return getInstance(null, pClassName);
  -  }
  -
     /** <p>Returns an instance with the given class name.</p>
      * @param pClassName The class name
  -   * @param pAssumePackage True, if the class name is assumed to contain a
  -   *   package prefix, in which case the prefix up to the last dot will be
  -   *   the package name and the suffix following the last dot will be the
  -   *   class name. Otherwise the root package is assumed.
      */
  -  public static JavaQName getInstance(String pClassName, boolean 
pAssumePackage) {
  -      if (!pAssumePackage) {
  -             return getInstance(pClassName);
  -      } else {
  -             int offset = pClassName.lastIndexOf('.');
  -             if (offset == -1) {
  -                     return getInstance(pClassName);
  -             } else {
  -                     return getInstance(pClassName.substring(0, offset), 
pClassName.substring(offset+1));
  -             }
  -      }
  +  public static JavaQName getInstance(String pClassName) {
  +       int offset = pClassName.lastIndexOf('.');
  +       if (offset == -1) {
  +               return getInstance(null, pClassName);
  +       } else {
  +               return getInstance(pClassName.substring(0, offset), 
pClassName.substring(offset+1));
  +       }
     }
   
  +  /** Returns an instance of [EMAIL PROTECTED] JavaQName}, which represents
  +   * an array. The array elements are instances of <code>pQName</code>.
  +   */
     public static JavaQName getArray(JavaQName pQName) {
       String name = pQName.toString() + "[]";
       JavaQName result;
  
  
  
  1.4.2.2   +2 -2      
ws-jaxme/src/js/org/apache/ws/jaxme/js/AbstractJavaMethod.java
  
  Index: AbstractJavaMethod.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/AbstractJavaMethod.java,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- AbstractJavaMethod.java   19 Jul 2005 19:55:32 -0000      1.4.2.1
  +++ AbstractJavaMethod.java   28 Jul 2005 19:49:23 -0000      1.4.2.2
  @@ -97,7 +97,7 @@
      * @deprecated Use [EMAIL PROTECTED] #addThrows(JavaQName)}
      */
     public void addThrows(String e) {
  -    exceptions.add(JavaQNameImpl.getInstance(e, true));
  +    exceptions.add(JavaQNameImpl.getInstance(e));
       if (e == null) {
         throw new NullPointerException("The exception argument must not be 
null.");
       }
  @@ -138,7 +138,7 @@
         throw new NullPointerException("param argument must not be null");
       }
       p = p.trim();
  -    addParam(JavaQNameImpl.getInstance(p, true), v);
  +    addParam(JavaQNameImpl.getInstance(p), v);
     }
   
     /** <p>Adds a parameter that this method takes.</p>
  
  
  
  No                   revision
  No                   revision
  1.16.2.1  +1 -1      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBTypeSG.java
  
  Index: JAXBTypeSG.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBTypeSG.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- JAXBTypeSG.java   7 May 2005 19:42:26 -0000       1.16
  +++ JAXBTypeSG.java   28 Jul 2005 19:49:23 -0000      1.16.2.1
  @@ -393,7 +393,7 @@
                                                         SchemaSG pSchema,
                                                         XSType pType)
         throws SAXException {
  -    JavaQName qName = JavaQNameImpl.getInstance(pJavaType.getName(), true);
  +    JavaQName qName = JavaQNameImpl.getInstance(pJavaType.getName());
       if (BooleanSG.BOOLEAN_TYPE.equals(qName)) {
        return new BooleanSG(pFactory, pSchema, pType);
       } else if (BooleanSG.BOOLEAN_OBJECT_TYPE.equals(qName)) {
  
  
  
  1.4.4.1   +1 -1      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/LocalContext.java
  
  Index: LocalContext.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/LocalContext.java,v
  retrieving revision 1.4
  retrieving revision 1.4.4.1
  diff -u -r1.4 -r1.4.4.1
  --- LocalContext.java 10 Mar 2005 10:14:08 -0000      1.4
  +++ LocalContext.java 28 Jul 2005 19:49:23 -0000      1.4.4.1
  @@ -65,7 +65,7 @@
         
setXMLImplementationName(JavaQNameImpl.getInnerInstance(pContext.getXMLImplementationName(),
                                                                 className + 
"Impl"));
       } else {
  -      setXMLImplementationName(JavaQNameImpl.getInstance(implementationName, 
true));
  +      
setXMLImplementationName(JavaQNameImpl.getInstance(implementationName));
       }
       
setXMLHandlerName(JavaQNameImpl.getInnerInstance(pContext.getXMLHandlerName(), 
className + "Handler"));
       
setXMLSerializerName(JavaQNameImpl.getInnerInstance(pContext.getXMLSerializerName(),
 className + "Driver"));
  
  
  
  1.6.4.1   +1 -1      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/GlobalContext.java
  
  Index: GlobalContext.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/GlobalContext.java,v
  retrieving revision 1.6
  retrieving revision 1.6.4.1
  diff -u -r1.6 -r1.6.4.1
  --- GlobalContext.java        10 Mar 2005 10:14:07 -0000      1.6
  +++ GlobalContext.java        28 Jul 2005 19:49:23 -0000      1.6.4.1
  @@ -92,7 +92,7 @@
                        
setXMLImplementationName(JavaQNameImpl.getInstance(xmlInterfaceName.getPackageName()
 + ".impl",
                                        xmlInterfaceName.getClassName() + 
"Impl"));
                } else {
  -                     
setXMLImplementationName(JavaQNameImpl.getInstance(implementationName, true));
  +                     
setXMLImplementationName(JavaQNameImpl.getInstance(implementationName));
                }
                
setXMLHandlerName(JavaQNameImpl.getInstance(xmlInterfaceName.getPackageName() + 
".impl",
                                xmlInterfaceName.getClassName() + "Handler"));
  
  
  
  1.8.2.1   +3 -3      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ParsePrintSG.java
  
  Index: ParsePrintSG.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ParsePrintSG.java,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- ParsePrintSG.java 18 May 2005 22:09:10 -0000      1.8
  +++ ParsePrintSG.java 28 Jul 2005 19:49:23 -0000      1.8.2.1
  @@ -38,7 +38,7 @@
           if (javaType.getName() == null) {
                return pController.getRuntimeType();
           } else {
  -            return JavaQNameImpl.getInstance(javaType.getName(), true);
  +            return JavaQNameImpl.getInstance(javaType.getName());
           }
       }
   
  @@ -51,7 +51,7 @@
               qName = getType(pController);
               method = pMethod;
           } else {
  -            qName = JavaQNameImpl.getInstance(pMethod.substring(0, offset), 
true);
  +            qName = JavaQNameImpl.getInstance(pMethod.substring(0, offset));
               method = pMethod.substring(offset+1);
           }
           pList.add(qName);
  @@ -91,7 +91,7 @@
           if (parseMethod.startsWith("new")
               &&  parseMethod.length() > 3
               &&  Character.isWhitespace(parseMethod.charAt(3))) {
  -             JavaQName qName = 
JavaQNameImpl.getInstance(parseMethod.substring(3).trim(), true);
  +             JavaQName qName = 
JavaQNameImpl.getInstance(parseMethod.substring(3).trim());
               list.add("new ");
               list.add(qName);
           } else {
  
  
  
  No                   revision
  No                   revision
  1.8.2.1   +3 -8      
ws-jaxme/src/js/org/apache/ws/jaxme/js/util/JavaParser.java
  
  Index: JavaParser.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/util/JavaParser.java,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- JavaParser.java   8 Jul 2005 14:45:07 -0000       1.8
  +++ JavaParser.java   28 Jul 2005 19:49:24 -0000      1.8.2.1
  @@ -119,7 +119,7 @@
       }
   
       private void parseImportStatement(AST pAST) {
  -        addImportStatement(JavaQNameImpl.getInstance(parseIdentifier(pAST), 
true));
  +        addImportStatement(JavaQNameImpl.getInstance(parseIdentifier(pAST)));
       }
   
       private String parseIdentifier(AST pAST) {
  @@ -195,12 +195,7 @@
           String className = classNameAST.getText();
           if (pOuterClass == null) {
               String packageName = getPackageName();
  -            JavaQName qName;
  -            if (packageName == null) {
  -                qName = JavaQNameImpl.getInstance(className);
  -            } else {
  -                qName = JavaQNameImpl.getInstance(packageName, className);
  -            }
  +            JavaQName qName = JavaQNameImpl.getInstance(packageName, 
className);
               JavaSource js = factory.newJavaSource(qName, 
JavaSource.DEFAULT_PROTECTION);
               generatedClasses.add(js);
               return js;
  @@ -298,7 +293,7 @@
                   return qName;
               }
           }
  -        return JavaQNameImpl.getInstance(pName, true);
  +        return JavaQNameImpl.getInstance(pName);
       }
   
       private void parseImplementsOrExtends(JavaSource pSource, AST pAST, int 
pType) {
  
  
  
  No                   revision
  No                   revision
  1.23.2.1  +24 -4     
ws-jaxme/src/jaxme/org/apache/ws/jaxme/junit/MarshallerTest.java
  
  Index: MarshallerTest.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/junit/MarshallerTest.java,v
  retrieving revision 1.23
  retrieving revision 1.23.2.1
  diff -u -r1.23 -r1.23.2.1
  --- MarshallerTest.java       30 Jun 2005 08:16:14 -0000      1.23
  +++ MarshallerTest.java       28 Jul 2005 19:49:24 -0000      1.23.2.1
  @@ -33,7 +33,6 @@
   import javax.xml.bind.Marshaller;
   import javax.xml.bind.UnmarshalException;
   import javax.xml.bind.Unmarshaller;
  -import javax.xml.bind.ValidationException;
   import javax.xml.namespace.QName;
   import javax.xml.parsers.ParserConfigurationException;
   import javax.xml.parsers.SAXParser;
  @@ -51,6 +50,7 @@
   import org.apache.ws.jaxme.test.misc.types.AllSimpleTypes;
   import org.apache.ws.jaxme.test.misc.types.AllTypesElement;
   import org.apache.ws.jaxme.test.misc.types.Author;
  +import org.apache.ws.jaxme.test.misc.types.Html;
   import org.apache.ws.jaxme.test.misc.types.ObjectFactory;
   import org.apache.ws.jaxme.test.misc.types.impl.AllElementImpl;
   import org.apache.ws.jaxme.test.misc.types.impl.AllSimpleTypesImpl;
  @@ -64,8 +64,6 @@
   import org.xml.sax.XMLReader;
   import org.xml.sax.helpers.DefaultHandler;
   
  -import sun.security.validator.ValidatorException;
  -
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
  @@ -619,4 +617,26 @@
                        fail("Unexpected throwable " + t);
                }
        }
  +
  +     /** Tests marshalling and unmarshalling of a mixed content element.
  +      */
  +     public void testMixedContent() throws Exception {
  +             final String html =
  +                     "<ex:html 
xmlns:ex=\"http://ws.apache.org/jaxme/test/misc/types\";>\n" +
  +                     "  xyz<ex:dummy>012</ex:dummy>\n" +
  +                     "  <ex:head><ex:title>foo bar</ex:title></ex:head>\n" +
  +                     "  <ex:body><ex:p/></ex:body>\n" +
  +                     "</ex:html>";
  +             InputSource isource = new InputSource(new StringReader(html));
  +             isource.setSystemId("mixedContent.xml");
  +             JAXBContext ctx = getJAXBContext(Html.class);
  +             Html htmlElem = (Html) 
ctx.createUnmarshaller().unmarshal(isource);
  +             StringWriter sw = new StringWriter();
  +             Marshaller m = ctx.createMarshaller();
  +             m.setProperty(JMMarshallerImpl.JAXME_XML_DECLARATION, 
Boolean.FALSE);
  +             m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
  +             m.marshal(htmlElem, sw);
  +             String got = sw.toString();
  +             assertEquals(html, got);
  +     }
   }
  
  
  
  No                   revision
  No                   revision
  1.4.2.2   +130 -54   
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/BeanGeneratingVisitor.java
  
  Index: BeanGeneratingVisitor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/BeanGeneratingVisitor.java,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- BeanGeneratingVisitor.java        15 Jul 2005 21:01:17 -0000      1.4.2.1
  +++ BeanGeneratingVisitor.java        28 Jul 2005 19:49:24 -0000      1.4.2.2
  @@ -18,7 +18,6 @@
   import org.apache.ws.jaxme.js.JavaQName;
   import org.apache.ws.jaxme.js.JavaSource;
   import org.xml.sax.SAXException;
  -import org.xml.sax.SAXParseException;
   
   
   /** Implementation of a
  @@ -29,6 +28,10 @@
        private final JavaSource js;
        private JavaMethod mixedContentMethod;
        private boolean isMixed;
  +     private ParticleSG generalContentGroupParticle;
  +     private int generalContentGroupParticleLevel;
  +     private boolean isInInheritedContentGroup;
  +     private int inheritedContentGroupLevel;
        private ComplexTypeSG ct;
   
        /** Creates a new instance generating methods into the
  @@ -105,72 +108,63 @@
                }
        }
   
  -     private boolean isInheritedParticle(ParticleSG pParticle) throws 
SAXException {
  -             String propertyName = 
pParticle.getPropertySG().getPropertyName();
  -             if (ct.getTypeSG().isExtension()) {
  -                     TypeSG extType = ct.getTypeSG().getExtendedType();
  -                     if (extType.isComplex()  &&  
!extType.getComplexTypeSG().hasSimpleContent()) {
  -                             ParticleSG[] inheritedParticles = 
extType.getComplexTypeSG().getComplexContentSG().getElementParticles();
  -                             for (int i = 0;  i < inheritedParticles.length; 
 i++) {
  -                                     if 
(inheritedParticles[i].getPropertySG().getPropertyName().equals(propertyName)) {
  -                                             return true;
  -                                     }
  -                             }
  -                     }
  -             }
  -             return false;
  -     }
  -
        private void elementParticle(ParticleSG pParticle) throws SAXException {
  -             if (isInheritedParticle(pParticle)) {
  +             if (isInInheritedContentGroup) {
                        return;
                }
  -             final JavaSource pJs = this.js;
                final PropertySG elementSG = pParticle.getPropertySG();
                if (isMixed) {
  -                     GroupSG group = getCurrentGroupParticle().getGroupSG();
  -                     JavaQName qName = GroupUtil.getContentClass(group, 
pParticle, pJs.getQName());
  -                     JavaSource js;
  -                     if (qName.isInnerClass()) {
  -                             js = 
pJs.newJavaInnerClass(qName.getInnerClassName(), JavaSource.PUBLIC);
  -                             if (!pJs.isInterface()) {
  -                                     js.setStatic(true);
  -                             }
  -                     } else {
  -                             js = pJs.getFactory().newJavaSource(qName, 
JavaSource.PUBLIC);
  -                     }
  -                     if (pJs.isInterface()) {
  -                             js.setType(JavaSource.INTERFACE);
  -                     } else {
  -                             
js.addImplements(GroupUtil.getContentClass(group, pParticle, 
ct.getClassContext().getXMLInterfaceName()));
  -                     }
  -                     PropertySGChain chain = ((PropertySGImpl) 
elementSG).getHeadOfChain();
  -                     PropertySGChain head = new PropertySGChainImpl(chain){
  -                             public String getXMLFieldName(PropertySG 
pController) throws SAXException {
  -                                     return "_value";
  -                             }
  -                             public String getPropertyName(PropertySG 
pController) throws SAXException {
  -                                     return "value";
  -                             }
  -                     };
  -                     PropertySGImpl pSG = new PropertySGImpl(head);
  -                     pSG.generate(js);
  +                     addGeneralContentParticle(pParticle, js, elementSG, 
getCurrentGroupParticle().getGroupSG());
  +             } else if (isInGeneralContentGroupParticle()) {
  +                     addGeneralContentParticle(pParticle, js, elementSG, 
generalContentGroupParticle.getGroupSG());
                } else {
  -                     elementSG.generate(pJs);
  +                     elementSG.generate(js);
                }
   
                ObjectSG oSG = pParticle.getObjectSG();
                TypeSG typeSG = oSG.getTypeSG();
  -             if (!typeSG.isGlobalType()  &&  !typeSG.isGlobalClass()  &&  
typeSG.isComplex()) {
  +             if (typeSG.isComplex()  &&  !typeSG.isGlobalType()  &&  
!typeSG.isGlobalClass()) {
                        ComplexTypeSG complexTypeSG = typeSG.getComplexTypeSG();
  -                     if (pJs.isInterface()) {
  -                             complexTypeSG.getXMLInterface(pJs);
  +                     if (js.isInterface()) {
  +                             complexTypeSG.getXMLInterface(js);
                        } else {
  -                             complexTypeSG.getXMLImplementation(pJs);
  +                             complexTypeSG.getXMLImplementation(js);
                        }
           }
        }
   
  +     private void addGeneralContentParticle(ParticleSG pParticle, final 
JavaSource pJs, final PropertySG elementSG, GroupSG pGroup) throws SAXException 
{
  +             if (!pParticle.getObjectSG().getTypeSG().isComplex()) {
  +                     return;
  +             }
  +             JavaQName qName = GroupUtil.getContentClass(pGroup, pParticle, 
pJs.getQName());
  +             JavaSource js;
  +             if (qName.isInnerClass()) {
  +                     js = pJs.newJavaInnerClass(qName.getInnerClassName(), 
JavaSource.PUBLIC);
  +                     if (!pJs.isInterface()) {
  +                             js.setStatic(true);
  +                     }
  +             } else {
  +                     js = pJs.getFactory().newJavaSource(qName, 
JavaSource.PUBLIC);
  +             }
  +             if (pJs.isInterface()) {
  +                     js.setType(JavaSource.INTERFACE);
  +             } else {
  +                     js.addImplements(GroupUtil.getContentClass(pGroup, 
pParticle, ct.getClassContext().getXMLInterfaceName()));
  +             }
  +             PropertySGChain chain = ((PropertySGImpl) 
elementSG).getHeadOfChain();
  +             PropertySGChain head = new PropertySGChainImpl(chain){
  +                     public String getXMLFieldName(PropertySG pController) 
throws SAXException {
  +                             return "_value";
  +                     }
  +                     public String getPropertyName(PropertySG pController) 
throws SAXException {
  +                             return "value";
  +                     }
  +             };
  +             PropertySGImpl pSG = new PropertySGImpl(head);
  +             pSG.generate(js);
  +     }
  +
        public void simpleElementParticle(ParticleSG pParticle) throws 
SAXException {
                elementParticle(pParticle);
        }
  @@ -183,11 +177,93 @@
                throw new IllegalStateException("TODO: Add support for 
wildcards");
        }
   
  +     private class ContentGroupCounter extends ParticleVisitorImpl {
  +             private int num;
  +             public void startGroupParticle(ParticleSG pParticle) throws 
SAXException {
  +                     super.startGroupParticle(pParticle);
  +                     ++num;
  +             }
  +             int getNumGroups() { return num; }
  +     }
  +
  +     private int countContentGroups(ComplexTypeSG pType) throws SAXException 
{
  +             ContentGroupCounter counter = new ContentGroupCounter();
  +             new ParticleWalker(counter).walk(pType);
  +             return counter.getNumGroups();
  +     }
  +
  +     /** Checks, whether the particle is an extended types content group.
  +      * This check is quite difficult, because we must deduce, whether we
  +      * actually are 
  +      * @param pParticle
  +      * @throws SAXException
  +      */
  +     private boolean checkInheritedContentGroup(ParticleSG pParticle) throws 
SAXException {
  +             if (isInInheritedContentGroup) {
  +                     // There's only one inherited content group, so it 
cannot start here.
  +                     return false;
  +             }
  +             TypeSG tSG = ct.getTypeSG();
  +             if (!tSG.isExtension()) {
  +                     return false;
  +             }
  +             TypeSG extTSG = tSG.getExtendedType();
  +             if (extTSG.getComplexTypeSG().getComplexContentSG().isEmpty()) {
  +                     return false;
  +             }
  +             switch (groupParticles.size()) {
  +                     case 0:
  +                             /* It might be, that the inheriting types 
content group is empty.
  +                              * If so, the inherited content group is the 
outermost content
  +                              * group.
  +                              */
  +                             return 
countContentGroups(tSG.getComplexTypeSG()) == 
countContentGroups(extTSG.getComplexTypeSG());
  +                     case 1:
  +                             /** If we arrive here, then we know that both 
content groups
  +                              * are non-empty. If so, the content group at 
level zero is
  +                              * the sequence of both content groups.
  +                              */
  +                             ParticleSG rootParticle = (ParticleSG) 
groupParticles.get(0);
  +                             GroupSG rootGroup = rootParticle.getGroupSG();
  +                             if (!rootGroup.isSequence()) {
  +                                     return false;
  +                             }
  +                             ParticleSG[] particles = 
rootGroup.getParticles();
  +                             return particles.length == 2  ||  particles[0] 
!= pParticle;
  +                     default:
  +                             return false;
  +             }
  +     }
  +
  +     protected boolean isInGeneralContentGroupParticle() throws SAXException 
{
  +             return generalContentGroupParticle != null;
  +     }
  +
        public void startGroupParticle(ParticleSG pParticle) throws 
SAXException {
  -             if (pParticle.isMultiple()) {
  -             throw new SAXParseException("Model groups with maxOccurs > 1 
are not yet supported.",
  -                                                             
pParticle.getLocator());
  +             // This might be a content group inherited via xs:extension.
  +             if (checkInheritedContentGroup(pParticle)) {
  +                     isInInheritedContentGroup = true;
  +                     inheritedContentGroupLevel = groupParticles.size();
  +             }
  +             if (!isInInheritedContentGroup) {
  +                     if (!isMixed  &&  !isInGeneralContentGroupParticle()  
&&  pParticle.isMultiple()) {
  +                             generalContentGroupParticle = pParticle;
  +                             generalContentGroupParticleLevel = 
groupParticles.size();
  +                     }
                }
                super.startGroupParticle(pParticle);
        }
  +
  +     public void endGroupParticle (ParticleSG pParticle) throws SAXException 
{
  +             super.endGroupParticle(pParticle);
  +             if (isInInheritedContentGroup) {
  +                     if (inheritedContentGroupLevel == 
groupParticles.size()) {
  +                             isInInheritedContentGroup = false;
  +                     }
  +             } else {
  +                     if (isInGeneralContentGroupParticle()  &&  
generalContentGroupParticleLevel == groupParticles.size()) {
  +                             generalContentGroupParticle = null;
  +                     }
  +             }
  +     }
   }
  
  
  
  1.4.2.1   +1 -1      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/SequenceHandlerSG.java
  
  Index: SequenceHandlerSG.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/SequenceHandlerSG.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- SequenceHandlerSG.java    24 Apr 2005 20:16:48 -0000      1.4
  +++ SequenceHandlerSG.java    28 Jul 2005 19:49:24 -0000      1.4.2.1
  @@ -143,7 +143,7 @@
         * returns the index of the last valid particle. Returns
         * -1, if there is no valid particle.
         */
  -     private int getLastValidParticle(int pState) {
  +     private int getLastValidParticle(int pState) throws SAXException {
                int lastParticle;
                if (pState == 0) {
                        lastParticle = 0;
  
  
  
  1.7.2.1   +26 -2     
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java
  
  Index: GroupHandlerSG.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/GroupHandlerSG.java,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- GroupHandlerSG.java       8 Jul 2005 20:43:57 -0000       1.7
  +++ GroupHandlerSG.java       28 Jul 2005 19:49:24 -0000      1.7.2.1
  @@ -164,8 +164,32 @@
                }
        }
   
  -     protected boolean isRequiredParticle(ParticleSG particleSG) {
  -             return particleSG.getMinOccurs() > 0;
  +     protected boolean isRequiredParticle(ParticleSG particleSG) throws 
SAXException {
  +             if (particleSG.getMinOccurs() == 0) {
  +                     return false;
  +             } else {
  +                     if (particleSG.isGroup()) {
  +                             GroupSG group = particleSG.getGroupSG();
  +                             ParticleSG[] particles = group.getParticles();
  +                             if (group.isChoice()) {
  +                                     for (int i = 0;  i < particles.length;  
i++) {
  +                                             if 
(!isRequiredParticle(particles[i])) {
  +                                                     return false;
  +                                             }
  +                                     }
  +                                     return true;
  +                             } else {
  +                                     for (int i = 0;  i < particles.length;  
i++) {
  +                                             if 
(isRequiredParticle(particles[i])) {
  +                                                     return true;
  +                                             }
  +                                     }
  +                                     return false;
  +                             }
  +                     } else {
  +                             return true;
  +                     }
  +             }
        }
   
        protected void handleStartOfChildElement(Object pUnmarshallerHandler,
  
  
  
  1.1.2.2   +1 -1      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/ParticleVisitorImpl.java
  
  Index: ParticleVisitorImpl.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/ParticleVisitorImpl.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- ParticleVisitorImpl.java  15 Jul 2005 21:01:17 -0000      1.1.2.1
  +++ ParticleVisitorImpl.java  28 Jul 2005 19:49:24 -0000      1.1.2.2
  @@ -14,7 +14,7 @@
    * with methods doing nothing.
    */
   public class ParticleVisitorImpl implements ParticleVisitor {
  -     private final List groupParticles = new ArrayList();
  +     protected final List groupParticles = new ArrayList();
   
        protected ParticleSG getCurrentGroupParticle() {
                return (ParticleSG) groupParticles.get(groupParticles.size()-1);
  
  
  
  No                   revision
  No                   revision
  1.2.2.1   +1 -1      
ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/CompiledClassReflector.java
  
  Index: CompiledClassReflector.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/CompiledClassReflector.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- CompiledClassReflector.java       18 May 2005 22:09:09 -0000      1.2
  +++ CompiledClassReflector.java       28 Jul 2005 19:49:24 -0000      1.2.2.1
  @@ -59,7 +59,7 @@
         */
        public JavaSource getJavaSource(JavaSourceFactory pFactory) {
           Class c = getCompiledClass();
  -             JavaSource js = new 
JavaSourceFactory().newJavaSource(JavaQNameImpl.getInstance(c.getName(), true));
  +             JavaSource js = new 
JavaSourceFactory().newJavaSource(JavaQNameImpl.getInstance(c.getName()));
                Method[] methods = c.getMethods();
                for (int i = 0;  i < methods.length;  i++) {
                        Method m = methods[i];
  
  
  
  1.10.2.1  +3 -3      ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/Ant.java
  
  Index: Ant.java
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/Ant.java,v
  retrieving revision 1.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- Ant.java  18 May 2005 22:09:09 -0000      1.10
  +++ Ant.java  28 Jul 2005 19:49:24 -0000      1.10.2.1
  @@ -209,7 +209,7 @@
     }
   
     protected static JavaQName getJavaQName(String pName) {
  -      return JavaQNameImpl.getInstance(pName, true);
  +      return JavaQNameImpl.getInstance(pName);
     }
   
     /** The <code>AntProxyGenerator</code> is an Ant task
  @@ -659,7 +659,7 @@
               Dispatcher disp = getDispatcher();
               if (disp != null) {
                   
gen.setDispatcherImplementsXmlRpcHandler(disp.isImplementingXmlRpcHandler());
  -             gen.getDispatcher(JavaQNameImpl.getInstance(disp.getName(), 
true));
  +             gen.getDispatcher(JavaQNameImpl.getInstance(disp.getName()));
               }
               jsf.write(getDestDir());
                }
  
  
  
  1.8.2.1   +4 -4      
ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/ChainGenerator.java
  
  Index: ChainGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/ChainGenerator.java,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- ChainGenerator.java       18 May 2005 22:09:09 -0000      1.8
  +++ ChainGenerator.java       28 Jul 2005 19:49:24 -0000      1.8.2.1
  @@ -105,7 +105,7 @@
           JavaSourceFactory jsf = new JavaSourceFactory();
           List sources = new ArrayList();
           Set names = new HashSet();
  -        loadSources(pClassLoader, JavaQNameImpl.getInstance(pName, true),
  +        loadSources(pClassLoader, JavaQNameImpl.getInstance(pName),
                       jsf, sources, names);
           if (sources.isEmpty()) {
                return null;
  @@ -146,7 +146,7 @@
      /** <p>Sets the interface name being generated for the chain objects.</p>
       */
      public void setChainInterfaceName(String pInterfaceName) {
  -      JavaQName qName = JavaQNameImpl.getInstance(pInterfaceName, true);
  +      JavaQName qName = JavaQNameImpl.getInstance(pInterfaceName);
         setChainInterface(qName);
      }
   
  @@ -165,7 +165,7 @@
      /** <p>Sets the class name being generated for the chain objects.</p>
       */
      public void setProxyClassName(String pClassName) {
  -      JavaQName qName = JavaQNameImpl.getInstance(pClassName, true);
  +      JavaQName qName = JavaQNameImpl.getInstance(pClassName);
         setProxyClass(qName);
      }
   
  @@ -195,7 +195,7 @@
      /** <p>Sets the name of the chain implementation class.</p>
       */
      public void setImplementationClassName(String pClassName) {
  -      setImplementationClass(JavaQNameImpl.getInstance(pClassName, true));
  +      setImplementationClass(JavaQNameImpl.getInstance(pClassName));
      }
   
      /** <p>Sets the chain implementation class.</p>
  
  
  
  No                   revision
  No                   revision
  1.7.4.1   +1 -1      
ws-jaxme/src/js/org/apache/ws/jaxme/js/apps/XmlRpcClientGenerator.java
  
  Index: XmlRpcClientGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/apps/XmlRpcClientGenerator.java,v
  retrieving revision 1.7
  retrieving revision 1.7.4.1
  diff -u -r1.7 -r1.7.4.1
  --- XmlRpcClientGenerator.java        7 Oct 2004 22:12:13 -0000       1.7
  +++ XmlRpcClientGenerator.java        28 Jul 2005 19:49:24 -0000      1.7.4.1
  @@ -413,7 +413,7 @@
       public JavaSource getDispatcher(JavaQName pQName) {
        JavaSource js = getFactory().newJavaSource(pQName, JavaSource.PUBLIC);
           if (isDispatcherImplementsXmlRpcHandler()) {
  -             
js.addImport(JavaQNameImpl.getInstance("org.apache.xmlrpc.XmlRpcHandler", 
true));
  +             
js.addImport(JavaQNameImpl.getInstance("org.apache.xmlrpc.XmlRpcHandler"));
           }
        JavaComment comment = js.newComment();
           comment.addLine("The dispatcher is being used by the XmlRpcServer.");
  
  
  
  No                   revision
  No                   revision
  1.12.2.1  +24 -0     ws-jaxme/src/test/jaxb/types.xsd
  
  Index: types.xsd
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/src/test/jaxb/types.xsd,v
  retrieving revision 1.12
  retrieving revision 1.12.2.1
  diff -u -r1.12 -r1.12.2.1
  --- types.xsd 6 Jul 2005 21:34:14 -0000       1.12
  +++ types.xsd 28 Jul 2005 19:49:25 -0000      1.12.2.1
  @@ -275,4 +275,28 @@
          </xs:sequence>
        </xs:complexType>
      </xs:element>
  +
  +    <xs:element name="html">
  +      <xs:complexType mixed="true">
  +        <xs:sequence>
  +          <xs:element name="dummy" type="xs:string"/>
  +          <xs:element name="head">
  +            <xs:complexType>
  +              <xs:sequence>
  +                <xs:element name="title" type="xs:string"/>
  +              </xs:sequence>
  +            </xs:complexType>
  +          </xs:element>
  +          <xs:element name="body">
  +            <xs:complexType>
  +              <xs:sequence>
  +                         <xs:element name="p" maxOccurs="unbounded">
  +                  <xs:complexType/>
  +                </xs:element>
  +              </xs:sequence>
  +            </xs:complexType>
  +          </xs:element>
  +        </xs:sequence>
  +      </xs:complexType>
  +    </xs:element>
   </xs:schema>
  
  
  
  No                   revision
  No                   revision
  1.4.2.1   +4 -4      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java
  
  Index: ListTypeSGImpl.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- ListTypeSGImpl.java       28 Apr 2005 23:57:53 -0000      1.4
  +++ ListTypeSGImpl.java       28 Jul 2005 19:49:25 -0000      1.4.2.1
  @@ -116,7 +116,7 @@
       if ("indexed".equals(collectionType)) {
         return new TypedValueImpl(result, 
itemType.getSimpleTypeSG().getRuntimeType());
       } else {
  -      JavaQName myListType = JavaQNameImpl.getInstance(collectionType, true);
  +      JavaQName myListType = JavaQNameImpl.getInstance(collectionType);
         return new TypedValueImpl(new Object[]{"(new ", myListType, "(", 
Arrays.class, ".asList(", result, ")))"}, myListType);
       }
     }
  @@ -126,7 +126,7 @@
       LocalJavaField list = pMethod.newJavaField(LIST_TYPE);
       String collectionType = pController.getCollectionType();
       list.addLine("new ", ("indexed".equals(collectionType) ?
  -                          ARRAYLIST_TYPE : 
JavaQNameImpl.getInstance(collectionType, true)), "()");
  +                          ARRAYLIST_TYPE : 
JavaQNameImpl.getInstance(collectionType)), "()");
       DirectAccessible st = pMethod.addForEnumeration(StringTokenizer.class, 
new Object[]{"new ", StringTokenizer.class, "(", pValue, ")"});
       pMethod.addLine(list, ".add(", 
itemType.getSimpleTypeSG().getCastFromString(pMethod, new Object[]{st, 
".nextToken()"}, pData),
                       ");");
  @@ -137,7 +137,7 @@
         return new TypedValueImpl(new Object[]{"((", iType, ") ", list, 
".toArray(new ", iType, "[", list, ".size()]))"},
                                                                
itemType.getSimpleTypeSG().getRuntimeType());
       } else {
  -             JavaQName myListType = 
JavaQNameImpl.getInstance(collectionType, true);
  +             JavaQName myListType = 
JavaQNameImpl.getInstance(collectionType);
                return new TypedValueImpl(list, myListType);
       }
     }
  @@ -191,7 +191,7 @@
   
     public Object getInitialValue(SimpleTypeSG pController, JavaSource p0) 
throws SAXException {
       String s = pController.getCollectionType();
  -    JavaQName listClass = "indexed".equals(s) ? ARRAYLIST_TYPE : 
JavaQNameImpl.getInstance(s, true);
  +    JavaQName listClass = "indexed".equals(s) ? ARRAYLIST_TYPE : 
JavaQNameImpl.getInstance(s);
       return new Object[]{"new ", listClass, "()"};
     }
   
  
  
  
  No                   revision
  No                   revision
  1.11.4.1  +2 -0      ws-jaxme/.classpath
  
  Index: .classpath
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/.classpath,v
  retrieving revision 1.11
  retrieving revision 1.11.4.1
  diff -u -r1.11 -r1.11.4.1
  --- .classpath        4 Mar 2005 10:41:53 -0000       1.11
  +++ .classpath        28 Jul 2005 19:49:25 -0000      1.11.4.1
  @@ -19,5 +19,7 @@
        <classpathentry kind="src" path="src/webapp/java"/>
        <classpathentry exported="true" kind="lib" 
path="prerequisites/servlet.jar"/>
        <classpathentry exported="true" kind="lib" 
path="prerequisites/antlr.jar"/>
  +     <classpathentry kind="src" path="test/project36/src"/>
  +     <classpathentry kind="src" path="test/project36/build/src"/>
        <classpathentry kind="output" path="bin"/>
   </classpath>
  
  
  

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

Reply via email to