You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ve...@apache.org on 2009/07/03 21:13:33 UTC

svn commit: r790990 - in /webservices/axis2/trunk/java/modules: adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java

Author: veithen
Date: Fri Jul  3 19:13:32 2009
New Revision: 790990

URL: http://svn.apache.org/viewvc?rev=790990&view=rev
Log:
Allow the code generator to process templates with xsl:import or xsl:include with relative hrefs.

Modified:
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java?rev=790990&r1=790989&r2=790990&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java Fri Jul  3 19:13:32 2009
@@ -52,8 +52,8 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.OutputStream;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -1218,13 +1218,14 @@
 
         // first get the language specific property map
         Class<?> clazz = this.getClass();
-        InputStream xslStream;
         String templateName = javaBeanTemplateName;
         if (templateName != null) {
             try {
-                xslStream = clazz.getResourceAsStream(templateName);
+                // Use URL instead of InputStream here, so that the processor may resolve
+                // imports/includes with relative hrefs.
+                URL xsl = clazz.getResource(templateName);
                 templateCache = TransformerFactory.newInstance().newTemplates(
-                        new StreamSource(xslStream));
+                        new StreamSource(xsl.toExternalForm()));
                 templateLoaded = true;
             } catch (TransformerConfigurationException e) {
                 throw new SchemaCompilationException(SchemaCompilerMessages

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java?rev=790990&r1=790989&r2=790990&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java Fri Jul  3 19:13:32 2009
@@ -27,7 +27,7 @@
 import javax.xml.transform.URIResolver;
 import javax.xml.transform.stream.StreamSource;
 import java.io.ByteArrayInputStream;
-import java.io.InputStream;
+import java.net.URL;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -57,7 +57,6 @@
         String templateName;
         Map externalPropertyMap = configuration.getProperties();
 
-        InputStream supporterTemplateStream;
         if (XSLT_INCLUDE_DATABIND_SUPPORTER_HREF_KEY.equals(href)) {
             //use the language name from the configuration to search the key
             //our search only consists of looking for the data binding name
@@ -78,19 +77,17 @@
 
         if (externalPropertyMap.get(href) != null) {
             templateName = externalPropertyMap.get(href).toString();
-            if (templateName != null) {
-                supporterTemplateStream = getClass().getResourceAsStream(templateName);
-                return new StreamSource(supporterTemplateStream);
-            }
-        } else if ((href != null) && (!href.equals("externalTemplate"))){
-            Source source = getSourceFromTemplateName(href);
-            if ((source != null) && ((StreamSource)source).getInputStream() != null){
-                return source;
-            }
+            return getSourceFromTemplateName(templateName);
+        } else if (href.startsWith("/")) {
+            // This is a classpath resource
+            return getSourceFromTemplateName(href);
+        } else if (href.endsWith(".xsl")) {
+            // This is a relative import/include. Let the processor take care of resolving it.
+            return null;
+        } else {
+            // This is an unresolved property; return an empty source.
             return getEmptySource();
         }
-        //if nothing could be found return an empty source
-        return getEmptySource();
     }
 
     /**
@@ -101,10 +98,11 @@
      * @throws TransformerException
      */
     private Source getSourceFromTemplateName(String templateName) throws TransformerException {
-        InputStream supporterTemplateStream;
         if (templateName != null) {
-            supporterTemplateStream = getClass().getResourceAsStream(templateName);
-            return new StreamSource(supporterTemplateStream);
+            // Use URL instead of InputStream here, so that the processor may resolve
+            // imports/includes with relative hrefs.
+            URL templateUrl = getClass().getResource(templateName);
+            return templateUrl == null ? null : new StreamSource(templateUrl.toExternalForm());
         } else {
             throw new TransformerException(
                     CodegenMessages.getMessage("resolver.templateNotFound", templateName));