org.apache.felix.ipojo.util
Class Property

java.lang.Object
  extended by org.apache.felix.ipojo.util.Property
All Implemented Interfaces:
FieldInterceptor

public class Property
extends Object
implements FieldInterceptor

Property class managing a managed value. This class managed the method invocation as well as field injection.

Author:
Felix Project Team

Field Summary
static Object NO_VALUE
          Object used for an unvalued property.
 
Constructor Summary
Property(String name, String field, String method, String value, String type, InstanceManager manager, Handler handler)
          Creates a property.
 
Method Summary
static Class computeType(String type, BundleContext context)
          Computes and returns the property type according to the given type name.
static Object create(Class type, String strValue)
          Creates an object of the given type with the given String value.
static Object createArrayObject(Class interntype, String[] values)
          Creates an array object containing the type component type from the String array 'values'.
 String getField()
           
 Handler getHandler()
          Gets the handler managing the property.
 String getMethod()
          Gets the method name, null if no method.
 String getName()
           
 String getType()
           
 Object getValue()
           
 boolean hasField()
          Checks if the property has a field.
 boolean hasMethod()
          Checks if the property has a method callback.
 void invoke(Object instance)
          Invokes the setter method on the given pojo object.
static boolean isAssignable(Class type, Object value)
          Checks if the given value is assignable to the given type.
 Object onGet(Object pojo, String fieldName, Object value)
          A field value is required by the object 'pojo'.
 void onSet(Object pojo, String fieldName, Object value)
          The field 'field' receives a new value.
 void setValue(Object value)
          Sets the value of the property.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_VALUE

public static final Object NO_VALUE
Object used for an unvalued property.

Constructor Detail

Property

public Property(String name,
                String field,
                String method,
                String value,
                String type,
                InstanceManager manager,
                Handler handler)
         throws ConfigurationException
Creates a property. At least the method or the field need to be specified.

Parameters:
name - the name of the property (optional)
field - the name of the field
method - the method name
value - the initial value of the property (optional)
type - the the type of the property
manager - the instance manager
handler - the handler object which manage this property.
Throws:
ConfigurationException - if the property value cannot be set.
Method Detail

computeType

public static Class computeType(String type,
                                BundleContext context)
                         throws ConfigurationException
Computes and returns the property type according to the given type name.

Parameters:
type - the the type name
context - the bundle context (used to load classes)
Returns:
the class of the given type
Throws:
ConfigurationException - if an error occurs when loading the type class for non-primitive types.

getName

public String getName()

getField

public String getField()

getType

public String getType()

getMethod

public String getMethod()
Gets the method name, null if no method.

Returns:
the method name.

hasMethod

public boolean hasMethod()
Checks if the property has a method callback.

Returns:
true if the property has a method.

hasField

public boolean hasField()
Checks if the property has a field.

Returns:
true if the property has a field.

getValue

public Object getValue()

setValue

public void setValue(Object value)
Sets the value of the property.

Parameters:
value - the new value.

isAssignable

public static boolean isAssignable(Class type,
                                   Object value)
Checks if the given value is assignable to the given type.

Parameters:
type - the class of the type
value - the object to check
Returns:
true if the object is assignable in the property of type 'type'.

create

public static Object create(Class type,
                            String strValue)
                     throws ConfigurationException
Creates an object of the given type with the given String value.

Parameters:
type - the type of the returned object
strValue - the String value.
Returns:
the object of type 'type' created from the String 'value'
Throws:
ConfigurationException - if the object cannot be created.

createArrayObject

public static Object createArrayObject(Class interntype,
                                       String[] values)
                                throws ConfigurationException
Creates an array object containing the type component type from the String array 'values'.

Parameters:
interntype - the internal type of the array.
values - the String array
Returns:
the array containing objects created from the 'values' array
Throws:
ConfigurationException - if the array cannot be created correctly

invoke

public void invoke(Object instance)
Invokes the setter method on the given pojo object. If no specified pojo object, it calls on each created pojo object.

Parameters:
instance - the created object (could be null)
See Also:
org.apache.felix.ipojo.Handler#onCreation(java.lang.Object)

onGet

public Object onGet(Object pojo,
                    String fieldName,
                    Object value)
A field value is required by the object 'pojo'.

Specified by:
onGet in interface FieldInterceptor
Parameters:
pojo - the POJO object
fieldName - the field
value - the last value
Returns:
the value if the handler want to inject this value.
See Also:
FieldInterceptor.onGet(java.lang.Object, java.lang.String, java.lang.Object)

onSet

public void onSet(Object pojo,
                  String fieldName,
                  Object value)
The field 'field' receives a new value.

Specified by:
onSet in interface FieldInterceptor
Parameters:
pojo - the pojo
fieldName - the field name
value - the new value
See Also:
FieldInterceptor.onSet(java.lang.Object, java.lang.String, java.lang.Object)

getHandler

public Handler getHandler()
Gets the handler managing the property.

Returns:
the configuration handler.


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.