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

## org.jboss.invocation
Class MarshalledInvocation

    java.lang.Object
      org.jboss.invocation.Invocation
          org.jboss.invocation.MarshalledInvocation

All Implemented Interfaces:
  Externalizable, Serializable

Direct Known Subclasses:
  PooledMarshalledInvocation

public class MarshalledInvocation
extends Invocation
implements Externalizable

The MarshalledInvocation is an invocation that travels. As such it serializes its payload because of lack of ClassLoader visibility. As such it contains Marshalled data representing the byte[] of the Invocation object it extends Besides handling the specifics of "marshalling" the payload, which could be done at the Invocation level the Marshalled Invocation can hold optimization and needed code for distribution for example the TransactionPropagationContext which is a serialization of the TX for distribution purposes as well as the "hash" for the methods that we send, as opposed to sending Method objects. Serialization "optimizations" should be coded here in the externalization implementation of the class

Version:
  $Revision: 1.17.6.2 $
Author:
  Marc Fleury, Bill.Burke@jboss.org, Scott.Stark@jboss.org
See Also:
  Serialized Form

Field Summary
`protected MarshalledValue` | `marshalledArgs`
`protected long` | `methodHash`
`protected Map` | `methodMap` The Map of methods used by this Invocation
`protected Object` | `tpc` The Transaction Propagation Context for distribution

Fields inherited from class org.jboss.invocation.Invocation
`args, as_is_payload, invocationContext, invocationType, INVOKE_SIGNATURE, method, objectName, payload, transient_payload`

Constructor Summary
`MarshalledInvocation()`
`MarshalledInvocation(Invocation invocation)`
`MarshalledInvocation(Object id, Method m, Object[] args, Transaction tx, Principal identity, Object credential)`

Method Summary
`static long` | `calculateHash(Method method)`
`Object[]` | `getArguments()`
`static Map` | `getFullInterfaceHashes(Class intf)` Calculate method full hashes.
`static Map` | `getInterfaceHashes(Class intf)` Calculate method hashes.
`Method` | `getMethod()` get on method Return the invocation method.
`Object` | `getPayloadValue(Object key)` A Marshalled invocation has serialized data in the form of MarshalledValue objects.
`Object` | `getTransactionPropagationContext()`
`static boolean` | `getUseFullHashMode()` Get the full hash mode flag.
`Object` | `getValue(Object key)` A Marshalled invocation has serialized data in the form of MarshalledValue objects.
`static Map` | `methodToHashesMap(Class c)` Calculate method hashes.
`void` | `readExternal(ObjectInput in)`
`static void` | `removeHashes(Class declaringClass)` Remove all method hashes for the declaring class
`void` | `setMethodMap(Map methods)`
`void` | `setTransactionPropagationContext(Object tpc)`
`static void` | `setUseFullHashMode(boolean flag)` Set the full hash mode flag.
`void` | `writeExternal(ObjectOutput out)`

Methods inherited from class org.jboss.invocation.Invocation
`getAsIsPayload, getAsIsValue, getCredential, getEnterpriseContext, getId, getInvocationContext, getObjectName, getPayload, getPrincipal, getTransaction, getTransientPayload, getTransientValue, getType, isLocal, performCall, setArguments, setCredential, setEnterpriseContext, setId, setInvocationContext, setMethod, setObjectName, setPrincipal, setTransaction, setType, setValue, setValue`

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

Field Detail

### tpc

    protected Object tpc

  The Transaction Propagation Context for distribution

### methodMap

    protected transient Map methodMap

  The Map of methods used by this Invocation

### methodHash

    protected transient long methodHash

### marshalledArgs

    protected transient MarshalledValue marshalledArgs

Constructor Detail

### MarshalledInvocation

    public MarshalledInvocation()

### MarshalledInvocation

    public MarshalledInvocation(Invocation invocation)

### MarshalledInvocation

    public MarshalledInvocation(Object id,
                                Method m,
                                Object[] args,
                                Transaction tx,
                                Principal identity,
                                Object credential)

Method Detail

### getUseFullHashMode

    public static boolean getUseFullHashMode()

  Get the full hash mode flag.

  Returns:
    the full hash mode flag.

### setUseFullHashMode

    public static void setUseFullHashMode(boolean flag)

  Set the full hash mode flag. When true, method hashes are calculated using the getFullInterfaceHashes which is able to differentiate methods by declaring class, return value, name and arg signature, and exceptions. Otherwise, the getInterfaceHashes method uses, and this is only able to differentiate classes by return value, name and arg signature. A useFullHashMode = false is compatible with 3.2.3 and earlier. This needs to be set consistently on the server and the client.

  Parameters:
    `flag` - the full method hash calculation mode flag.

### getInterfaceHashes

    public static Map getInterfaceHashes(Class intf)

  Calculate method hashes. This algo is taken from RMI with the method string built from the method name + parameters + return type. Note that this is not able to distinguish type compatible methods from different interfaces.

  Parameters:
    `intf` - - the class/interface to calculate method hashes for.
  Returns:
    Map mapping of method string to method desc hash

### getFullInterfaceHashes

    public static Map getFullInterfaceHashes(Class intf)

  Calculate method full hashes. This algo is taken from RMI with the full method string built from the method toString() which includes the modifiers, return type, declaring class, name, parameters and exceptions.

  Parameters:
    `intf` - - the class/interface to calculate method hashes for.
  Returns:
    Map mapping of method string to method desc hash

### methodToHashesMap

    public static Map methodToHashesMap(Class c)

  Calculate method hashes. This algo is taken from RMI with the full method string taken from the method.toString to include the declaring class.

  Parameters:
    `c` - the class/interface to calculate method hashes for.
  Returns:
    Map mapping of method hash to the Method object.

### calculateHash

    public static long calculateHash(Method method)

### removeHashes

    public static void removeHashes(Class declaringClass)

  Remove all method hashes for the declaring class

  Parameters:
    `declaringClass` - a class for which a calculateHash(Method) was called

### getMethod

    public Method getMethod()

  Description copied from class: `Invocation`
  get on method Return the invocation method.

  Overrides:
    `getMethod` in class `Invocation`

### setMethodMap

    public void setMethodMap(Map methods)

### setTransactionPropagationContext

    public void setTransactionPropagationContext(Object tpc)

### getTransactionPropagationContext

    public Object getTransactionPropagationContext()

### getValue

    public Object getValue(Object key)

  A Marshalled invocation has serialized data in the form of MarshalledValue objects. We overwrite the "getValue" to deserialize the data, this assume that the thread context class loader has visibility on the classes.

  Overrides:
    `getValue` in class `Invocation`

### getPayloadValue

    public Object getPayloadValue(Object key)

  A Marshalled invocation has serialized data in the form of MarshalledValue objects. We overwrite the "getValue" to deserialize the data, this assume that the thread context class loader has visibility on the classes.

  Overrides:
    `getPayloadValue` in class `Invocation`

### getArguments

    public Object[] getArguments()

  Overrides:
    `getArguments` in class `Invocation`

### writeExternal

    public void writeExternal(ObjectOutput out)
                       throws IOException

  Specified by:
    `writeExternal` in interface `Externalizable`
  Throws:
    `IOException`

### readExternal

    public void readExternal(ObjectInput in)
                      throws IOException,
                             ClassNotFoundException

  Specified by:
    `readExternal` in interface `Externalizable`
  Throws:
    `IOException`
    `ClassNotFoundException`

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

Copyright © 2002 JBoss Group, LLC. All Rights Reserved.