org.apache.tuscany.sca.interfacedef.impl
Class InterfaceContractMapperImpl

java.lang.Object
  extended by org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl
All Implemented Interfaces:
InterfaceContractMapper

public class InterfaceContractMapperImpl
extends java.lang.Object
implements InterfaceContractMapper


Constructor Summary
InterfaceContractMapperImpl()
           
 
Method Summary
 boolean checkCompatibility(InterfaceContract source, InterfaceContract target, boolean ignoreCallback, boolean silent)
           
 boolean isCompatible(DataType source, DataType target, boolean remotable)
          Test if the source data type is compatible with the target data type.
 boolean isCompatible(InterfaceContract source, InterfaceContract target)
          Check the compatibility of the source and the target interface contracts.
 boolean isCompatible(Interface source, Interface target)
           
 boolean isCompatible(Operation source, Operation target, boolean remotable)
          Check if source operation is compatible with the target operation
 Operation map(Interface target, Operation source)
          Map the source operation to a compatible operation in the target interface
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InterfaceContractMapperImpl

public InterfaceContractMapperImpl()
Method Detail

isCompatible

public boolean isCompatible(DataType source,
                            DataType target,
                            boolean remotable)
Description copied from interface: InterfaceContractMapper
Test if the source data type is compatible with the target data type. The compatibility is defined as follows. For example, if the source type is a SDO Customer and the target type is a JAXB Customer and both Customer are generated from the same XSD type.

Specified by:
isCompatible in interface InterfaceContractMapper
Parameters:
source - The source data type
target - The target data type
Returns:

isCompatible

public boolean isCompatible(Operation source,
                            Operation target,
                            boolean remotable)
Description copied from interface: InterfaceContractMapper
Check if source operation is compatible with the target operation

Specified by:
isCompatible in interface InterfaceContractMapper
Parameters:
source - The source operation
target - The target operation
Returns:
true if the source operation is compatible with the target operation

checkCompatibility

public boolean checkCompatibility(InterfaceContract source,
                                  InterfaceContract target,
                                  boolean ignoreCallback,
                                  boolean silent)
                           throws IncompatibleInterfaceContractException
Specified by:
checkCompatibility in interface InterfaceContractMapper
Returns:
Throws:
IncompatibleInterfaceContractException

isCompatible

public boolean isCompatible(Interface source,
                            Interface target)
Specified by:
isCompatible in interface InterfaceContractMapper
Returns:

isCompatible

public boolean isCompatible(InterfaceContract source,
                            InterfaceContract target)
Description copied from interface: InterfaceContractMapper
Check the compatibility of the source and the target interface contracts.

A wire may only connect a source to a target if the target implements an interface that is compatible with the interface required by the source. The source and the target are compatible if:

  1. the source interface and the target interface MUST either both be remotable or they are both local
  2. the methods on the target interface MUST be the same as or be a superset of the methods in the interface specified on the source
  3. compatibility for the individual method is defined as compatibility of the signature, that is method name, input types, and output types MUST BE the same.
  4. the order of the input and output types also MUST BE the same.
  5. the set of Faults and Exceptions expected by the source MUST BE the same or be a superset of those specified by the service.
  6. other specified attributes of the two interfaces MUST match, including Scope and Callback interface

Please note this test is not symmetric: the success of isCompatible(A, B) does NOT imply isCompatible(B, A)

Specified by:
isCompatible in interface InterfaceContractMapper
Parameters:
source - The source interface contract
target - The target interface contract
Returns:
true if the source contract can be supported by the target contract

map

public Operation map(Interface target,
                     Operation source)
Description copied from interface: InterfaceContractMapper
Map the source operation to a compatible operation in the target interface

Specified by:
map in interface InterfaceContractMapper
Parameters:
target - The target interface
source - The source operation
Returns:
A compatible operation
See Also:
InterfaceContractMapper.map(org.apache.tuscany.sca.interfacedef.Interface, org.apache.tuscany.sca.interfacedef.Operation)