## org.apache.axis.encoding
Class TypeMappingImpl

    java.lang.Object
      |
      +--org.apache.axis.encoding.TypeMappingImpl

All Implemented Interfaces:
  TypeMapping, TypeMapping

Direct Known Subclasses:
  DefaultTypeMappingImpl

public class TypeMappingImpl
extends java.lang.Object
implements TypeMapping

This is the implementation of the axis TypeMapping interface (which extends the JAX-RPC TypeMapping interface).

A TypeMapping is obtained from the singleton TypeMappingRegistry using the namespace of the webservice. The TypeMapping contains the tuples {Java type, SerializerFactory, DeserializerFactory, Type QName)

So if you have a Web Service with the namespace "XYZ", you call the TypeMappingRegistry.getTypeMapping("XYZ").

The wsdl in your web service will use a number of types. The tuple information for each of these will be accessed via the TypeMapping.

Because every web service uses the soap, schema, wsdl primitives, we could pre-populate the TypeMapping with these standard tuples. Instead, if the namespace/class matches is not found in the TypeMapping the request is delegated to the Default TypeMapping or another TypeMapping

Author:
  Rich Scheuerle (scheu@us.ibm.com)

Nested Class Summary
`class` `TypeMappingImpl.Pair`

Field Summary
`protected TypeMapping` `delegate`
`protected static org.apache.commons.logging.Log` `log`

Constructor Summary
`TypeMappingImpl(TypeMapping delegate)` Construct TypeMapping

Method Summary
`java.lang.Class[]` `getAllClasses()` Returns an array of all the classes contained within this mapping
`java.lang.Class` `getClassForQName(QName xmlType)` Gets the Class mapped to QName.
`TypeMapping` `getDelegate()` getDelegate gets the new Delegate TypeMapping
`DeserializerFactory` `getDeserializer(java.lang.Class javaType, QName xmlType)` Gets the DeserializerFactory registered for the specified pair of Java type and XML data type.
`DeserializerFactory` `getDeserializer(QName xmlType)` Gets the DeserializerFactory registered for the xmlType.
`SerializerFactory` `getSerializer(java.lang.Class javaType)` Gets the SerializerFactory registered for the Java type.
`SerializerFactory` `getSerializer(java.lang.Class javaType, QName xmlType)` Gets the SerializerFactory registered for the specified pair of Java type and XML data type.
`java.lang.String[]` `getSupportedEncodings()` Gets the list of encoding styles supported by this TypeMapping object.
`QName` `getTypeQName(java.lang.Class javaType)` Gets the QName for the type mapped to Class.
`QName` `getTypeQNameRecursive(java.lang.Class javaType)` Gets the QName for the type mapped to Class.
`QName` `getXMLType(java.lang.Class javaType, QName xmlType)` Get the exact XML type QName which will be used when serializing a given Class to a given type QName.
`protected void` `internalRegister(java.lang.Class javaType, QName xmlType, SerializerFactory sf, DeserializerFactory dsf)` Internal version of register(), which allows null factories.
`boolean` `isRegistered(java.lang.Class javaType, QName xmlType)` isRegistered returns true if the [javaType, xmlType] pair is registered.
`void` `register(java.lang.Class javaType, QName xmlType, SerializerFactory sf, DeserializerFactory dsf)` Registers SerializerFactory and DeserializerFactory for a specific type mapping between an XML type and Java type.
`void` `removeDeserializer(java.lang.Class javaType, QName xmlType)` Removes the DeserializerFactory registered for the specified pair of Java type and XML data type.
`void` `removeSerializer(java.lang.Class javaType, QName xmlType)` Removes the SerializerFactory registered for the specified pair of Java type and XML data type.
`void` `setDelegate(TypeMapping delegate)` setDelegate sets the new Delegate TypeMapping
`void` `setDoAutoTypes(boolean doAutoTypes)`
`void` `setSupportedEncodings(java.lang.String[] namespaceURIs)` Sets the list of encoding styles supported by this TypeMapping object.

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

Field Detail

### log

    protected static org.apache.commons.logging.Log log

### delegate

    protected TypeMapping delegate

Constructor Detail

### TypeMappingImpl

    public TypeMappingImpl(TypeMapping delegate)

  Construct TypeMapping

Method Detail

### setDelegate

    public void setDelegate(TypeMapping delegate)

  setDelegate sets the new Delegate TypeMapping

  Specified by:
    `setDelegate` in interface `TypeMapping`

### getDelegate

    public TypeMapping getDelegate()

  getDelegate gets the new Delegate TypeMapping

  Specified by:
    `getDelegate` in interface `TypeMapping`

### getSupportedEncodings

    public java.lang.String[] getSupportedEncodings()

  Gets the list of encoding styles supported by this TypeMapping object.

  Specified by:
    `getSupportedEncodings` in interface `TypeMapping`
  Returns:
    String[] of namespace URIs for the supported encoding styles and XML schema namespaces.

### setSupportedEncodings

    public void setSupportedEncodings(java.lang.String[] namespaceURIs)

  Sets the list of encoding styles supported by this TypeMapping object. (Not sure why this is useful...this information is automatically updated during registration.

  Specified by:
    `setSupportedEncodings` in interface `TypeMapping`
  Parameters:
    `namespaceURIs` - String[] of namespace URI's

### isRegistered

    public boolean isRegistered(java.lang.Class javaType,
                                QName xmlType)

  isRegistered returns true if the [javaType, xmlType] pair is registered.

  Specified by:
    `isRegistered` in interface `TypeMapping`
  Parameters:
    `javaType` - - Class of the Java type
    `xmlType` - - Qualified name of the XML data type
  Returns:
    true if there is a mapping for the given pair, or false if the pair is not specifically registered. For example if called with (java.lang.String[], soapenc:Array) this routine will return false because this pair is probably not specifically registered. However if getSerializer is called with the same pair, the default TypeMapping will use extra logic to find a serializer (i.e. array serializer)

### register

    public void register(java.lang.Class javaType,
                         QName xmlType,
                         SerializerFactory sf,
                         DeserializerFactory dsf)
                  throws JAXRPCException

  Registers SerializerFactory and DeserializerFactory for a specific type mapping between an XML type and Java type.

  Specified by:
    `register` in interface `TypeMapping`
  Parameters:
    `javaType` - - Class of the Java type
    `xmlType` - - Qualified name of the XML data type
    `sf` - - SerializerFactory
    `dsf` - - DeserializerFactory
  Throws:
    `JAXRPCException` - - If any error during the registration

### internalRegister

    protected void internalRegister(java.lang.Class javaType,
                                    QName xmlType,
                                    SerializerFactory sf,
                                    DeserializerFactory dsf)
                             throws JAXRPCException

  Internal version of register(), which allows null factories.

  Parameters:
    `javaType` -
    `xmlType` -
    `sf` -
    `dsf` -
  Throws:
    `JAXRPCException`

### getSerializer

    public SerializerFactory getSerializer(java.lang.Class javaType,
                                           QName xmlType)
                                    throws JAXRPCException

  Gets the SerializerFactory registered for the specified pair of Java type and XML data type.

  Specified by:
    `getSerializer` in interface `TypeMapping`
  Parameters:
    `javaType` - - Class of the Java type
    `xmlType` - - Qualified name of the XML data type
  Returns:
    Registered SerializerFactory
  Throws:
    `JAXRPCException` - - If there is no registered SerializerFactory for this pair of Java type and XML data type java.lang.IllegalArgumentException - If invalid or unsupported XML/Java type is specified

### getXMLType

    public QName getXMLType(java.lang.Class javaType,
                            QName xmlType)
                     throws JAXRPCException

  Get the exact XML type QName which will be used when serializing a given Class to a given type QName. In other words, if we have: Class TypeQName ---------------------- Base myNS:Base Child myNS:Child and call getXMLType(Child.class, BASE_QNAME), we should get CHILD_QNAME.

  Parameters:
    `javaType` -
    `xmlType` -
  Returns:
    the type's QName
  Throws:
    `JAXRPCException`

### getDeserializer

    public DeserializerFactory getDeserializer(java.lang.Class javaType,
                                               QName xmlType)
                                        throws JAXRPCException

  Gets the DeserializerFactory registered for the specified pair of Java type and XML data type.

  Specified by:
    `getDeserializer` in interface `TypeMapping`
  Parameters:
    `javaType` - - Class of the Java type
    `xmlType` - - Qualified name of the XML data type
  Returns:
    Registered DeserializerFactory
  Throws:
    `JAXRPCException` - - If there is no registered DeserializerFactory for this pair of Java type and XML data type java.lang.IllegalArgumentException - If invalid or unsupported XML/Java type is specified

### removeSerializer

    public void removeSerializer(java.lang.Class javaType,
                                 QName xmlType)
                          throws JAXRPCException

  Removes the SerializerFactory registered for the specified pair of Java type and XML data type.

  Specified by:
    `removeSerializer` in interface `TypeMapping`
  Parameters:
    `javaType` - - Class of the Java type
    `xmlType` - - Qualified name of the XML data type
  Throws:
    `JAXRPCException` - - If there is error in removing the registered SerializerFactory

### removeDeserializer

    public void removeDeserializer(java.lang.Class javaType,
                                   QName xmlType)
                            throws JAXRPCException

  Removes the DeserializerFactory registered for the specified pair of Java type and XML data type.

  Specified by:
    `removeDeserializer` in interface `TypeMapping`
  Parameters:
    `javaType` - - Class of the Java type
    `xmlType` - - Qualified name of the XML data type
  Throws:
    `JAXRPCException` - - If there is error in removing the registered DeserializerFactory

### getTypeQNameRecursive

    public QName getTypeQNameRecursive(java.lang.Class javaType)

  Gets the QName for the type mapped to Class.

  Parameters:
    `javaType` - class or type
  Returns:
    xmlType qname or null

### getTypeQName

    public QName getTypeQName(java.lang.Class javaType)

  Description copied from interface: `TypeMapping`
  Gets the QName for the type mapped to Class.

  Specified by:
    `getTypeQName` in interface `TypeMapping`
  Parameters:
    `javaType` - class or type
  Returns:
    xmlType qname or null

### getClassForQName

    public java.lang.Class getClassForQName(QName xmlType)

  Gets the Class mapped to QName.

  Specified by:
    `getClassForQName` in interface `TypeMapping`
  Parameters:
    `xmlType` - qname or null
  Returns:
    javaType class or type

### getSerializer

    public SerializerFactory getSerializer(java.lang.Class javaType)
                                    throws JAXRPCException

  Gets the SerializerFactory registered for the Java type.

  Specified by:
    `getSerializer` in interface `TypeMapping`
  Parameters:
    `javaType` - - Class of the Java type
  Returns:
    Registered SerializerFactory
  Throws:
    `JAXRPCException` - - If there is no registered SerializerFactory for this pair of Java type and XML data type java.lang.IllegalArgumentException - If invalid or unsupported XML/Java type is specified

### getDeserializer

    public DeserializerFactory getDeserializer(QName xmlType)
                                        throws JAXRPCException

  Gets the DeserializerFactory registered for the xmlType.

  Specified by:
    `getDeserializer` in interface `TypeMapping`
  Parameters:
    `xmlType` - - Qualified name of the XML data type
  Returns:
    Registered DeserializerFactory
  Throws:
    `JAXRPCException` - - If there is no registered DeserializerFactory for this pair of Java type and XML data type java.lang.IllegalArgumentException - If invalid or unsupported XML/Java type is specified

### setDoAutoTypes

    public void setDoAutoTypes(boolean doAutoTypes)

### getAllClasses

    public java.lang.Class[] getAllClasses()

  Returns an array of all the classes contained within this mapping

  Specified by:
    `getAllClasses` in interface `TypeMapping`

Copyright © 2003 Apache Web Services Project. All Rights Reserved.