You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2011/10/18 23:09:50 UTC
svn commit: r1185866 - in /cxf/branches/2.4.x-fixes: ./
rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/
Author: dkulp
Date: Tue Oct 18 21:09:49 2011
New Revision: 1185866
URL: http://svn.apache.org/viewvc?rev=1185866&view=rev
Log:
Merged revisions 1185862 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1185862 | dkulp | 2011-10-18 17:06:23 -0400 (Tue, 18 Oct 2011) | 2 lines
Fix some issues in the jibx tooling (and workaround issues in Jibx
itself)
........
Modified:
cxf/branches/2.4.x-fixes/ (props changed)
cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaHelper.java
cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaResolver.java
cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxToolingDataBinding.java
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Oct 18 21:09:49 2011
@@ -1 +1 @@
-/cxf/trunk:1183107,1183212,1183253,1185460,1185594
+/cxf/trunk:1183107,1183212,1183253,1185460,1185594,1185862
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaHelper.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaHelper.java?rev=1185866&r1=1185865&r2=1185866&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaHelper.java (original)
+++ cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaHelper.java Tue Oct 18 21:09:49 2011
@@ -42,11 +42,11 @@ import org.apache.cxf.catalog.CatalogXml
import org.apache.cxf.common.xmlschema.SchemaCollection;
import org.apache.cxf.helpers.CastUtils;
import org.apache.ws.commons.schema.XmlSchema;
-import org.jibx.schema.ISchemaResolver;
public class JibxSchemaHelper {
private final Map<String, Element> schemaList;
+ private List<JibxSchemaResolver> resolvers;
private final Map<String, String> catalogResolved = new HashMap<String, String>();
private final Bus bus;
@@ -56,10 +56,11 @@ public class JibxSchemaHelper {
}
public void getSchemas(final Definition def, final SchemaCollection schemaCol,
- List<ISchemaResolver> resolvers) {
+ List<JibxSchemaResolver> r) {
+ this.resolvers = r;
List<Definition> defList = new ArrayList<Definition>();
parseImports(def, defList);
- extractSchema(def, schemaCol, resolvers);
+ extractSchema(def, schemaCol);
// added
getSchemaList(def);
@@ -67,7 +68,7 @@ public class JibxSchemaHelper {
done.put(def, def);
for (Definition def2 : defList) {
if (!done.containsKey(def2)) {
- extractSchema(def2, schemaCol, resolvers);
+ extractSchema(def2, schemaCol);
// added
getSchemaList(def2);
done.put(def2, def2);
@@ -75,7 +76,7 @@ public class JibxSchemaHelper {
}
}
- private void extractSchema(Definition def, SchemaCollection schemaCol, List<ISchemaResolver> resolvers) {
+ private void extractSchema(Definition def, SchemaCollection schemaCol) {
Types typesElement = def.getTypes();
if (typesElement != null) {
int schemaCount = 1;
@@ -119,7 +120,8 @@ public class JibxSchemaHelper {
XmlSchema xmlSchema = schemaCol.read(schemaElem, systemId);
catalogResolved.putAll(schemaResolver.getResolvedMap());
- JibxSchemaResolver resolver = new JibxSchemaResolver(systemId, xmlSchema, schemaCol);
+ JibxSchemaResolver resolver
+ = new JibxSchemaResolver(systemId, xmlSchema, schemaCol, schemaElem);
resolvers.add(resolver);
// SchemaInfo schemaInfo = new SchemaInfo(xmlSchema.getTargetNamespace());
@@ -167,8 +169,15 @@ public class JibxSchemaHelper {
private void addSchema(String docBaseURI, Schema schema) {
// String docBaseURI = schema.getDocumentBaseURI();
Element schemaEle = schema.getElement();
- if (schemaList.get(docBaseURI) == null) {
- schemaList.put(docBaseURI, schemaEle);
+ String name = docBaseURI;
+ for (JibxSchemaResolver r : resolvers) {
+ if (schemaEle == r.getElement()) {
+ name = r.getId();
+ }
+ }
+
+ if (schemaList.get(name) == null) {
+ schemaList.put(name, schemaEle);
} else if (schemaList.get(docBaseURI) != null && schemaList.containsValue(schemaEle)) {
// do nothing
} else {
Modified: cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaResolver.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaResolver.java?rev=1185866&r1=1185865&r2=1185866&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaResolver.java (original)
+++ cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxSchemaResolver.java Tue Oct 18 21:09:49 2011
@@ -25,6 +25,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import org.w3c.dom.Element;
+
import org.xml.sax.InputSource;
import org.apache.cxf.common.xmlschema.SchemaCollection;
@@ -39,13 +41,15 @@ public class JibxSchemaResolver implemen
private String id;
private String name;
private XmlSchema schema;
+ private Element element;
private SchemaCollection collection;
- public JibxSchemaResolver(String id, XmlSchema schema, SchemaCollection collection) {
+ public JibxSchemaResolver(String id, XmlSchema schema, SchemaCollection collection, Element element) {
this.id = id;
setName(id);
this.schema = schema;
this.collection = collection;
+ this.element = element;
}
public InputStream getContent() throws IOException {
@@ -57,13 +61,18 @@ public class JibxSchemaResolver implemen
public String getId() {
return id;
}
+
+ public Element getElement() {
+ return element;
+ }
private void setName(String uri) {
- this.name = uri.substring(uri.lastIndexOf('/') + 1);
+ this.name = uri;
+ //this.name = uri.substring(uri.lastIndexOf('/') + 1);
}
public String getName() {
- return name; // Fot the time being
+ return name;
}
public ISchemaResolver resolve(String loc, String tns) throws IOException {
@@ -81,6 +90,6 @@ public class JibxSchemaResolver implemen
} catch (Exception e) {
// do nothing
}
- return new JibxSchemaResolver(uri, read, schemaCol);
+ return new JibxSchemaResolver(uri, read, schemaCol, null);
}
}
Modified: cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxToolingDataBinding.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxToolingDataBinding.java?rev=1185866&r1=1185865&r2=1185866&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxToolingDataBinding.java (original)
+++ cxf/branches/2.4.x-fixes/rt/databinding/jibx/src/main/java/org/apache/cxf/jibx/tools/JibxToolingDataBinding.java Tue Oct 18 21:09:49 2011
@@ -52,11 +52,15 @@ import org.apache.cxf.tools.wsdlto.core.
import org.jibx.binding.Compile;
import org.jibx.binding.Utility;
import org.jibx.binding.model.BindingElement;
+import org.jibx.binding.model.BindingHolder;
+import org.jibx.binding.model.BindingOrganizer;
import org.jibx.binding.model.BindingUtils;
import org.jibx.binding.model.MappingElement;
+import org.jibx.binding.model.ModelVisitor;
+import org.jibx.binding.model.NamespaceElement;
+import org.jibx.binding.model.TreeContext;
import org.jibx.binding.model.ValueElement;
import org.jibx.runtime.JiBXException;
-import org.jibx.schema.ISchemaResolver;
import org.jibx.schema.codegen.CodeGen;
import org.jibx.schema.codegen.PackageHolder;
import org.jibx.schema.codegen.PackageOrganizer;
@@ -64,12 +68,13 @@ import org.jibx.schema.codegen.StringObj
import org.jibx.schema.codegen.custom.SchemaCustom;
import org.jibx.schema.codegen.custom.SchemasetCustom;
import org.jibx.schema.validation.ProblemMultiHandler;
+import org.jibx.util.DummyClassLocator;
public class JibxToolingDataBinding implements DataBindingProfile {
private JibxToolingProblemHandler problemHandler = new JibxToolingProblemHandler();
private Map<String, Element> schemaMap = new HashMap<String, Element>();
- private List<ISchemaResolver> resolvers = new ArrayList<ISchemaResolver>();
+ private List<JibxSchemaResolver> resolvers = new ArrayList<JibxSchemaResolver>();
private Map<org.jibx.runtime.QName, MappingElement> types = new HashMap<org.jibx.runtime.QName,
MappingElement>();
@@ -161,14 +166,43 @@ public class JibxToolingDataBinding impl
codegen.compile();
}
- BindingElement rootBinding = codegen.getRootBinding();
- BindingUtils.getDefinitions(rootBinding, types, elements, null);
+ BindingUtils.getDefinitions(codegen.getRootBinding(), types, elements, null);
+
+ Iterator it = codegen.getBindingOrganizer().iterateBindings();
+ while (it.hasNext()) {
+ BindingHolder o = (BindingHolder)it.next();
+ getDefinitions(o, types, elements);
+ }
} catch (Exception e) {
problemHandler.handleSevere("", e);
}
}
-
+ public static void getDefinitions(final BindingHolder holder,
+ final Map<org.jibx.runtime.QName, MappingElement> types,
+ final Map<org.jibx.runtime.QName, MappingElement> elems) {
+ TreeContext ctx = new TreeContext(new DummyClassLocator());
+ ModelVisitor visitor = new ModelVisitor() {
+ public boolean visit(MappingElement mapping) {
+ org.jibx.runtime.QName qname = mapping.getTypeQName();
+ if (qname != null) {
+ types.put(qname, mapping);
+ }
+ String name = mapping.getName();
+ if (name != null) {
+ NamespaceElement ns = mapping.getNamespace();
+ if (ns == null) {
+ qname = new org.jibx.runtime.QName(holder.getElementDefaultNamespace(), name);
+ } else {
+ qname = new org.jibx.runtime.QName(mapping.getNamespace().getUri(), name);
+ }
+ elems.put(qname, mapping);
+ }
+ return false;
+ }
+ };
+ ctx.tourTree(holder.getBinding(), visitor);
+ }
public String getType(QName qn, boolean element) {
MappingElement mappingElement = element ? elements.get(jibxQName(qn)) : types.get(jibxQName(qn));
return (mappingElement == null) ? null : mappingElement.getClassName();
@@ -197,7 +231,7 @@ public class JibxToolingDataBinding impl
}
private static void loadWsdl(String wsdlUrl, Map<String, Element> schemaMap,
- List<ISchemaResolver> resolvers) throws WSDLException {
+ List<JibxSchemaResolver> resolvers) throws WSDLException {
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader reader = factory.newWSDLReader();
Definition parentDef = reader.readWSDL(wsdlUrl);
@@ -236,13 +270,17 @@ public class JibxToolingDataBinding impl
SchemaCustom schemaCustom = new SchemaCustom(customRoot);
schemaCustom.setName(schemaId);
schemaCustom.setForceTypes(Boolean.TRUE);
+ schemaCustom.setNamespace(smap.get(schemaId).getAttribute("targetNamespace"));
customRoot.getChildren().add(schemaCustom);
}
- for (ISchemaResolver r : resolvers) {
- SchemaCustom schemaCustom = new SchemaCustom(customRoot);
- schemaCustom.setName(r.getName());
- schemaCustom.setForceTypes(Boolean.TRUE);
- customRoot.getChildren().add(schemaCustom);
+ for (JibxSchemaResolver r : resolvers) {
+ if (!schemaIds.contains(r.getId())) {
+ SchemaCustom schemaCustom = new SchemaCustom(customRoot);
+ schemaCustom.setName(r.getName());
+ schemaCustom.setNamespace(r.getElement().getAttribute("targetNamespace"));
+ schemaCustom.setForceTypes(Boolean.TRUE);
+ customRoot.getChildren().add(schemaCustom);
+ }
}
return customRoot;
}
@@ -292,11 +330,16 @@ public class JibxToolingDataBinding impl
private BindingElement rootBinding;
private File compilePath;
private PackageOrganizer packageOrganizer;
+ private BindingOrganizer bindingOrganizer;
public void setProblemHandler(ProblemMultiHandler problemHandler) {
this.problemHandler = problemHandler;
}
+ public BindingOrganizer getBindingOrganizer() {
+ return bindingOrganizer;
+ }
+
public void setCustomRoot(SchemasetCustom customRoot) {
this.customRoot = customRoot;
}
@@ -394,6 +437,7 @@ public class JibxToolingDataBinding impl
}
private void setPostGenerateInfo(CodeGen codegen) {
+ this.bindingOrganizer = codegen.getBindingDirectory();
this.rootBinding = codegen.getRootBinding();
this.packageOrganizer = codegen.getPackageDirectory();
}