Author: david.lloyd(a)jboss.com
Date: 2010-04-09 09:04:25 -0400 (Fri, 09 Apr 2010)
New Revision: 5845
Added:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/RemotingContext.java
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExampleMain.java
Removed:
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExample2Main.java
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExampleMain.java
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/Client.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientConnectorImpl.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientImpl.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ConnectionImpl.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/Endpoint.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/EndpointImpl.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalConnectionHandler.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRemoteReplyHandler.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRemoteRequestHandler.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRequestHandlerConnector.java
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi/ConnectionHandlerContext.java
remoting3/trunk/jboss-remoting/src/test/java/org/jboss/remoting3/test/EndpointTestCase.java
Log:
Eliminate redundant local connection API; add getConnection() to Client; add
RemotingContext
Modified: remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/Client.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/Client.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/Client.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -166,4 +166,11 @@
* @see #send(Object) send(I)
*/
<T extends O> IoFuture<? extends T> sendTyped(TypedRequest<? extends
I, T> request) throws IOException;
+
+ /**
+ * Get the connection of this client.
+ *
+ * @return the connection
+ */
+ Connection getConnection();
}
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientConnectorImpl.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientConnectorImpl.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientConnectorImpl.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -57,7 +57,7 @@
final FutureResult<Client<I, O>> futureResult = new
FutureResult<Client<I, O>>();
requestHandlerConnector.createRequestHandler(new
TranslatingResult<RemoteRequestHandler, Client<I, O>>(futureResult) {
protected Client<I, O> translate(final RemoteRequestHandler input)
throws IOException {
- return endpoint.createClient(input, requestClass, replyClass,
classloader);
+ return endpoint.createClient(input, requestClass, replyClass,
classloader, RemotingContext.requireCurrent().getConnection());
}
});
return futureResult.getIoFuture();
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientImpl.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientImpl.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ClientImpl.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -45,18 +45,20 @@
private final Class<I> requestClass;
private final Class<O> replyClass;
private final ClassLoader clientClassLoader;
+ private final Connection connection;
private final Attachments attachments = new AttachmentsImpl();
- private ClientImpl(final RemoteRequestHandler handler, final Executor executor, final
Class<I> requestClass, final Class<O> replyClass, final ClassLoader
clientClassLoader) {
+ private ClientImpl(final RemoteRequestHandler handler, final Executor executor, final
Class<I> requestClass, final Class<O> replyClass, final ClassLoader
clientClassLoader, final Connection connection) {
super(executor);
this.handler = handler;
this.requestClass = requestClass;
this.replyClass = replyClass;
this.clientClassLoader = clientClassLoader;
+ this.connection = connection;
}
- static <I, O> ClientImpl<I, O> create(final RemoteRequestHandler handler,
final Executor executor, final Class<I> requestClass, final Class<O>
replyClass, final ClassLoader clientClassLoader) {
- final ClientImpl<I, O> ci = new ClientImpl<I, O>(handler, executor,
requestClass, replyClass, clientClassLoader);
+ static <I, O> ClientImpl<I, O> create(final RemoteRequestHandler handler,
final Executor executor, final Class<I> requestClass, final Class<O>
replyClass, final ClassLoader clientClassLoader, final Connection connection) {
+ final ClientImpl<I, O> ci = new ClientImpl<I, O>(handler, executor,
requestClass, replyClass, clientClassLoader, connection);
handler.addCloseHandler(SpiUtils.closingCloseHandler(ci));
return ci;
}
@@ -157,6 +159,10 @@
return futureReply;
}
+ public Connection getConnection() {
+ return connection;
+ }
+
/*
* Since type is erased, it's possible that the wrong type was passed.
*/
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ConnectionImpl.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ConnectionImpl.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/ConnectionImpl.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -102,7 +102,7 @@
return "Connection to " + name;
}
- private static class ClientWrapper<I, O> extends
TranslatingResult<RemoteRequestHandler, Client<I, O>> {
+ private class ClientWrapper<I, O> extends
TranslatingResult<RemoteRequestHandler, Client<I, O>> {
private final Class<I> requestClass;
private final Class<O> replyClass;
@@ -118,7 +118,7 @@
}
protected Client<I, O> translate(final RemoteRequestHandler input) throws
IOException {
- return endpoint.createClient(input, requestClass, replyClass, classLoader);
+ return endpoint.createClient(input, requestClass, replyClass, classLoader,
ConnectionImpl.this);
}
}
}
Modified: remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/Endpoint.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/Endpoint.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/Endpoint.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -177,31 +177,6 @@
Registration addServiceRegistrationListener(ServiceRegistrationListener listener,
Set<ListenerFlag> flags);
/**
- * Create a local client for a client listener.
- *
- * @param clientListener the client listener
- * @param requestClass the request class
- * @param replyClass the reply class
- * @param clientClassLoader the class loader to use for replies
- * @param optionMap the options
- * @return a new client
- * @throws IOException if an error occurs
- */
- <I, O> Client<I, O> createLocalClient(ClientListener<I, O>
clientListener, Class<I> requestClass, Class<O> replyClass, ClassLoader
clientClassLoader, OptionMap optionMap) throws IOException;
-
- /**
- * Create a local client for a client listener.
- *
- * @param clientListener
- * @param requestClass the request class
- * @param replyClass the reply class
- * @param optionMap the options
- * @return a new client
- * @throws IOException if an error occurs
- */
- <I, O> Client<I, O> createLocalClient(ClientListener<I, O>
clientListener, Class<I> requestClass, Class<O> replyClass, OptionMap
optionMap) throws IOException;
-
- /**
* Open a connection with a peer. Returns a future connection which may be used to
cancel the connection attempt.
* This method does not block; use the return value to wait for a result if you wish
to block.
* <p/>
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/EndpointImpl.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/EndpointImpl.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/EndpointImpl.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -424,7 +424,7 @@
log.error(t, "Service listener threw an exception");
}
- <I, O> Client<I, O> createClient(final RemoteRequestHandler
requestHandler, final Class<I> requestType, final Class<O> replyType, final
ClassLoader clientClassLoader) throws IOException {
+ <I, O> Client<I, O> createClient(final RemoteRequestHandler
requestHandler, final Class<I> requestType, final Class<O> replyType, final
ClassLoader clientClassLoader, final Connection connection) throws IOException {
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkPermission(CREATE_CLIENT_PERM);
@@ -439,7 +439,7 @@
throw new IllegalArgumentException("replyType is null");
}
checkOpen();
- final ClientImpl<I, O> client = ClientImpl.create(requestHandler, executor,
requestType, replyType, clientClassLoader);
+ final ClientImpl<I, O> client = ClientImpl.create(requestHandler, executor,
requestType, replyType, clientClassLoader, connection);
final WeakCloseable lrhCloseable = new WeakCloseable(client);
// this registration closes the client when the endpoint is closed
final Key key = addCloseHandler(SpiUtils.closingCloseHandler(lrhCloseable));
@@ -527,18 +527,6 @@
return registration;
}
- public <I, O> Client<I, O> createLocalClient(final ClientListener<I,
O> clientListener, final Class<I> requestClass, final Class<O> replyClass,
final OptionMap optionMap) throws IOException {
- return createLocalClient(clientListener, requestClass, replyClass,
Thread.currentThread().getContextClassLoader(), optionMap);
- }
-
- public <I, O> Client<I, O> createLocalClient(final ClientListener<I,
O> clientListener, final Class<I> requestClass, final Class<O> replyClass,
final ClassLoader clientClassLoader, final OptionMap optionMap) throws IOException {
- final ClientContextImpl context = new ClientContextImpl(executor, null);
- final RequestListener<I, O> requestListener =
clientListener.handleClientOpen(context, optionMap);
- final LocalRequestHandler localRequestHandler =
createLocalRequestHandler(requestListener, context, requestClass, replyClass);
- final LocalRemoteRequestHandler remoteRequestHandler = new
LocalRemoteRequestHandler(localRequestHandler, clientClassLoader, optionMap,
this.optionMap, executor);
- return ClientImpl.create(remoteRequestHandler, executor, requestClass,
replyClass, clientClassLoader);
- }
-
public IoFuture<? extends Connection> connect(final URI destination) throws
IOException {
final Pair<String, String> userRealm = getUserAndRealm(destination);
final String uriUserName = userRealm.getA();
@@ -776,6 +764,14 @@
public void remoteClosed() {
IoUtils.safeClose(connection);
}
+
+ public void beginContext() {
+ RemotingContext.setCurrent(new RemotingContext(EndpointImpl.this,
connection));
+ }
+
+ public void endContext() {
+ RemotingContext.clearCurrent();
+ }
}
private final class ConnectionProviderContextImpl implements
ConnectionProviderContext {
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalConnectionHandler.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalConnectionHandler.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalConnectionHandler.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -46,16 +46,16 @@
public Cancellable open(final String serviceType, final String instanceName, final
Result<RemoteRequestHandler> result, final ClassLoader classLoader, final OptionMap
optionMap) {
final LocalRequestHandler handler =
connectionHandlerContext.openService(serviceType, instanceName, optionMap);
if (handler == null) {
- result.setException(new
ServiceNotFoundException(ServiceURI.create(serviceType, instanceName, null)));
+ result.setException(new
ServiceNotFoundException(ServiceURI.create(serviceType, instanceName,
connectionHandlerContext.getConnectionProviderContext().getEndpoint().getName())));
} else {
- final LocalRemoteRequestHandler requestHandler = new
LocalRemoteRequestHandler(handler, classLoader, optionMap, connectionOptionMap,
connectionHandlerContext.getConnectionProviderContext().getExecutor());
+ final LocalRemoteRequestHandler requestHandler = new
LocalRemoteRequestHandler(handler, classLoader, optionMap, connectionOptionMap,
connectionHandlerContext.getConnectionProviderContext().getExecutor(),
connectionHandlerContext);
result.setResult(requestHandler);
}
return IoUtils.nullCancellable();
}
public RequestHandlerConnector createConnector(final LocalRequestHandler
localHandler) {
- return new LocalRequestHandlerConnector(localHandler,
connectionHandlerContext.getConnectionProviderContext().getExecutor());
+ return new LocalRequestHandlerConnector(connectionHandlerContext, localHandler,
connectionHandlerContext.getConnectionProviderContext().getExecutor());
}
public void close() throws IOException {
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRemoteReplyHandler.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRemoteReplyHandler.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRemoteReplyHandler.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -24,22 +24,30 @@
import java.io.IOException;
import org.jboss.marshalling.cloner.ObjectCloner;
+import org.jboss.remoting3.spi.ConnectionHandlerContext;
import org.jboss.remoting3.spi.LocalReplyHandler;
import org.jboss.remoting3.spi.RemoteReplyHandler;
class LocalRemoteReplyHandler implements RemoteReplyHandler {
+ private final ConnectionHandlerContext context;
private final LocalReplyHandler replyHandler;
private final ObjectCloner replyCloner;
- public LocalRemoteReplyHandler(final LocalReplyHandler replyHandler, final
ObjectCloner replyCloner) {
+ public LocalRemoteReplyHandler(final ConnectionHandlerContext context, final
LocalReplyHandler replyHandler, final ObjectCloner replyCloner) {
+ this.context = context;
this.replyHandler = replyHandler;
this.replyCloner = replyCloner;
}
public void handleReply(final Object reply) throws IOException {
try {
- replyHandler.handleReply(replyCloner.clone(reply));
+ context.beginContext();
+ try {
+ replyHandler.handleReply(replyCloner.clone(reply));
+ } finally {
+ context.endContext();
+ }
} catch (ClassNotFoundException e) {
final ReplyException re = new ReplyException("Cannot clone reply",
e);
replyHandler.handleException(re);
@@ -49,7 +57,12 @@
public void handleException(final IOException exception) throws IOException {
try {
- replyHandler.handleException((IOException) replyCloner.clone(exception));
+ context.beginContext();
+ try {
+ replyHandler.handleException((IOException)
replyCloner.clone(exception));
+ } finally {
+ context.endContext();
+ }
} catch (ClassNotFoundException e) {
final ReplyException re = new ReplyException("Cannot clone reply",
e);
replyHandler.handleException(re);
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRemoteRequestHandler.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRemoteRequestHandler.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRemoteRequestHandler.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -43,6 +43,7 @@
import org.jboss.marshalling.cloner.ObjectClonerFactory;
import org.jboss.marshalling.cloner.ObjectCloners;
import org.jboss.remoting3.spi.AbstractHandleableCloseable;
+import org.jboss.remoting3.spi.ConnectionHandlerContext;
import org.jboss.remoting3.spi.LocalReplyHandler;
import org.jboss.remoting3.spi.LocalRequestHandler;
import org.jboss.remoting3.spi.RemoteRequestHandler;
@@ -56,10 +57,12 @@
class LocalRemoteRequestHandler extends
AbstractHandleableCloseable<RemoteRequestHandler> implements RemoteRequestHandler {
private final LocalRequestHandler handler;
+ private final ConnectionHandlerContext handlerContext;
private final ClonerPairSource clonerPairSource;
- public LocalRemoteRequestHandler(final LocalRequestHandler handler, final ClassLoader
replyClassLoader, final OptionMap optionMap, final OptionMap defaultOptionMap, final
Executor executor) {
+ public LocalRemoteRequestHandler(final LocalRequestHandler handler, final ClassLoader
replyClassLoader, final OptionMap optionMap, final OptionMap defaultOptionMap, final
Executor executor, final ConnectionHandlerContext handlerContext) {
super(executor);
+ this.handlerContext = handlerContext;
final boolean callByValue = optionMap.get(RemotingOptions.CALL_BY_VALUE,
defaultOptionMap.get(RemotingOptions.CALL_BY_VALUE, false));
final ClonerPairSource clonerPairSource;
if (callByValue) {
@@ -85,7 +88,12 @@
final ObjectCloner replyCloner = pair.getB();
final Object clonedRequest;
try {
- clonedRequest = requestCloner.clone(request);
+ handlerContext.beginContext();
+ try {
+ clonedRequest = requestCloner.clone(request);
+ } finally {
+ handlerContext.endContext();
+ }
} catch (IOException e) {
replyHandler.handleException(e);
return IoUtils.nullCancellable();
@@ -95,7 +103,7 @@
replyHandler.handleException(ioe);
return IoUtils.nullCancellable();
}
- return handler.receiveRequest(clonedRequest, new
LocalRemoteReplyHandler(replyHandler, replyCloner));
+ return handler.receiveRequest(clonedRequest, new LocalRemoteReplyHandler(INIT_ME,
replyHandler, replyCloner));
}
private static class LocalCloneTable implements CloneTable {
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRequestHandlerConnector.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRequestHandlerConnector.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/LocalRequestHandlerConnector.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -23,6 +23,7 @@
package org.jboss.remoting3;
import java.util.concurrent.Executor;
+import org.jboss.remoting3.spi.ConnectionHandlerContext;
import org.jboss.remoting3.spi.LocalRequestHandler;
import org.jboss.remoting3.spi.RemoteRequestHandler;
import org.jboss.remoting3.spi.RequestHandlerConnector;
@@ -34,16 +35,18 @@
final class LocalRequestHandlerConnector implements RequestHandlerConnector {
+ private final ConnectionHandlerContext context;
private final LocalRequestHandler localHandler;
private final Executor executor;
- LocalRequestHandlerConnector(final LocalRequestHandler localHandler, final Executor
executor) {
+ LocalRequestHandlerConnector(final ConnectionHandlerContext context, final
LocalRequestHandler localHandler, final Executor executor) {
+ this.context = context;
this.localHandler = localHandler;
this.executor = executor;
}
public Cancellable createRequestHandler(final Result<RemoteRequestHandler>
result) throws SecurityException {
- final LocalRemoteRequestHandler handler = new
LocalRemoteRequestHandler(localHandler, null, OptionMap.EMPTY, OptionMap.EMPTY,
executor);
+ final LocalRemoteRequestHandler handler = new
LocalRemoteRequestHandler(localHandler, null, OptionMap.EMPTY, OptionMap.EMPTY, executor,
context);
localHandler.addCloseHandler(SpiUtils.closingCloseHandler(handler));
result.setResult(handler);
return IoUtils.nullCancellable();
Added:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/RemotingContext.java
===================================================================
--- remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/RemotingContext.java
(rev 0)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/RemotingContext.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -0,0 +1,71 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.remoting3;
+
+/**
+ * The Remoting context.
+ *
+ * @author <a href="mailto:david.lloyd@redhat.com">David M.
Lloyd</a>
+ */
+public final class RemotingContext {
+ private static final ThreadLocal<RemotingContext> current = new
ThreadLocal<RemotingContext>();
+
+ private final Endpoint endpoint;
+ private final Connection connection;
+
+ RemotingContext(final Endpoint endpoint, final Connection connection) {
+ this.endpoint = endpoint;
+ this.connection = connection;
+ }
+
+ public static RemotingContext getCurrent() {
+ return current.get();
+ }
+
+ public static RemotingContext requireCurrent() {
+ final RemotingContext context = getCurrent();
+ if (context == null) {
+ throw new IllegalStateException("No current Remoting context");
+ }
+ return context;
+ }
+
+ static void setCurrent(RemotingContext context) {
+ if (current.get() != null) {
+ throw new IllegalStateException("Remoting context already set");
+ }
+ current.set(context);
+ }
+
+ static void clearCurrent() {
+ current.set(null);
+ }
+
+ public Endpoint getEndpoint() {
+ return endpoint;
+ }
+
+ public Connection getConnection() {
+ return connection;
+ }
+}
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi/ConnectionHandlerContext.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi/ConnectionHandlerContext.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi/ConnectionHandlerContext.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -58,4 +58,14 @@
* @remoting.nonblocking
*/
void remoteClosed();
+
+ /**
+ * Indicate that an unmarshalling operation is just about to begin.
+ */
+ void beginContext();
+
+ /**
+ * Indicate that an unmarshalling operation is finished.
+ */
+ void endContext();
}
Modified:
remoting3/trunk/jboss-remoting/src/test/java/org/jboss/remoting3/test/EndpointTestCase.java
===================================================================
---
remoting3/trunk/jboss-remoting/src/test/java/org/jboss/remoting3/test/EndpointTestCase.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/jboss-remoting/src/test/java/org/jboss/remoting3/test/EndpointTestCase.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -22,25 +22,15 @@
package org.jboss.remoting3.test;
-import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import org.jboss.remoting3.Client;
-import org.jboss.remoting3.ClientContext;
-import org.jboss.remoting3.ClientListener;
-import org.jboss.remoting3.CloseHandler;
import org.jboss.remoting3.Endpoint;
-import org.jboss.remoting3.RemoteExecutionException;
import org.jboss.remoting3.Remoting;
-import org.jboss.remoting3.RequestContext;
-import org.jboss.remoting3.RequestListener;
-import org.jboss.xnio.IoUtils;
import org.jboss.xnio.OptionMap;
import org.jboss.xnio.log.Logger;
import org.testng.annotations.Test;
-import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
/**
@@ -75,80 +65,4 @@
exit();
}
}
-
- public void testLocalClientInvoke() throws Throwable {
- enter();
- try {
- final Endpoint endpoint = Remoting.getConfiguredEndpoint();
- try {
- final Object requestObj = new Object();
- final Object replyObj = new Object();
- final Client<Object, Object> localClient =
endpoint.createLocalClient(new ClientListener<Object, Object>() {
- public RequestListener<Object, Object> handleClientOpen(final
ClientContext clientContext, final OptionMap optionMap) {
- return new RequestListener<Object, Object>() {
- public void handleRequest(final RequestContext<Object>
objectRequestContext, final Object request) throws RemoteExecutionException {
- try {
- objectRequestContext.sendReply(replyObj);
- } catch (IOException e) {
- throw new RemoteExecutionException(e);
- }
- }
- };
- }
- }, Object.class, Object.class,
Thread.currentThread().getContextClassLoader(), OptionMap.EMPTY);
- localClient.addCloseHandler(new CloseHandler<Client<Object,
Object>>() {
- public void handleClose(final Client<Object, Object> closed) {
- log.info("Listener closed");
- }
- });
- try {
- assertEquals(replyObj, localClient.invoke(requestObj));
- } finally {
- IoUtils.safeClose(localClient);
- }
- } finally {
- IoUtils.safeClose(endpoint);
- }
- } finally {
- exit();
- }
- }
-
- public void testLocalClientSend() throws Throwable {
- enter();
- try {
- final Endpoint endpoint = Remoting.getConfiguredEndpoint();
- try {
- final Object requestObj = new Object();
- final Object replyObj = new Object();
- final Client<Object, Object> localClient =
endpoint.createLocalClient(new ClientListener<Object, Object>() {
- public RequestListener<Object, Object> handleClientOpen(final
ClientContext clientContext, final OptionMap optionMap) {
- return new RequestListener<Object, Object>() {
- public void handleRequest(final RequestContext<Object>
objectRequestContext, final Object request) throws RemoteExecutionException {
- try {
- objectRequestContext.sendReply(replyObj);
- } catch (IOException e) {
- throw new RemoteExecutionException(e);
- }
- }
- };
- }
- }, Object.class, Object.class,
Thread.currentThread().getContextClassLoader(), OptionMap.EMPTY);
- localClient.addCloseHandler(new CloseHandler<Client<Object,
Object>>() {
- public void handleClose(final Client<Object, Object> closed) {
- log.info("Listener closed");
- }
- });
- try {
- assertEquals(replyObj, localClient.send(requestObj).get());
- } finally {
- IoUtils.safeClose(localClient);
- }
- } finally {
- IoUtils.safeClose(endpoint);
- }
- } finally {
- exit();
- }
- }
}
Deleted:
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExample2Main.java
===================================================================
---
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExample2Main.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExample2Main.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -1,69 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt 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.remoting3.samples.simple;
-
-import java.net.URI;
-import org.jboss.remoting3.Client;
-import org.jboss.remoting3.Endpoint;
-import org.jboss.remoting3.Remoting;
-import org.jboss.remoting3.Connection;
-import org.jboss.remoting3.Registration;
-import org.jboss.xnio.IoUtils;
-import org.jboss.xnio.OptionMap;
-
-/**
- *
- */
-public final class LocalBasicExample2Main {
-
- private LocalBasicExample2Main() {
- }
-
- public static void main(String[] args) throws Exception {
- final Endpoint endpoint = Remoting.getConfiguredEndpoint();
- try {
- final Registration handle =
endpoint.serviceBuilder().setServiceType("simple.rot13").setInstanceName("main")
-
.setRequestType(String.class).setReplyType(String.class).setClientListener(new
StringRot13ClientListener())
- .register();
- try {
- final Connection connection = endpoint.connect(new
URI("local:///"), OptionMap.EMPTY).get();
- try {
- final Client<String, String> client =
connection.openClient("simple.rot13", "*", String.class,
String.class).get();
- try {
- final String original = "The Secret Message";
- final String result = client.invoke(original);
- System.out.printf("The secret message \"%s\"
became \"%s\"!\n", original.trim(), result.trim());
- } finally {
- IoUtils.safeClose(client);
- }
- } finally {
- IoUtils.safeClose(connection);
- }
- } finally {
- IoUtils.safeClose(handle);
- }
- } finally {
- IoUtils.safeClose(endpoint);
- }
- }
-}
\ No newline at end of file
Deleted:
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExampleMain.java
===================================================================
---
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExampleMain.java 2010-04-08
02:40:34 UTC (rev 5844)
+++
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExampleMain.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -1,34 +0,0 @@
-package org.jboss.remoting3.samples.simple;
-
-import java.io.IOException;
-import org.jboss.remoting3.Client;
-import org.jboss.remoting3.Endpoint;
-import org.jboss.remoting3.Remoting;
-import org.jboss.xnio.IoUtils;
-import org.jboss.xnio.OptionMap;
-
-/**
- *
- */
-public final class LocalBasicExampleMain {
-
- private LocalBasicExampleMain() {
- }
-
- public static void main(String[] args) throws IOException {
- final StringRot13ClientListener listener = new StringRot13ClientListener();
- final Endpoint endpoint = Remoting.getConfiguredEndpoint();
- try {
- final Client<String,String> client =
endpoint.createLocalClient(listener, String.class, String.class,
Thread.currentThread().getContextClassLoader(), OptionMap.EMPTY);
- try {
- final String original = "The Secret Message\n";
- final String result = client.invoke(original);
- System.out.printf("The secret message \"%s\" became
\"%s\"!\n", original.trim(), result.trim());
- } finally {
- IoUtils.safeClose(client);
- }
- } finally {
- IoUtils.safeClose(endpoint);
- }
- }
-}
\ No newline at end of file
Copied:
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExampleMain.java
(from rev 5839,
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExample2Main.java)
===================================================================
---
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExampleMain.java
(rev 0)
+++
remoting3/trunk/samples/src/main/java/org/jboss/remoting3/samples/simple/LocalBasicExampleMain.java 2010-04-09
13:04:25 UTC (rev 5845)
@@ -0,0 +1,69 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.remoting3.samples.simple;
+
+import java.net.URI;
+import org.jboss.remoting3.Client;
+import org.jboss.remoting3.Endpoint;
+import org.jboss.remoting3.Remoting;
+import org.jboss.remoting3.Connection;
+import org.jboss.remoting3.Registration;
+import org.jboss.xnio.IoUtils;
+import org.jboss.xnio.OptionMap;
+
+/**
+ *
+ */
+public final class LocalBasicExampleMain {
+
+ private LocalBasicExampleMain() {
+ }
+
+ public static void main(String[] args) throws Exception {
+ final Endpoint endpoint = Remoting.getConfiguredEndpoint();
+ try {
+ final Registration handle =
endpoint.serviceBuilder().setServiceType("simple.rot13").setInstanceName("main")
+
.setRequestType(String.class).setReplyType(String.class).setClientListener(new
StringRot13ClientListener())
+ .register();
+ try {
+ final Connection connection = endpoint.connect(new
URI("local:///"), OptionMap.EMPTY).get();
+ try {
+ final Client<String, String> client =
connection.openClient("simple.rot13", "*", String.class,
String.class).get();
+ try {
+ final String original = "The Secret Message";
+ final String result = client.invoke(original);
+ System.out.printf("The secret message \"%s\"
became \"%s\"!\n", original.trim(), result.trim());
+ } finally {
+ IoUtils.safeClose(client);
+ }
+ } finally {
+ IoUtils.safeClose(connection);
+ }
+ } finally {
+ IoUtils.safeClose(handle);
+ }
+ } finally {
+ IoUtils.safeClose(endpoint);
+ }
+ }
+}
\ No newline at end of file