You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2007/05/24 03:13:43 UTC

svn commit: r541126 - in /geronimo/server/trunk/modules: geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java

Author: gawor
Date: Wed May 23 18:13:42 2007
New Revision: 541126

URL: http://svn.apache.org/viewvc?view=rev&rev=541126
Log:
set proper service and port name

Modified:
    geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java
    geronimo/server/trunk/modules/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java

Modified: geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java?view=diff&rev=541126&r1=541125&r2=541126
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java Wed May 23 18:13:42 2007
@@ -303,14 +303,14 @@
         
         // set wsdl service
         if (portInfo.getWsdlService() == null) {
-            generator.setWsdlService(new QName(JAXWSUtils.getServiceName(serviceClass)));
+            generator.setWsdlService(JAXWSUtils.getServiceQName(serviceClass));
         } else {
             generator.setWsdlService(portInfo.getWsdlService());
         }
         
         // set wsdl port
         if (portInfo.getWsdlPort() == null) {
-            // TODO: get it from the class
+            generator.setWsdlPort(JAXWSUtils.getPortQName(serviceClass));
         } else {
             generator.setWsdlPort(portInfo.getWsdlPort());
         }

Modified: geronimo/server/trunk/modules/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java?view=diff&rev=541126&r1=541125&r2=541126
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java (original)
+++ geronimo/server/trunk/modules/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/JAXWSUtils.java Wed May 23 18:13:42 2007
@@ -19,6 +19,7 @@
 import java.lang.reflect.Modifier;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.StringTokenizer;
 
 import javax.jws.WebService;
 import javax.xml.namespace.QName;
@@ -48,7 +49,7 @@
                 localName = seiClass.getName();
             }
             String namespace = webService.targetNamespace();
-            return new QName(namespace, localName);
+            return new QName(getNamespace(seiClass, namespace), localName);
         }
         return null;
     }
@@ -82,6 +83,73 @@
     }
     
     public static String getServiceName(Class clazz) {
+        return getServiceQName(clazz).getLocalPart();
+    }
+    
+    private static String getServiceName(Class clazz, String name) {
+        if (name == null || name.trim().length() == 0) {
+            return clazz.getSimpleName() + "Service";
+        } else {
+            return name.trim();
+        }       
+    }
+    
+    private static String getPortName(Class clazz, String name, String portName) {
+        if (portName == null || portName.trim().length() == 0) {
+            if (name == null || name.trim().length() == 0) {
+                return clazz.getSimpleName() + "Port";
+            } else {
+                return name + "Port";
+            }
+        } else {
+            return portName.trim();
+        }
+    }
+    
+    private static String getNamespace(Class clazz, String namespace) {
+        if (namespace == null || namespace.trim().length() == 0) {
+            Package pkg = clazz.getPackage();
+            if (pkg == null) {
+                return null;
+            } else {
+                return getNamespace(pkg.getName());
+            }
+        } else {
+            return namespace.trim();
+        }
+    }
+    
+    private static String getNamespace(String packageName) {
+        if (packageName == null || packageName.length() == 0) {
+            return null;
+        }
+        StringTokenizer tokenizer = new StringTokenizer(packageName, ".");
+        String[] tokens;
+        if (tokenizer.countTokens() == 0) {
+            tokens = new String[0];
+        } else {
+            tokens = new String[tokenizer.countTokens()];
+            for (int i = tokenizer.countTokens() - 1; i >= 0; i--) {
+                tokens[i] = tokenizer.nextToken();
+            }
+        }
+        StringBuffer namespace = new StringBuffer("http://");
+        String dot = "";
+        for (int i = 0; i < tokens.length; i++) {
+            if (i == 1) {
+                dot = ".";
+            }
+            namespace.append(dot + tokens[i]);
+        }
+        namespace.append('/');
+        return namespace.toString();
+    }
+    
+    private static QName getServiceQName(Class clazz, String namespace, String name) {
+        return new QName(getNamespace(clazz, namespace), getServiceName(clazz, name));         
+    }
+    
+    public static QName getServiceQName(Class clazz) {
         WebService webService = 
             (WebService)clazz.getAnnotation(WebService.class);
         if (webService == null) {
@@ -90,20 +158,31 @@
             if (webServiceProvider == null) {
                 throw new IllegalArgumentException("The " + clazz.getName() + " is not annotated");
             }
-            return getServiceName(clazz, webServiceProvider.serviceName());
+            return getServiceQName(clazz, webServiceProvider.targetNamespace(), webServiceProvider.serviceName());
         } else {
-            return getServiceName(clazz, webService.serviceName());
+            return getServiceQName(clazz, webService.targetNamespace(), webService.serviceName());
         }
     }
     
-    private static String getServiceName(Class clazz, String name) {
-        if (name == null || name.trim().length() == 0) {
-            return clazz.getSimpleName() + "Service";
-        } else {
-            return name.trim();
-        }       
+    private static QName getPortQName(Class clazz, String namespace, String name, String portName) {
+        return new QName(getNamespace(clazz, namespace), getPortName(clazz, name, portName));         
     }
     
+    public static QName getPortQName(Class clazz) {
+        WebService webService = 
+            (WebService)clazz.getAnnotation(WebService.class);
+        if (webService == null) {
+            WebServiceProvider webServiceProvider = 
+                (WebServiceProvider)clazz.getAnnotation(WebServiceProvider.class);
+            if (webServiceProvider == null) {
+                throw new IllegalArgumentException("The " + clazz.getName() + " is not annotated");
+            }
+            return getPortQName(clazz, webServiceProvider.targetNamespace(), null, webServiceProvider.portName());
+        } else {
+            return getPortQName(clazz, webService.targetNamespace(), webService.name(), webService.serviceName());
+        }
+    }
+        
     public static String getName(Class clazz) {
         WebService webService = 
             (WebService)clazz.getAnnotation(WebService.class);
@@ -126,8 +205,7 @@
                     throw new RuntimeException("Unable to load SEI class: " + sei);
                 }
             }
-        }
-        
+        }        
     }
         
     private static String getNameFromSEI(Class seiClass) {