private void buildGenericElements(XmlSchema schema, XmlSchemaSequence seq, Field f) { XmlSchemaComplexType generics = new XmlSchemaComplexType(schema, true); Type type = f.getGenericType(); String rawType = ((ParameterizedType)type).getRawType().toString(); String typeName = StringUtils.uncapitalize(rawType.substring(rawType.lastIndexOf(".") + 1)); generics.setName(typeName); Class<?> genericsClass = f.getType(); buildGenericSeq(schema, generics, genericsClass); String name = Character.toLowerCase(f.getName().charAt(0)) + f.getName().substring(1); XmlSchemaElement newel = new XmlSchemaElement(schema, false); newel.setName(name); newel.setSchemaTypeName(generics.getQName()); newel.setMinOccurs(0); if (!seq.getItems().contains(newel)) { seq.getItems().add(newel); } }
private void addExceptionMessage(Class<?> cls, XmlSchema schema, XmlSchemaSequence seq) { try { //a subclass could mark the message method as transient Method m = cls.getMethod("getMessage"); if (!m.isAnnotationPresent(XmlTransient.class) && m.getDeclaringClass().equals(Throwable.class)) { JAXBBeanInfo beanInfo = getBeanInfo(java.lang.String.class); XmlSchemaElement exEle = new XmlSchemaElement(schema, false); exEle.setName("message"); exEle.setSchemaTypeName(getTypeName(beanInfo)); exEle.setMinOccurs(0); seq.getItems().add(exEle); } } catch (Exception e) { //ignore, just won't have the message element } }
private XmlSchemaElement generateWrapper(QName el, XmlSchemaSequence wrappingSequence) { XmlSchemaComplexType schemaComplexType = new XmlSchemaComplexType(schema, false); schemaComplexType.setParticle(wrappingSequence); XmlSchemaElement wrappingSchemaElement = new XmlSchemaElement(schema, true); wrappingSchemaElement.setName(el.getLocalPart()); wrappingSchemaElement.setSchemaType(schemaComplexType); return wrappingSchemaElement; }
/** * Wrapper around XmlSchemaElement.setName that checks for inconsistency with * refName. * @param element * @param name */ public static void setElementName(XmlSchemaElement element, String name) { if (name != null && element.isRef() && !element.getRef().getTargetQName().getLocalPart().equals(name) && (element.getQName() == null || element.getQName().getLocalPart().equals(name))) { LOG.severe("Attempt to set the name of an element with a reference name."); throw new XmlSchemaInvalidOperation("Attempt to set the name of an element " + "with a reference name."); } element.setName(name); }
/** * Wrapper around XmlSchemaElement.setName that checks for inconsistency with * refName. * @param element * @param name */ public static void setElementName(XmlSchemaElement element, String name) { if (name != null && element.isRef() && !element.getRef().getTargetQName().getLocalPart().equals(name) && (element.getQName() == null || element.getQName().getLocalPart().equals(name))) { LOG.severe("Attempt to set the name of an element with a reference name."); throw new XmlSchemaInvalidOperation("Attempt to set the name of an element " + "with a reference name."); } element.setName(name); }
/** * Wrapper around XmlSchemaElement.setName that checks for inconsistency with * refName. * @param element * @param name */ public static void setElementName(XmlSchemaElement element, String name) { if (name != null && element.isRef() && !element.getRef().getTargetQName().getLocalPart().equals(name) && (element.getQName() == null || element.getQName().getLocalPart().equals(name))) { LOG.severe("Attempt to set the name of an element with a reference name."); throw new XmlSchemaInvalidOperation("Attempt to set the name of an element " + "with a reference name."); } element.setName(name); }
private XmlSchemaElement doTransform(String name, ResolvedType resolvedType) { final boolean empty = currentElement.isEmpty(); final XmlSchemaElement schemaElement = new XmlSchemaElement(schema, empty); schemaElement.setName(name); currentElement.push(schemaElement); final XmlSchemaType visit = resolvedType.visit(this); if (visit != null) { if (visit.getQName() != null) { schemaElement.setSchemaTypeName(visit.getQName()); } else { schemaElement.setSchemaType(visit); } } currentElement.pop(); return schemaElement; }
private XmlSchemaElement doTransform(String name, ResolvedType resolvedType) { final boolean empty = currentElement.isEmpty(); final XmlSchemaElement schemaElement = new XmlSchemaElement(schema, empty); schemaElement.setName(name); currentElement.push(schemaElement); final XmlSchemaType visit = resolvedType.visit(this); if (visit != null) { if (visit.getQName() != null) { schemaElement.setSchemaTypeName(visit.getQName()); } else { schemaElement.setSchemaType(visit); } } currentElement.pop(); return schemaElement; }
protected void generateSchemaForSingleElement(QName schemaTypeName, String paraName, boolean isArray) throws Exception { XmlSchemaElement elt1 = new XmlSchemaElement(getXmlSchema(schemaTargetNameSpace), false); elt1.setName(paraName); elt1.setSchemaTypeName(schemaTypeName); elt1.setNillable(true); QName elementName = new QName(schemaTargetNameSpace, paraName, schema_namespace_prefix); XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace); xmlSchema.getElements().put(elementName, elt1); xmlSchema.getItems().add(elt1); typeTable.addComplexSchema(paraName, elementName); }
private XmlSchemaElement createXsElement(XmlSchema schema, MessagePartInfo part, QName typeName, SchemaInfo schemaInfo) { XmlSchemaElement el = new XmlSchemaElement(schema, true); el.setName(part.getElementQName().getLocalPart()); el.setNillable(true); el.setSchemaTypeName(typeName); part.setXmlSchema(el); schemaInfo.setElement(null); return el; }
protected void generateSchemaForSingleElement(QName schemaTypeName, String paraName, boolean isArray) throws Exception { XmlSchemaElement elt1 = new XmlSchemaElement(getXmlSchema(schemaTargetNameSpace), false); elt1.setName(paraName); elt1.setSchemaTypeName(schemaTypeName); elt1.setNillable(true); QName elementName = new QName(schemaTargetNameSpace, paraName, schema_namespace_prefix); XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace); xmlSchema.getElements().put(elementName, elt1); xmlSchema.getItems().add(elt1); typeTable.addComplexSchema(paraName, elementName); }
/** * Creates a element in a sequence for the key type and the value type. */ private void createElement(XmlSchema schema, XmlSchemaSequence seq, QName name, AegisType type, boolean optional) { XmlSchemaElement element = new XmlSchemaElement(schema, false); seq.getItems().add(element); element.setName(name.getLocalPart()); element.setSchemaTypeName(type.getSchemaType()); if (optional) { element.setMinOccurs(0); } else { element.setMinOccurs(1); } element.setMaxOccurs(1); }
/** * Creates a element in a sequence for the key type and the value type. */ private void createElement(XmlSchema schema, XmlSchemaSequence seq, QName name, AegisType type, boolean optional) { XmlSchemaElement element = new XmlSchemaElement(schema, false); seq.getItems().add(element); element.setName(name.getLocalPart()); element.setSchemaTypeName(type.getSchemaType()); if (optional) { element.setMinOccurs(0); } else { element.setMinOccurs(1); } element.setMaxOccurs(1); }
/** * Generate schema construct for given type * * @param localPartName */ private XmlSchemaComplexType createSchemaTypeForMethodPart(String localPartName) { XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace); QName elementName = new QName(this.schemaTargetNameSpace, localPartName, this.schema_namespace_prefix); XmlSchemaComplexType complexType = getComplexTypeForElement(xmlSchema, elementName); if (complexType == null) { complexType = new XmlSchemaComplexType(xmlSchema, false); XmlSchemaElement globalElement = new XmlSchemaElement(xmlSchema, false); globalElement.setSchemaType(complexType); globalElement.setName(localPartName); xmlSchema.getItems().add(globalElement); xmlSchema.getElements().put(elementName, globalElement); } typeTable.addComplexSchema(localPartName, elementName); return complexType; }
private XmlSchemaElement addElement(XmlSchemaSequence schemaSequence, XmlSchemaType schemaType, Scope fqName, String name) { XmlSchemaElement element = new XmlSchemaElement(schema, false); element.setName(name); if (schemaType != null) { element.setSchemaTypeName(schemaType.getQName()); if (schemaType.getQName().equals(ReferenceConstants.WSADDRESSING_TYPE)) { element.setNillable(true); } } else { wsdlVisitor.getDeferredActions(). add(fqName, new OperationDeferredAction(element)); } schemaSequence.getItems().add(element); return element; }
private XmlSchemaElement createXmlSchemaElement(AST memberNode, XmlSchemaType schemaType, Scope fqName) { // xmlschema:member XmlSchemaElement member = new XmlSchemaElement(schema, false); String memberName = memberNode.toString(); member.setName(memberName); member.setSchemaType(schemaType); if (schemaType != null) { member.setSchemaTypeName(schemaType.getQName()); if (schemaType.getQName().equals(ReferenceConstants.WSADDRESSING_TYPE)) { member.setNillable(true); } } else { wsdlVisitor.getDeferredActions(). add(fqName, new StructDeferredAction(member)); } return member; }
private XmlSchemaElement createElementType(AST memberNode, XmlSchemaType stype, Scope fqName) { // xmlschema:member XmlSchemaElement member = new XmlSchemaElement(schema, false); String memberName = memberNode.toString(); member.setName(memberName); if (stype != null) { member.setSchemaType(stype); member.setSchemaTypeName(stype.getQName()); if (stype.getQName().equals(ReferenceConstants.WSADDRESSING_TYPE)) { member.setNillable(true); } } else { wsdlVisitor.getDeferredActions(). add(fqName, new ExceptionDeferredAction(member)); } return member; }
@Override public void writeSchema(XmlSchema root) { if (isFlat()) { return; // there is no extra level of type. } if (hasDefinedArray(root)) { return; } XmlSchemaComplexType complex = new XmlSchemaComplexType(root, true); complex.setName(getSchemaType().getLocalPart()); XmlSchemaSequence seq = new XmlSchemaSequence(); complex.setParticle(seq); AegisType componentType = getComponentType(); XmlSchemaElement element = new XmlSchemaElement(root, false); element.setName(componentType.getSchemaType().getLocalPart()); element.setSchemaTypeName(componentType.getSchemaType()); seq.getItems().add(element); if (componentType.isNillable()) { element.setNillable(true); } element.setMinOccurs(getMinOccurs()); element.setMaxOccurs(getMaxOccurs()); }
@Override public void writeSchema(XmlSchema root) { XmlSchemaComplexType complex = new XmlSchemaComplexType(root, true); complex.setName(getSchemaType().getLocalPart()); XmlSchemaSequence sequence = new XmlSchemaSequence(); complex.setParticle(sequence); AegisType kType = getKeyType(); AegisType vType = getValueType(); XmlSchemaElement element = new XmlSchemaElement(root, false); sequence.getItems().add(element); element.setName(getEntryName().getLocalPart()); element.setMinOccurs(0); element.setMaxOccurs(Long.MAX_VALUE); XmlSchemaComplexType evType = new XmlSchemaComplexType(root, false); element.setType(evType); XmlSchemaSequence evSequence = new XmlSchemaSequence(); evType.setParticle(evSequence); createElement(root, evSequence, getKeyName(), kType, false); createElement(root, evSequence, getValueName(), vType, true); }
protected void checkForElement(ServiceInfo serviceInfo, MessagePartInfo mpi) { SchemaInfo si = getOrCreateSchema(serviceInfo, mpi.getElementQName().getNamespaceURI(), getQualifyWrapperSchema()); XmlSchemaElement e = si.getSchema().getElementByName(mpi.getElementQName().getLocalPart()); if (e != null) { mpi.setXmlSchema(e); return; } XmlSchema schema = si.getSchema(); si.setElement(null); //cached element is now invalid XmlSchemaElement el = new XmlSchemaElement(schema, true); el.setName(mpi.getElementQName().getLocalPart()); el.setNillable(true); XmlSchemaType tp = (XmlSchemaType)mpi.getXmlSchema(); if (tp == null) { throw new ServiceConstructionException(new Message("INTRACTABLE_PART", LOG, mpi.getName(), mpi.getMessageInfo().getName())); } el.setSchemaTypeName(tp.getQName()); mpi.setXmlSchema(el); }