[jboss-svn-commits] JBL Code SVN: r14935 - in labs/jbossesb/trunk: product/rosetta/src/org/jboss/internal/soa/esb/message and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Sep 7 09:30:22 EDT 2007
Author: tfennelly
Date: 2007-09-07 09:30:22 -0400 (Fri, 07 Sep 2007)
New Revision: 14935
Modified:
labs/jbossesb/trunk/
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/LegacyMessageComposerAdapter.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/LocalFileMessageComposer.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/RemoteFileMessageComposer.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/BasicMessageComposer.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageComposer.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/jms/DefaultJMSPropertiesSetter.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListenerUnitTest.java
labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java
labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/WsdlTransformer.java
Log:
Verifying http://jira.jboss.com/jira/browse/JBESB-731
MTOM quickstart is in the http://anonsvn.labs.jboss.com/labs/jbossesb/workspace/webservice_mtom_qs/ SVN workspace
Property changes on: labs/jbossesb/trunk
___________________________________________________________________
Name: svn:ignore
- .settings
.classpath
.project
bin
.packaging
build
junit
ObjectToFileWriter.tst
null
+ .settings
.classpath
.project
bin
.packaging
build
junit
ObjectToFileWriter.tst
null
classes
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/LegacyMessageComposerAdapter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/LegacyMessageComposerAdapter.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/LegacyMessageComposerAdapter.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -42,7 +42,7 @@
*
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
-public abstract class LegacyMessageComposerAdapter implements MessageComposer {
+public abstract class LegacyMessageComposerAdapter<T> implements MessageComposer<T> {
protected Class _composerClass;
@@ -65,7 +65,7 @@
public abstract Class[] getResponderParameters();
- public Message compose(Object messagePayload) throws MessageDeliverException {
+ public Message compose(T messagePayload) throws MessageDeliverException {
try {
return (Message) _processMethod.invoke(_composer, new Object[] {messagePayload});
} catch(ClassCastException e) {
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -168,9 +168,9 @@
try {
if (_maxMillisForResponse > 0) {
Message replyMsg = serviceInvoker.deliverSync(message, _maxMillisForResponse);
- replyMsg.getAttachment().put(Environment.ORIGINAL_FILE, fileIn);
+ replyMsg.getAttachment().put(Environment.ORIGINAL_FILE, fileIn); // For backward compatibility!
try {
- processReply(replyMsg);
+ processReply(replyMsg, fileIn);
} catch (GatewayException e) {
processException("Failed to process reply.", e, fileIn, workingFile);
continue;
@@ -232,14 +232,13 @@
}
}
- private void processReply(Message replyMsg) throws MessageDeliverException, GatewayException {
- Object responseData = messageComposer.decompose(replyMsg);
+ private void processReply(Message replyMsg, File fileIn) throws MessageDeliverException, GatewayException {
+ Object responseData = messageComposer.decompose(replyMsg, fileIn);
if(responseData == null) {
// Legacy composers may handled response delivery themselves...
} else if(responseData instanceof byte[]) {
- File inputFile = (File) replyMsg.getAttachment().get(Environment.ORIGINAL_FILE);
- File responseFile = new File(inputFile.getParent(), inputFile.getName() + FileEpr.DEFAULT_REPLY_TO_FILE_SUFFIX + "_gw");
+ File responseFile = new File(fileIn.getParent(), fileIn.getName() + FileEpr.DEFAULT_REPLY_TO_FILE_SUFFIX + "_gw");
bytesToFile((byte[])responseData, responseFile);
} else {
@@ -413,11 +412,9 @@
*
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
- private class LegacyFileMessageComposerAdapter extends LegacyMessageComposerAdapter {
+ private class LegacyFileMessageComposerAdapter<T extends File> extends LegacyMessageComposerAdapter<T> {
- public Object decompose(Message message) throws MessageDeliverException {
- // This is all done this way for backward compatibility!!!!
- File inputFile = (File) message.getAttachment().get(Environment.ORIGINAL_FILE);
+ public Object decompose(Message message, T inputFile) throws MessageDeliverException {
try {
return _responderMethod.invoke(_composer, message, inputFile);
} catch (IllegalAccessException e) {
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -49,6 +49,7 @@
import org.jboss.soa.esb.listeners.message.MessageDeliverException;
import org.jboss.soa.esb.listeners.message.UncomposedMessageDeliveryAdapter;
import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.Properties;
import org.jboss.soa.esb.services.registry.RegistryException;
import org.jboss.soa.esb.services.registry.RegistryFactory;
@@ -304,6 +305,7 @@
if(logger.isDebugEnabled()) {
logger.debug("Returning response [" + response + "].");
}
+
return response;
} else {
messageDeliveryAdapter.deliverAsync(invocationRequest);
@@ -408,21 +410,20 @@
* @throws ConfigurationException Configuration error.
*/
protected UncomposedMessageDeliveryAdapter createDeliveryAdapter() throws ConfigurationException {
- return UncomposedMessageDeliveryAdapter.getGatewayDeliveryAdapter(getConfig(), new JBossRemotingMessageComposer());
+ return UncomposedMessageDeliveryAdapter.getGatewayDeliveryAdapter(getConfig(), new JBossRemotingMessageComposer<InvocationRequest>());
}
/**
* Message composer for a JBoss Remoting {@link org.jboss.remoting.InvocationRequest}
* instance.
*/
- public static class JBossRemotingMessageComposer extends AbstractMessageComposer {
+ public static class JBossRemotingMessageComposer<T extends InvocationRequest> extends AbstractMessageComposer<T> {
public void setConfiguration(ConfigTree config) {
}
@SuppressWarnings("unchecked")
- protected void populateMessage(Message message, Object invocationRequestObj) throws MessageDeliverException {
- InvocationRequest invocationRequest = (InvocationRequest) invocationRequestObj;
+ protected void populateMessage(Message message, T invocationRequest) throws MessageDeliverException {
//
// There really needs to be an optoin on the body to set it's contents
@@ -449,5 +450,20 @@
}
}
}
+
+ public Object decompose(Message message, T invocationRequest) throws MessageDeliverException {
+ Properties properties = message.getProperties();
+ String propertyNames[] = properties.getNames();
+ Map responseMap = invocationRequest.getReturnPayload();
+
+ for(String name : propertyNames) {
+ Object value = properties.getProperty(name);
+ if(value != null) {
+ responseMap.put(name, value);
+ }
+ }
+
+ return super.decompose(message, invocationRequest);
+ }
}
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/LocalFileMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/LocalFileMessageComposer.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/LocalFileMessageComposer.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -38,19 +38,14 @@
* @see org.jboss.soa.esb.listeners.gateway.RemoteFileMessageComposer
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
-public class LocalFileMessageComposer implements MessageComposer {
+public class LocalFileMessageComposer<T extends File> implements MessageComposer<T> {
public void setConfiguration(ConfigTree config) throws ConfigurationException {
}
- public Message compose(Object messagePayload) throws MessageDeliverException {
- AssertArgument.isNotNull(messagePayload, "messagePayload");
+ public Message compose(T inputFile) throws MessageDeliverException {
+ AssertArgument.isNotNull(inputFile, "inputFile");
- if(!(messagePayload instanceof File)) {
- throw new MessageDeliverException("Invalid payload type '" + messagePayload.getClass().getName() + "'. Must be a " + File.class.getName() + " based payload.");
- }
-
- File inputFile = (File)messagePayload;
if(!inputFile.exists()) {
throw new MessageDeliverException("Invalid File payload. File '" + inputFile.getAbsolutePath() + "' doesn't exist.");
}
@@ -65,7 +60,7 @@
return message;
}
- public Object decompose(Message message) throws MessageDeliverException {
+ public Object decompose(Message message, T inputFile) throws MessageDeliverException {
byte[] payload = (byte[]) message.getBody().get(BytesBody.BYTES_LOCATION);
if(payload == null) {
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/RemoteFileMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/RemoteFileMessageComposer.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/RemoteFileMessageComposer.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -43,7 +43,7 @@
* @see org.jboss.soa.esb.listeners.gateway.LocalFileMessageComposer
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
-public class RemoteFileMessageComposer implements MessageComposer {
+public class RemoteFileMessageComposer<T extends File> implements MessageComposer<T> {
private FTPEpr ftpEpr;
private File downloadDir;
@@ -59,15 +59,9 @@
downloadDir = AbstractFileGateway.getFileInputDirectory(config);
}
- public Message compose(Object messagePayload) throws MessageDeliverException {
- AssertArgument.isNotNull(messagePayload, "messagePayload");
+ public Message compose(T inputFile) throws MessageDeliverException {
+ AssertArgument.isNotNull(inputFile, "inputFile");
- if(!(messagePayload instanceof File)) {
- throw new MessageDeliverException("Invalid payload type '" + messagePayload.getClass().getName() + "'. Must be a " + File.class.getName() + " based payload.");
- }
-
- File inputFile = (File)messagePayload;
-
Message message = MessageFactory.getInstance().getMessage();
try {
message.getBody().add(BytesBody.BYTES_LOCATION, getFileContents(inputFile));
@@ -80,7 +74,7 @@
return message;
}
- public Object decompose(Message message) throws MessageDeliverException {
+ public Object decompose(Message message, T inputMessage) throws MessageDeliverException {
byte[] payload = (byte[]) message.getBody().get(BytesBody.BYTES_LOCATION);
if(payload == null) {
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -32,7 +32,7 @@
*
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
-public abstract class AbstractMessageComposer implements MessageComposer {
+public abstract class AbstractMessageComposer<T> implements MessageComposer<T> {
/**
* Compose the message.
@@ -44,7 +44,7 @@
* @return ESB aware message instance.
* @throws MessageDeliverException Failed to compose message payload for delivery.
*/
- public Message compose(Object messagePayload) throws MessageDeliverException {
+ public Message compose(T messagePayload) throws MessageDeliverException {
Message message = MessageFactory.getInstance().getMessage();
populateMessage(message, messagePayload);
@@ -59,10 +59,14 @@
* Override to implement an alternative {@link Message} decomposition strategy.
*
* @param message The message to be decomposed.
+ * @param originalInputMessagePayload The original input message payload used to
+ * compose this (or ther original) message. The original message can sometimes contain
+ * information relevant during the decomposition process. Whether or not this parameter
+ * can be null depends on the MessageComposer implementation.
* @return The message "task object".
* @throws MessageDeliverException
*/
- public Object decompose(Message message) throws MessageDeliverException {
+ public Object decompose(Message message, T originalInputMessagePayload) throws MessageDeliverException {
// Hopefully we can fix the Message object such that there's no need for this
// i.e. the message will have setContents(Object) and getContents() methods.
@@ -82,5 +86,5 @@
* @param messagePayload The message payload to to be populated into the message.
* @throws MessageDeliverException Unable to populate message with payload.
*/
- protected abstract void populateMessage(Message message, Object messagePayload) throws MessageDeliverException;
+ protected abstract void populateMessage(Message message, T messagePayload) throws MessageDeliverException;
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/BasicMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/BasicMessageComposer.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/BasicMessageComposer.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -30,11 +30,11 @@
*
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
-public class BasicMessageComposer extends AbstractMessageComposer {
+public class BasicMessageComposer<T> extends AbstractMessageComposer<T> {
public void setConfiguration(ConfigTree config) {
}
- protected void populateMessage(Message message, Object messagePayload) throws MessageDeliverException {
+ protected void populateMessage(Message message, T messagePayload) throws MessageDeliverException {
ActionUtils.setTaskObject(message, messagePayload);
}
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageComposer.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageComposer.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -36,7 +36,7 @@
*
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
-public interface MessageComposer {
+public interface MessageComposer<T> {
/**
* Set the conposer's configuration.
@@ -57,16 +57,20 @@
* @return ESB aware message instance.
* @throws MessageDeliverException Failed to compose message payload for delivery.
*/
- public Message compose(Object messagePayload) throws MessageDeliverException;
+ public Message compose(T messagePayload) throws MessageDeliverException;
/**
* Decompose an ESB "aware" message, extracting and returning the message payload.
*
* @param message ESB aware message instance to be decomposed.
+ * @param originalInputMessagePayload The original input message payload used to
+ * compose this (or ther original) message. The original message can sometimes contain
+ * information relevant during the decomposition process. Whether or not this parameter
+ * can be null depends on the MessageComposer implementation.
* @return ESB unaware message instance - a message payload.
* @throws MessageDeliverException Failed to decompose message payload.
*/
- public Object decompose(Message message) throws MessageDeliverException;
+ public Object decompose(Message message, T originalInputMessagePayload) throws MessageDeliverException;
/**
* Uitility factory class for reflective {@link MessageComposer} construction.
@@ -97,7 +101,7 @@
* @throws ConfigurationException Bad configuration. Unable to create composer instance.
*/
public static MessageComposer getInstance(String className, ConfigTree config, Class legacyAdapterType) throws ConfigurationException {
- MessageComposer instance = null;
+ MessageComposer instance;
AssertArgument.isNotNullAndNotEmpty(className, "className");
AssertArgument.isNotNull(config, "config");
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -69,7 +69,7 @@
/**
* Synchronously deliver the supplied message to the target service associated with this adapter instance,
- * {@link MessageComposer#decompose(org.jboss.soa.esb.message.Message) decomposing} the reply message payload.
+ * {@link MessageComposer#decompose(org.jboss.soa.esb.message.Message,Object) decomposing} the reply message payload.
* <p/>
* To deliver synchronusly <u>without</u> decomposing the reply, see
* {@link #deliverSyncWithoutDecomposing(Object,long)}.
@@ -78,7 +78,7 @@
* container class for the message payload (e.g. a JMS message).
* @param timeoutMillis Number of milliseconds before synchronous reply pickup should timeout.
* @return The reply message payload
- * ({@link MessageComposer#decompose(org.jboss.soa.esb.message.Message) decomposed}).
+ * ({@link MessageComposer#decompose(org.jboss.soa.esb.message.Message,Object) decomposed}).
* @throws MessageDeliverException Failed to deliverAsync message, after trying all available EPRs.
*/
public Object deliverSync(Object messagePayload, long timeoutMillis) throws MessageDeliverException, RegistryException, FaultMessageException {
@@ -86,7 +86,7 @@
Message message = deliverSyncWithoutDecomposing(messagePayload, timeoutMillis);
// Decompose the reply message...
- return composer.decompose(message);
+ return composer.decompose(message, messagePayload);
}
/**
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/jms/DefaultJMSPropertiesSetter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/jms/DefaultJMSPropertiesSetter.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/jms/DefaultJMSPropertiesSetter.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -99,7 +99,7 @@
* Set ESB Message object properties on the outgoing JMS Message object instance.
* <p>
* Property names must obey the rules for a message selector identifier, See section 3.8.1.1,
- * “Message Selector Syntax” on the JMS Spec.
+ * "Message Selector Syntax" on the JMS Spec.
* </p>
* Values must also by set with the correct type so that selector expressions work as
* expected.
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListenerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListenerUnitTest.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListenerUnitTest.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -115,7 +115,7 @@
gateway.onSchedule();
- LocalFileMessageComposer f = new LocalFileMessageComposer();
+ LocalFileMessageComposer<File> f = new LocalFileMessageComposer<File>();
try {
f.compose(new File("hello"));
@@ -124,13 +124,6 @@
// expected
}
- try {
- f.compose("hello");
- fail("Expected exception on invalid payload type.");
- } catch(MessageDeliverException e) {
- // expected
- }
-
File testFile = null;
File anTestFile = null;
Modified: labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -132,6 +132,9 @@
requestHandler.handleRequest(endpoint, new ByteArrayInputStream(soapMessage), os, invocationContext);
+ if(message.getProperties().getProperty("Content-Type") == null) {
+ message.getProperties().setProperty("Content-Type", "text/xml");
+ }
ActionUtils.setTaskObject(message, new String(os.toByteArray()).trim());
}
catch (Exception ex) {
Modified: labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/WsdlTransformer.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/WsdlTransformer.java 2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/WsdlTransformer.java 2007-09-07 13:30:22 UTC (rev 14935)
@@ -95,6 +95,17 @@
private void transformAddress(Element element, ExecutionContext executionContext) {
URI endpointURI = (URI) executionContext.getAttribute(ENDPOINT_URI);
if(endpointURI != null) {
+ // Make sure there's a path (if only a single slash). JBossWS client code will
+ // fail because of a feature of JBossRemoting. See http://jira.jboss.com/jira/browse/JBWS-1802
+ if(endpointURI.getPath() == null || endpointURI.getPath().equals("")) {
+ try {
+ endpointURI = new URI(endpointURI.getScheme(), endpointURI.getUserInfo(),
+ endpointURI.getHost(), endpointURI.getPort(), "/", endpointURI.getQuery(), endpointURI.getFragment());
+ } catch (URISyntaxException e) {
+ logger.error("Failed to properly format endpoint location URL '" + endpointURI.toString() + "'. Failed to add single slash character for path. This may cause JBossWS Client code to fail.");
+ }
+ }
+
element.setAttribute("location", endpointURI.toString());
}
}
More information about the jboss-svn-commits
mailing list