jochen 2005/07/15 14:01:17 Modified: src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg Tag: JAXME-28 DriverGeneratingVisitor.java BeanGeneratingVisitor.java ParticleVisitorImpl.java ParticleVisitor.java MarshalChildsMethodGeneratingVisitor.java ParticleWalker.java src/jaxme/org/apache/ws/jaxme/generator/sg/impl Tag: JAXME-28 JAXBComplexContentTypeSG.java . Tag: JAXME-28 .cvsignore .project Log: So far, the particle visitor didn't honour the complex types root particle. Revision Changes Path No revision No revision 1.1.2.1 +3 -4 ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/DriverGeneratingVisitor.java Index: DriverGeneratingVisitor.java =================================================================== RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/DriverGeneratingVisitor.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- DriverGeneratingVisitor.java 24 Apr 2005 20:16:48 -0000 1.1 +++ DriverGeneratingVisitor.java 15 Jul 2005 21:01:17 -0000 1.1.2.1 @@ -11,7 +11,6 @@ import org.apache.ws.jaxme.WildcardAttribute; import org.apache.ws.jaxme.generator.sg.AttributeSG; import org.apache.ws.jaxme.generator.sg.ComplexTypeSG; -import org.apache.ws.jaxme.generator.sg.GroupSG; import org.apache.ws.jaxme.generator.sg.ParticleSG; import org.apache.ws.jaxme.generator.sg.SGlet; import org.apache.ws.jaxme.generator.sg.TypeSG; @@ -67,10 +66,10 @@ public void startComplexContent(ComplexTypeSG pType) { addAttributes(pType); } - public void simpleElementParticle(GroupSG pGroup, ParticleSG pParticle) throws SAXException { + public void simpleElementParticle(ParticleSG pParticle) throws SAXException { names.add(pParticle.getObjectSG().getName()); } - public void complexElementParticle(GroupSG pGroup, ParticleSG pParticle) throws SAXException { + public void complexElementParticle(ParticleSG pParticle) throws SAXException { names.add(pParticle.getObjectSG().getName()); } }; @@ -187,7 +186,7 @@ generate(pType); } - public void complexElementParticle(GroupSG pGroup, ParticleSG pParticle) throws SAXException { + public void complexElementParticle(ParticleSG pParticle) throws SAXException { TypeSG tSG = pParticle.getObjectSG().getTypeSG(); if (tSG.isComplex() && !tSG.isGlobalClass()) { tSG.getComplexTypeSG().getXMLSerializer(js); 1.4.2.1 +17 -8 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 retrieving revision 1.4.2.1 diff -u -r1.4 -r1.4.2.1 --- BeanGeneratingVisitor.java 13 Jul 2005 19:58:16 -0000 1.4 +++ BeanGeneratingVisitor.java 15 Jul 2005 21:01:17 -0000 1.4.2.1 @@ -18,6 +18,7 @@ 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 @@ -96,7 +97,6 @@ } public void startComplexContent(ComplexTypeSG pType) throws SAXException { - pType.getComplexContentSG().getElementParticles(); // Triggers the content verification ct = pType; generateAttributes(pType); if (pType.getComplexContentSG().isMixed()) { @@ -121,14 +121,15 @@ return false; } - private void elementParticle(GroupSG pGroupSG, ParticleSG pParticle) throws SAXException { + private void elementParticle(ParticleSG pParticle) throws SAXException { if (isInheritedParticle(pParticle)) { return; } final JavaSource pJs = this.js; final PropertySG elementSG = pParticle.getPropertySG(); if (isMixed) { - JavaQName qName = GroupUtil.getContentClass(pGroupSG, pParticle, pJs.getQName()); + GroupSG group = getCurrentGroupParticle().getGroupSG(); + JavaQName qName = GroupUtil.getContentClass(group, pParticle, pJs.getQName()); JavaSource js; if (qName.isInnerClass()) { js = pJs.newJavaInnerClass(qName.getInnerClassName(), JavaSource.PUBLIC); @@ -141,7 +142,7 @@ if (pJs.isInterface()) { js.setType(JavaSource.INTERFACE); } else { - js.addImplements(GroupUtil.getContentClass(pGroupSG, pParticle, ct.getClassContext().getXMLInterfaceName())); + js.addImplements(GroupUtil.getContentClass(group, pParticle, ct.getClassContext().getXMLInterfaceName())); } PropertySGChain chain = ((PropertySGImpl) elementSG).getHeadOfChain(); PropertySGChain head = new PropertySGChainImpl(chain){ @@ -170,15 +171,23 @@ } } - public void simpleElementParticle(GroupSG pGroup, ParticleSG pParticle) throws SAXException { - elementParticle(pGroup, pParticle); + public void simpleElementParticle(ParticleSG pParticle) throws SAXException { + elementParticle(pParticle); } - public void complexElementParticle(GroupSG pGroup, ParticleSG pParticle) throws SAXException { - elementParticle(pGroup, pParticle); + public void complexElementParticle(ParticleSG pParticle) throws SAXException { + elementParticle(pParticle); } public void wildcardParticle(ParticleSG particle) { throw new IllegalStateException("TODO: Add support for wildcards"); } + + public void startGroupParticle(ParticleSG pParticle) throws SAXException { + if (pParticle.isMultiple()) { + throw new SAXParseException("Model groups with maxOccurs > 1 are not yet supported.", + pParticle.getLocator()); + } + super.startGroupParticle(pParticle); + } } 1.1.2.1 +21 -2 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 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- ParticleVisitorImpl.java 24 Apr 2005 20:16:48 -0000 1.1 +++ ParticleVisitorImpl.java 15 Jul 2005 21:01:17 -0000 1.1.2.1 @@ -1,5 +1,8 @@ package org.apache.ws.jaxme.generator.sg.impl.ccsg; +import java.util.ArrayList; +import java.util.List; + import org.apache.ws.jaxme.generator.sg.ComplexTypeSG; import org.apache.ws.jaxme.generator.sg.GroupSG; import org.apache.ws.jaxme.generator.sg.ParticleSG; @@ -11,6 +14,12 @@ * with methods doing nothing. */ public class ParticleVisitorImpl implements ParticleVisitor { + private final List groupParticles = new ArrayList(); + + protected ParticleSG getCurrentGroupParticle() { + return (ParticleSG) groupParticles.get(groupParticles.size()-1); + } + public void emptyType(ComplexTypeSG type) throws SAXException { } @@ -41,12 +50,22 @@ public void endComplexContent(ComplexTypeSG type) throws SAXException { } - public void simpleElementParticle(GroupSG pGroup, ParticleSG pParticle) throws SAXException { + public void simpleElementParticle(ParticleSG pParticle) throws SAXException { } - public void complexElementParticle(GroupSG pGroup, ParticleSG particle) throws SAXException { + public void complexElementParticle(ParticleSG particle) throws SAXException { } public void wildcardParticle(ParticleSG particle) { } + + public void startGroupParticle(ParticleSG pParticle) throws SAXException { + groupParticles.add(pParticle); + } + + public void endGroupParticle(ParticleSG pParticle) throws SAXException { + if (groupParticles.remove(groupParticles.size()-1) != pParticle) { + throw new IllegalStateException("Expected a different group particle to end."); + } + } } 1.1.2.1 +12 -2 ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/ParticleVisitor.java Index: ParticleVisitor.java =================================================================== RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/ParticleVisitor.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- ParticleVisitor.java 24 Apr 2005 20:16:48 -0000 1.1 +++ ParticleVisitor.java 15 Jul 2005 21:01:17 -0000 1.1.2.1 @@ -54,13 +54,23 @@ /** Invoked to process an element with simple type. * @throws SAXException The visitor failed. */ - void simpleElementParticle(GroupSG pGroup,ParticleSG particle) throws SAXException; + void simpleElementParticle(ParticleSG particle) throws SAXException; /** Invoked to process an element with complex type. * @throws SAXException The visitor failed. */ - void complexElementParticle(GroupSG pGroup, ParticleSG particle) throws SAXException; + void complexElementParticle(ParticleSG particle) throws SAXException; /** Invoked to process a wildcard particle. * @throws SAXException The visitor failed. */ void wildcardParticle(ParticleSG particle) throws SAXException; + /** Invoked to indicate the beginning of a group particle. + * @param pParticle The particle, which is beginning. + * @throws SAXException The visitor failed. + */ + public void startGroupParticle(ParticleSG pParticle) throws SAXException; + /** Invoked to indicate the end of a group particle. + * @param pParticle The particle, which is ending. + * @throws SAXException The visitor failed. + */ + public void endGroupParticle(ParticleSG pParticle) throws SAXException; } 1.1.2.1 +4 -3 ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/MarshalChildsMethodGeneratingVisitor.java Index: MarshalChildsMethodGeneratingVisitor.java =================================================================== RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/MarshalChildsMethodGeneratingVisitor.java,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 --- MarshalChildsMethodGeneratingVisitor.java 24 Apr 2005 20:16:48 -0000 1.1 +++ MarshalChildsMethodGeneratingVisitor.java 15 Jul 2005 21:01:17 -0000 1.1.2.1 @@ -98,11 +98,12 @@ value, ");"); } - public void simpleElementParticle(GroupSG pGroup, ParticleSG pParticle) throws SAXException { + public void simpleElementParticle(ParticleSG pParticle) throws SAXException { final ObjectSG oSG = pParticle.getObjectSG(); if (isMixed) { JavaQName interfaceName = ctSG.getClassContext().getXMLInterfaceName(); - JavaQName qName = GroupUtil.getContentClass(pGroup, pParticle, interfaceName); + GroupSG group = getCurrentGroupParticle().getGroupSG(); + JavaQName qName = GroupUtil.getContentClass(group, pParticle, interfaceName); if (mixedTypesMap.contains(qName)) { return; } @@ -144,7 +145,7 @@ ", ", pValue, ");"); } - public void complexElementParticle(GroupSG pGroup, ParticleSG pParticle) throws SAXException { + public void complexElementParticle(ParticleSG pParticle) throws SAXException { final ObjectSG oSG = pParticle.getObjectSG(); if (isMixed) { JavaQName qName = oSG.getTypeSG().getComplexTypeSG().getClassContext().getXMLInterfaceName(); 1.2.2.1 +19 -13 ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/ParticleWalker.java Index: ParticleWalker.java =================================================================== RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/ParticleWalker.java,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -r1.2 -r1.2.2.1 --- ParticleWalker.java 8 Jul 2005 20:43:57 -0000 1.2 +++ ParticleWalker.java 15 Jul 2005 21:01:17 -0000 1.2.2.1 @@ -34,7 +34,7 @@ visitor.emptyType(pType); } else { visitor.startComplexContent(pType); - walkGroup(ccSG.getRootParticle().getGroupSG()); + walkParticle(ccSG.getRootParticle()); visitor.endComplexContent(pType); } } @@ -68,20 +68,26 @@ ParticleSG[] particles = pGroup.getParticles(); for (int i = 0; i < particles.length; i++) { ParticleSG particle = particles[i]; - if (particle.isElement()) { - TypeSG type = particle.getObjectSG().getTypeSG(); - if (type.isComplex()) { - visitor.complexElementParticle(pGroup, particle); - } else { - visitor.simpleElementParticle(pGroup, particle); - } - } else if (particle.isGroup()) { - walkGroup(particle.getGroupSG()); - } else if (particle.isWildcard()) { - visitor.wildcardParticle(particle); + walkParticle(particle); + } + } + + private void walkParticle(ParticleSG particle) throws SAXException { + if (particle.isElement()) { + TypeSG type = particle.getObjectSG().getTypeSG(); + if (type.isComplex()) { + visitor.complexElementParticle(particle); } else { - throw new IllegalStateException("Invalid particle type"); + visitor.simpleElementParticle(particle); } + } else if (particle.isGroup()) { + visitor.startGroupParticle(particle); + walkGroup(particle.getGroupSG()); + visitor.endGroupParticle(particle); + } else if (particle.isWildcard()) { + visitor.wildcardParticle(particle); + } else { + throw new IllegalStateException("Invalid particle type"); } } } No revision No revision 1.11.2.1 +2 -9 ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBComplexContentTypeSG.java Index: JAXBComplexContentTypeSG.java =================================================================== RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBComplexContentTypeSG.java,v retrieving revision 1.11 retrieving revision 1.11.2.1 diff -u -r1.11 -r1.11.2.1 --- JAXBComplexContentTypeSG.java 13 Jul 2005 19:58:16 -0000 1.11 +++ JAXBComplexContentTypeSG.java 15 Jul 2005 21:01:17 -0000 1.11.2.1 @@ -26,9 +26,6 @@ import org.apache.ws.jaxme.generator.sg.ObjectSG; import org.apache.ws.jaxme.generator.sg.ParticleSG; import org.apache.ws.jaxme.generator.sg.SGFactory; -import org.apache.ws.jaxme.logging.Logger; -import org.apache.ws.jaxme.logging.LoggerAccess; -import org.apache.ws.jaxme.xs.XSGroup; import org.apache.ws.jaxme.xs.XSParticle; import org.apache.ws.jaxme.xs.XSType; import org.apache.ws.jaxme.xs.types.XSAnyType; @@ -41,8 +38,6 @@ * [EMAIL PROTECTED] org.apache.ws.jaxme.generator.sg.ComplexContentSG}. */ public class JAXBComplexContentTypeSG implements ComplexContentSGChain { - private static final Logger log = LoggerAccess.getLogger(JAXBComplexContentTypeSG.class); - private static class Particle { private final GroupSG[] stack; private final ParticleSG particle; @@ -191,7 +186,7 @@ * See Section 5.9.4, "Bind mixed content" for more details. */ if (pController.isMixed()) { - // Make sure, that all groups have the "general content property" + // Make sure, that all groups have the "general content property". } /* 5.9.7, 2) If (1) a particle has {max occurs} > 1 and (2) its term * is a model group, then that particle and its descendants are mapped @@ -199,9 +194,7 @@ * 5.9.6, "Bind a repeating occurrence model group" for details. */ if (groupParticlesWithMultiplicityGreaterOne.size() > 0) { - Particle particle = (Particle) groupParticlesWithMultiplicityGreaterOne.get(0); - throw new SAXParseException("Model groups with maxOccurs > 1 are not yet supported.", - particle.getParticleSG().getLocator()); + // Make sure, that these particles have the "general content property". } /* 5.9.7, 3) Process all remaining particles 1) whose {term} are * wildcard particles and (2) that did not belong to a repeating No revision No revision 1.6.2.1 +1 -0 ws-jaxme/.cvsignore Index: .cvsignore =================================================================== RCS file: /home/cvs/ws-jaxme/.cvsignore,v retrieving revision 1.6 retrieving revision 1.6.2.1 diff -u -r1.6 -r1.6.2.1 --- .cvsignore 27 Apr 2005 19:42:55 -0000 1.6 +++ .cvsignore 15 Jul 2005 21:01:17 -0000 1.6.2.1 @@ -5,3 +5,4 @@ *.log xjc test +patches 1.2.4.1 +1 -1 ws-jaxme/.project Index: .project =================================================================== RCS file: /home/cvs/ws-jaxme/.project,v retrieving revision 1.2 retrieving revision 1.2.4.1 diff -u -r1.2 -r1.2.4.1 --- .project 12 Apr 2005 08:31:28 -0000 1.2 +++ .project 15 Jul 2005 21:01:17 -0000 1.2.4.1 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <projectDescription> - <name>ws-jaxme-0.4</name> + <name>ws-jaxme-JAXME-28</name> <comment></comment> <projects> </projects>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]