use of com.sun.xml.ws.wsdl.writer.document.xsd.Schema in project metro-jax-ws by eclipse-ee4j.
the class ServiceArtifactSchemaGenerator method initWrappersSchemaWithImports.
// All the imports have to go first ...
private HashMap<String, Schema> initWrappersSchemaWithImports(List<WrapperParameter> wrappers) {
Object o = model.databindingInfo().properties().get(RuntimeModeler.DocWrappeeNamespapceQualified);
boolean wrappeeQualified = (o instanceof Boolean) ? ((Boolean) o) : false;
HashMap<String, Schema> xsds = new HashMap<>();
HashMap<String, Set<String>> imports = new HashMap<>();
for (WrapperParameter wp : wrappers) {
String tns = wp.getName().getNamespaceURI();
Schema xsd = xsds.get(tns);
if (xsd == null) {
xsd = create(tns);
xsd.targetNamespace(tns);
if (wrappeeQualified)
xsd._attribute("elementFormDefault", "qualified");
xsds.put(tns, xsd);
}
for (ParameterImpl p : wp.getWrapperChildren()) {
String nsToImport = (p.getBinding().isBody()) ? bodyParamNS(p) : null;
if (nsToImport != null && !nsToImport.equals(tns) && !nsToImport.equals("http://www.w3.org/2001/XMLSchema")) {
Set<String> importSet = imports.computeIfAbsent(tns, k -> new HashSet<>());
importSet.add(nsToImport);
}
}
}
for (Entry<String, Set<String>> entry : imports.entrySet()) {
String tns = entry.getKey();
Set<String> importSet = entry.getValue();
Schema xsd = xsds.get(tns);
for (String nsToImport : importSet) xsd._namespace(nsToImport, true);
for (String nsToImport : importSet) {
com.sun.xml.ws.wsdl.writer.document.xsd.Import imp = xsd._import();
imp.namespace(nsToImport);
}
}
return xsds;
}
use of com.sun.xml.ws.wsdl.writer.document.xsd.Schema in project metro-jax-ws by eclipse-ee4j.
the class ServiceArtifactSchemaGenerator method generate.
public void generate(SchemaOutputResolver resolver) {
xsdResolver = resolver;
List<WrapperParameter> wrappers = new ArrayList<>();
for (JavaMethodImpl method : model.getJavaMethods()) {
if (method.getBinding().isRpcLit())
continue;
for (ParameterImpl p : method.getRequestParameters()) {
if (p instanceof WrapperParameter) {
if (WrapperComposite.class.equals((p.getTypeInfo().type))) {
wrappers.add((WrapperParameter) p);
}
}
}
for (ParameterImpl p : method.getResponseParameters()) {
if (p instanceof WrapperParameter) {
if (WrapperComposite.class.equals((p.getTypeInfo().type))) {
wrappers.add((WrapperParameter) p);
}
}
}
}
if (wrappers.isEmpty())
return;
HashMap<String, Schema> xsds = initWrappersSchemaWithImports(wrappers);
postInit(xsds);
for (WrapperParameter wp : wrappers) {
String tns = wp.getName().getNamespaceURI();
Schema xsd = xsds.get(tns);
Element e = xsd._element(Element.class);
e._attribute("name", wp.getName().getLocalPart());
e.type(wp.getName());
ComplexType ct = xsd._element(ComplexType.class);
ct._attribute("name", wp.getName().getLocalPart());
ExplicitGroup sq = ct.sequence();
for (ParameterImpl p : wp.getWrapperChildren()) if (p.getBinding().isBody())
addChild(sq, p);
}
for (Schema xsd : xsds.values()) xsd.commit();
}
Aggregations