| /* |
| * 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.axis2.jaxws.description; |
| |
| import org.apache.axis2.description.AxisOperation; |
| |
| import javax.xml.namespace.QName; |
| import java.lang.reflect.Method; |
| |
| /** |
| * An OperationDescripton corresponds to a method on an SEI. That SEI could be explicit (i.e. |
| * WebService.endpointInterface=sei.class) or implicit (i.e. public methods on the service |
| * implementation are the contract and thus the implicit SEI). Note that while |
| * OperationDescriptions are created on both the client and service side, implicit SEIs will only |
| * occur on the service side. |
| * <p/> |
| * OperationDescriptons contain information that is only relevent for and SEI-based service, i.e. |
| * one that is invoked via specific methods. This class does not exist for Provider-based services |
| * (i.e. those that specify WebServiceProvider) |
| * <p/> |
| * <pre> |
| * <b>OperationDescription details</b> |
| * <p/> |
| * CORRESPONDS TO: A single operation on an SEI (on both Client and Server) |
| * <p/> |
| * AXIS2 DELEGATE: AxisOperation |
| * <p/> |
| * CHILDREN: 0..n ParameterDescription |
| * 0..n FaultDescription (Note: Not fully implemented) |
| * <p/> |
| * ANNOTATIONS: |
| * WebMethod [181] |
| * SOAPBinding [181] |
| * Oneway [181] |
| * WebResult [181] |
| * RequestWrapper [224] |
| * ResponseWrapper [224] |
| * <p/> |
| * WSDL ELEMENTS: |
| * operation |
| * <p/> |
| * </pre> |
| */ |
| public interface OperationDescription { |
| /** |
| * Paramater set on AxisOperation which contains an ArrayList of SOAP header QNames |
| * corresponding to SEI parameters. |
| */ |
| public static final String HEADER_PARAMETER_QNAMES = "org.apache.axis2.jaxws.description.OperationDescription.headerParameterQNames"; |
| |
| public static final String AXIS_OPERATION_PARAMETER = "org.apache.axis2.jaxws.description.OperationDescription.axisOperationParameter"; |
| |
| public EndpointInterfaceDescription getEndpointInterfaceDescription(); |
| |
| public FaultDescription[] getFaultDescriptions(); |
| |
| public FaultDescription resolveFaultByExceptionName(String exceptionClassName); |
| |
| public ParameterDescription getParameterDescription(int parameterNumber); |
| |
| public ParameterDescription getParameterDescription(String parameterName); |
| |
| public ParameterDescription[] getParameterDescriptions(); |
| |
| // indicates whether or not an @XmlList annotation was found on the method |
| public boolean isListType(); |
| |
| public abstract AxisOperation getAxisOperation(); |
| |
| public String getJavaMethodName(); |
| |
| public String getJavaDeclaringClassName(); |
| |
| public String[] getJavaParameters(); |
| |
| /** |
| * Client side and non-DBC service side only! Return the SEI method for which a |
| * service.getPort(Class SEIClass) created the EndpointDescriptionInterface and the associated |
| * OperationDescriptions. Returns null on the service implementation side. |
| * |
| * @return |
| */ |
| public Method getSEIMethod(); |
| |
| /** |
| * Service implementation side only! Given a service implementation class, find the method on |
| * that class that corresponds to this operation description. This is necessary because on the |
| * service impl side, the OperationDescriptions can be built using byte-scanning and without the |
| * class actually having been loaded. |
| * |
| * @param serviceImpl |
| * @return |
| */ |
| public Method getMethodFromServiceImpl(Class serviceImpl); |
| |
| /** |
| * Answer if this operation corresponds to the JAX-WS Client-only async methods. These methods |
| * are of the form: javax.xml.ws.Response<T> method(...) java.util.concurrent.Future<?> |
| * method(..., javax.xml.ws.AsyncHandler<T>) |
| * |
| * @return |
| */ |
| public boolean isJAXWSAsyncClientMethod(); |
| |
| public QName getName(); |
| |
| public String getOperationName(); |
| |
| public String getAction(); |
| |
| public boolean isOneWay(); |
| |
| public boolean isExcluded(); |
| |
| public boolean isOperationReturningResult(); |
| |
| public String getResultName(); |
| |
| public String getResultTargetNamespace(); |
| |
| public String getResultPartName(); |
| |
| public boolean isResultHeader(); |
| |
| |
| /** |
| * Return the Class of the return type. For JAX-WS async returns of type Response<T> or |
| * AsyncHandler<T>, the class associated with Response or AsyncHanler respectively is returned. |
| * To get the class associated with <T> |
| * |
| * @return Class |
| * @see getResultActualType() |
| */ |
| public Class getResultType(); |
| |
| /** |
| * Return the actual Class of the type. For a JAX-WS async return type of Response<T> or |
| * AsyncHandler<T>, the class associated with <T> is returned. For non-JAX-WS async returns, |
| * the class associated with the return type is returned. Note that for a Generic return type, |
| * such as List<Foo>, the class associated with List will be returned. |
| * |
| * @return actual Class |
| */ |
| public Class getResultActualType(); |
| |
| /** |
| * @return the class name of the wrapper class. NOTE: This method will return null if the |
| * request wrapper class is not known during the description layer processing. In such |
| * cases the implementation may use proprietary code to find the class. For example, |
| * JAXWS may look for a matching class in the sei package, in a special jaxws package or |
| * proceed without the class name |
| */ |
| public String getRequestWrapperClassName(); |
| |
| public String getRequestWrapperTargetNamespace(); |
| |
| public String getRequestWrapperLocalName(); |
| |
| /** |
| * @return the class name of the wrapper class. NOTE: This method will return null if the |
| * request wrapper class is not known during the description layer processing. In such |
| * cases the implementation may use proprietary code to find the class. For example, |
| * JAXWS may look for a matching class in the sei package, in a special jaxws package or |
| * proceed without the class name |
| */ |
| public String getResponseWrapperClassName(); |
| |
| public String getResponseWrapperTargetNamespace(); |
| |
| public String getResponseWrapperLocalName(); |
| |
| public String[] getParamNames(); |
| |
| public javax.jws.soap.SOAPBinding.ParameterStyle getSoapBindingParameterStyle(); |
| |
| public javax.jws.soap.SOAPBinding.Style getSoapBindingStyle(); |
| |
| public javax.jws.soap.SOAPBinding.Use getSoapBindingUse(); |
| |
| public OperationRuntimeDescription getOperationRuntimeDesc(String name); |
| |
| public void setOperationRuntimeDesc(OperationRuntimeDescription ord); |
| |
| /** |
| * For JAX-WS client-side async operations, this will return the corresponding sync |
| * OperationDescription. |
| * |
| * Note that if this method is used within the metadata layer, it is possible that it will return |
| * null. That will happen if the metadata layer is constructed from annotations on the SEI |
| * (not WSDL). In that case, it is possible that the async methods on the SEI are processed |
| * before the sync method. In that case, there will be no sync method yet. If this method |
| * is called outside the metadata layer, then if the async methods exist, the sync method |
| * should also exist. |
| * |
| * @return OperationDescription corresponding to the sync operation, or null (see note above). |
| */ |
| public OperationDescription getSyncOperation(); |
| |
| /** |
| * @return Attachment Description for the return type or null |
| */ |
| public AttachmentDescription getResultAttachmentDescription(); |
| |
| /** |
| * Returns the namespace of binding input message for the operation |
| */ |
| public String getBindingInputNamespace(); |
| |
| /** |
| * Returns the namespace of binding output message for the operation |
| */ |
| public String getBindingOutputNamespace(); |
| |
| /** |
| * @return a boolean indicator of nested swaRef attachments on the request. |
| */ |
| public boolean hasRequestSwaRefAttachments(); |
| |
| /** |
| * @param sets the indicator of nested request swaRef attachments. |
| */ |
| public void setHasRequestSwaRefAttachments(boolean b); |
| |
| /** |
| * @return a boolean indicator of nested swaRef attachments on the response. |
| */ |
| public boolean hasResponseSwaRefAttachments(); |
| |
| /** |
| * @param sets the indicator of nested response swaRef attachments. |
| */ |
| public void setHasResponseSwaRefAttachments(boolean b); |
| |
| } |