private static XmlSchemaType findSchemaType(Collection<SchemaInfo> schemas, QName name) { for (SchemaInfo inf : schemas) { if (inf.getNamespaceURI().equals(name.getNamespaceURI())) { return inf.getSchema().getTypeByName(name); } } return null; }
private SchemaInfo createSchemaInfo(Element schemaEl, String systemId) { SchemaInfo info = new SchemaInfo(schemaEl.getAttribute("targetNamespace")); info.setElement(schemaEl); info.setSystemId(systemId); // Lets try to read the schema to deal with the possible // eviction of the DOM element from the memory try { XmlSchema xmlSchema = schemaCollection.read(schemaEl, systemId); info.setSchema(xmlSchema); } catch (Exception ex) { // may be due to unsupported resolvers for protocols like // classpath: or not the valid schema definition, may not be critical // for the purpose of the schema compilation. } return info; }
private GrammarInfo getGrammarInfo(Application app, List<SchemaInfo> schemaElements) { if (schemaElements == null || schemaElements.isEmpty()) { return new GrammarInfo(); } Map<String, String> nsMap = new HashMap<>(); NamedNodeMap attrMap = app.getAppElement().getAttributes(); for (int i = 0; i < attrMap.getLength(); i++) { Node node = attrMap.item(i); String nodeName = node.getNodeName(); if (nodeName.startsWith("xmlns:")) { String nsValue = node.getNodeValue(); nsMap.put(nodeName.substring(6), nsValue); } } Map<String, String> elementTypeMap = new HashMap<>(); for (SchemaInfo schemaEl : schemaElements) { populateElementTypeMap(app, schemaEl.getElement(), schemaEl.getSystemId(), elementTypeMap); } boolean noTargetNamespace = schemaElements.size() == 1 && schemaElements.get(0).getNamespaceURI().isEmpty(); return new GrammarInfo(nsMap, elementTypeMap, noTargetNamespace); }
public SchemaInfo addNewSchema(String namespaceURI) { SchemaInfo schemaInfo = new SchemaInfo(namespaceURI); schemaInfo.setSchema(getXmlSchemaCollection(). newXmlSchemaInCollection(namespaceURI)); schemas.add(schemaInfo); return schemaInfo; }
if (!XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(d.getDocumentElement().getNamespaceURI())) { QName qn = DOMUtils.getElementQName(d.getDocumentElement()); throw new RuntimeException("Invalid schema document passed to " String ns = d.getDocumentElement().getAttribute("targetNamespace"); boolean copied = false; ns = serviceInfo.getInterface().getName().getNamespaceURI(); d.getDocumentElement().setAttribute("targetNamespace", ns); SchemaInfo schemaInfo = serviceInfo.getSchema(ns); if (schemaInfo != null && (systemId == null && schemaInfo.getSystemId() == null || systemId != null && systemId .equalsIgnoreCase(schemaInfo .getSystemId()))) { return schemaInfo.getSchema(); SchemaInfo schema = new SchemaInfo(ns); schema.setSystemId(systemId); XmlSchema xmlSchema; synchronized (d) { xmlSchema = col.read(d, systemId); schema.setSchema(xmlSchema); schema.setElement(d.getDocumentElement()); serviceInfo.addSchema(schema);
schema.setDocumentBaseURI(name); schema.setElement(schemaInfo.getElement()); namespaceToSchemaMap.put(schemaInfo.getNamespaceURI(), schema); namespaceToSchemaInfo.put(schemaInfo.getNamespaceURI(), schemaInfo); String sn = el.getAttribute("namespace"); SchemaInfo schemaInfo = namespaceToSchemaInfo.get(sn); el.setAttribute("schemaLocation", referencedSchema.getDocumentBaseURI()); nd.setAttribute("xmlns", WSDLConstants.NS_SCHEMA_XSD); doc.appendChild(nd); Schema referencedSchema = namespaceToSchemaMap.get(schemaInfo.getNamespaceURI()); if (defNamespaces.contains(schemaInfo.getNamespaceURI())) { Element impElement = doc.createElementNS(WSDLConstants.NS_SCHEMA_XSD, "import"); impElement.setAttribute("schemaLocation", referencedSchema.getDocumentBaseURI()); impElement.setAttribute("namespace", schemaInfo.getNamespaceURI()); nd.appendChild(impElement);
XmlSchema schema = null; QName qname = (QName)mpi.getProperty(ELEMENT_NAME); if (messageParts.size() == 1 && qname == null) { qname = !isOut ? getInParameterName(opInfo, method, -1) : getOutParameterName(opInfo, method, -1); for (SchemaInfo s : serviceInfo.getSchemas()) { if (s.getNamespaceURI().equals(qname.getNamespaceURI())) { schemaInfo = s; break; schemaInfo = getOrCreateSchema(serviceInfo, qname.getNamespaceURI(), true); schema = schemaInfo.getSchema(); } else { schema = schemaInfo.getSchema(); if (schema != null && schema.getElementByName(qname) != null) { mpi.setElement(true); mpi.setElementQName(qname); mpi.setXmlSchema(schema.getElementByName(qname)); paraNumber++; continue; schemaInfo.setElement(null); //cached element is now invalid XmlSchemaElement el = new XmlSchemaElement(schema, true); el.setName(qname.getLocalPart());
QName wrapperName) { XmlSchema schema = info.getSchema(); info.setElement(null); // the cached schema will be no good XmlSchemaElement el = new XmlSchemaElement(schema, true); el.setName(wrapperName.getLocalPart()); wrappedMessage.getFirstMessagePart().setXmlSchema(el); ct.setName(wrapperName.getLocalPart()); el.setSchemaTypeName(wrapperName); el.setSchemaType((XmlSchemaType)mpi.getXmlSchema()); if (schema.getElementFormDefault().equals(XmlSchemaForm.UNQUALIFIED)) { mpi.setConcreteName(new QName(null, mpi.getName().getLocalPart())); } else { SchemaInfo headerSchemaInfo = getOrCreateSchema(serviceInfo, qn.getNamespaceURI(), getQualifyWrapperSchema()); if (!isExistSchemaElement(headerSchemaInfo.getSchema(), qn)) { headerSchemaInfo.getSchema().getItems().add(el);
} else if (obj instanceof UnknownExtensibilityElement) { org.w3c.dom.Element elem = ((UnknownExtensibilityElement)obj).getElement(); if (elem.getLocalName().equals("schema")) { schemaElem = elem; synchronized (schemaElem.getOwnerDocument()) { String ns = nameSpaces.get(prefix); if ("".equals(prefix)) { if (!schemaElem.hasAttribute("xmlns")) { Attr attr = schemaElem.getOwnerDocument() schemaCol.setBaseUri(def.getDocumentBaseURI()); CatalogXmlSchemaURIResolver schemaResolver = new CatalogXmlSchemaURIResolver(bus); schemaCol.setSchemaResolver(schemaResolver); XmlSchema xmlSchema = schemaCol.read(schemaElem, systemId); catalogResolved.putAll(schemaResolver.getResolvedMap()); SchemaInfo schemaInfo = new SchemaInfo(xmlSchema.getTargetNamespace()); schemaInfo.setSchema(xmlSchema); schemaInfo.setSystemId(systemId); schemaInfo.setElement(schemaElem); schemaInfos.add(schemaInfo); schemaCount++;
private void buildExceptionType(MessagePartInfo part, Class<?> cls) { SchemaInfo schemaInfo = null; for (SchemaInfo s : serviceInfo.getSchemas()) { if (s.getNamespaceURI().equals(part.getElementQName().getNamespaceURI())) { schemaInfo = s; break; XmlSchema faultBeanSchema = null; if (xmlTypeAnno != null && !StringUtils.isEmpty(xmlTypeAnno.namespace()) && !xmlTypeAnno.namespace().equals(part.getElementQName().getNamespaceURI())) { respectXmlTypeNS = true; NamespaceMap nsMap = new NamespaceMap(); faultBeanSchema = faultBeanSchemaInfo.getSchema(); schema = schemaInfo.getSchema(); ? xmlTypeAnno.name() : part.getElementQName().getLocalPart(); XmlSchemaType existingType = schema.getTypeByName(faultTypeName); if (existingType != null) { return; el.setName(part.getElementQName().getLocalPart()); part.setXmlSchema(el); schemaInfo.setElement(null); schemas.addCrossImports(); part.setProperty(JAXBDataBinding.class.getName() + ".CUSTOM_EXCEPTION", Boolean.TRUE);
private void updateImports(Element el, Map<String, SchemaInfo> imports) { List<Element> imps = DOMUtils.getChildrenWithName(el, WSDLConstants.NS_SCHEMA_XSD, "import"); for (Element e : imps) { String ns = e.getAttribute("namespace"); for (Map.Entry<String, SchemaInfo> ent : imports.entrySet()) { if (ent.getValue().getNamespaceURI().equals(ns)) { e.setAttribute("schemaLocation", ent.getKey()); } } } }
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); }
String ns = t.getSchemaType().getNamespaceURI(); Set<AegisType> types = tns2Type.get(ns); if (types == null) { SchemaCollection col = si.getXmlSchemaCollection(); if (col.getXmlSchemas().length > 1) { SchemaInfo schemaInfo = si.addNewSchema(entry.getKey()); XmlSchema schema = schemaInfo.getSchema(); NamespaceMap xmlsNamespaceMap = new NamespaceMap(); schema.setNamespaceContext(xmlsNamespaceMap); schema.setTargetNamespace(entry.getKey()); schema.setElementFormDefault(XmlSchemaForm.QUALIFIED); schema.setAttributeFormDefault(XmlSchemaForm.QUALIFIED); XmlSchema schema = aegisContext.addXmimeSchemaDocument(si.getXmlSchemaCollection() .getXmlSchemaCollection()); SchemaInfo schemaInfo = new SchemaInfo(schema.getTargetNamespace()); schemaInfo.setSchema(schema); si.addSchema(schemaInfo); XmlSchema schema = aegisContext.addTypesSchemaDocument(si.getXmlSchemaCollection() .getXmlSchemaCollection()); SchemaInfo schemaInfo = new SchemaInfo(schema.getTargetNamespace()); schemaInfo.setSchema(schema); si.addSchema(schemaInfo);
SchemaInfo schemaInfo = serviceInfo.getSchema(part.getElementQName().getNamespaceURI()); if (schemaInfo != null && !isExistSchemaElement(schemaInfo.getSchema(), part.getElementQName())) { XmlSchemaElement el = new XmlSchemaElement(schemaInfo.getSchema(), true); el.setName(part.getElementQName().getLocalPart()); el.setNillable(true); schemaInfo.setElement(null); SchemaInfo schemaInfo = serviceInfo.getSchema(part.getElementQName().getNamespaceURI()); if (schemaInfo == null || isExistSchemaElement(schemaInfo.getSchema(), part.getElementQName())) { return; XmlSchemaElement el = new XmlSchemaElement(schemaInfo.getSchema(), true); schemaInfo.setElement(null); XmlSchemaComplexType ct = new XmlSchemaComplexType(schemaInfo.getSchema(), false); el.setSchemaType(ct); XmlSchemaSequence seq = new XmlSchemaSequence(); el = new XmlSchemaElement(schemaInfo.getSchema(), false); el.setName(m.getName().substring(beginIdx)); Iterator<QName> itr = beanInfo.getTypeNames().iterator();
return element; if (getSchema() == null) { throw new RuntimeException("No XmlSchema in SchemaInfo"); XmlSchema sch = getSchema(); synchronized (sch) { XmlSchema schAgain = getSchema(); if (schAgain.getNamespaceContext() == null) { NamespaceMap nsMap = new NamespaceMap(); nsMap.add("xsd", Constants.URI_2001_SCHEMA_XSD); nsMap.add("tns", schAgain.getTargetNamespace()); schAgain.setNamespaceContext(nsMap); if (element.getPrefix() == null && !Constants.URI_2001_SCHEMA_XSD.equals(element.getAttributeNS(Constants.XMLNS_ATTRIBUTE_NS_URI, Constants.XMLNS_ATTRIBUTE))) { Attr attr = element.getOwnerDocument() .createAttributeNS(Constants.XMLNS_ATTRIBUTE_NS_URI, Constants.XMLNS_ATTRIBUTE); attr.setValue(Constants.URI_2001_SCHEMA_XSD);
ServiceInfo serviceInfo = builder.createService(); File jsFile = getOutputFile(builder.getOutputFile(), serviceInfo.getName().getLocalPart() + ".js"); .getXmlSchemaCollection()); Collection<SchemaInfo> schemata = serviceInfo.getSchemas(); BufferedWriter writer = null; try { SchemaJavascriptBuilder jsBuilder = new SchemaJavascriptBuilder(serviceInfo .getXmlSchemaCollection(), prefixManager, nameManager); String allThatJavascript = jsBuilder.generateCodeForSchema(schema.getSchema()); writer.append(allThatJavascript);
private void createBridgeXsElement(MessagePartInfo part, QName qn, QName typeName) { XmlSchemaElement el = null; SchemaInfo schemaInfo = serviceInfo.getSchema(qn.getNamespaceURI()); if (schemaInfo != null) { el = schemaInfo.getElementByQName(qn); if (el == null) { createXsElement(schemaInfo.getSchema(), part, typeName, schemaInfo); } else if (!typeName.equals(el.getSchemaTypeName())) { throw new Fault(new Message("CANNOT_CREATE_ELEMENT", LOG, qn, typeName, el.getSchemaTypeName())); } return; } XmlSchema schema = schemas.newXmlSchemaInCollection(qn.getNamespaceURI()); if (qualifiedSchemas) { schema.setElementFormDefault(XmlSchemaForm.QUALIFIED); } schemaInfo = new SchemaInfo(qn.getNamespaceURI(), qualifiedSchemas, false); schemaInfo.setSchema(schema); el = createXsElement(schema, part, typeName, schemaInfo); NamespaceMap nsMap = new NamespaceMap(); nsMap.add(WSDLConstants.CONVENTIONAL_TNS_PREFIX, schema.getTargetNamespace()); nsMap.add(WSDLConstants.NP_SCHEMA_XSD, WSDLConstants.NS_SCHEMA_XSD); schema.setNamespaceContext(nsMap); serviceInfo.addSchema(schemaInfo); }
public static SchemaInfo getSchema(ServiceInfo serviceInfo, MessagePartInfo messagePartInfo) { SchemaInfo schemaInfo = null; String tns = null; if (messagePartInfo.isElement()) { tns = messagePartInfo.getElementQName().getNamespaceURI(); } else { tns = messagePartInfo.getTypeQName().getNamespaceURI(); } for (SchemaInfo schema : serviceInfo.getSchemas()) { if (tns.equals(schema.getNamespaceURI())) { schemaInfo = schema; } } return schemaInfo; }
if (file == null && dir != null) { if (dir.isDirectory()) { file = new File(dir, getServiceModel().getName().getLocalPart() + ".wsdl"); } else { file = dir; file = new File(getServiceModel().getName().getLocalPart() + ".wsdl"); wsdlFile = new File(outputdir, wsdlImport.getLocationURI()); } else { wsdlFile = new File(outputdir, wsdlDef.getQName().getLocalPart() + ".wsdl"); Element el = imp.getValue().getElement(); updateImports(el, imports); FileWriterUtil fileWriterUtil =
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; }