org.apache.cayenne.access.types
Class ExtendedTypeMap

java.lang.Object
  extended by org.apache.cayenne.access.types.ExtendedTypeMap

public class ExtendedTypeMap
extends Object

Stores ExtendedTypes, implementing an algorithm to determine the right type for a given Java class. See getRegisteredType(String) documentation for lookup algorithm details.


Field Summary
protected  ExtendedType defaultType
           
protected  Map<String,ExtendedType> typeMap
           
 
Constructor Summary
ExtendedTypeMap()
          Creates new ExtendedTypeMap, populating it with default JDBC-compatible types.
 
Method Summary
 void addFactory(ExtendedTypeFactory factory)
          Adds an ExtendedTypeFactory that will be consulted if no direct mapping for a given class exists.
protected  ExtendedType createType(String className)
          Returns an ExtendedType for specific Java classes.
 ExtendedType getDefaultType()
          Returns a default ExtendedType that is used to handle unmapped types.
protected  ExtendedType getDefaultType(String javaClassName)
          Deprecated. since 3.0 - use createType(String) instead.
 Collection<ExtendedTypeFactory> getFactories()
          Deprecated. since 3.0 unused
 ExtendedType getRegisteredType(Class<?> javaClass)
          Returns a type registered for the class name.
 ExtendedType getRegisteredType(String javaClassName)
          Returns a guaranteed non-null ExtendedType instance for a given Java class name.
 String[] getRegisteredTypeNames()
          Returns array of Java class names supported by Cayenne for JDBC mapping.
protected  void initDefaultFactories()
          Registers default factories for creating enum types and serializable types.
protected  void initDefaultTypes()
          Registers default extended types.
 void registerType(ExtendedType type)
          Adds a new type to the list of registered types.
 void removeFactory(ExtendedTypeFactory factory)
          Removes a factory from the registered factories if it was previously added.
 void unregisterType(String javaClassName)
          Removes registered ExtendedType object corresponding to javaClassName parameter.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

typeMap

protected final Map<String,ExtendedType> typeMap

defaultType

protected ExtendedType defaultType
Constructor Detail

ExtendedTypeMap

public ExtendedTypeMap()
Creates new ExtendedTypeMap, populating it with default JDBC-compatible types. If JDK version is at least 1.5, also loads support for enumerated types.

Method Detail

initDefaultTypes

protected void initDefaultTypes()
Registers default extended types. This method is called from constructor.


initDefaultFactories

protected void initDefaultFactories()
Registers default factories for creating enum types and serializable types. Note that user-defined factories are consulted before any default factory.

Since:
3.0

getFactories

public Collection<ExtendedTypeFactory> getFactories()
Deprecated. since 3.0 unused

Returns ExtendedTypeFactories registered with this instance.

Since:
1.2

addFactory

public void addFactory(ExtendedTypeFactory factory)
Adds an ExtendedTypeFactory that will be consulted if no direct mapping for a given class exists. This feature can be used to map interfaces.

Note that the order in which factories are added is important, as factories are consulted in turn when an ExtendedType is looked up, and lookup is stopped when any factory provides a non-null type.

Since:
1.2

removeFactory

public void removeFactory(ExtendedTypeFactory factory)
Removes a factory from the registered factories if it was previously added.

Since:
1.2

registerType

public void registerType(ExtendedType type)
Adds a new type to the list of registered types. If there is another type registered for a class described by the type argument, the old handler is overridden by the new one.


getDefaultType

public ExtendedType getDefaultType()
Returns a default ExtendedType that is used to handle unmapped types.


getRegisteredType

public ExtendedType getRegisteredType(String javaClassName)
Returns a guaranteed non-null ExtendedType instance for a given Java class name. Primitive class names are internally replaced by the non-primitive counterparts. The following lookup sequence is used to determine the type: Note that for array types class name must be in the form 'MyClass[]'.


getRegisteredType

public ExtendedType getRegisteredType(Class<?> javaClass)
Returns a type registered for the class name. If no such type exists, returns the default type. It is guaranteed that this method returns a non-null ExtendedType instance.


unregisterType

public void unregisterType(String javaClassName)
Removes registered ExtendedType object corresponding to javaClassName parameter.


getRegisteredTypeNames

public String[] getRegisteredTypeNames()
Returns array of Java class names supported by Cayenne for JDBC mapping.


getDefaultType

protected ExtendedType getDefaultType(String javaClassName)
Deprecated. since 3.0 - use createType(String) instead.

Since:
1.2

createType

protected ExtendedType createType(String className)
Returns an ExtendedType for specific Java classes. Uses user-provided and Cayenne-provided ExtendedTypeFactory factories to instantiate the ExtendedType. All primitive classes must be converted to the corresponding Java classes by the callers.

Returns:
a default type for a given class or null if a class has no default type mapping.
Since:
1.2


Copyright © 2001-2011 Apache Cayenne. All Rights Reserved.