org.apache.tuscany.sca.interfacedef
Interface InterfaceContractMapper

All Known Implementing Classes:
InterfaceContractMapperImpl

public interface InterfaceContractMapper

The InterfaceContractMapper is responsible to match interfaces


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
 

Method Detail

isCompatible

boolean isCompatible(InterfaceContract source,
                     InterfaceContract target)
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)

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

checkCompatibility

boolean checkCompatibility(InterfaceContract source,
                           InterfaceContract target,
                           boolean ignoreCallback,
                           boolean silent)
                           throws IncompatibleInterfaceContractException
Parameters:
source -
target -
ignoreCallback -
silent -
Returns:
Throws:
IncompatibleInterfaceContractException

isCompatible

boolean isCompatible(DataType source,
                     DataType target,
                     boolean remotable)
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.

Parameters:
source - The source data type
target - The target data type
Returns:

isCompatible

boolean isCompatible(Operation source,
                     Operation target,
                     boolean remotable)
Check if source operation is compatible with the target operation

Parameters:
source - The source operation
target - The target operation
Returns:
true if the source operation is compatible with the target operation

isCompatible

boolean isCompatible(Interface source,
                     Interface target)
Parameters:
source -
target -
Returns:

map

Operation map(Interface target,
              Operation source)
Map the source operation to a compatible operation in the target interface

Parameters:
target - The target interface
source - The source operation
Returns:
A compatible operation