You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2007/08/04 03:01:33 UTC

svn commit: r562635 - /webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java

Author: dims
Date: Fri Aug  3 18:01:32 2007
New Revision: 562635

URL: http://svn.apache.org/viewvc?view=rev&rev=562635
Log:
Fix for   AXIS2-3043  - wsdl2java using jaxbri data binding fails. Many thanks to dkulp!

Modified:
    webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java

Modified: webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java?view=diff&rev=562635&r1=562634&r2=562635
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java (original)
+++ webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java Fri Aug  3 18:01:32 2007
@@ -26,9 +26,9 @@
 import com.sun.tools.xjc.api.S2JJAXBModel;
 import com.sun.tools.xjc.api.SchemaCompiler;
 import com.sun.tools.xjc.api.XJC;
-import com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl;
 import org.apache.axis2.util.SchemaUtil;
 import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.util.XMLUtils;
 import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
 import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;
 import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
@@ -36,23 +36,29 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ws.commons.schema.XmlSchema;
-import org.w3c.dom.Element;
 import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXParseException;
+import org.w3c.dom.Element;
 import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
 
 import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.StringReader;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.ArrayList;
 
 public class CodeGenerationUtility {
     private static final Log log = LogFactory.getLog(CodeGenerationUtility.class);
@@ -114,31 +120,40 @@
                 SchemaCompiler sc = XJC.createSchemaCompiler();
                 XmlSchema schema = (XmlSchema)schemas.get(i);
 
-                String pkg = null;
                 if (nsMap != null) {
-                    pkg = (String)nsMap.get(schema.getTargetNamespace());
-                }
-                if (pkg == null) {
-                    pkg = extractNamespace(schema);
+                    Iterator iterator = nsMap.entrySet().iterator();
+                    while(iterator.hasNext()){
+                        Map.Entry entry = (Map.Entry) iterator.next();
+                        String namespace = (String) entry.getKey();
+                        String pkg = (String)nsMap.get(namespace);
+                        registerNamespace(sc, namespace, pkg);
+                    }
+                } else {
+                    String namespace = schema.getTargetNamespace();
+                    String pkg = extractNamespace(schema);
+                    registerNamespace(sc, namespace, pkg);
                 }
-                sc.setDefaultPackageName(pkg);
 
                 sc.setEntityResolver(resolver);
 
                 sc.setErrorListener(new ErrorListener(){
                     public void error(SAXParseException saxParseException) {
+                        log.error(saxParseException.getMessage());
                         log.debug(saxParseException.getMessage(), saxParseException);
                     }
 
                     public void fatalError(SAXParseException saxParseException) {
+                        log.error(saxParseException.getMessage());
                         log.debug(saxParseException.getMessage(), saxParseException);
                     }
 
                     public void warning(SAXParseException saxParseException) {
+                        log.warn(saxParseException.getMessage());
                         log.debug(saxParseException.getMessage(), saxParseException);
                     }
 
                     public void info(SAXParseException saxParseException) {
+                        log.info(saxParseException.getMessage());
                         log.debug(saxParseException.getMessage(), saxParseException);
                     }
                 });
@@ -176,6 +191,38 @@
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
+    }
+
+    private static void registerNamespace(SchemaCompiler sc, String namespace, String pkgName) throws Exception {
+        Document doc = XMLUtils.newDocument();
+        Element rootElement = doc.createElement("schema");
+        rootElement.setAttribute("xmlns", "http://www.w3.org/2001/XMLSchema");
+        rootElement.setAttribute("xmlns:jaxb", "http://java.sun.com/xml/ns/jaxb");
+        rootElement.setAttribute("jaxb:version", "2.0");
+        rootElement.setAttribute("targetNamespace", namespace);
+        Element annoElement = doc.createElement("annotation");
+        Element appInfo = doc.createElement("appinfo");
+        Element schemaBindings = doc.createElement("jaxb:schemaBindings");
+        Element pkgElement = doc.createElement("jaxb:package");
+        pkgElement.setAttribute("name", pkgName);
+        annoElement.appendChild(appInfo);
+        appInfo.appendChild(schemaBindings);
+        schemaBindings.appendChild(pkgElement);
+        rootElement.appendChild(annoElement);
+        File file = File.createTempFile("customized",".xsd");
+        FileOutputStream stream = new FileOutputStream(file);
+        try {
+            Result result = new StreamResult(stream);
+            Transformer xformer = TransformerFactory.newInstance().newTransformer();
+            xformer.transform(new DOMSource(rootElement), result);
+            stream.flush();
+            stream.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        InputSource ins = new InputSource(file.toURI().toString());
+        sc.parseSchema(ins);
+        file.delete();
     }
 
     private static String extractNamespace(XmlSchema schema) {



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org


Re: svn commit: r562635 - /webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java

Posted by Davanum Srinivas <da...@gmail.com>.
Sorry, AXIS2-3064! not 3043

-- dims

On 8/3/07, dims@apache.org <di...@apache.org> wrote:
> Author: dims
> Date: Fri Aug  3 18:01:32 2007
> New Revision: 562635
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=562635
> Log:
> Fix for   AXIS2-3043  - wsdl2java using jaxbri data binding fails. Many thanks to dkulp!
>
> Modified:
>     webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
>
> Modified: webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
> URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java?view=diff&rev=562635&r1=562634&r2=562635
> ==============================================================================
> --- webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java (original)
> +++ webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java Fri Aug  3 18:01:32 2007
> @@ -26,9 +26,9 @@
>  import com.sun.tools.xjc.api.S2JJAXBModel;
>  import com.sun.tools.xjc.api.SchemaCompiler;
>  import com.sun.tools.xjc.api.XJC;
> -import com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl;
>  import org.apache.axis2.util.SchemaUtil;
>  import org.apache.axis2.util.URLProcessor;
> +import org.apache.axis2.util.XMLUtils;
>  import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
>  import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;
>  import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
> @@ -36,23 +36,29 @@
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
>  import org.apache.ws.commons.schema.XmlSchema;
> -import org.w3c.dom.Element;
>  import org.w3c.dom.Document;
> -import org.xml.sax.InputSource;
> -import org.xml.sax.SAXParseException;
> +import org.w3c.dom.Element;
>  import org.xml.sax.EntityResolver;
> +import org.xml.sax.InputSource;
>  import org.xml.sax.SAXException;
> +import org.xml.sax.SAXParseException;
>
>  import javax.xml.namespace.QName;
> +import javax.xml.transform.Result;
> +import javax.xml.transform.Transformer;
> +import javax.xml.transform.TransformerFactory;
> +import javax.xml.transform.dom.DOMSource;
> +import javax.xml.transform.stream.StreamResult;
>  import java.io.ByteArrayOutputStream;
>  import java.io.File;
> -import java.io.StringReader;
> +import java.io.FileOutputStream;
>  import java.io.IOException;
> +import java.io.StringReader;
> +import java.util.ArrayList;
>  import java.util.Collection;
>  import java.util.Iterator;
>  import java.util.List;
>  import java.util.Map;
> -import java.util.ArrayList;
>
>  public class CodeGenerationUtility {
>      private static final Log log = LogFactory.getLog(CodeGenerationUtility.class);
> @@ -114,31 +120,40 @@
>                  SchemaCompiler sc = XJC.createSchemaCompiler();
>                  XmlSchema schema = (XmlSchema)schemas.get(i);
>
> -                String pkg = null;
>                  if (nsMap != null) {
> -                    pkg = (String)nsMap.get(schema.getTargetNamespace());
> -                }
> -                if (pkg == null) {
> -                    pkg = extractNamespace(schema);
> +                    Iterator iterator = nsMap.entrySet().iterator();
> +                    while(iterator.hasNext()){
> +                        Map.Entry entry = (Map.Entry) iterator.next();
> +                        String namespace = (String) entry.getKey();
> +                        String pkg = (String)nsMap.get(namespace);
> +                        registerNamespace(sc, namespace, pkg);
> +                    }
> +                } else {
> +                    String namespace = schema.getTargetNamespace();
> +                    String pkg = extractNamespace(schema);
> +                    registerNamespace(sc, namespace, pkg);
>                  }
> -                sc.setDefaultPackageName(pkg);
>
>                  sc.setEntityResolver(resolver);
>
>                  sc.setErrorListener(new ErrorListener(){
>                      public void error(SAXParseException saxParseException) {
> +                        log.error(saxParseException.getMessage());
>                          log.debug(saxParseException.getMessage(), saxParseException);
>                      }
>
>                      public void fatalError(SAXParseException saxParseException) {
> +                        log.error(saxParseException.getMessage());
>                          log.debug(saxParseException.getMessage(), saxParseException);
>                      }
>
>                      public void warning(SAXParseException saxParseException) {
> +                        log.warn(saxParseException.getMessage());
>                          log.debug(saxParseException.getMessage(), saxParseException);
>                      }
>
>                      public void info(SAXParseException saxParseException) {
> +                        log.info(saxParseException.getMessage());
>                          log.debug(saxParseException.getMessage(), saxParseException);
>                      }
>                  });
> @@ -176,6 +191,38 @@
>          } catch (Exception e) {
>              throw new RuntimeException(e);
>          }
> +    }
> +
> +    private static void registerNamespace(SchemaCompiler sc, String namespace, String pkgName) throws Exception {
> +        Document doc = XMLUtils.newDocument();
> +        Element rootElement = doc.createElement("schema");
> +        rootElement.setAttribute("xmlns", "http://www.w3.org/2001/XMLSchema");
> +        rootElement.setAttribute("xmlns:jaxb", "http://java.sun.com/xml/ns/jaxb");
> +        rootElement.setAttribute("jaxb:version", "2.0");
> +        rootElement.setAttribute("targetNamespace", namespace);
> +        Element annoElement = doc.createElement("annotation");
> +        Element appInfo = doc.createElement("appinfo");
> +        Element schemaBindings = doc.createElement("jaxb:schemaBindings");
> +        Element pkgElement = doc.createElement("jaxb:package");
> +        pkgElement.setAttribute("name", pkgName);
> +        annoElement.appendChild(appInfo);
> +        appInfo.appendChild(schemaBindings);
> +        schemaBindings.appendChild(pkgElement);
> +        rootElement.appendChild(annoElement);
> +        File file = File.createTempFile("customized",".xsd");
> +        FileOutputStream stream = new FileOutputStream(file);
> +        try {
> +            Result result = new StreamResult(stream);
> +            Transformer xformer = TransformerFactory.newInstance().newTransformer();
> +            xformer.transform(new DOMSource(rootElement), result);
> +            stream.flush();
> +            stream.close();
> +        } catch (Exception e) {
> +            e.printStackTrace();
> +        }
> +        InputSource ins = new InputSource(file.toURI().toString());
> +        sc.parseSchema(ins);
> +        file.delete();
>      }
>
>      private static String extractNamespace(XmlSchema schema) {
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-cvs-help@ws.apache.org
>
>


-- 
Davanum Srinivas :: http://davanum.wordpress.com

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org


Re: svn commit: r562635 - /webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java

Posted by Davanum Srinivas <da...@gmail.com>.
Sorry, AXIS2-3064! not 3043

-- dims

On 8/3/07, dims@apache.org <di...@apache.org> wrote:
> Author: dims
> Date: Fri Aug  3 18:01:32 2007
> New Revision: 562635
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=562635
> Log:
> Fix for   AXIS2-3043  - wsdl2java using jaxbri data binding fails. Many thanks to dkulp!
>
> Modified:
>     webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
>
> Modified: webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
> URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java?view=diff&rev=562635&r1=562634&r2=562635
> ==============================================================================
> --- webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java (original)
> +++ webservices/axis2/branches/java/1_3/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java Fri Aug  3 18:01:32 2007
> @@ -26,9 +26,9 @@
>  import com.sun.tools.xjc.api.S2JJAXBModel;
>  import com.sun.tools.xjc.api.SchemaCompiler;
>  import com.sun.tools.xjc.api.XJC;
> -import com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl;
>  import org.apache.axis2.util.SchemaUtil;
>  import org.apache.axis2.util.URLProcessor;
> +import org.apache.axis2.util.XMLUtils;
>  import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
>  import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;
>  import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
> @@ -36,23 +36,29 @@
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
>  import org.apache.ws.commons.schema.XmlSchema;
> -import org.w3c.dom.Element;
>  import org.w3c.dom.Document;
> -import org.xml.sax.InputSource;
> -import org.xml.sax.SAXParseException;
> +import org.w3c.dom.Element;
>  import org.xml.sax.EntityResolver;
> +import org.xml.sax.InputSource;
>  import org.xml.sax.SAXException;
> +import org.xml.sax.SAXParseException;
>
>  import javax.xml.namespace.QName;
> +import javax.xml.transform.Result;
> +import javax.xml.transform.Transformer;
> +import javax.xml.transform.TransformerFactory;
> +import javax.xml.transform.dom.DOMSource;
> +import javax.xml.transform.stream.StreamResult;
>  import java.io.ByteArrayOutputStream;
>  import java.io.File;
> -import java.io.StringReader;
> +import java.io.FileOutputStream;
>  import java.io.IOException;
> +import java.io.StringReader;
> +import java.util.ArrayList;
>  import java.util.Collection;
>  import java.util.Iterator;
>  import java.util.List;
>  import java.util.Map;
> -import java.util.ArrayList;
>
>  public class CodeGenerationUtility {
>      private static final Log log = LogFactory.getLog(CodeGenerationUtility.class);
> @@ -114,31 +120,40 @@
>                  SchemaCompiler sc = XJC.createSchemaCompiler();
>                  XmlSchema schema = (XmlSchema)schemas.get(i);
>
> -                String pkg = null;
>                  if (nsMap != null) {
> -                    pkg = (String)nsMap.get(schema.getTargetNamespace());
> -                }
> -                if (pkg == null) {
> -                    pkg = extractNamespace(schema);
> +                    Iterator iterator = nsMap.entrySet().iterator();
> +                    while(iterator.hasNext()){
> +                        Map.Entry entry = (Map.Entry) iterator.next();
> +                        String namespace = (String) entry.getKey();
> +                        String pkg = (String)nsMap.get(namespace);
> +                        registerNamespace(sc, namespace, pkg);
> +                    }
> +                } else {
> +                    String namespace = schema.getTargetNamespace();
> +                    String pkg = extractNamespace(schema);
> +                    registerNamespace(sc, namespace, pkg);
>                  }
> -                sc.setDefaultPackageName(pkg);
>
>                  sc.setEntityResolver(resolver);
>
>                  sc.setErrorListener(new ErrorListener(){
>                      public void error(SAXParseException saxParseException) {
> +                        log.error(saxParseException.getMessage());
>                          log.debug(saxParseException.getMessage(), saxParseException);
>                      }
>
>                      public void fatalError(SAXParseException saxParseException) {
> +                        log.error(saxParseException.getMessage());
>                          log.debug(saxParseException.getMessage(), saxParseException);
>                      }
>
>                      public void warning(SAXParseException saxParseException) {
> +                        log.warn(saxParseException.getMessage());
>                          log.debug(saxParseException.getMessage(), saxParseException);
>                      }
>
>                      public void info(SAXParseException saxParseException) {
> +                        log.info(saxParseException.getMessage());
>                          log.debug(saxParseException.getMessage(), saxParseException);
>                      }
>                  });
> @@ -176,6 +191,38 @@
>          } catch (Exception e) {
>              throw new RuntimeException(e);
>          }
> +    }
> +
> +    private static void registerNamespace(SchemaCompiler sc, String namespace, String pkgName) throws Exception {
> +        Document doc = XMLUtils.newDocument();
> +        Element rootElement = doc.createElement("schema");
> +        rootElement.setAttribute("xmlns", "http://www.w3.org/2001/XMLSchema");
> +        rootElement.setAttribute("xmlns:jaxb", "http://java.sun.com/xml/ns/jaxb");
> +        rootElement.setAttribute("jaxb:version", "2.0");
> +        rootElement.setAttribute("targetNamespace", namespace);
> +        Element annoElement = doc.createElement("annotation");
> +        Element appInfo = doc.createElement("appinfo");
> +        Element schemaBindings = doc.createElement("jaxb:schemaBindings");
> +        Element pkgElement = doc.createElement("jaxb:package");
> +        pkgElement.setAttribute("name", pkgName);
> +        annoElement.appendChild(appInfo);
> +        appInfo.appendChild(schemaBindings);
> +        schemaBindings.appendChild(pkgElement);
> +        rootElement.appendChild(annoElement);
> +        File file = File.createTempFile("customized",".xsd");
> +        FileOutputStream stream = new FileOutputStream(file);
> +        try {
> +            Result result = new StreamResult(stream);
> +            Transformer xformer = TransformerFactory.newInstance().newTransformer();
> +            xformer.transform(new DOMSource(rootElement), result);
> +            stream.flush();
> +            stream.close();
> +        } catch (Exception e) {
> +            e.printStackTrace();
> +        }
> +        InputSource ins = new InputSource(file.toURI().toString());
> +        sc.parseSchema(ins);
> +        file.delete();
>      }
>
>      private static String extractNamespace(XmlSchema schema) {
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-cvs-help@ws.apache.org
>
>


-- 
Davanum Srinivas :: http://davanum.wordpress.com

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org