...
Code Block |
---|
/** * DataBinding represents a data representation, for example, SDO, JAXB and AXIOM */ public interface DataBinding { /** * A special databinding for input message of an operation */ String IDL_INPUT = "idl:input"; /** * A special databinding for output message of an operation */ String IDL_OUTPUT = "idl:output"; /** * A special databinding for fault message of an operation */ String IDL_FAULT = "idl:fault"; /** * The name of a databinding should be case-insensitive and unique * * @return The name of the databinding */ String getName(); /** * Get the aliases for the databinding * * @return An array of aliases */ String[] getAliases(); /** * Introspect and populate information to a DataType model * * @param javaTypedataType The javadata classtype or interface to be introspected * @param annotations The java annotations * @return true if the databinding has recognized the given data type */ boolean introspect(DataType dataType, Annotation[] annotations); /** * Introspect the data to figure out the corresponding data type * * @param value The object to be checked * @return The DataType or null if the java type is not supported by this databinding */ DataType introspect(Object value); /** * Provide a WrapperHandler for this databinding * @return A wrapper handler which can handle wrapping/wrapping for this databinding */ WrapperHandler getWrapperHandler(); /** * Make a copy of the object for "pass-by-value" semantics * @param source object to copy * @return copy of the object passed in as argument */ Object copy(Object object); /** * Get the type mapper for simple types * @return The databinding-specific simple type mapper */ SimpleTypeMapper getSimpleTypeMapper(); /** * Get the handler that can handle exceptions/faults in the * databinding-specific way * * @return An instance of the exception handler */ ExceptionHandler getExceptionHandler(); } |
- Support introspection of java types
- Support data copying for pass-by-value
- Support warpping/unwrapping for WSDL wrapper style
- Support exception handling
Transformer SPI
Code Block |
---|
/** * A transformer provides the data transformation from source type to target type. The cost of the transformation is * modeled as weight. */ public interface Transformer { /** * Get the source type that this transformer transforms data from. The type is used as the key when the transformer * is registered with TransformerRegistry. * * @return A key indentifying the source type */ String getSourceDataBinding(); /** * Get the target type that this transformer transforms data into. The type is used as the key when the transformer * is registered with TransformerRegistry. * * @return A key indentifying the target type */ String getTargetDataBinding(); /** * Get the cost of the transformation. The weight can be used to choose the most efficient path if there are more * than one available from the source to the target. * * @return An integer representing the cost of the transformation */ int getWeight(); } /** * PullTransformer transforms data from one binding format to the other one which can be directly consumed * * @param <S> The source data type * @param <R> the target data type */ public interface PullTransformer<S, R> extends Transformer { /** * Transform source data into the result type. * * @param source The source data * @param context The context for the transformation * @return The transformed result */ R transform(S source, TransformationContext context); } |
...