You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by em...@apache.org on 2006/11/15 11:22:07 UTC
svn commit: r475180 -
/incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
Author: ema
Date: Wed Nov 15 02:22:06 2006
New Revision: 475180
URL: http://svn.apache.org/viewvc?view=rev&rev=475180
Log:
Fixed LSResourceResolver issue when create schema with xsds from jar file
Modified:
incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
Modified: incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java?view=diff&rev=475180&r1=475179&r2=475180
==============================================================================
--- incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java (original)
+++ incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java Wed Nov 15 02:22:06 2006
@@ -25,8 +25,12 @@
import java.io.InputStream;
import java.io.Reader;
import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.logging.Logger;
import javax.wsdl.WSDLException;
@@ -41,7 +45,6 @@
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
@@ -65,8 +68,9 @@
import org.apache.cxf.tools.util.WSDLExtensionRegister;
public class SchemaValidator extends AbstractValidator {
+
protected static final Logger LOG = LogUtils.getL7dLogger(SchemaValidator.class);
-
+
protected String[] defaultSchemas;
protected String schemaLocation = "./";
@@ -80,6 +84,7 @@
private DocumentBuilder docBuilder;
private SAXParser saxParser;
+
public SchemaValidator(String schemaDir) throws ToolException {
super(schemaDir);
@@ -107,7 +112,6 @@
}
public boolean validate(String wsdlsource, String[] schemas) throws ToolException {
-
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
try {
docFactory.setNamespaceAware(true);
@@ -139,7 +143,8 @@
List<Source> sources = new ArrayList<Source>();
for (InputSource is : xsdsInJar) {
- StreamSource stream = new StreamSource(is.getByteStream());
+ Document doc = docBuilder.parse(is.getByteStream());
+ DOMSource stream = new DOMSource(doc, is.getSystemId());
stream.setSystemId(is.getSystemId());
sources.add(stream);
}
@@ -173,7 +178,7 @@
Document doc = docBuilder.parse(schemas[i]);
DOMSource stream = new DOMSource(doc, schemas[i]);
-
+
sources[i] = stream;
}
return sf.newSchema(sources);
@@ -382,36 +387,68 @@
}
class SchemaResourceResolver implements LSResourceResolver {
+ private static final Map<String, String> NSFILEMAP = new HashMap<String, String>();
+ static {
+ NSFILEMAP.put(ToolConstants.XML_NAMESPACE_URI, "xml.xsd");
+ NSFILEMAP.put(ToolConstants.WSDL_NAMESPACE_URI, "wsdl.xsd");
+ NSFILEMAP.put(ToolConstants.SCHEMA_URI, "XMLSchema.xsd");
+ }
public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId,
String baseURI) {
- String schemaLocation = null;
- if (baseURI != null) {
- schemaLocation = baseURI.substring(0, baseURI.lastIndexOf("/") + 1);
-
+ LSInput lsin = null;
+ String resURL = null;
+ String localFile = null;
+ if (systemId != null) {
+ String schemaLocation = "";
+ if (baseURI != null) {
+ schemaLocation = baseURI.substring(0, baseURI.lastIndexOf("/") + 1);
+ }
if (systemId.indexOf("http://") < 0) {
- systemId = schemaLocation + systemId;
+ resURL = schemaLocation + systemId;
+ } else {
+ resURL = systemId;
}
- } else {
- // try to get it from jar
- systemId = ToolConstants.CXF_SCHEMAS_DIR_INJAR + systemId;
+ } else if (namespaceURI != null) {
+ resURL = namespaceURI;
}
- URIResolver resolver = null;
-
- try {
- resolver = new URIResolver(systemId);
- } catch (IOException e1) {
+ if (resURL != null && resURL.startsWith("http://")) {
+ String filename = NSFILEMAP.get(resURL);
+ if (filename != null) {
+ localFile = ToolConstants.CXF_SCHEMAS_DIR_INJAR + filename;
+ } else {
+ URL url;
+ try {
+ url = new URL(resURL);
+ URLConnection urlCon = url.openConnection();
+ urlCon.setUseCaches(false);
+ lsin = new LSInputImpl();
+ lsin.setSystemId(resURL);
+ lsin.setByteStream(urlCon.getInputStream());
+ } catch (Exception e) {
+ return null;
+ }
+
+ }
+ } else if (resURL != null && !resURL.startsWith("http:")) {
+ localFile = resURL;
+ } else {
return null;
}
-
- if (resolver.getInputStream() != null) {
- LSInput lsin = new LSInputImpl();
- lsin.setSystemId(systemId);
- lsin.setByteStream(resolver.getInputStream());
- return lsin;
- } else {
+
+
+ URIResolver resolver;
+ try {
+ resolver = new URIResolver(localFile);
+ if (resolver.isResolved()) {
+ lsin = new LSInputImpl();
+ lsin.setSystemId(localFile);
+ lsin.setByteStream(resolver.getInputStream());
+ }
+ } catch (IOException e) {
return null;
- }
+ }
+ return lsin;
}
}