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: */
019: package org.apache.axis2.jaxws.description;
020:
021: import javax.xml.namespace.QName;
022: import java.lang.reflect.Method;
023:
024: /**
025: * An EndpointInterfaceDescription corresponds to a particular SEI-based Service Implementation. It
026: * can correspond to either either a client to that impl or the actual service impl.
027: * <p/>
028: * The EndpointInterfaceDescription contains information that is relevant only to an SEI-based (aka
029: * Endpoint-based or Java-based) enpdoint; Provider-based endpoint, which are not operation based
030: * and do not have an associated SEI, will not have an an EndpointInterfaceDescription class and
031: * sub-hierachy.
032: * <p/>
033: * <pre>
034: * <b>EndpointInterfaceDescription details</b>
035: * <p/>
036: * CORRESPONDS TO: An SEI (on both Client and Server)
037: * <p/>
038: * AXIS2 DELEGATE: none
039: * <p/>
040: * CHILDREN: 1..n OperationDescription
041: * <p/>
042: * ANNOTATIONS:
043: * SOAPBinding [181]
044: * <p/>
045: * WSDL ELEMENTS:
046: * portType
047: * <p/>
048: * </pre>
049: */
050:
051: public interface EndpointInterfaceDescription {
052:
053: /**
054: * The name of a special operation added to EndpointInterfaceDescriptions for provider
055: * endpoints that do not specify WSDL, and therefore do not have specific WSDL operations
056: * created. Note that this is currently only supported for HTTP bindings, not for SOAP bindings.
057: */
058: public static String JAXWS_NOWSDL_PROVIDER_OPERATION_NAME = "jaxwsNoWSDLProviderOperation";
059:
060: public abstract EndpointDescription getEndpointDescription();
061:
062: public abstract String getTargetNamespace();
063:
064: public abstract OperationDescription getOperation(Method seiMethod);
065:
066: /**
067: * Returns all the operations matching the operation QName associated with this endpoint
068: * description. Note that if the SEI or service implementation (and thus the implicit SEI)
069: * contained JAX-WS client side async operations then they will also be returned. Use
070: * getDispatchableOperations() to return an array of operations that does not include the JAX-WS
071: * client side async operations.
072: *
073: * @param operationQName
074: * @return
075: * @see #getDispatchableOperation(QName operationQName)
076: */
077: public abstract OperationDescription[] getOperation(
078: QName operationQName);
079:
080: /**
081: * Returns all the dispatchable operations matching the operation QName. A dispatchable
082: * operation is one that is NOT a JAX-WS client-side async method invocation. That is, method
083: * signatures of the follogin forms are filtered out of this list: javax.xml.ws.Response<T>
084: * method(...) java.util.concurrent.Future<?> method(..., javax.xml.ws.AsyncHandler<T>)
085: * <p/>
086: * These methods are filtered because a common use case is to use the same SEI on both the
087: * client and service implementation side, generating both the client and service implemntation
088: * code from that SEI. If that SEI happens to contain the client-side-only JAX-WS methods, they
089: * should be ingored on the service implemenation side. To return all the operations, use
090: * getOperation(QName).
091: *
092: * @param operationQName
093: * @return
094: * @see #getOperation(QName operationQName)
095: */
096: public abstract OperationDescription[] getDispatchableOperation(
097: QName operationQName);
098:
099: public abstract OperationDescription[] getDispatchableOperations();
100:
101: public abstract OperationDescription getOperation(
102: String operationName);
103:
104: public abstract OperationDescription[] getOperations();
105:
106: public abstract OperationDescription[] getOperationForJavaMethod(
107: String javaMethodName);
108:
109: public abstract Class getSEIClass();
110:
111: public abstract QName getPortType();
112:
113: // TODO: These should return a locally defined Enums
114: public abstract javax.jws.soap.SOAPBinding.ParameterStyle getSoapBindingParameterStyle();
115:
116: public abstract javax.jws.soap.SOAPBinding.Style getSoapBindingStyle();
117:
118: public abstract javax.jws.soap.SOAPBinding.Use getSoapBindingUse();
119:
120: }
|