diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2013-10-07 22:23:21 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2013-10-07 22:23:21 +0000 |
commit | 5963a2d3d6860fe57afc138f095bf2d2eb5a7b80 (patch) | |
tree | 018d3d8c637e265b8292d34e5f7c11ca8ce11b7d /sca-java-2.x/tags/2.0.1-RC1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaAsyncResponseInvokerImpl.java | |
parent | 132aa8a77685ec92bc90c03f987650d275a7b639 (diff) |
Official Tuscany 2.0.1 Release
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1530096 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/tags/2.0.1-RC1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaAsyncResponseInvokerImpl.java')
-rw-r--r-- | sca-java-2.x/tags/2.0.1-RC1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaAsyncResponseInvokerImpl.java | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaAsyncResponseInvokerImpl.java b/sca-java-2.x/tags/2.0.1-RC1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaAsyncResponseInvokerImpl.java deleted file mode 100644 index d3a7cfd3e6..0000000000 --- a/sca-java-2.x/tags/2.0.1-RC1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaAsyncResponseInvokerImpl.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.java.invocation; - -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import org.apache.tuscany.sca.core.invocation.AsyncFaultWrapper; -import org.apache.tuscany.sca.core.invocation.AsyncResponseHandler; -import org.apache.tuscany.sca.core.invocation.JDKAsyncResponseInvoker; -import org.apache.tuscany.sca.invocation.Message; -import org.oasisopen.sca.ServiceRuntimeException; - -/** - * Class which handles the asynchronous response message from an async service back to the client Java component - * - * This class provides a registration function which permits the reference invoking code to register the Future - * which is used to return the response to the Java component code - */ -public class JavaAsyncResponseInvokerImpl implements JDKAsyncResponseInvoker { - - // Map used to link between async requests and async responses - private ConcurrentMap<String, Object> asyncMessageMap; - - public JavaAsyncResponseInvokerImpl() { - - asyncMessageMap = new ConcurrentHashMap<String, Object>(); - } // end constructor - - /** - * Deal with the asynchronous response message - * @param msg - the response message - * - * The response message must contain a RELATES_TO id, which is used to identify the Future that represents - * the operation yet to complete. The Future is then completed with the content of the message. - * The Future either calls back to the application code, or it is expected that the application is polling - * the Future for its completion. - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void invokeAsyncResponse(Message msg) { - // Obtain the Message ID for this message - String relatesID = getMessageRelatesID( msg ); - if( relatesID == null ) - throw new ServiceRuntimeException("JavaAsyncResponseInvoker - response message has no RELATES_TO id"); - - // Look up the response object & remove it from the Map - Object responseHandler = asyncMessageMap.remove(relatesID); - - if( responseHandler == null ) - throw new ServiceRuntimeException("JavaAsyncResponseInvoker - no Future matches the RELATES_TO id: " + relatesID); - - // Invoke the response handler with the content of the message - // - in the case of a Java implementation, the response handler is a Future... - AsyncResponseHandler future = (AsyncResponseHandler) responseHandler; - - Object payload = msg.getBody(); - Object response; - if( payload == null ) { - System.out.println("Returned response message was null"); - } else { - if (payload.getClass().isArray()) { - response = ((Object[])payload)[0]; - } else { - response = payload; - } // end if - if( response.getClass().equals(AsyncFaultWrapper.class)) { - future.setWrappedFault((AsyncFaultWrapper) response ); - } else if ( response instanceof Throwable ) { - future.setFault( (Throwable)response ); - } else { - future.setResponse(response); - } // end if - } // end if - - } // end method invokeAsyncResponse - - /** - * Registers an Async response, which provides an ID which identifies a given response - * and an object which can handle the response - * @param id - the ID - * @param responseHandler - the response handler object - */ - public void registerAsyncResponse( String id, Object responseHandler ) { - // Add the ID/response handler mapping into the table - if( id != null && responseHandler != null ) asyncMessageMap.put(id, responseHandler); - } // end method registerAsyncResponse - - /** - * Returns the registered async response for a given ID - * @param id - the ID - * @return responseHandler - the response handler object - */ - public Object getAsyncResponse( String id ) { - return asyncMessageMap.get(id); - } - - /** - * Extracts the RELATES_TO header from the message - * @param msg - the Tuscany message - * @return - the value of the RELATES_TO header as a String - */ - private String getMessageRelatesID( Message msg ) { - return (String)msg.getHeaders().get("RELATES_TO"); - } // end method getMessageRelatesID - -} // end class JavaAsyncResponseInvoker |