This is an automated email from the ASF dual-hosted git repository.

billblough pushed a commit to branch AXIS-2882
in repository https://gitbox.apache.org/repos/asf/axis-axis1-java.git

commit aa4f91675de1abf2d6f5c658ab0cc9cf083c2dc6
Author: Andreas Veithen <veit...@apache.org>
AuthorDate: Mon Dec 10 14:00:31 2012 +0000

    More work on AXIS-2882.
---
 .../axis/wsdl/toJava/JavaServiceImplWriter.java    | 32 ++++++++++++++++++
 .../apache/axis/wsdl/toJava/JavaStubWriter.java    | 11 +++++++
 .../apache/axis/utils/DummyURLStreamHandler.java   | 31 ++++++++++++++++++
 .../main/java/org/apache/axis/utils/IOUtils.java   | 18 ++++++++++
 .../java/org/apache/axis/utils/IOUtilsTest.java    | 38 ++++++++++++++++++++++
 .../main/java/samples/jms/stub/JMSURLStubTest.java |  6 +---
 6 files changed, 131 insertions(+), 5 deletions(-)

diff --git 
a/axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java
 
b/axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java
index 1bfaa7b..43266b7 100644
--- 
a/axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java
+++ 
b/axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java
@@ -256,6 +256,8 @@ public class JavaServiceImplWriter extends JavaClassWriter {
             writeGetPortName(pw, bindingType, portName);
             writeGetPortNameURL(pw, bindingType, portName, stubClass,
                     wsddServiceName);
+            writeGetPortNameString(pw, bindingType, portName, stubClass,
+                    wsddServiceName);
             writeSetPortEndpointAddress(pw, portName);
         }
 
@@ -410,6 +412,36 @@ public class JavaServiceImplWriter extends JavaClassWriter 
{
     }    // writeGetPortNameURL
 
     /**
+     * Write the get<portName>(String) method.
+     * 
+     * @param pw              
+     * @param bindingType     
+     * @param portName        
+     * @param stubClass       
+     * @param wsddServiceName 
+     */
+    protected void writeGetPortNameString(PrintWriter pw, String bindingType,
+                                          String portName, String stubClass,
+                                          String wsddServiceName) {
+
+        pw.println("    public " + bindingType + " get" + portName
+                + "(java.lang.String portAddress) throws "
+                + javax.xml.rpc.ServiceException.class.getName() + " {");
+        pw.println("        try {");
+        pw.println("            " + stubClass + " _stub = new " + stubClass
+                + "(portAddress, this);");
+        pw.println("            _stub.setPortName(get" + wsddServiceName
+                + "());");
+        pw.println("            return _stub;");
+        pw.println("        }");
+        pw.println("        catch (org.apache.axis.AxisFault e) {");
+        pw.println("            return null;");
+        pw.println("        }");
+        pw.println("    }");
+        pw.println();
+    }    // writeGetPortNameURL
+
+    /**
      * Write the set<portName>EndpointAddress(String) method.
      * 
      * @param pw       
diff --git 
a/axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaStubWriter.java 
b/axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaStubWriter.java
index a93cd98..83666a1 100644
--- a/axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaStubWriter.java
+++ b/axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/JavaStubWriter.java
@@ -189,6 +189,17 @@ public class JavaStubWriter extends JavaClassWriter {
         pw.println();
         pw.println(
                 "    public " + className
+                + "(java.lang.String endpoint, javax.xml.rpc.Service service) 
throws org.apache.axis.AxisFault {");
+        pw.println("         this(service);");
+        pw.println("         try {");
+        pw.println("             super.cachedEndpoint = 
org.apache.axis.utils.IOUtils.toURL(endpoint);");
+        pw.println("         } catch (java.net.MalformedURLException ex) {");
+        pw.println("             throw 
org.apache.axis.AxisFault.makeFault(ex);");
+        pw.println("         }");
+        pw.println("    }");
+        pw.println();
+        pw.println(
+                "    public " + className
                 + "(javax.xml.rpc.Service service) throws 
org.apache.axis.AxisFault {");
         pw.println("        if (service == null) {");
         pw.println(
diff --git 
a/axis-rt-core/src/main/java/org/apache/axis/utils/DummyURLStreamHandler.java 
b/axis-rt-core/src/main/java/org/apache/axis/utils/DummyURLStreamHandler.java
new file mode 100644
index 0000000..328629e
--- /dev/null
+++ 
b/axis-rt-core/src/main/java/org/apache/axis/utils/DummyURLStreamHandler.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis.utils;
+
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+
+final class DummyURLStreamHandler extends URLStreamHandler {
+    static final DummyURLStreamHandler INSTANCE = new DummyURLStreamHandler();
+    
+    protected URLConnection openConnection(URL u) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/axis-rt-core/src/main/java/org/apache/axis/utils/IOUtils.java 
b/axis-rt-core/src/main/java/org/apache/axis/utils/IOUtils.java
index deac1c1..cb9d77a 100644
--- a/axis-rt-core/src/main/java/org/apache/axis/utils/IOUtils.java
+++ b/axis-rt-core/src/main/java/org/apache/axis/utils/IOUtils.java
@@ -18,9 +18,11 @@ package org.apache.axis.utils;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.net.URLStreamHandler;
 
 /**
  * Utility class containing IO helper methods
@@ -86,4 +88,20 @@ public class IOUtils
         }
         return new URI(str);
     }
+    
+    /**
+     * Constructs a {@link URL} by parsing the given string. This method does 
the same as
+     * {@link URL#URL(String)}, except that it configures the URL with a dummy
+     * {@link URLStreamHandler}. This means that the method works for URIs 
with any protocol, not
+     * just protocols for which a {@link URLStreamHandler} is registered.
+     * 
+     * @param str
+     *            the string to be parsed into a URL
+     * @return the URL
+     * @throws MalformedURLException
+     *             if the given string is not a valid URL
+     */
+    public static URL toURL(String str) throws MalformedURLException {
+        return new URL(null, str, DummyURLStreamHandler.INSTANCE);
+    }
 }
\ No newline at end of file
diff --git a/axis-rt-core/src/test/java/org/apache/axis/utils/IOUtilsTest.java 
b/axis-rt-core/src/test/java/org/apache/axis/utils/IOUtilsTest.java
new file mode 100644
index 0000000..db6cee0
--- /dev/null
+++ b/axis-rt-core/src/test/java/org/apache/axis/utils/IOUtilsTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis.utils;
+
+import java.net.URI;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+public class IOUtilsTest extends TestCase {
+    public void testToURIParticularCase() throws Exception {
+        URI uri = IOUtils.toURI("local:");
+        assertEquals("local", uri.getScheme());
+        assertEquals("/", uri.getPath());
+    }
+    
+    public void testToURL() throws Exception {
+        String s = "fancyp://user:password@localhost:8888/dest?prop=value";
+        URL url = IOUtils.toURL(s);
+        assertEquals(s, url.toString());
+    }
+}
diff --git 
a/samples/jms-sample/src/main/java/samples/jms/stub/JMSURLStubTest.java 
b/samples/jms-sample/src/main/java/samples/jms/stub/JMSURLStubTest.java
index be4402d..806c6cc 100644
--- a/samples/jms-sample/src/main/java/samples/jms/stub/JMSURLStubTest.java
+++ b/samples/jms-sample/src/main/java/samples/jms/stub/JMSURLStubTest.java
@@ -25,8 +25,6 @@ import java.util.HashMap;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.rmi.RemoteException;
 
 import javax.xml.rpc.ServiceException;
@@ -57,12 +55,10 @@ public class JMSURLStubTest extends TestCase {
         }
         
         try {
-            getQuote = locator.getGetQuote(new URL(endptAddr));
+            getQuote = locator.getGetQuote(endptAddr);
         }
         catch (ServiceException e) {
             throw new AxisFault("JAX-RPC ServiceException caught: ", e);
-        } catch (MalformedURLException e) {
-            throw new AxisFault("MalformedURLException caught: ", e);
         }
         assertTrue("getQuote is null", getQuote != null);
 

Reply via email to