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