001: /**
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */package org.apache.cxf.endpoint;
019:
020: import java.util.Map;
021:
022: import javax.xml.namespace.QName;
023:
024: import org.apache.cxf.interceptor.InterceptorProvider;
025: import org.apache.cxf.service.model.BindingOperationInfo;
026: import org.apache.cxf.transport.Conduit;
027: import org.apache.cxf.transport.MessageObserver;
028:
029: public interface Client extends InterceptorProvider, MessageObserver {
030: String REQUEST_CONTEXT = "RequestContext";
031: String RESPONSE_CONTEXT = "ResponseContext";
032: String REQUEST_METHOD = "RequestMethod";
033:
034: /**
035: * Invokes an operation syncronously
036: * @param operationName The name of the operation to be invoked. The service namespace will be used
037: * when looking up the BindingOperationInfo.
038: * @param params The params that matches the parts of the input message of the operation
039: * @return The return values that matche the parts of the output message of the operation
040: */
041: Object[] invoke(String operationName, Object... params)
042: throws Exception;
043:
044: /**
045: * Invokes an operation syncronously
046: * @param operationName The name of the operation to be invoked
047: * @param params The params that matches the parts of the input message of the operation
048: * @return The return values that matche the parts of the output message of the operation
049: */
050: Object[] invoke(QName operationName, Object... params)
051: throws Exception;
052:
053: /**
054: * Invokes an operation syncronously
055: * @param oi The operation to be invoked
056: * @param params The params that matches the parts of the input message of the operation
057: * @return The return values that matche the parts of the output message of the operation
058: */
059: Object[] invoke(BindingOperationInfo oi, Object... params)
060: throws Exception;
061:
062: /**
063: * Invokes an operation syncronously
064: * @param oi The operation to be invoked
065: * @param params The params that matches the parts of the input message of the operation
066: * @param context Optional (can be null) contextual information for the invocation
067: * @return The return values that matche the parts of the output message of the operation
068: */
069: Object[] invoke(BindingOperationInfo oi, Object[] params,
070: Map<String, Object> context) throws Exception;
071:
072: Endpoint getEndpoint();
073:
074: /**
075: * Get the Conduit that messages for this client will be sent on.
076: * @return Conduit
077: */
078: Conduit getConduit();
079:
080: /**
081: * Get the ConduitSelector responsible for retreiving the Conduit.
082: *
083: * @return the current ConduitSelector
084: */
085: ConduitSelector getConduitSelector();
086:
087: /**
088: * Set the ConduitSelector responsible for retreiving the Conduit.
089: *
090: * @param selector the ConduitSelector to use
091: */
092: void setConduitSelector(ConduitSelector selector);
093:
094: /**
095: * Indicates that the client is no longer needed and that any resources it holds
096: * can now be freed.
097: *
098: */
099: void destroy();
100: }
|