org.apache.commons.betwixt
Class IntrospectionConfiguration

java.lang.Object
  extended by org.apache.commons.betwixt.IntrospectionConfiguration

public class IntrospectionConfiguration
extends java.lang.Object

Stores introspection phase binding configuration.

There are two phase in Betwixt's processing. The first phase is the introspection of the bean. Strutural configuration settings effect this phase. The second phase comes when Betwixt dynamically uses reflection to execute the mapping. This object stores configuration settings pertaining to the first phase.

These common settings have been collected into one class so that they can be more easily shared not only between the objects that execute the introspection but also (by a user) between different XMLIntrospectors.

Version:
$Revision: 561314 $
Author:
Apache Commons Team

Constructor Summary
IntrospectionConfiguration()
           
 
Method Summary
protected  NameMapper createNameMapper()
          A Factory method to lazily create a strategy used to convert bean type names into element names.
protected  PluralStemmer createPluralStemmer()
          A Factory method to lazily create a new strategy to detect matching singular and plural properties.
 NameMapper getAttributeNameMapper()
          Gets the name mapping strategy used to convert bean names into attributes.
 AttributeSuppressionStrategy getAttributeSuppressionStrategy()
          Returns the AttributeSuppressionStrategy.
 ClassNormalizer getClassNormalizer()
          Gets the ClassNormalizer strategy.
 CollectiveTypeStrategy getCollectiveTypeStrategy()
          Gets the strategy used to determine which types are collective.
 NameMapper getElementNameMapper()
          Gets the name mapping strategy used to convert bean names into elements.
 ElementSuppressionStrategy getElementSuppressionStrategy()
          Returns the ElementSuppressionStrategy.
 org.apache.commons.logging.Log getIntrospectionLog()
          Gets the common Log used for introspection.
 MappingDerivationStrategy getMappingDerivationStrategy()
          Gets the MappingDerivationStrategy used to determine whether the bind or introspection time type should determine the mapping.
 PluralStemmer getPluralStemmer()
          Get singular and plural matching strategy.
 NamespacePrefixMapper getPrefixMapper()
          Gets the NamespacePrefixMapper used to convert namespace URIs into prefixes.
 PropertySuppressionStrategy getPropertySuppressionStrategy()
          Gets the strategy which determines the properties to be ignored.
 SimpleTypeMapper getSimpleTypeMapper()
          Gets the simple type binding strategy.
 TypeBindingStrategy getTypeBindingStrategy()
          Gets the TypeBindingStrategy to be used to determine the binding for Java types.
 boolean ignoreAllBeanInfo()
          Should existing BeanInfo classes be ignored by java.reflect.Introspector.
 boolean isAttributesForPrimitives()
          Should attributes (or elements) be used for primitive types.
 boolean isLoopType(java.lang.Class type)
          Is this a loop type class?
 boolean isUseContextClassLoader()
          Should be context classloader be used when loading classes?
 boolean isWrapCollectionsInElement()
          Should collections be wrapped in an extra element?
 void setAttributeNameMapper(NameMapper nameMapper)
          Sets the strategy used to convert bean type names into attribute names
 void setAttributesForPrimitives(boolean attributesForPrimitives)
          Set whether attributes (or elements) should be used for primitive types.
 void setAttributeSuppressionStrategy(AttributeSuppressionStrategy attributeSuppressionStrategy)
          Sets the AttributeSuppressionStrategy.
 void setClassNormalizer(ClassNormalizer classNormalizer)
          Sets the ClassNormalizer strategy.
 void setCollectiveTypeStrategy(CollectiveTypeStrategy collectiveTypeStrategy)
          Sets the strategy used to determine which types are collective.
 void setElementNameMapper(NameMapper nameMapper)
          Sets the strategy used to convert bean type names into element names
 void setElementSuppressionStrategy(ElementSuppressionStrategy elementSuppressionStrategy)
          Sets the ElementSuppressionStrategy.
 void setIgnoreAllBeanInfo(boolean ignoreAllBeanInfo)
          Specifies if you want to ignore existing BeanInfo classes at all for introspection
 void setIntrospectionLog(org.apache.commons.logging.Log log)
          Sets the common Log used by introspection.
 void setMappingDerivationStrategy(MappingDerivationStrategy mappingDerivationStrategy)
          Sets the MappingDerivationStrategy used to determine whether the bind or introspection time type should determine the mapping.
 void setPluralStemmer(PluralStemmer pluralStemmer)
          Sets the strategy used to detect matching singular and plural properties
 void setPrefixMapper(NamespacePrefixMapper mapper)
          Sets the NamespacePrefixMapper used to convert namespave URIs into prefixes.
 void setPropertySuppressionStrategy(PropertySuppressionStrategy propertySuppressionStrategy)
          Sets the strategy which determines the properties to be ignored.
 void setSimpleTypeMapper(SimpleTypeMapper mapper)
          Sets the simple type binding strategy.
 void setTypeBindingStrategy(TypeBindingStrategy typeBindingStrategy)
          Sets the TypeBindingStrategy to be used to determine the binding for Java types.
 void setUseBeanInfoSearchPath(boolean useBeanInfoSearchPath)
          Specifies if you want to use the beanInfoSearchPath
 void setUseContextClassLoader(boolean useContextClassLoader)
          Specify whether the context classloader should be used to load classes during introspection; the default value is true.
 void setWrapCollectionsInElement(boolean wrapCollectionsInElement)
          Sets whether we should we wrap collections in an extra element.
 boolean useBeanInfoSearchPath()
          Should the original java.reflect.Introspector bean info search path be used?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IntrospectionConfiguration

public IntrospectionConfiguration()
Method Detail

getClassNormalizer

public ClassNormalizer getClassNormalizer()
Gets the ClassNormalizer strategy. This is used to determine the Class to be introspected (the normalized Class).

Returns:
the ClassNormalizer used to determine the Class to be introspected for a given Object.

setClassNormalizer

public void setClassNormalizer(ClassNormalizer classNormalizer)
Sets the ClassNormalizer strategy. This is used to determine the Class to be introspected (the normalized Class).

Parameters:
classNormalizer - the ClassNormalizer to be used to determine the Class to be introspected for a given Object.

isAttributesForPrimitives

public boolean isAttributesForPrimitives()
Should attributes (or elements) be used for primitive types.

Returns:
true if primitive types will be mapped to attributes in the introspection

setAttributesForPrimitives

public void setAttributesForPrimitives(boolean attributesForPrimitives)
Set whether attributes (or elements) should be used for primitive types.

Parameters:
attributesForPrimitives - pass trus to map primitives to attributes, pass false to map primitives to elements

isWrapCollectionsInElement

public boolean isWrapCollectionsInElement()
Should collections be wrapped in an extra element?

Returns:
whether we should we wrap collections in an extra element?

setWrapCollectionsInElement

public void setWrapCollectionsInElement(boolean wrapCollectionsInElement)
Sets whether we should we wrap collections in an extra element.

Parameters:
wrapCollectionsInElement - pass true if collections should be wrapped in a parent element

getPluralStemmer

public PluralStemmer getPluralStemmer()
Get singular and plural matching strategy.

Returns:
the strategy used to detect matching singular and plural properties

setPluralStemmer

public void setPluralStemmer(PluralStemmer pluralStemmer)
Sets the strategy used to detect matching singular and plural properties

Parameters:
pluralStemmer - the PluralStemmer used to match singular and plural

getElementNameMapper

public NameMapper getElementNameMapper()
Gets the name mapping strategy used to convert bean names into elements.

Returns:
the strategy used to convert bean type names into element names. If no element mapper is currently defined then a default one is created.

setElementNameMapper

public void setElementNameMapper(NameMapper nameMapper)
Sets the strategy used to convert bean type names into element names

Parameters:
nameMapper - the NameMapper to use for the conversion

getAttributeNameMapper

public NameMapper getAttributeNameMapper()
Gets the name mapping strategy used to convert bean names into attributes.

Returns:
the strategy used to convert bean type names into attribute names. If no attributeNamemapper is known, it will default to the ElementNameMapper

setAttributeNameMapper

public void setAttributeNameMapper(NameMapper nameMapper)
Sets the strategy used to convert bean type names into attribute names

Parameters:
nameMapper - the NameMapper to use for the convertion

useBeanInfoSearchPath

public boolean useBeanInfoSearchPath()

Should the original java.reflect.Introspector bean info search path be used?

Default is false.

Returns:
boolean if the beanInfoSearchPath should be used.

setUseBeanInfoSearchPath

public void setUseBeanInfoSearchPath(boolean useBeanInfoSearchPath)
Specifies if you want to use the beanInfoSearchPath

Parameters:
useBeanInfoSearchPath -
See Also:
for more details

ignoreAllBeanInfo

public boolean ignoreAllBeanInfo()

Should existing BeanInfo classes be ignored by java.reflect.Introspector.

Default is false.

Returns:
boolean if the BeanInfo classes should be used.

setIgnoreAllBeanInfo

public void setIgnoreAllBeanInfo(boolean ignoreAllBeanInfo)
Specifies if you want to ignore existing BeanInfo classes at all for introspection

Parameters:
ignoreAllBeanInfo - set to true to ignore all BeanInfo classes
Since:
0.8
See Also:
for more details

createPluralStemmer

protected PluralStemmer createPluralStemmer()
A Factory method to lazily create a new strategy to detect matching singular and plural properties.

Returns:
new defualt PluralStemmer implementation

createNameMapper

protected NameMapper createNameMapper()
A Factory method to lazily create a strategy used to convert bean type names into element names.

Returns:
new default NameMapper implementation

getIntrospectionLog

public org.apache.commons.logging.Log getIntrospectionLog()
Gets the common Log used for introspection. It is more convenient to use a single Log that can be easily configured.

Returns:
Log, not null

setIntrospectionLog

public void setIntrospectionLog(org.apache.commons.logging.Log log)
Sets the common Log used by introspection. It is more convenient to use a single Log that can be easily configured.

Parameters:
log - Log, not null

getPrefixMapper

public NamespacePrefixMapper getPrefixMapper()
Gets the NamespacePrefixMapper used to convert namespace URIs into prefixes.

Returns:
NamespacePrefixMapper, not null

setPrefixMapper

public void setPrefixMapper(NamespacePrefixMapper mapper)
Sets the NamespacePrefixMapper used to convert namespave URIs into prefixes.

Parameters:
mapper - NamespacePrefixMapper, not null

getSimpleTypeMapper

public SimpleTypeMapper getSimpleTypeMapper()
Gets the simple type binding strategy.

Returns:
SimpleTypeMapper, not null

setSimpleTypeMapper

public void setSimpleTypeMapper(SimpleTypeMapper mapper)
Sets the simple type binding strategy.

Parameters:
mapper - SimpleTypeMapper, not null

getTypeBindingStrategy

public TypeBindingStrategy getTypeBindingStrategy()
Gets the TypeBindingStrategy to be used to determine the binding for Java types.

Returns:
the TypeBindingStrategy to be used, not null

setTypeBindingStrategy

public void setTypeBindingStrategy(TypeBindingStrategy typeBindingStrategy)
Sets the TypeBindingStrategy to be used to determine the binding for Java types.

Parameters:
typeBindingStrategy - the TypeBindingStrategy to be used, not null

getMappingDerivationStrategy

public MappingDerivationStrategy getMappingDerivationStrategy()
Gets the MappingDerivationStrategy used to determine whether the bind or introspection time type should determine the mapping.

Returns:
MappingDerivationStrategy, not null
Since:
0.7

setMappingDerivationStrategy

public void setMappingDerivationStrategy(MappingDerivationStrategy mappingDerivationStrategy)
Sets the MappingDerivationStrategy used to determine whether the bind or introspection time type should determine the mapping.

Parameters:
mappingDerivationStrategy - MappingDerivationStrategy, not null
Since:
0.7

getPropertySuppressionStrategy

public PropertySuppressionStrategy getPropertySuppressionStrategy()
Gets the strategy which determines the properties to be ignored.

Returns:
the PropertySuppressionStrategy to be used for introspection, not null
Since:
0.7

setPropertySuppressionStrategy

public void setPropertySuppressionStrategy(PropertySuppressionStrategy propertySuppressionStrategy)
Sets the strategy which determines the properties to be ignored.

Parameters:
propertySuppressionStrategy - the PropertySuppressionStrategy to be used for introspection, not null
Since:
0.7

getCollectiveTypeStrategy

public CollectiveTypeStrategy getCollectiveTypeStrategy()
Gets the strategy used to determine which types are collective.

Returns:
CollectiveTypeStrategy, not null
Since:
0.8

setCollectiveTypeStrategy

public void setCollectiveTypeStrategy(CollectiveTypeStrategy collectiveTypeStrategy)
Sets the strategy used to determine which types are collective.

Parameters:
collectiveTypeStrategy - CollectiveTypeStrategy, not null
Since:
0.8

isLoopType

public boolean isLoopType(java.lang.Class type)
Is this a loop type class?

Parameters:
type - is this Class a loop type?
Returns:
true if the type is a loop type, or if type is null
Since:
0.7

getAttributeSuppressionStrategy

public AttributeSuppressionStrategy getAttributeSuppressionStrategy()
Returns the AttributeSuppressionStrategy. This is used to suppress attributes, e.g. for versioning.

Returns:
the strategy
Since:
0.8

setAttributeSuppressionStrategy

public void setAttributeSuppressionStrategy(AttributeSuppressionStrategy attributeSuppressionStrategy)
Sets the AttributeSuppressionStrategy. This is used to suppress attributes, e.g. for versioning.

Parameters:
attributeSuppressionStrategy - the strategy
Since:
0.8

getElementSuppressionStrategy

public ElementSuppressionStrategy getElementSuppressionStrategy()
Returns the ElementSuppressionStrategy. This is used to suppress elements, e.g. for versioning.

Returns:
the strategy
Since:
0.8

setElementSuppressionStrategy

public void setElementSuppressionStrategy(ElementSuppressionStrategy elementSuppressionStrategy)
Sets the ElementSuppressionStrategy. This is used to suppress elements, e.g. for versioning.

Parameters:
elementSuppressionStrategy - the strategy
Since:
0.8

isUseContextClassLoader

public boolean isUseContextClassLoader()
Should be context classloader be used when loading classes?

Returns:
true if the context classloader is to be used during introspection, false otherwise.

setUseContextClassLoader

public void setUseContextClassLoader(boolean useContextClassLoader)

Specify whether the context classloader should be used to load classes during introspection; the default value is true.

When running code that is not in a container (ie where the context classloader is the same as the system classloader), this setting has no effect. When running code in containers that do define a context classloader for loaded "components" (eg webapps), a true value will allow classes in the loaded "component" to be accessable even when Betwixt is deployed via a "higher level" classloader.

If code is running in a container that uses a context classloader in unusual ways then it may be necessary to set this value to false. In this case, classes are always loaded using the same classloader that loaded the betwixt library.



Copyright 2002-2008 The Apache Software Foundation. All Rights Reserved.