[jboss-svn-commits] JBossWS SVN: r687 - in branches/jbossws-1.0/src: main/java/org/jboss/ws/jaxb main/java/org/jboss/ws/metadata/wsdl main/java/org/jboss/ws/metadata/wsdl/xmlschema main/java/org/jboss/ws/tools test/java/org/jboss/test/ws/tools/xmlschema
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Aug 4 08:23:18 EDT 2006
Author: thomas.diesler at jboss.com
Date: 2006-08-04 08:23:11 -0400 (Fri, 04 Aug 2006)
New Revision: 687
Modified:
branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxb/JBossXBSupport.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxb/SchemaBindingBuilder.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/WSDL11DefinitionFactory.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/WSDLDefinitionsFactory.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/xmlschema/JBossXSEntityResolver.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/xmlschema/JBossXSStringList.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/JavaToXSD.java
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/tools/xmlschema/XercesSchemaParserTestCase.java
Log:
fix schema parsing when offline
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxb/JBossXBSupport.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxb/JBossXBSupport.java 2006-08-04 11:52:12 UTC (rev 686)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxb/JBossXBSupport.java 2006-08-04 12:23:11 UTC (rev 687)
@@ -1,26 +1,25 @@
package org.jboss.ws.jaxb;
-import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
-import org.jboss.xb.binding.ObjectLocalMarshaller;
-import org.jboss.xb.binding.MarshallingContext;
-import org.jboss.xb.util.Dom2Sax;
-import org.jboss.ws.soap.SOAPMessageContextImpl;
-import org.jboss.ws.soap.MessageContextAssociation;
-import org.jboss.ws.metadata.OperationMetaData;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.jboss.util.xml.JBossEntityResolver;
import org.jboss.ws.metadata.EndpointMetaData;
+import org.jboss.ws.metadata.OperationMetaData;
import org.jboss.ws.metadata.ServiceMetaData;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
import org.jboss.ws.metadata.wsdl.xmlschema.JBossXSModel;
-import org.jboss.ws.WSException;
-import org.jboss.util.xml.JBossEntityResolver;
+import org.jboss.ws.soap.MessageContextAssociation;
+import org.jboss.ws.soap.SOAPMessageContextImpl;
+import org.jboss.xb.binding.MarshallingContext;
+import org.jboss.xb.binding.ObjectLocalMarshaller;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.util.Dom2Sax;
import org.w3c.dom.Element;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
-import org.xml.sax.EntityResolver;
-import javax.xml.namespace.QName;
-import java.util.Map;
-
/**
* @author Heiko Braun <heiko.braun at jboss.com>
* @since May 31, 2006
@@ -105,13 +104,4 @@
}
};
}
-
- /**
- * Create an entity resolver that has local entites registered.
- */
- public static JBossEntityResolver createEntityResolver() {
- JBossEntityResolver resolver = new JBossEntityResolver();
- resolver.registerLocalEntity("http://www.w3.org/2005/08/addressing", "schema/ws-addr.xsd");
- return resolver;
- }
}
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxb/SchemaBindingBuilder.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxb/SchemaBindingBuilder.java 2006-08-04 11:52:12 UTC (rev 686)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxb/SchemaBindingBuilder.java 2006-08-04 12:23:11 UTC (rev 687)
@@ -34,20 +34,33 @@
import org.apache.xerces.xs.XSModel;
import org.jboss.logging.Logger;
+import org.jboss.util.xml.JBossEntityResolver;
+import org.jboss.ws.Constants;
+import org.jboss.ws.WSException;
import org.jboss.ws.metadata.jaxrpcmapping.ExceptionMapping;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
import org.jboss.ws.metadata.jaxrpcmapping.JavaXmlTypeMapping;
import org.jboss.ws.metadata.jaxrpcmapping.PackageMapping;
import org.jboss.ws.metadata.jaxrpcmapping.VariableMapping;
-import org.jboss.ws.Constants;
-import org.jboss.ws.WSException;
+import org.jboss.ws.utils.JBossWSEntityResolver;
import org.jboss.xb.binding.metadata.ClassMetaData;
import org.jboss.xb.binding.metadata.PackageMetaData;
import org.jboss.xb.binding.metadata.PropertyMetaData;
import org.jboss.xb.binding.metadata.ValueMetaData;
-import org.jboss.xb.binding.sunday.unmarshalling.*;
+import org.jboss.xb.binding.sunday.unmarshalling.AttributeBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.CharactersHandler;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ModelGroupBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ParticleHandler;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SimpleTypeBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TermBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.WildcardBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
import org.jboss.xb.binding.sunday.unmarshalling.impl.runtime.RtElementHandler;
-import org.jboss.util.xml.JBossEntityResolver;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.xml.sax.Attributes;
@@ -72,7 +85,7 @@
*/
public SchemaBinding buildSchemaBinding(XSModel model, JavaWsdlMapping wsdlMapping)
{
- JBossEntityResolver resolver = JBossXBSupport.createEntityResolver();
+ JBossEntityResolver resolver = new JBossWSEntityResolver();
SchemaBinding schemaBinding = XsdBinder.bind(model, new DefaultSchemaResolver(resolver));
schemaBinding.setIgnoreLowLine(false);
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/WSDL11DefinitionFactory.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/WSDL11DefinitionFactory.java 2006-08-04 11:52:12 UTC (rev 686)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/WSDL11DefinitionFactory.java 2006-08-04 12:23:11 UTC (rev 687)
@@ -21,11 +21,15 @@
*/
package org.jboss.ws.metadata.wsdl;
-// $Id: WSDL11DefinitionFactory.java 275 2006-05-04 21:36:29Z jason.greene at jboss.com $
+// $Id: WSDL11DefinitionFactory.java 680 2006-08-03 21:04:42Z thomas.diesler at jboss.com $
import org.jboss.logging.Logger;
+import org.jboss.ws.utils.JBossWSEntityResolver;
+import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
+import com.ibm.wsdl.xml.WSDLReaderImpl;
+
import javax.wsdl.Definition;
import javax.wsdl.WSDLException;
import javax.wsdl.factory.WSDLFactory;
@@ -83,116 +87,14 @@
if (wsdlLocation == null)
throw new IllegalArgumentException("URL cannot be null");
- Definition wsdlDefinition = wsdlReader.readWSDL(new WSDLLocatorImpl(wsdlLocation));
+ log.debug("parse: " + wsdlLocation.toExternalForm());
+
+ EntityResolver entityResolver = new JBossWSEntityResolver();
+
+ // Set EntityResolver in patched version of wsdl4j-1.5.2jboss
+ ((WSDLReaderImpl)wsdlReader).setEntityResolver(entityResolver);
+
+ Definition wsdlDefinition = wsdlReader.readWSDL(new WSDLLocatorImpl(entityResolver, wsdlLocation));
return wsdlDefinition;
}
-
- /* A WSDLLocator that can handle wsdl imports
- */
- public static class WSDLLocatorImpl implements WSDLLocator
- {
- private URL wsdlURL;
- private String latestImportURI;
-
- public WSDLLocatorImpl(URL wsdlFile)
- {
- if (wsdlFile == null)
- throw new IllegalArgumentException("WSDL file argument cannot be null");
-
- this.wsdlURL = wsdlFile;
- }
-
- public InputSource getBaseInputSource()
- {
- log.debug("getBaseInputSource [wsdlUrl=" + wsdlURL + "]");
- try
- {
- InputStream is = wsdlURL.openStream();
- if (is == null)
- throw new IllegalArgumentException("Cannot obtain wsdl from [" + wsdlURL + "]");
-
- return new InputSource(is);
- }
- catch (IOException e)
- {
- throw new RuntimeException("Cannot access wsdl from [" + wsdlURL + "], " + e.getMessage());
- }
- }
-
- public String getBaseURI()
- {
- return wsdlURL.toExternalForm();
- }
-
- public InputSource getImportInputSource(String parent, String resource)
- {
- log.debug("getImportInputSource [parent=" + parent + ",resource=" + resource + "]");
-
- URL parentURL = null;
- try
- {
- parentURL = new URL(parent);
- }
- catch (MalformedURLException e)
- {
- log.error("Not a valid URL: " + parent);
- return null;
- }
-
- String wsdlImport = null;
- String external = parentURL.toExternalForm();
-
- // An external URL
- if (resource.startsWith("http://") || resource.startsWith("https://"))
- {
- wsdlImport = resource;
- }
-
- // Absolute path
- else if (resource.startsWith("/"))
- {
- String beforePath = external.substring(0, external.indexOf(parentURL.getPath()));
- wsdlImport = beforePath + resource;
- }
-
- // A relative path
- else
- {
- String parentDir = external.substring(0, external.lastIndexOf("/"));
-
- // remove references to current dir
- while (resource.startsWith("./"))
- resource = resource.substring(2);
-
- // remove references to parentdir
- while (resource.startsWith("../"))
- {
- parentDir = parentDir.substring(0, parentDir.lastIndexOf("/"));
- resource = resource.substring(3);
- }
-
- wsdlImport = parentDir + "/" + resource;
- }
-
- try
- {
- log.debug("Resolved to: " + wsdlImport);
- InputStream is = new URL(wsdlImport).openStream();
- if (is == null)
- throw new IllegalArgumentException("Cannot import wsdl from [" + wsdlImport + "]");
-
- latestImportURI = wsdlImport;
- return new InputSource(is);
- }
- catch (IOException e)
- {
- throw new RuntimeException("Cannot access imported wsdl [" + wsdlImport + "], " + e.getMessage());
- }
- }
-
- public String getLatestImportURI()
- {
- return latestImportURI;
- }
- }
}
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/WSDLDefinitionsFactory.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/WSDLDefinitionsFactory.java 2006-08-04 11:52:12 UTC (rev 686)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/WSDLDefinitionsFactory.java 2006-08-04 12:23:11 UTC (rev 687)
@@ -23,10 +23,8 @@
// $Id$
-import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
-import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
@@ -34,20 +32,16 @@
import javax.wsdl.Definition;
import javax.wsdl.factory.WSDLFactory;
-import javax.wsdl.xml.WSDLLocator;
import javax.wsdl.xml.WSDLReader;
import javax.xml.parsers.DocumentBuilder;
import org.jboss.logging.Logger;
import org.jboss.util.xml.DOMUtils;
-import org.jboss.util.xml.JBossEntityResolver;
import org.jboss.ws.Constants;
-import org.jboss.ws.WSException;
-import org.jboss.ws.jaxb.JBossXBSupport;
+import org.jboss.ws.utils.JBossWSEntityResolver;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
import com.ibm.wsdl.xml.WSDLReaderImpl;
@@ -103,9 +97,9 @@
if (wsdlLocation == null)
throw new IllegalArgumentException("URL cannot be null");
- EntityResolver entityResolver = JBossXBSupport.createEntityResolver();
-
log.debug("parse: " + wsdlLocation.toExternalForm());
+
+ EntityResolver entityResolver = new JBossWSEntityResolver();
WSDLDefinitions wsdlDefinitions = null;
try
{
@@ -213,124 +207,4 @@
String defaultNamespace = root.getNamespaceURI();
return defaultNamespace;
}
-
- /* A WSDLLocator that can handle wsdl imports
- */
- public static class WSDLLocatorImpl implements WSDLLocator
- {
- private EntityResolver entityResolver;
- private URL wsdlURL;
- private String latestImportURI;
-
- public WSDLLocatorImpl(EntityResolver entityResolver, URL wsdlFile)
- {
- if (wsdlFile == null)
- throw new IllegalArgumentException("WSDL file argument cannot be null");
-
- this.entityResolver = entityResolver;
- this.wsdlURL = wsdlFile;
- }
-
- public InputSource getBaseInputSource()
- {
- log.trace("getBaseInputSource [wsdlUrl=" + wsdlURL + "]");
- try
- {
- InputStream is = wsdlURL.openStream();
- if (is == null)
- throw new IllegalArgumentException("Cannot obtain wsdl from [" + wsdlURL + "]");
-
- return new InputSource(is);
- }
- catch (IOException e)
- {
- throw new RuntimeException("Cannot access wsdl from [" + wsdlURL + "], " + e.getMessage());
- }
- }
-
- public String getBaseURI()
- {
- return wsdlURL.toExternalForm();
- }
-
- public InputSource getImportInputSource(String parent, String resource)
- {
- log.trace("getImportInputSource [parent=" + parent + ",resource=" + resource + "]");
-
- URL parentURL = null;
- try
- {
- parentURL = new URL(parent);
- }
- catch (MalformedURLException e)
- {
- log.error("Not a valid URL: " + parent);
- return null;
- }
-
- String wsdlImport = null;
- String external = parentURL.toExternalForm();
-
- // An external URL
- if (resource.startsWith("http://") || resource.startsWith("https://"))
- {
- wsdlImport = resource;
- }
-
- // Absolute path
- else if (resource.startsWith("/"))
- {
- String beforePath = external.substring(0, external.indexOf(parentURL.getPath()));
- wsdlImport = beforePath + resource;
- }
-
- // A relative path
- else
- {
- String parentDir = external.substring(0, external.lastIndexOf("/"));
-
- // remove references to current dir
- while (resource.startsWith("./"))
- resource = resource.substring(2);
-
- // remove references to parentdir
- while (resource.startsWith("../"))
- {
- parentDir = parentDir.substring(0, parentDir.lastIndexOf("/"));
- resource = resource.substring(3);
- }
-
- wsdlImport = parentDir + "/" + resource;
- }
-
- try
- {
- log.trace("Trying to resolve: " + wsdlImport);
- InputSource inputSource = entityResolver.resolveEntity(wsdlImport, wsdlImport);
- if (inputSource != null)
- {
- latestImportURI = wsdlImport;
- }
- else
- {
- throw new IllegalArgumentException("Cannot resolve imported resource: " + wsdlImport);
- }
-
- return inputSource;
- }
- catch (RuntimeException rte)
- {
- throw rte;
- }
- catch (Exception e)
- {
- throw new WSException("Cannot access imported wsdl [" + wsdlImport + "], " + e.getMessage());
- }
- }
-
- public String getLatestImportURI()
- {
- return latestImportURI;
- }
- }
}
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/xmlschema/JBossXSEntityResolver.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/xmlschema/JBossXSEntityResolver.java 2006-08-04 11:52:12 UTC (rev 686)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/xmlschema/JBossXSEntityResolver.java 2006-08-04 12:23:11 UTC (rev 687)
@@ -34,8 +34,8 @@
import org.apache.xerces.xni.parser.XMLEntityResolver;
import org.apache.xerces.xni.parser.XMLInputSource;
import org.jboss.logging.Logger;
-import org.jboss.util.xml.JBossEntityResolver;
import org.jboss.ws.Constants;
+import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -52,11 +52,12 @@
private Map<String, URL> schemaLocationByNamespace = new HashMap<String, URL>();
- private JBossEntityResolver resolver = new JBossEntityResolver();
+ private EntityResolver delegate;
- public JBossXSEntityResolver(Map<String, URL> schemaLocationByNamespace)
+ public JBossXSEntityResolver(EntityResolver resolver, Map<String, URL> schemaLocationByNamespace)
{
this.schemaLocationByNamespace = schemaLocationByNamespace;
+ this.delegate = resolver;
}
/**
@@ -79,7 +80,7 @@
try
{
String publicURI = (publicId != null ? publicId : namespace);
- InputSource inputSource = resolver.resolveEntity(publicURI, systemId);
+ InputSource inputSource = delegate.resolveEntity(publicURI, systemId);
if (inputSource != null)
{
XMLInputSource source = getXMLInputSource(inputSource, resId);
@@ -136,7 +137,7 @@
// Delegate to JBoss Entity Resolver
XMLInputSource source = getXMLInputSource(
- resolver.resolveEntity(null, namespaceURI), resId);
+ delegate.resolveEntity(null, namespaceURI), resId);
if (source != null)
return source;
}
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/xmlschema/JBossXSStringList.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/xmlschema/JBossXSStringList.java 2006-08-04 11:52:12 UTC (rev 686)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/wsdl/xmlschema/JBossXSStringList.java 2006-08-04 12:23:11 UTC (rev 687)
@@ -91,7 +91,7 @@
return strList;
}
- void addItem(String str)
+ public void addItem(String str)
{
strList.add(str);
}
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/JavaToXSD.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/JavaToXSD.java 2006-08-04 11:52:12 UTC (rev 686)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/JavaToXSD.java 2006-08-04 12:23:11 UTC (rev 687)
@@ -25,9 +25,8 @@
import java.io.IOException;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import javax.xml.namespace.QName;
@@ -46,6 +45,7 @@
import org.jboss.ws.tools.helpers.JavaToXSDHelper;
import org.jboss.ws.tools.interfaces.JavaToXSDIntf;
import org.jboss.ws.tools.interfaces.SchemaCreatorIntf;
+import org.jboss.ws.utils.JBossWSEntityResolver;
import org.jboss.xb.binding.sunday.unmarshalling.LSInputAdaptor;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
@@ -126,12 +126,14 @@
public JBossXSModel parseSchema(URL xsdURL)
{
JBossXSErrorHandler xserr = new JBossXSErrorHandler();
- XMLSchemaLoader loader = (XMLSchemaLoader)schemautils.getXSLoader(xserr, null);
+ JBossWSEntityResolver resolver = new JBossWSEntityResolver();
+ JBossXSEntityResolver xsresolve = new JBossXSEntityResolver(resolver, new HashMap<String, URL>());
+ XMLSchemaLoader loader = (XMLSchemaLoader)schemautils.getXSLoader(xserr, xsresolve);
+
XSModel xsmodel = loader.loadURI(xsdURL.toExternalForm());
- //XSModel xsmodel = schemautils.parseSchema(xsdURL);
- String typeNamespace = SchemaUtils.getTargetNamespace(xsmodel);
if (xsmodel == null)
- throw new WSException("Parsed XSModel is null");
+ throw new WSException("Cannot load schema: " + xsdURL);
+
WSSchemaUtils sutils = WSSchemaUtils.getInstance(null, null);
JBossXSModel jbxs = new JBossXSModel();
sutils.copyXSModel(xsmodel, jbxs);
@@ -139,66 +141,44 @@
}
/**
- * Given a set of schema files, parse them to yield an unified
- * JBossXSModel
- * @param locations a List of locations of schema files as String
- * @return unified JBossXSModel
- */
- public JBossXSModel parseSchema(List<String> locations)
- {
-
- XSModel xsmodel = schemautils.parseSchema(locations);
- String typeNamespace = SchemaUtils.getTargetNamespace(xsmodel);
- if (xsmodel == null)
- throw new WSException("Parsed XSModel is null");
- WSSchemaUtils sutils = WSSchemaUtils.getInstance(null, null);
- JBossXSModel jbxs = new JBossXSModel();
- sutils.copyXSModel(xsmodel, jbxs);
- return jbxs;
- }
-
- /**
- * Given a set of schema files, parse them to yield an unified
- * JBossXSModel
+ * Given a set of schema files, parse them to yield an unified JBossXSModel
* @param locs a map of schema namespace to schema location
* @return unified JBossXSModel
*/
public JBossXSModel parseSchema(Map<String, URL> locs)
{
- if (locs == null)
- throw new IllegalArgumentException("Illegal Null Argument:locs");
- if (locs.size() == 0)
- throw new IllegalArgumentException("Illegal size Argument:locs is zero");
- Collection<URL> col = locs.values();
- List<String> strlist = new ArrayList<String>();
- for (URL uri : col)
- {
- strlist.add(uri.toExternalForm());
- }
+ if (locs == null || locs.size() == 0)
+ throw new IllegalArgumentException("Illegal schema location map");
+
JBossXSErrorHandler xserr = new JBossXSErrorHandler();
- JBossXSEntityResolver xsresolve = new JBossXSEntityResolver(locs);
+ JBossWSEntityResolver resolver = new JBossWSEntityResolver();
+ JBossXSEntityResolver xsresolve = new JBossXSEntityResolver(resolver, locs);
XMLSchemaLoader loader = (XMLSchemaLoader)schemautils.getXSLoader(xserr, xsresolve);
- //XMLSchemaLoader loader = (XMLSchemaLoader)schemautils.getXSLoader();
- List<String> locations = new ArrayList<String>();
- Collection<URL> urls = locs.values();
- for (URL url : urls)
+
+ JBossXSStringList slist = new JBossXSStringList();
+ Iterator<String> keys = locs.keySet().iterator();
+ while (keys.hasNext())
{
- locations.add(url.toExternalForm());
+ String nsURI = keys.next();
+ URL orgURL = locs.get(nsURI);
+ URL resURL = resolver.resolveNamespaceURI(nsURI);
+ URL url = resURL != null ? resURL : orgURL;
+ log.debug("load schema: " + nsURI + "=" + url);
+ slist.addItem(url.toExternalForm());
}
- JBossXSStringList slist = new JBossXSStringList(locations);
+
XSModel xsmodel = loader.loadURIList(slist);
if (xsmodel == null)
throw new WSException("Cannot load schema: " + slist);
//TODO: Once JBXB-33 is fixed, migrate Schema Parsing to XB
//XSModel xsmodel = Util.loadSchema(slist,this.getSchemaBindingResolver(locs));
- String typeNamespace = SchemaUtils.getTargetNamespace(xsmodel);
- if (xsmodel == null)
- throw new WSException("Parsed XSModel is null");
+ // Convert Xerces XSModel into r/w JBossXSModel
WSSchemaUtils sutils = WSSchemaUtils.getInstance(null, null);
JBossXSModel jbxs = new JBossXSModel();
sutils.copyXSModel(xsmodel, jbxs);
+
return jbxs;
}
@@ -212,8 +192,6 @@
/**
* Set the WSDL Style
- *
- * @param style
*/
public void setWSDLStyle(String style)
{
@@ -224,16 +202,8 @@
// PRIVATE METHODS
//******************************************************************
- private Class loadClass(String classname) throws ClassNotFoundException
- {
- return Thread.currentThread().getContextClassLoader().loadClass(classname);
- }
-
/**
* FIXME: JBXB-33
- *
- * @param map
- * @return
*/
private SchemaBindingResolver getSchemaBindingResolver(final Map<String, URL> map)
{
Modified: branches/jbossws-1.0/src/test/java/org/jboss/test/ws/tools/xmlschema/XercesSchemaParserTestCase.java
===================================================================
--- branches/jbossws-1.0/src/test/java/org/jboss/test/ws/tools/xmlschema/XercesSchemaParserTestCase.java 2006-08-04 11:52:12 UTC (rev 686)
+++ branches/jbossws-1.0/src/test/java/org/jboss/test/ws/tools/xmlschema/XercesSchemaParserTestCase.java 2006-08-04 12:23:11 UTC (rev 687)
@@ -23,7 +23,6 @@
import java.io.File;
import java.io.FileOutputStream;
-import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
@@ -55,6 +54,7 @@
import org.jboss.ws.metadata.wsdl.xmlschema.JBossXSParticle;
import org.jboss.ws.metadata.wsdl.xsd.SchemaUtils;
import org.jboss.ws.tools.JavaToXSD;
+import org.jboss.ws.utils.JBossWSEntityResolver;
import org.jboss.xb.binding.sunday.unmarshalling.LSInputAdaptor;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
@@ -180,7 +180,7 @@
map.put(typeNS,new File("resources/wsdlfixture/customtype/CustomTypeObj.xsd").toURL());
map.put(arrTypeNS,new File("resources/wsdlfixture/customtype/CustomTypeArrays.xsd").toURL());
- ((XMLSchemaLoader)xsloader).setEntityResolver(new JBossXSEntityResolver(map));
+ ((XMLSchemaLoader)xsloader).setEntityResolver(new JBossXSEntityResolver(new JBossWSEntityResolver(), map));
//Construct a StringList
StringList slist = new StringListImpl(arr, 2);
System.out.println("FIXME: JBXB-33");
More information about the jboss-svn-commits
mailing list