Overview | Package | Class | Tree | Serialized | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.muse.core.routing
Class ReflectionMessageHandler

    java.lang.Object
      org.apache.muse.core.routing.AbstractMessageHandler
          org.apache.muse.core.routing.ReflectionMessageHandler

All Implemented Interfaces:
  MessageHandler

public class ReflectionMessageHandler
extends AbstractMessageHandler

ReflectionMessageHandler is a generic implementation of MessageHandler that can be applied to any Java method. It uses reflection to determine what types are being used by a method signature and then invokes the Serializers that have been registered with Muse to do the XML/POJO transformations. If a method references a type that is not included in Muse's set of built-in Serializers, you must register a Serializer for that type in order to take advantage of this class.
Muse uses this class by default if no MessageHandler is specified for a user-defined operation. Application initialization will fail if this default is specified but no Serializer is provided for a user-defined type. You can add custom MessageHandlers to your own capabilities programmatically using the Capability.setMessageHandlers() method.

Author:
  Dan Jemiolo (danj)

Field Summary

Fields inherited from class org.apache.muse.core.routing.AbstractMessageHandler
`EMPTY_REQUEST`

Constructor Summary
`ReflectionMessageHandler(java.lang.String actionURI, QName requestQName, QName returnValueName)`

Method Summary
`java.lang.Object[]` | `fromXML(org.w3c.dom.Element xml)` Deserializes the given DOM Element into a set of POJOs that can be used when invoking a Java method. Implementations should use Muse's registered Serializers in order to deserialize the XML into objects of the proper types. This implementation uses the MessageHandler's java.lang.reflect.Method to discover what parameter types can be expected in the given Element.
`protected QName` | `getReturnValueName()`
`org.w3c.dom.Element` | `toXML(java.lang.Object result)` Serializes the given object into a DOM Element. Implementations should use Muse's registered Serializers in order to serialize the objects into the proper formats. This implementation uses the MessageHandler's java.lang.reflect.Method to discover what return type can be expected in the given Element.

Methods inherited from class org.apache.muse.core.routing.AbstractMessageHandler
`getAction, getMethod, getRequestName, getResponseName, setMethod`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ReflectionMessageHandler

    public ReflectionMessageHandler(java.lang.String actionURI,
                                    QName requestQName,
                                    QName returnValueName)

Method Detail

### fromXML

    public java.lang.Object[] fromXML(org.w3c.dom.Element xml)
                               throws SoapFault

  Deserializes the given DOM Element into a set of POJOs that can be used when invoking a Java method. Implementations should use Muse's registered Serializers in order to deserialize the XML into objects of the proper types.
  This implementation uses the MessageHandler's java.lang.reflect.Method to discover what parameter types can be expected in the given Element. It then looks up the Serializers and uses them to deserialize the child Elements in order.
  If the Element has no child elements but has text content, and the method has one parameter, the given Element is parsed as though it were the parameter.

  Parameters:
    `xml` - The contents of a SOAP Body, where the root element contains all of the method parameters. For simple parameters, this element may contain the actual parameter data.
  Returns:
    An array with the method parameters in the correct order for invocation. This array can be passed to the invoke() method in java.lang.reflect.Method. If the method takes no parameters, an empty array is returned.
  Throws:
    `SoapFault` -
    - If the number of parameters does not match the number of child Elements.
    - If no serialization mechanism exists for the object's type.
    - If any child elements could not be deserialized into an object.
  See Also:
    `Serializer.fromXML(Element)`

### getReturnValueName

    protected QName getReturnValueName()

### toXML

    public org.w3c.dom.Element toXML(java.lang.Object result)
                              throws SoapFault

  Serializes the given object into a DOM Element. Implementations should use Muse's registered Serializers in order to serialize the objects into the proper formats.
  This implementation uses the MessageHandler's java.lang.reflect.Method to discover what return type can be expected in the given Element. It then looks up the Serializer and uses it to serialize the object.

  Parameters:
    `result` - The response value from the operation, which must be serialized into XML.
  Returns:
    The XML equivalent of the given object, wrapped in an element whose QName is the value of getResponseName().
  Throws:
    `SoapFault` -
    - If no serialization mechanism exists for the object's type.
    - If the object could not be serialized into XML.
  See Also:
    `MessageHandler.getResponseName()`, `Serializer.toXML(Object, QName)`

Overview | Package | Class | Tree | Serialized | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD