public class DynamicHook extends ExtensionHook
This class now strongly encourages delayed classloading through the
definition of MetaClass
handling set/add methods on model
classes.
In future, DynamicHook will be moved over to a strict classloading
policy requiring that any application objects whose classes are not
accessible to the classloader of the hook handler implementation must
be set on the model through new MetaClass signature
methods.
Currently, the Boolean system property DynamicHook.strict is
provided to allow implementors to ensure that their handlers and models
operate correctly under strict classloading. Note that this policy will
soon become the default behavior, and later the only supported behavior
of DynamicHook. The use of this option is recommended in the interests
of determining future compliance. In strict mode, any failures will be
reported to the Logger
of the ElementContext
.
Modifier and Type | Class and Description |
---|---|
static interface |
DynamicHook.ElementTypeResolver
An object which can resolve an ElementName into a Class type for that
element.
|
ExtensionHook.URIResource
ElementVisitor.ResourceBundleProvider
Modifier and Type | Field and Description |
---|---|
java.lang.String |
sApplicationObjectKey |
ATTRIBUTE_RSBUNDLE_CLASS, KEY_EXTENSION, KEY_RSBUNDLE_CLASS, MANIFEST_XMLNS
KEY_LOCATOR
Constructor and Description |
---|
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) |
Modifier and Type | Method and Description |
---|---|
protected void |
attachClass(java.lang.Object parent,
MetaClass metaClass,
ElementEndContext context) |
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) |
protected ElementVisitorFactory |
createVisitorFactory()
If the hook implementation and its associated model use delayed
classloading (as recommended), any
ElementVisitorFactory
being attached to a handled context must created by this method. |
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)
Deprecated.
|
protected <T> T |
getApplicationObject(MetaClass<T> runtimeMetaType,
ElementStartContext context) |
protected java.lang.String |
getHookNamespaceURI() |
protected java.lang.String |
getMethodName(java.lang.String prefix,
java.lang.String elementName) |
protected <T> MetaClass<T> |
getRuntimeMetaType(ElementStartContext context) |
protected java.lang.Class |
getRuntimeType(ElementStartContext context)
Deprecated.
replaced by
getRuntimeMetaType(ElementStartContext) |
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 target) |
protected void |
invokePreInitialize(java.lang.Object parent,
java.lang.Object target) |
void |
registerElementTypeResolver(DynamicHook.ElementTypeResolver resolver) |
void |
start(ElementStartContext context)
Visit the start tag of an xml element.
|
findPath, getExtension, getProvider, getRSBundleClass, getSchemaLocation, resolvePath, setProvider, setSchemaLocation
getAttributeHelper, getClassLoader, getMetaClassLoader, getResourceBundle, getResourceBundleProvider, getTextHelper, log, log, setResourceBundleProvider
public DynamicHook(java.lang.Object rootObject)
public DynamicHook(java.lang.Object rootObject, java.lang.ClassLoader classLoader)
public DynamicHook(java.lang.Object rootObject, java.lang.ClassLoader classLoader, DynamicHook.ElementTypeResolver resolver)
public void registerElementTypeResolver(DynamicHook.ElementTypeResolver resolver)
protected ElementVisitorFactory createVisitorFactory()
ElementVisitorFactory
being attached to a handled context must created by this method.
That means either; overriding this method to return the visitor
factory instance, or; enabling this method to create a default
visitor factory by overriding getHookNamespaceURI()
to
return a non-null namespace value that applies to all handled
elements.protected java.lang.String getHookNamespaceURI()
public void start(ElementStartContext context)
ElementVisitor
This implementation does nothing.
start
in class ElementVisitor
context
- information about the xml start tag.public void end(ElementEndContext context)
ElementVisitor
This implementation does nothing.
end
in class ElementVisitor
context
- information about the xml end tag.protected void handleComplexElementStart(java.lang.Object applicationObject, ElementStartContext context)
protected void handleComplexElementEnd(ElementEndContext context)
protected void handleSimpleElementStart(ElementStartContext context)
protected void handleSimpleElementEnd(ElementEndContext context)
protected <T> MetaClass<T> getRuntimeMetaType(ElementStartContext context)
@Deprecated protected java.lang.Class getRuntimeType(ElementStartContext context)
getRuntimeMetaType(ElementStartContext)
protected <T> T getApplicationObject(MetaClass<T> runtimeMetaType, ElementStartContext context) throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.ClassNotFoundException
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.ClassNotFoundException
@Deprecated protected java.lang.Object getApplicationObject(java.lang.Class runtimeType, ElementStartContext context)
getApplicationObject(MetaClass,ElementStartContext)
protected void attachClass(java.lang.Object parent, MetaClass metaClass, ElementEndContext context)
protected void attachObject(java.lang.Object parent, java.lang.Object child, ElementEndContext context)
protected void attachData(java.lang.Object parent, java.lang.String data, ElementEndContext context)
protected void invokePreInitialize(java.lang.Object parent, java.lang.Object target)
protected void invokePostInitialize(java.lang.Object target)
protected java.lang.reflect.Method findMethod(ElementContext context, java.lang.Object o, java.lang.String elementName, java.lang.Class[] paramTypes)
protected java.lang.String getMethodName(java.lang.String prefix, java.lang.String elementName)