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 ga...@apache.org on 2008/10/24 21:11:16 UTC

svn commit: r707722 - in /webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2: datasource/jaxb/JAXBDSContext.java jaxws/message/databinding/JAXBUtils.java

Author: gawor
Date: Fri Oct 24 12:11:16 2008
New Revision: 707722

URL: http://svn.apache.org/viewvc?rev=707722&view=rev
Log:
use the right jaxb property name based on the jaxb implementation used at runtime (could be internal with java 6 or external)

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBDSContext.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBDSContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBDSContext.java?rev=707722&r1=707721&r2=707722&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBDSContext.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBDSContext.java Fri Oct 24 12:11:16 2008
@@ -184,7 +184,7 @@
              */
             if (this.webServiceNamespace != null) {
                 properties = new HashMap<String, Object>();
-                properties.put("com.sun.xml.bind.defaultNamespaceRemap", this.webServiceNamespace);
+                properties.put(JAXBUtils.DEFAULT_NAMESPACE_REMAP, this.webServiceNamespace);
             }
             jc = JAXBUtils.getJAXBContext(contextPackages, constructType, 
                                           contextPackagesKey, cl, properties);

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java?rev=707722&r1=707721&r2=707722&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java Fri Oct 24 12:11:16 2008
@@ -111,6 +111,7 @@
         specialMap.put("javax.xml.ws.wsaddressing", classes);
     }
     
+    public static final String DEFAULT_NAMESPACE_REMAP = getDefaultNamespaceRemapProperty();
     
     /**
      * Get a JAXBContext for the class
@@ -1213,4 +1214,39 @@
             }
         });
     }
+    
+    private static String getDefaultNamespaceRemapProperty() {
+        String external = "com.sun.xml.bind.defaultNamespaceRemap";
+        String internal = "com.sun.xml.internal.bind.defaultNamespaceRemap";
+        
+        Boolean isExternal = testJAXBProperty(external);
+        if (Boolean.TRUE.equals(isExternal)) {
+            return external;
+        }                
+        Boolean isInternal = testJAXBProperty(internal);
+        if (Boolean.TRUE.equals(isInternal)) {
+            return internal;
+        }
+        // hmm... both properties cannot be set
+        return external;
+    }
+    
+    private static Boolean testJAXBProperty(String propName) {
+        final Map<String, String> props = new HashMap<String, String>();
+        props.put(propName, "http://test");
+        try {
+            AccessController.doPrivileged(
+                    new PrivilegedExceptionAction() {
+                        public Object run() throws JAXBException {
+                            return JAXBContext.newInstance(new Class[] {Integer.class}, props);
+                        }
+                    });
+            return Boolean.TRUE;
+        } catch (PrivilegedActionException e) {
+            if (e.getCause() instanceof JAXBException) {
+                return Boolean.FALSE;
+            } 
+            return null;
+        }
+    }
 }