Folks,

I'm back again, working on getting autoRewriteSoapAddress settable from Spring...

I've modified jaxws\EndpointImpl.java to put all of the Endpoint properties into the EndpointInfo, but: 1. I also had to modify the WSDLQueryHandler because the type of the property is still String, not boolean. 2. I've seen that there is some precedent for handling the problem a different way. The publishedEndpointUrl is set as an attribute on the EndpointImpl (copied to a field in the EndpointImpl), and, if it is set, it is copied to the properties of the endpointInfo.

My changes work without failing any existing tests, but I haven't written a specific junit for it yet.

The change (along with a bunch of testing spew) is simply:

Index: rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java
===================================================================
--- rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java (revision 995338) +++ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java (working copy)
@@ -18,6 +18,7 @@
  */
 package org.apache.cxf.jaxws;

+import java.io.PrintStream;
 import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -27,6 +28,7 @@
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;

@@ -321,6 +323,23 @@
// TODO is there a good place to put this key-string as a constant? endpointInfo.setProperty("publishedEndpointUrl", publishedEndpointUrl);
                 }
+
+                if (null != properties) {
+ System.err.println("\n\ndoPublish called with " + properties.size() + " entries.\n\n"); + for (Entry<String, Object> entry : properties.entrySet()) {
+                        PrintStream err = System.err;
+                        err.print("Setting property " + entry.getKey());
+                        if (entry.getValue() == null) {
+                            err.println(" to null");
+                        } else {
+                            Object val = entry.getValue();
+ err.println(" to " + val.toString() + " of type " + val.getClass().getName());
+                        }
+ endpointInfo.setProperty(entry.getKey(), entry.getValue());
+                    }
+                    System.err.println("\n\n");
+                }
+
                 this.address = endpointInfo.getAddress();
             }
             serv.start();

Property changes on: rt\management-web
___________________________________________________________________
Added: svn:ignore
   + target


Index: rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
===================================================================
--- rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java (revision 995338) +++ rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java (working copy)
@@ -56,6 +56,7 @@
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.helpers.XMLUtils;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.staxutils.StaxUtils;
 import org.apache.cxf.transports.http.StemMatchingQueryHandler;
@@ -281,10 +282,11 @@
el.setAttribute("location", base + "?wsdl=" + sl.replace(" ", "%20"));
             }
         }
+
+ Object rewriteSoapAddress = ei.getProperty("autoRewriteSoapAddress");
+        System.err.println("rewriteSoapAddress == " + rewriteSoapAddress);

- Boolean rewriteSoapAddress = ei.getProperty("autoRewriteSoapAddress", Boolean.class);
-
- if (rewriteSoapAddress != null && rewriteSoapAddress.booleanValue()) { + if (rewriteSoapAddress != null && MessageUtils.isTrue(rewriteSoapAddress)) { List<Element> serviceList = DOMUtils.findAllElementsByTagNameNS(doc.getDocumentElement(), "http://schemas.xmlsoap.org/wsdl/";,
                                                               "service");


Jim

Reply via email to