blob: 8e7f6e15189adefa933a6c19d6537754713182d7 [file] [log] [blame]
/*
* 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;
}