org.ops4j.pax.reflector.impl
Class RemoteDelegatingReflectorImpl

java.lang.Object
  extended by org.ops4j.pax.reflector.impl.RemoteDelegatingReflectorImpl
All Implemented Interfaces:
ReflectorService

public final class RemoteDelegatingReflectorImpl
extends Object
implements ReflectorService


Constructor Summary
RemoteDelegatingReflectorImpl(RemoteReflector remote)
           
 
Method Summary
 void addRootObject(String name, Object object)
          Adds a Root Object to the Reflector instance.
 String append(Object container, String containerpart, String namepart)
          Appends the name to the container name.
 String extractContainerPart(String objectname)
          Returns the container part of the objectname.
 String extractNamePart(String objectname)
          Returns the Name part of the objectname.
 String getMember(String membername)
          Returns the human readable form of the object instance traversed from the objectname argument.
 Class getMemberClass(Object container, String memberName)
          Returns the Class of the member identified by the membername in the provided container.
 Class getMemberClass(String objectname)
          Returns the Class of the member identified by the membername argument.
 String getMemberClassName(Object container, String objectname)
          Returns the name of the Class of the member identified by the membername in the provided container.
 String getMemberClassName(String objectname)
          Returns the name of the Class of the member identified by the objectname argument.
 String[] getMemberNames(Object object)
          Returns all the membernames found in the object.
 String[] getMemberNames(String membername)
          Returns all the membernames found in the member identified by membername argument.
 Object getMemberObject(Object container, String memberName)
          Returns the object of the member by the given membername, starting at the provided container.
 Object getMemberObject(String membername)
          Returns the object of the member by the given membername.
 boolean isMemberSettable(Object container, String membername)
          Checks with the member of the given membername can be set to a value.
 boolean isMemberSettable(String objectname)
          Checks with the member of the given objectname can be set to a value.
 void removeRootObject(String name)
          Removes the root object with registered under the provided name.
 void setMember(String membername, String value)
          Assigns the value to the member identified by the membername argument.
 void setMemberObject(Object container, String memberName, Object value)
          Assigns the value to the member identified by the membername starting at the container object.
 void setMemberObject(String membername, Object value)
          Assigns the value to the member identified by the membername argument.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RemoteDelegatingReflectorImpl

public RemoteDelegatingReflectorImpl(RemoteReflector remote)
Method Detail

getMember

public String getMember(String membername)
                 throws ReflectionException
Returns the human readable form of the object instance traversed from the objectname argument.

Specified by:
getMember in interface ReflectorService
Parameters:
membername - The name of the object of interested.
Returns:
The toString() value of the member value object.
Throws:
ReflectionException - if the member does not exist.

getMemberObject

public Object getMemberObject(String membername)
                       throws ReflectionException
Returns the object of the member by the given membername.

Specified by:
getMemberObject in interface ReflectorService
Parameters:
membername - The name of the object to traverse to and return.
Returns:
The object that is returned as the value of the member, either by getter, fields or special handling, such as the value of entries of Maps and Collections.
Throws:
ReflectionException - if the member does not exist.

getMemberObject

public Object getMemberObject(Object container,
                              String memberName)
                       throws ReflectionException
Returns the object of the member by the given membername, starting at the provided container.

Specified by:
getMemberObject in interface ReflectorService
Parameters:
container - The object which has a member of the memberName.
memberName - The name of the object to traverse to and return.
Returns:
The object that is returned as the value of the member, either by getter, fields or special handling, such as the value of entries of Maps and Collections.
Throws:
ReflectionException - if the member does not exist.

setMember

public void setMember(String membername,
                      String value)
               throws ReflectionException
Assigns the value to the member identified by the membername argument.

Specified by:
setMember in interface ReflectorService
Parameters:
membername - The name of the member to be assigned a value.
value - The value to be assigned to the member. For primitives, the value is converted according to normal Java rules, but additionally a fully-qualified classname can be given, in which case the reflector will try to instantiate such class through the default constructor, and if successful assign the instance to the member.
Throws:
ReflectionException - If the value is not assignable to the member type or the member does not exist.

setMemberObject

public void setMemberObject(String membername,
                            Object value)
                     throws ReflectionException
Assigns the value to the member identified by the membername argument.

Specified by:
setMemberObject in interface ReflectorService
Parameters:
membername - The name of the member to be assigned a value.
value - The value to be assigned to the member.
Throws:
ReflectionException - If the value is not assignable to the member type.

setMemberObject

public void setMemberObject(Object container,
                            String memberName,
                            Object value)
                     throws ReflectionException
Assigns the value to the member identified by the membername starting at the container object.

Specified by:
setMemberObject in interface ReflectorService
Parameters:
container - The object which has a member of the memberName.
memberName - The name of the member to be assigned a value.
value - The value to be assigned to the member.
Throws:
ReflectionException - If the value is not assignable to the member type.

getMemberNames

public String[] getMemberNames(String membername)
                        throws ReflectionException
Returns all the membernames found in the member identified by membername argument.

If the membername is an empty string, all root object names are returned.

Specified by:
getMemberNames in interface ReflectorService
Parameters:
membername - The name of the member to query for its members.
Returns:
The members that are found in the object identified by membername.
Throws:
ReflectionException - If the member identified by the membername does not exist.

getMemberNames

public String[] getMemberNames(Object object)
Returns all the membernames found in the object.

Specified by:
getMemberNames in interface ReflectorService
Parameters:
object - The Java instance to query for its members.
Returns:
The members that are found in the object.

getMemberClass

public Class getMemberClass(String objectname)
                     throws ReflectionException
Returns the Class of the member identified by the membername argument.

Specified by:
getMemberClass in interface ReflectorService
Parameters:
objectname - The name of the object to query for its Class.
Returns:
The class of the named object.
Throws:
ReflectionException - if the named object does not exist.

getMemberClass

public Class getMemberClass(Object container,
                            String memberName)
                     throws ReflectionException
Returns the Class of the member identified by the membername in the provided container.

Specified by:
getMemberClass in interface ReflectorService
Parameters:
container - The object which has a member of the memberName.
memberName - The name of the member of the container to query for its Class.
Returns:
The class of the named object.
Throws:
ReflectionException - if the named object does not exist.

getMemberClassName

public String getMemberClassName(String objectname)
                          throws ReflectionException
Returns the name of the Class of the member identified by the objectname argument.

Specified by:
getMemberClassName in interface ReflectorService
Parameters:
objectname - The name of the member to query for its Class.
Returns:
The name of the Class of the named object.
Throws:
ReflectionException - if the named object does not exist.

getMemberClassName

public String getMemberClassName(Object container,
                                 String objectname)
                          throws ReflectionException
Returns the name of the Class of the member identified by the membername in the provided container.

Specified by:
getMemberClassName in interface ReflectorService
Parameters:
container - The object which has a member of the memberName.
objectname - The name of the member of the container to query for its Class.
Returns:
The name of the Class of the object instance identified by the objectname in the container.
Throws:
ReflectionException - if the objectname does not exist as a member in the container.

isMemberSettable

public boolean isMemberSettable(String objectname)
                         throws ReflectionException
Checks with the member of the given objectname can be set to a value.

Specified by:
isMemberSettable in interface ReflectorService
Parameters:
objectname - The member to be tested if it can be set by a setMemberObject() method call.
Returns:
true if the object identified by the objectname can be set.
Throws:
ReflectionException - if the objectname does not identify an existing object reference.

isMemberSettable

public boolean isMemberSettable(Object container,
                                String membername)
                         throws ReflectionException
Checks with the member of the given membername can be set to a value.

Specified by:
isMemberSettable in interface ReflectorService
Parameters:
container - The container from where we should test if a member can be set to a value, by calling the setMemberObject() method.
membername - The member in the provided container to be tested if it can be set by a setMemberObject() method call.
Returns:
true if the object identified by the membername can be set in the container.
Throws:
ReflectionException - if the membername does not exist as a member in the container.

extractContainerPart

public String extractContainerPart(String objectname)
Returns the container part of the objectname.

This method must correctly return the container part of the full objectname. For instance; getContainerPart( "someRoot.Abc.Def" ), must return "someRoot.Abc", getContainerPart( "someRoot.Abc['Def']" ), must return "someRoot.Abc", and getContainerPart( "someRoot.Abc['Def'].Rst" ), must return "someRoot.Abc['Def']".

Specified by:
extractContainerPart in interface ReflectorService
Parameters:
objectname - The objectname to be worked upon.
Returns:
The container part of the objectname.

extractNamePart

public String extractNamePart(String objectname)
Returns the Name part of the objectname.

This method must correctly return the Name part of the full objectname. For instance; getContainerPart( "someRoot.Abc.Def" ), must return "Def", getContainerPart( "someRoot.Abc['Def']" ), must return "['Def']", and getContainerPart( "someRoot.Abc['Def'].Rst" ), must return "Rst".

Specified by:
extractNamePart in interface ReflectorService
Parameters:
objectname - The objectname to be worked upon.
Returns:
The name part of the objectname.

append

public String append(Object container,
                     String containerpart,
                     String namepart)
Appends the name to the container name.

Specified by:
append in interface ReflectorService
Parameters:
container - The actual container so that the type can be determined.
containerpart - The name of the container.
namepart - The name part to append to the containerpart.
Returns:
The container+containerpart+namepart appended together in a safe manner.

addRootObject

public void addRootObject(String name,
                          Object object)
                   throws IllegalArgumentException
Adds a Root Object to the Reflector instance.

The name must also be unique and no other root object may have been registered with the same name. The ReflectorService will hold on to the root objects with a hard reference, so it is imperative that objects are removed explicitly with a removeRootObject() method call.

Specified by:
addRootObject in interface ReflectorService
Parameters:
name - The name of the Root Object. The name may only contain valid Java characters, as reported by Character.isJavaIdentifierPart(char ch).
object - The object instance to be registered at the provided name.
Throws:
IllegalArgumentException - if the name is not valid, or if there has already been a root object registered with the same name previously.

removeRootObject

public void removeRootObject(String name)
Removes the root object with registered under the provided name.

If there is no root object registered under the provided name, this method will simply return.

Specified by:
removeRootObject in interface ReflectorService
Parameters:
name - The name under which the root object was previously registered.


Copyright © 2006-2012 OPS4J - Open Participation Software for Java. All Rights Reserved.