Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

javax.ide.extension
Class DynamicHook  view DynamicHook download DynamicHook.java

java.lang.Object
  extended byjavax.ide.extension.ElementVisitor
      extended byjavax.ide.extension.ExtensionHook
          extended byjavax.ide.extension.DynamicHook

public class DynamicHook
extends ExtensionHook

An implementation of ExtensionHook that automatically populates model objects using reflection.


Nested Class Summary
static interface DynamicHook.ElementTypeResolver
          An object which can resolve an ElementName into a Class type for that element.
 
Field Summary
private  javax.ide.extension.spi.Stack _applicationObjectStack
          This stack references the application objects currently in scope.
private  java.lang.ClassLoader _classLoader
          If non-null, this classloader is passed to all calls to Class.newInstance() , otherwise the current thread context classloader is used.
private  javax.ide.extension.spi.Stack _complexTypeIndicatorStack
          This stack references a verdict on whether the element in scope is complex or simple.
private  java.util.List _resolvers
          A list of registered DynamicHook.ElementTypeResolvers which may be queried for the runtime type corresponding to an xml element.
private static java.lang.String ADD_METHOD_PREFIX
           
private static java.lang.String ATTRIBUTE_CLASS
           
 java.lang.String sApplicationObjectKey
           
private static java.lang.String SET_METHOD_PREFIX
           
private static java.lang.Class[] sObjectParamTypes
           
private static java.lang.Class[] sStringParamTypes
           
 
Fields inherited from class javax.ide.extension.ExtensionHook
KEY_EXTENSION, KEY_RSBUNDLE_CLASS, MANIFEST_XMLNS
 
Fields inherited from class javax.ide.extension.ElementVisitor
KEY_LOCATOR
 
Constructor Summary
DynamicHook(java.lang.Object rootObject)
           
DynamicHook(java.lang.Object rootObject, java.lang.ClassLoader classLoader)
           
DynamicHook(java.lang.Object rootObject, java.lang.ClassLoader classLoader, DynamicHook.ElementTypeResolver resolver)
           
 
Method Summary
protected  void attachData(java.lang.Object parent, java.lang.String data, ElementEndContext context)
           
protected  void attachObject(java.lang.Object parent, java.lang.Object child, ElementEndContext context)
           
 void end(ElementEndContext context)
          Visit the end tag of an xml element.
protected  java.lang.reflect.Method findMethod(ElementContext context, java.lang.Object o, java.lang.String elementName, java.lang.Class[] paramTypes)
           
protected  java.lang.Object getApplicationObject(java.lang.Class runtimeType, ElementStartContext context)
           
protected  java.lang.String getMethodName(java.lang.String prefix, java.lang.String elementName)
           
protected  java.lang.Class getRuntimeType(ElementStartContext context)
           
protected  void handleComplexElementEnd(ElementEndContext context)
           
protected  void handleComplexElementStart(java.lang.Object applicationObject, ElementStartContext context)
           
protected  void handleSimpleElementEnd(ElementEndContext context)
           
protected  void handleSimpleElementStart(ElementStartContext context)
           
protected  void invokePostInitialize(java.lang.Object o)
           
protected  void invokePreInitialize(java.lang.Object child, java.lang.Object parent)
           
 void registerElementTypeResolver(DynamicHook.ElementTypeResolver resolver)
           
 void start(ElementStartContext context)
          Visit the start tag of an xml element.
 
Methods inherited from class javax.ide.extension.ExtensionHook
getExtension, getRSBundleClass, resolvePath
 
Methods inherited from class javax.ide.extension.ElementVisitor
log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sApplicationObjectKey

public final java.lang.String sApplicationObjectKey

ATTRIBUTE_CLASS

private static final java.lang.String ATTRIBUTE_CLASS
See Also:
Constant Field Values

SET_METHOD_PREFIX

private static final java.lang.String SET_METHOD_PREFIX
See Also:
Constant Field Values

ADD_METHOD_PREFIX

private static final java.lang.String ADD_METHOD_PREFIX
See Also:
Constant Field Values

sObjectParamTypes

private static final java.lang.Class[] sObjectParamTypes

sStringParamTypes

private static final java.lang.Class[] sStringParamTypes

_applicationObjectStack

private final javax.ide.extension.spi.Stack _applicationObjectStack
This stack references the application objects currently in scope. After creation, an application object is pushed onto the stack. When that complex element goes out of scope, the object is popped from the stack.


_complexTypeIndicatorStack

private final javax.ide.extension.spi.Stack _complexTypeIndicatorStack
This stack references a verdict on whether the element in scope is complex or simple. When the element goes out of scope, the verdict on the parent element is available at the top of this stack.


_classLoader

private java.lang.ClassLoader _classLoader
If non-null, this classloader is passed to all calls to Class.newInstance() , otherwise the current thread context classloader is used.


_resolvers

private final java.util.List _resolvers
A list of registered DynamicHook.ElementTypeResolvers which may be queried for the runtime type corresponding to an xml element.

Constructor Detail

DynamicHook

public DynamicHook(java.lang.Object rootObject)

DynamicHook

public DynamicHook(java.lang.Object rootObject,
                   java.lang.ClassLoader classLoader)

DynamicHook

public DynamicHook(java.lang.Object rootObject,
                   java.lang.ClassLoader classLoader,
                   DynamicHook.ElementTypeResolver resolver)
Method Detail

registerElementTypeResolver

public void registerElementTypeResolver(DynamicHook.ElementTypeResolver resolver)

start

public void start(ElementStartContext context)
Description copied from class: ElementVisitor
Visit the start tag of an xml element.

This implementation does nothing.

Overrides:
start in class ElementVisitor

end

public void end(ElementEndContext context)
Description copied from class: ElementVisitor
Visit the end tag of an xml element.

This implementation does nothing.

Overrides:
end in class ElementVisitor

handleComplexElementStart

protected void handleComplexElementStart(java.lang.Object applicationObject,
                                         ElementStartContext context)

handleComplexElementEnd

protected void handleComplexElementEnd(ElementEndContext context)

handleSimpleElementStart

protected void handleSimpleElementStart(ElementStartContext context)

handleSimpleElementEnd

protected void handleSimpleElementEnd(ElementEndContext context)

getRuntimeType

protected java.lang.Class getRuntimeType(ElementStartContext context)

getApplicationObject

protected java.lang.Object getApplicationObject(java.lang.Class runtimeType,
                                                ElementStartContext context)

attachObject

protected void attachObject(java.lang.Object parent,
                            java.lang.Object child,
                            ElementEndContext context)

attachData

protected void attachData(java.lang.Object parent,
                          java.lang.String data,
                          ElementEndContext context)

invokePreInitialize

protected void invokePreInitialize(java.lang.Object child,
                                   java.lang.Object parent)

invokePostInitialize

protected void invokePostInitialize(java.lang.Object o)

findMethod

protected java.lang.reflect.Method findMethod(ElementContext context,
                                              java.lang.Object o,
                                              java.lang.String elementName,
                                              java.lang.Class[] paramTypes)

getMethodName

protected java.lang.String getMethodName(java.lang.String prefix,
                                         java.lang.String elementName)