Author: alessio.soldano(a)jboss.com
Date: 2009-06-30 10:28:21 -0400 (Tue, 30 Jun 2009)
New Revision: 10265
Added:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RemotingRMUnMarshaller.java
Modified:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/core/client/HTTPRemotingConnection.java
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPConnectionImpl.java
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMChannelTask.java
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMMarshaller.java
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMMetadata.java
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMUnMarshaller.java
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/backchannel/RMBackPortsServer.java
Log:
WS-RM impl now using Netty on client side
Modified:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/core/client/HTTPRemotingConnection.java
===================================================================
---
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/core/client/HTTPRemotingConnection.java 2009-06-30
12:42:15 UTC (rev 10264)
+++
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/core/client/HTTPRemotingConnection.java 2009-06-30
14:28:21 UTC (rev 10265)
@@ -34,6 +34,7 @@
import org.jboss.ws.core.MessageAbstraction;
import org.jboss.ws.core.MessageTrace;
import org.jboss.ws.extensions.wsrm.transport.RMChannel;
+import org.jboss.ws.extensions.wsrm.transport.RMMetadata;
import org.jboss.ws.extensions.wsrm.transport.RMTransportHelper;
/**
@@ -153,18 +154,19 @@
if (RMTransportHelper.isRMMessage(callProps))
{
-// try
-// {
-// RMMetadata rmMetadata = new RMMetadata(null, targetAddress,
marshaller, unmarshaller, callProps, metadata, null); //TODO!! remoting version, client
config, etc.
-// return RM_CHANNEL.send(reqMessage, rmMetadata);
-// }
-// catch (Throwable t)
-// {
-// IOException io = new IOException();
-// io.initCause(t);
-// throw io;
-// }
- return null; //TODO!!!
+ try
+ {
+ Map<String, Object> additionalHeaders = new HashMap<String,
Object>();
+ populateHeaders(reqMessage, additionalHeaders);
+ RMMetadata rmMetadata = new RMMetadata(targetAddress, getMarshaller(),
getUnmarshaller(), callProps, additionalHeaders);
+ return RM_CHANNEL.send(reqMessage, rmMetadata);
+ }
+ catch (Throwable t)
+ {
+ IOException io = new IOException();
+ io.initCause(t);
+ throw io;
+ }
}
else
{
Modified:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPConnectionImpl.java
===================================================================
---
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPConnectionImpl.java 2009-06-30
12:42:15 UTC (rev 10264)
+++
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPConnectionImpl.java 2009-06-30
14:28:21 UTC (rev 10265)
@@ -84,7 +84,7 @@
if (reqMessage == null)
throw new IllegalArgumentException("Given SOAPMessage cannot be
null");
- MessageAbstraction resMessage = callInternal(reqMessage, endpoint, true);
+ MessageAbstraction resMessage = callInternal(reqMessage, endpoint, false);
return (SOAPMessage)resMessage;
}
@@ -140,7 +140,7 @@
try
{
remotingConnection = getRemotingConnection(endpoint);
- MessageAbstraction resMessage =
remotingConnection.invoke((SOAPMessageImpl)reqMessage, endpoint, oneway);
+ MessageAbstraction resMessage =
remotingConnection.invoke((SOAPMessageImpl)reqMessage, endpoint, oneway, false);
return resMessage;
}
catch (Exception ex)
Modified:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMChannelTask.java
===================================================================
---
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMChannelTask.java 2009-06-30
12:42:15 UTC (rev 10264)
+++
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMChannelTask.java 2009-06-30
14:28:21 UTC (rev 10265)
@@ -23,15 +23,13 @@
import java.io.IOException;
import java.net.URI;
+import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;
import org.jboss.logging.Logger;
-import org.jboss.remoting.CannotConnectException;
-import org.jboss.remoting.Client;
-import org.jboss.remoting.InvokerLocator;
-import org.jboss.remoting.marshal.MarshalFactory;
import org.jboss.ws.core.MessageTrace;
+import org.jboss.ws.core.client.NettyClient;
import org.jboss.ws.extensions.wsrm.RMClientSequence;
import org.jboss.ws.extensions.wsrm.transport.backchannel.RMCallbackHandler;
import org.jboss.ws.extensions.wsrm.transport.backchannel.RMCallbackHandlerFactory;
@@ -44,7 +42,6 @@
final class RMChannelTask implements Callable<RMChannelResponse>
{
private static final Logger logger = Logger.getLogger(RMChannelTask.class);
- private static final String JBOSSWS_SUBSYSTEM = "jbossws-wsrm";
private final RMMessage rmRequest;
RMChannelTask(RMMessage rmRequest)
@@ -58,14 +55,6 @@
try
{
String targetAddress =
(String)rmRequest.getMetadata().getContext(RMChannelConstants.INVOCATION_CONTEXT).get(RMChannelConstants.TARGET_ADDRESS);
- String version =
(String)rmRequest.getMetadata().getContext(RMChannelConstants.INVOCATION_CONTEXT).get(RMChannelConstants.REMOTING_VERSION);
-
- if (version.startsWith("1.4"))
- {
- MarshalFactory.addMarshaller("JBossWSMessage",
RMMarshaller.getInstance(), RMUnMarshaller.getInstance());
- }
-
- InvokerLocator locator = new InvokerLocator(targetAddress);
URI backPort = RMTransportHelper.getBackPortURI(rmRequest);
String messageId = RMTransportHelper.getAddressingMessageId(rmRequest);
@@ -83,39 +72,19 @@
}
boolean oneWay = RMTransportHelper.isOneWayOperation(rmRequest);
- Client client = new Client(locator, JBOSSWS_SUBSYSTEM,
rmRequest.getMetadata().getContext(RMChannelConstants.REMOTING_CONFIGURATION_CONTEXT));
- client.connect();
-
- client.setMarshaller(RMMarshaller.getInstance());
-
- if ((false == oneWay) && (null == backPort))
- client.setUnMarshaller(RMUnMarshaller.getInstance());
-
- Map<String, Object> remotingInvocationContext =
rmRequest.getMetadata().getContext(RMChannelConstants.REMOTING_INVOCATION_CONTEXT);
-
- // debug the outgoing request message
- MessageTrace.traceMessage("Outgoing RM Request Message",
rmRequest.getPayload());
-
+ NettyClient client = new NettyClient(RMMarshaller.getInstance(),
RMUnMarshaller.getInstance());
+ Map<String, Object> additionalHeaders =
rmRequest.getMetadata().getContext(RMChannelConstants.REMOTING_INVOCATION_CONTEXT);
+ Map<String, Object> callProps = new HashMap<String, Object>();
+
callProps.putAll(rmRequest.getMetadata().getContext(RMChannelConstants.INVOCATION_CONTEXT));
+
RMMessage rmResponse = null;
if (oneWay && (null == backPort))
{
- client.invokeOneway(rmRequest.getPayload(), remotingInvocationContext,
false);
+ client.invoke(rmRequest.getPayload(), targetAddress, false,
additionalHeaders, callProps);
}
else
{
- Object retVal = null;
- try
- {
- retVal = client.invoke(rmRequest.getPayload(),
remotingInvocationContext);
- }
- catch (CannotConnectException cce)
- {
- // remoting hack - ignore NullPointerException cause
- if (false == (cce.getCause() instanceof NullPointerException))
- {
- throw cce;
- }
- }
+ Object retVal = client.invoke(rmRequest.getPayload(), targetAddress, true,
additionalHeaders, callProps);
if ((null != retVal) && (false == (retVal instanceof RMMessage)))
{
String msg = retVal.getClass().getName() + ": '" + retVal +
"'";
@@ -124,10 +93,8 @@
}
rmResponse = (RMMessage)retVal;
}
+
rmRequest.getMetadata().getContext(RMChannelConstants.INVOCATION_CONTEXT).putAll(callProps);
- // Disconnect the remoting client
- client.disconnect();
-
// trace the incomming response message
if ((rmResponse != null) && (backPort == null))
MessageTrace.traceMessage("Incoming RM Response Message",
rmResponse.getPayload());
@@ -148,4 +115,4 @@
return new RMChannelResponse(t);
}
}
-}
+}
\ No newline at end of file
Modified:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMMarshaller.java
===================================================================
---
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMMarshaller.java 2009-06-30
12:42:15 UTC (rev 10264)
+++
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMMarshaller.java 2009-06-30
14:28:21 UTC (rev 10265)
@@ -24,9 +24,7 @@
import java.io.IOException;
import java.io.OutputStream;
-import org.jboss.remoting.InvocationRequest;
-import org.jboss.remoting.invocation.OnewayInvocation;
-import org.jboss.remoting.marshal.Marshaller;
+import org.jboss.ws.core.client.Marshaller;
/**
* Marshalls byte array to the output stream
@@ -49,12 +47,6 @@
public void write(Object dataObject, OutputStream output) throws IOException
{
- if (dataObject instanceof InvocationRequest)
- dataObject = ((InvocationRequest)dataObject).getParameter();
-
- if (dataObject instanceof OnewayInvocation)
- dataObject = ((OnewayInvocation)dataObject).getParameters()[0];
-
if ((dataObject instanceof byte[]) == false)
throw new IllegalArgumentException("Not a byte array: " +
dataObject);
Modified:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMMetadata.java
===================================================================
---
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMMetadata.java 2009-06-30
12:42:15 UTC (rev 10264)
+++
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMMetadata.java 2009-06-30
14:28:21 UTC (rev 10265)
@@ -37,19 +37,16 @@
private Map<String, Map<String, Object>> contexts = new HashMap<String,
Map<String, Object>>();
public RMMetadata(
- String remotingVersion,
String targetAddress,
Marshaller marshaller,
UnMarshaller unmarshaller,
Map<String, Object> invocationContext,
- Map<String, Object> remotingInvocationContext,
- Map<String, Object> remotingConfigurationContext)
+ Map<String, Object> remotingInvocationContext)
{
if (targetAddress == null)
throw new IllegalArgumentException("Target address cannot be null");
invocationContext.put(RMChannelConstants.TARGET_ADDRESS, targetAddress);
- invocationContext.put(RMChannelConstants.REMOTING_VERSION, remotingVersion);
setContext(RMChannelConstants.INVOCATION_CONTEXT, invocationContext);
if (marshaller == null || unmarshaller == null)
@@ -64,11 +61,6 @@
throw new IllegalArgumentException("Remoting invocation context cannot be
null");
setContext(RMChannelConstants.REMOTING_INVOCATION_CONTEXT,
remotingInvocationContext);
-
- if (remotingConfigurationContext == null)
- throw new IllegalArgumentException("Remoting configuraton context cannot be
null");
-
- setContext(RMChannelConstants.REMOTING_CONFIGURATION_CONTEXT,
remotingConfigurationContext);
}
public RMMetadata(Map<String, Object> remotingInvocationContext)
Modified:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMUnMarshaller.java
===================================================================
---
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMUnMarshaller.java 2009-06-30
12:42:15 UTC (rev 10264)
+++
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RMUnMarshaller.java 2009-06-30
14:28:21 UTC (rev 10265)
@@ -26,7 +26,7 @@
import java.io.InputStream;
import java.util.Map;
-import org.jboss.remoting.marshal.UnMarshaller;
+import org.jboss.ws.core.client.UnMarshaller;
/**
* Unmarshalls byte array from the input stream
@@ -41,13 +41,13 @@
{
return getInstance();
}
-
+
public static UnMarshaller getInstance()
{
return instance;
}
-
- public Object read(InputStream is, Map metadata) throws IOException,
ClassNotFoundException
+
+ public Object read(InputStream is, Map metadata) throws IOException
{
if (is == null)
return RMMessageFactory.newMessage(null, new RMMetadata(metadata)); // TODO:
investigate why is == null (WSAddressing reply-to test)
@@ -64,10 +64,4 @@
return RMMessageFactory.newMessage(baos.toByteArray(), new RMMetadata(metadata));
}
- public void setClassLoader(ClassLoader classloader)
- {
- // do nothing
- }
-
}
-
Added:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RemotingRMUnMarshaller.java
===================================================================
---
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RemotingRMUnMarshaller.java
(rev 0)
+++
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RemotingRMUnMarshaller.java 2009-06-30
14:28:21 UTC (rev 10265)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.ws.extensions.wsrm.transport;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
+import org.jboss.remoting.marshal.UnMarshaller;
+
+
+/**
+ * Unmarshalls byte array from the input stream
+ *
+ * @author richard.opalka(a)jboss.com
+ */
+public final class RemotingRMUnMarshaller implements UnMarshaller
+{
+ private static final UnMarshaller instance = new RemotingRMUnMarshaller();
+
+ public UnMarshaller cloneUnMarshaller() throws CloneNotSupportedException
+ {
+ return getInstance();
+ }
+
+ public static UnMarshaller getInstance()
+ {
+ return instance;
+ }
+
+ public Object read(InputStream is, Map metadata) throws IOException
+ {
+ if (is == null)
+ return RMMessageFactory.newMessage(null, new RMMetadata(metadata)); // TODO:
investigate why is == null (WSAddressing reply-to test)
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] buffer = new byte[1024];
+ int count = -1;
+ count = is.read(buffer);
+ while (count != -1)
+ {
+ baos.write(buffer, 0, count);
+ count = is.read(buffer);
+ }
+ return RMMessageFactory.newMessage(baos.toByteArray(), new RMMetadata(metadata));
+ }
+
+ public void setClassLoader(ClassLoader classloader)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Property changes on:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/RemotingRMUnMarshaller.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified:
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/backchannel/RMBackPortsServer.java
===================================================================
---
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/backchannel/RMBackPortsServer.java 2009-06-30
12:42:15 UTC (rev 10264)
+++
stack/native/branches/netty/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/backchannel/RMBackPortsServer.java 2009-06-30
14:28:21 UTC (rev 10265)
@@ -28,8 +28,7 @@
import org.jboss.remoting.InvokerLocator;
import org.jboss.remoting.transport.Connector;
import org.jboss.ws.extensions.wsrm.api.RMException;
-import org.jboss.ws.extensions.wsrm.transport.RMMarshaller;
-import org.jboss.ws.extensions.wsrm.transport.RMUnMarshaller;
+import org.jboss.ws.extensions.wsrm.transport.RemotingRMUnMarshaller;
/**
* Back ports server used by addressable clients
@@ -80,7 +79,7 @@
try
{
// we have to use custom unmarshaller because default one removes CRNLs
- String customUnmarshaller = "/?unmarshaller=" +
RMUnMarshaller.class.getName();
+ String customUnmarshaller = "/?unmarshaller=" +
RemotingRMUnMarshaller.class.getName();
InvokerLocator il = new InvokerLocator(this.scheme + "://" + this.host
+ ":" + this.port + customUnmarshaller);
this.connector = new Connector();
this.connector.setInvokerLocator(il.getLocatorURI());