private List<XSParticle> getAllElementParticles( XSParticle particle ) { List<XSParticle> particles = new ArrayList<XSParticle>(); XSTerm xsTerm = particle.getTerm(); switch ( xsTerm.getType() ) { case XSConstants.ELEMENT_DECLARATION: particles.add( particle ); break; case XSConstants.MODEL_GROUP: XSModelGroup group = (XSModelGroup) xsTerm; for ( Iterator<XSParticle> itr = group.getParticles().iterator(); itr.hasNext(); ) { XSParticle xsParticle = itr.next(); particles.addAll( getAllElementParticles( xsParticle ) ); } break; default: // ignore wildcard term } return particles; }
private void addVariableMappings(Class<?> javaType, JavaXmlTypeMapping javaXmlTypeMapping, List<XSParticle> particles, Map<String, String> reversedNames) { for (XSParticle particle : particles) { XSTerm term = particle.getTerm(); if (term.getType() == XSConstants.MODEL_GROUP) { XSModelGroup group = (XSModelGroup)term; XSObjectList list = group.getParticles(); ArrayList<XSParticle> baseParticles = new ArrayList<XSParticle>(); for (int i = 0; i < list.getLength(); i++) baseParticles.add((XSParticle)list.item(i)); addVariableMappings(javaType, javaXmlTypeMapping, baseParticles, null); continue; } String name = term.getName(); String variableName = name; if (reversedNames != null && reversedNames.get(name) != null) variableName = reversedNames.get(name); VariableMapping mapping = new VariableMapping(javaXmlTypeMapping); mapping.setJavaVariableName(variableName); mapping.setXmlElementName(name); mapping.setDataMember(utils.doesPublicFieldExist(javaType, variableName)); if (isAlreadyMapped(javaXmlTypeMapping, mapping) == false) { javaXmlTypeMapping.addVariableMapping(mapping); } } }
private GmlPropertyDefinition getProperty(XSParticle particle, String propertyNamespaceUri, String propertyLocalName) { XSTerm term = particle.getTerm(); if ((term instanceof XSElementDeclaration)) { if ((term.getNamespace().equals(propertyNamespaceUri)) && (term.getName().equals(propertyLocalName))) return new XPsviGmlPropertyDefinition(this.model, particle); } else if ((term instanceof XSModelGroup)) { XSModelGroup modelGroup = (XSModelGroup) term; XSObjectList particles = modelGroup.getParticles(); for (int i = 0; i < particles.getLength(); i++) { GmlPropertyDefinition property = getProperty( (XSParticle) particles.item(i), propertyNamespaceUri, propertyLocalName); if (property != null) { return property; } } } return null; }
public int compareTo(Object o) { int c = -1; if (o instanceof JBossXSParticle) { JBossXSParticle w = (JBossXSParticle)o; String oname = w.getTerm().getName(); String termName = term.getName(); if (termName != null && oname != null) c = termName.compareTo(oname); else if (termName == null) c = -1; else c = 1; //In the case of doclit, need to be careful about String_1,SimpleType_2 if (termName != null && oname != null) { char num1 = termName.charAt(termName.length() - 1); char num2 = oname.charAt(oname.length() - 1); if (Character.isDigit(num1) && Character.isDigit(num2)) c = ("" + num1).compareTo(("" + num2)); } } return c; }
for (int i = 0; i < particles.getLength(); i++) { XSParticle p = (XSParticle) particles.item(i); if (definition.containsKey(p.getTerm().getName())) { list.add(p); } else { if (def != null) { Object val = def.get(term.getName()); if (val != null) { if (val instanceof Map) { Map<String, Object> definition = (Map<String, Object>) val; stack.push(new StackItem(term, item, term.getName(), definition, null)); add = true; } else if (val instanceof List) { value = t; stack.push(new StackItem(term, item, term.getName(), definition, value)); add = true; stack.push(new StackItem(term, item, term.getName(), null, val)); add = true; stack.push(new StackItem(term, item, term.getName(), null, null));
private void expandRelatedParticleComponents(XSParticle component, Vector componentList, String namespace, Hashtable dependencies) { XSTerm term = component.getTerm(); switch (term.getType()) { case XSConstants.ELEMENT_DECLARATION : addRelatedElement((XSElementDeclaration) term, componentList, namespace, dependencies); break; case XSConstants.MODEL_GROUP : expandRelatedModelGroupComponents((XSModelGroup) term, componentList, namespace, dependencies); break; default: break; } }
final int maxOccurs = particle.getMaxOccursUnbounded() ? -1 : particle.getMaxOccurs(); final XSTerm term = particle.getTerm(); switch ( term.getType() ) { case MODEL_GROUP: { addPropertyTypes( pts, (XSModelGroup) term, minOccurs, maxOccurs ); final String msg = "Internal error. Unhandled term type: " + term.getName(); throw new RuntimeException( msg );
private XSParticle getEnclosingParticle( XSElementDeclaration elDecl ) { XSComplexTypeDefinition enclosingDef = elDecl.getEnclosingCTDefinition(); if ( enclosingDef != null ) { List<XSParticle> particles = getAllElementParticles( enclosingDef.getParticle() ); for ( XSParticle xp : particles ) { XSTerm term = xp.getTerm(); if ( term.getType() == ELEMENT_DECLARATION ) { XSElementDeclaration currentElDecl = (XSElementDeclaration) term; if ( elDecl.equals( currentElDecl ) ) { return xp; } } } } return null; }
particle.getMaxOccursUnbounded() ? -1 : particle.getMaxOccurs() ); switch ( particle.getTerm().getType() ) { case ELEMENT_DECLARATION: { XSElementDeclaration elementDecl = (XSElementDeclaration) particle.getTerm(); String msg = "Internal error. Unhandled term type: " + particle.getTerm().getName(); throw new RuntimeException( msg );
private List<Schema.Field> createFields(XSComplexTypeDefinition type) { final Map<String, Schema.Field> fields = new LinkedHashMap<>(); XSObjectList attrUses = type.getAttributeUses(); for (int i = 0; i < attrUses.getLength(); i++) { XSAttributeUse attrUse = (XSAttributeUse) attrUses.item(i); XSAttributeDeclaration attrDecl = attrUse.getAttrDeclaration(); boolean optional = !attrUse.getRequired(); Schema.Field field = createField(fields.values(), attrDecl, attrDecl.getTypeDefinition(), optional, false); fields.put(field.getProp(Source.SOURCE), field); } XSParticle particle = type.getParticle(); if (particle == null) return new ArrayList<>(fields.values()); XSTerm term = particle.getTerm(); if (term.getType() != XSConstants.MODEL_GROUP) throw new ConverterException("Unsupported term type " + term.getType()); XSModelGroup group = (XSModelGroup) term; createGroupFields(group, fields, false); return new ArrayList<>(fields.values()); }
private void insertBaseParticle(List<XSParticle> particles, String name, Class<?> type, String targetNS) { if (particles.size() == 0) { particles.add(getXSParticle(name, type, targetNS)); return; } XSParticle particle = particles.get(0); XSTerm term = particle.getTerm(); if (term.getType() == XSConstants.MODEL_GROUP) { JBossXSModelGroup group = (JBossXSModelGroup)term; XSObjectList list = group.getParticles(); ArrayList<XSParticle> baseParticles = new ArrayList<XSParticle>(); for (int i = 0; i < list.getLength(); i++) baseParticles.add((XSParticle)list.item(i)); insertBaseParticle(baseParticles, name, type, targetNS); if (baseParticles.size() > list.getLength()) group.setParticles(baseParticles); } else { particles.add(0, getXSParticle(name, type, targetNS)); } }
private boolean isGroupTypeWithMultipleOccurs(XSParticle particle) { if (particle == null) return false; XSTerm term = particle.getTerm(); if (term.getType() != XSConstants.MODEL_GROUP) return false; XSModelGroup group = (XSModelGroup) term; final short compositor = group.getCompositor(); switch(compositor) { case XSModelGroup.COMPOSITOR_CHOICE: case XSModelGroup.COMPOSITOR_SEQUENCE: return particle.getMaxOccurs() > 1 || particle.getMaxOccursUnbounded(); default: return false; } }
XSParticle particle = typeDef.getParticle(); XSTerm term = particle.getTerm(); switch ( term.getType() ) { case XSConstants.MODEL_GROUP: { XSModelGroup modelGroup = (XSModelGroup) term; switch ( particle2.getTerm().getType() ) { case XSConstants.ELEMENT_DECLARATION: { return (XSElementDeclaration) particle2.getTerm();
private void analyzeParticle(XSParticle particle, String parentName, String namespace) { // Is this right, can a particle be null? if (particle == null) return; XSTerm term = particle.getTerm(); // Is this right, can a term be null? if (term == null) return; switch (term.getType()) { case XSConstants.MODEL_GROUP: XSModelGroup group = (XSModelGroup)term; XSObjectList list = group.getParticles(); for (int i = 0; i < list.getLength(); i++) analyzeParticle((XSParticle)list.item(i), parentName, namespace); break; case XSConstants.ELEMENT_DECLARATION: XSElementDeclaration decl = (XSElementDeclaration)term; analyzeElement(decl, parentName, namespace, new Integer(particle.getMinOccurs()), new Integer(particle.getMaxOccurs())); } }
XSParticle particle = typeDef.getParticle(); XSTerm term = particle.getTerm(); switch ( term.getType() ) { case MODEL_GROUP: { XSModelGroup modelGroup = (XSModelGroup) term; XSParticle geomChoiceParticle = (XSParticle) geomChoice.item( i ); XSTerm geomChoiceTerm = geomChoiceParticle.getTerm(); if ( geomChoiceTerm.getType() == ELEMENT_DECLARATION ) { LOG.debug( "Unknown geometry type '" + elementName + "'." ); } else if ( geomChoiceTerm.getType() == MODEL_GROUP ) { LOG.warn( "Unhandled particle: MODEL_GROUP" ); } else if ( geomChoiceTerm.getType() == WILDCARD ) { LOG.warn( "Unhandled particle: WILDCARD" ); } else { LOG.warn( "Unexpected XSTerm type: " + geomChoiceTerm.getType() ); switch ( geomTerm.getType() ) { case ELEMENT_DECLARATION: { XSElementDeclaration elementDecl2 = (XSElementDeclaration) geomTerm; XSParticle geomChoiceParticle = (XSParticle) sequence.item( i ); XSTerm geomChoiceTerm = geomChoiceParticle.getTerm(); if ( geomChoiceTerm.getType() == ELEMENT_DECLARATION ) {
short termType = jxpterm.getType(); if (termType == XSConstants.ELEMENT_DECLARATION) buf.append(write((XSElementDeclaration)jxpterm, jxsp));