org.jboss.managed.plugins.factory
Class AbstractInstanceClassFactory<T>

java.lang.Object
  extended by org.jboss.managed.plugins.factory.AbstractInstanceClassFactory<T>
Type Parameters:
T - the instance type
All Implemented Interfaces:
InstanceClassFactory<T>
Direct Known Subclasses:
DefaultInstanceClassFactory

public abstract class AbstractInstanceClassFactory<T>
extends Object
implements InstanceClassFactory<T>

A base InstanceClassFactory implementation that uses jboss reflection to get/set values on the underlying property object. Runtime component names are handled via a mapping from TypeInfo to RuntimeComponentNameTransformer using property ManagementRuntimeRef information.

Version:
$Revision: 81571 $
Author:
Scott.Stark@jboss.org

Constructor Summary
AbstractInstanceClassFactory()
           
AbstractInstanceClassFactory(ManagedObjectFactory mof)
          Create an AbstractInstanceClassFactory with a ManagedObjectFactory.
 
Method Summary
protected  Collection<?> getAsCollection(Object value)
           
 Object getComponentName(org.jboss.beans.info.spi.BeanInfo beanInfo, ManagedProperty property, T attachment, MetaValue value)
          Get the runtime component name.
protected  RuntimeComponentNameTransformer getComponentNameTransformer(org.jboss.reflect.spi.TypeInfo type)
          Get component name transformer.
 org.jboss.config.spi.Configuration getConfiguration()
           
protected  List<GenericValue> getManagedObjectArray(org.jboss.beans.info.spi.BeanInfo beanInfo, ManagedProperty property, org.jboss.metadata.spi.MetaData metaData, Object value)
           
 Class<?> getManagedObjectClass(T attachment)
          Default InstanceClassFactory implementation simply returns the attachment class.
protected  GenericValue getManagedObjectValue(org.jboss.beans.info.spi.BeanInfo beanInfo, ManagedProperty property, org.jboss.metadata.spi.MetaData metaData, Object value)
           
 GenericValue getManagedObjectValue(ManagedProperty property, ManagedObject value)
           
 GenericValue getManagedObjectValue(ManagedProperty property, org.jboss.metadata.spi.MetaData metaData, ManagedObject value)
           
 MetaValueFactory getMetaValueFactory()
           
 ManagedObjectFactory getMof()
           
protected  MetaValue getNonManagedObjectValue(org.jboss.beans.info.spi.BeanInfo beanInfo, ManagedProperty property, org.jboss.beans.info.spi.PropertyInfo propertyInfo, Object value)
           
protected  String getPropertyName(ManagedProperty property)
          Get the property name.
 Map<org.jboss.reflect.spi.TypeInfo,RuntimeComponentNameTransformer> getTransformers()
           
 MetaValue getValue(org.jboss.beans.info.spi.BeanInfo beanInfo, ManagedProperty property, org.jboss.metadata.spi.MetaData metaData, T object)
          Get the value from object.
 void setConfiguration(org.jboss.config.spi.Configuration configuration)
           
protected  void setManagedObject(org.jboss.beans.info.spi.BeanInfo beanInfo, org.jboss.beans.info.spi.PropertyInfo propertyInfo, T object, ManagedObject mo)
          Currently just a stub method subclasses have to override to avoid the NotImplementedException.
 void setMetaValueFactory(MetaValueFactory metaValueFactory)
           
 void setMof(ManagedObjectFactory mof)
           
 void setNameTransformers(Class<?> clazz, RuntimeComponentNameTransformer transformer)
           
 void setNameTransformers(org.jboss.reflect.spi.TypeInfo type, RuntimeComponentNameTransformer transformer)
           
 void setTransformers(Map<org.jboss.reflect.spi.TypeInfo,RuntimeComponentNameTransformer> transformers)
           
 void setValue(org.jboss.beans.info.spi.BeanInfo beanInfo, ManagedProperty property, T object, MetaValue value)
          Set a value
protected  void setValue(org.jboss.beans.info.spi.BeanInfo beanInfo, org.jboss.beans.info.spi.PropertyInfo propertyInfo, Object object, Object unwrapValue)
           
protected  Object unwrapValue(org.jboss.beans.info.spi.BeanInfo beanInfo, ManagedProperty property, MetaValue value)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jboss.managed.spi.factory.InstanceClassFactory
getType
 

Constructor Detail

AbstractInstanceClassFactory

public AbstractInstanceClassFactory()

AbstractInstanceClassFactory

public AbstractInstanceClassFactory(ManagedObjectFactory mof)
Create an AbstractInstanceClassFactory with a ManagedObjectFactory. The ManagedObjectFactory is neede for GenericValue creation.

Parameters:
mof - - the ManagedObjectFactory delegated to for GenericValue handling.
See Also:
#getManagedObjectValue(BeanInfo, ManagedProperty, Object), #getManagedObjectArray(BeanInfo, ManagedProperty, Object)
Method Detail

getTransformers

public Map<org.jboss.reflect.spi.TypeInfo,RuntimeComponentNameTransformer> getTransformers()

setTransformers

public void setTransformers(Map<org.jboss.reflect.spi.TypeInfo,RuntimeComponentNameTransformer> transformers)

setNameTransformers

public void setNameTransformers(Class<?> clazz,
                                RuntimeComponentNameTransformer transformer)

setNameTransformers

public void setNameTransformers(org.jboss.reflect.spi.TypeInfo type,
                                RuntimeComponentNameTransformer transformer)

getConfiguration

public org.jboss.config.spi.Configuration getConfiguration()

setConfiguration

public void setConfiguration(org.jboss.config.spi.Configuration configuration)

getMetaValueFactory

public MetaValueFactory getMetaValueFactory()

setMetaValueFactory

public void setMetaValueFactory(MetaValueFactory metaValueFactory)

getMof

public ManagedObjectFactory getMof()

setMof

public void setMof(ManagedObjectFactory mof)

getManagedObjectClass

public Class<?> getManagedObjectClass(T attachment)
                               throws ClassNotFoundException
Default InstanceClassFactory implementation simply returns the attachment class.

Specified by:
getManagedObjectClass in interface InstanceClassFactory<T>
Parameters:
attachment - - the instance a ManagedObject is to be created for.
Returns:
the Class that represents the root ManagedObject.
Throws:
ClassNotFoundException - if MO class not found

getComponentName

public Object getComponentName(org.jboss.beans.info.spi.BeanInfo beanInfo,
                               ManagedProperty property,
                               T attachment,
                               MetaValue value)
Description copied from interface: InstanceClassFactory
Get the runtime component name.

Specified by:
getComponentName in interface InstanceClassFactory<T>
Parameters:
beanInfo - managed object's bean info
property - managed property being set
attachment - - the object which own's the property
value - - the meta value form of the property value
Returns:
the name of the runtime object which is associated with the property. May be null if no such component exists.

getValue

public MetaValue getValue(org.jboss.beans.info.spi.BeanInfo beanInfo,
                          ManagedProperty property,
                          org.jboss.metadata.spi.MetaData metaData,
                          T object)
Description copied from interface: InstanceClassFactory
Get the value from object.

Specified by:
getValue in interface InstanceClassFactory<T>
Parameters:
beanInfo - managed object's bean info
property - managed property being set
object - - the object which own's the property
Returns:
value - the meta value form of the property value

setValue

public void setValue(org.jboss.beans.info.spi.BeanInfo beanInfo,
                     ManagedProperty property,
                     T object,
                     MetaValue value)
Set a value

Specified by:
setValue in interface InstanceClassFactory<T>
Parameters:
beanInfo - the bean info
property - the property
object - the object
value - the meta value

getManagedObjectValue

public GenericValue getManagedObjectValue(ManagedProperty property,
                                          ManagedObject value)

getManagedObjectValue

public GenericValue getManagedObjectValue(ManagedProperty property,
                                          org.jboss.metadata.spi.MetaData metaData,
                                          ManagedObject value)

getManagedObjectValue

protected GenericValue getManagedObjectValue(org.jboss.beans.info.spi.BeanInfo beanInfo,
                                             ManagedProperty property,
                                             org.jboss.metadata.spi.MetaData metaData,
                                             Object value)

getManagedObjectArray

protected List<GenericValue> getManagedObjectArray(org.jboss.beans.info.spi.BeanInfo beanInfo,
                                                   ManagedProperty property,
                                                   org.jboss.metadata.spi.MetaData metaData,
                                                   Object value)

getNonManagedObjectValue

protected MetaValue getNonManagedObjectValue(org.jboss.beans.info.spi.BeanInfo beanInfo,
                                             ManagedProperty property,
                                             org.jboss.beans.info.spi.PropertyInfo propertyInfo,
                                             Object value)

setManagedObject

protected void setManagedObject(org.jboss.beans.info.spi.BeanInfo beanInfo,
                                org.jboss.beans.info.spi.PropertyInfo propertyInfo,
                                T object,
                                ManagedObject mo)
Currently just a stub method subclasses have to override to avoid the NotImplementedException. TODO: how to map the managed properties onto the corresponding attachment object, create another ManagedObject?

Parameters:
beanInfo -
propertyInfo -
object -
mo -

getComponentNameTransformer

protected RuntimeComponentNameTransformer getComponentNameTransformer(org.jboss.reflect.spi.TypeInfo type)
                                                               throws Throwable
Get component name transformer.

Parameters:
type - the type info
Returns:
transformer instance
Throws:
Throwable - for any error

unwrapValue

protected Object unwrapValue(org.jboss.beans.info.spi.BeanInfo beanInfo,
                             ManagedProperty property,
                             MetaValue value)

setValue

protected void setValue(org.jboss.beans.info.spi.BeanInfo beanInfo,
                        org.jboss.beans.info.spi.PropertyInfo propertyInfo,
                        Object object,
                        Object unwrapValue)
                 throws Throwable
Throws:
Throwable

getAsCollection

protected Collection<?> getAsCollection(Object value)

getPropertyName

protected String getPropertyName(ManagedProperty property)
Get the property name.

Parameters:
property - managed property
Returns:
property name


Copyright © 2009 JBoss, a division of Red Hat, Inc.. All Rights Reserved.