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)