| /* |
| * 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.marshaller; |
| |
| import org.apache.axis2.jaxws.description.OperationDescription; |
| import org.apache.axis2.jaxws.message.Message; |
| import org.apache.axis2.jaxws.message.Protocol; |
| |
| import javax.xml.ws.WebServiceException; |
| |
| /** |
| * This class marshals and unmarshals method invocations. |
| * <p/> |
| * Here is the high-level view of marshalling: SIGNATURE_ARGS ---> Type Enabled Object -----> |
| * Element Enabled Object ---> MESSAGE (XML) |
| * <p/> |
| * The Signature objects are the objects from the SEI method signature. They may be values or |
| * holders of values. The values are "type enabled objects" (i.e. String), which means that they |
| * cannot be marshalled or unmarshalled. |
| * |
| * @see org.apache.axis2.jaxws.util.XMLRootElementUtils for details on Type Enabled and Element |
| * Enabled objects. |
| * <p/> |
| * The values are enhanced (if necessary) into Element Enabled Objects. These can be |
| * marshalled or unmarshalled using JAXB. |
| * @see org.apache.axis2.jaxws.marshaller.impl.alt.PDElement |
| * <p/> |
| * The element enabled objects are put onto the message. |
| * <p/> |
| * The high-level view of unmarshalling is the reverse. SIGNATURE_ARGS <---- Type Enabled |
| * Object <----- Element Enabled Object <---- MESSAGE (XML) |
| * <p/> |
| * See the specific MethodMarshaller implementations to see how doc/lit wrapped, doc/lit bare |
| * and rpc/lit affect the process of going from SIGNATURE_ARGS to the element enabled objects. |
| * <p/> |
| * If there are any problems, a WebServiceException is thrown. (Each of the methods is |
| * guranteed to catch any unchecked exception and wrap it in a WebServiceException). |
| */ |
| public interface MethodMarshaller { |
| |
| /** |
| * This method converts SIGNATURE_ARGS into a Message. It is used on the client |
| * |
| * @param signatureArgs |
| * @return Message |
| */ |
| public Message marshalRequest(Object[] signatureArgs, OperationDescription opDesc) |
| throws WebServiceException; |
| |
| /** |
| * This method converts the SIGNATURE_ARGS and RETURN object into a Message. It is used on the |
| * server |
| * |
| * @param returnObject |
| * @param signatureArgs |
| * @param OperationDesc |
| * @param Protocol for response |
| * @return Message |
| */ |
| public Message marshalResponse(Object returnObject, Object[] signatureArgs, |
| OperationDescription opDesc, Protocol protocol) |
| throws WebServiceException; |
| |
| |
| /** |
| * This method converts the Message into a SIGNATURE_ARGS It is used on the server |
| * |
| * @param message |
| * @return signature args |
| */ |
| public Object[] demarshalRequest(Message message, OperationDescription opDesc) |
| throws WebServiceException; |
| |
| /** |
| * This method gets the objects from the Message and sets them onto the SIGNATURE_ARGS It also |
| * returns the RETURN object. Called on client |
| * |
| * @param message |
| * @param signatureAgs (same array of args that were used for marshalRequest. The out/inout |
| * holders are populated with new values) |
| * @param OperationDesc |
| * @return returnObject |
| */ |
| public Object demarshalResponse(Message message, Object[] signatureArgs, |
| OperationDescription opDesc) throws WebServiceException; |
| |
| /** |
| * This method converts a Message (containing a fault) into a JAX-WS Service or |
| * WebServiceException. Used on the client. |
| * |
| * @param message |
| * @param Message |
| * @return Throwable |
| */ |
| public Throwable demarshalFaultResponse(Message message, OperationDescription opDesc) |
| throws WebServiceException; |
| |
| /** |
| * This method creates a Message from a Throwable input parameter. Used on the server. |
| * |
| * @param Throwable |
| * @param OperationDesc |
| * @param Protocol for response |
| * @return |
| */ |
| public Message marshalFaultResponse(Throwable throwable, OperationDescription opDesc, |
| Protocol protocol) throws WebServiceException; |
| |
| |
| } |