FileDocCategorySizeDatePackage
EjbInterceptorNode.javaAPI DocGlassfish v2 API9998Fri May 04 22:31:40 BST 2007com.sun.enterprise.deployment.node.ejb

EjbInterceptorNode

public class EjbInterceptorNode extends com.sun.enterprise.deployment.node.DeploymentDescriptorNode

Fields Summary
private com.sun.enterprise.deployment.EjbInterceptor
descriptor
private com.sun.enterprise.deployment.LifecycleCallbackDescriptor.CallbackType
tempType
Constructors Summary
public EjbInterceptorNode()

        super();

        registerElementHandler(new XMLElement(EjbTagNames.AROUND_INVOKE_METHOD), AroundInvokeNode.class, "addAroundInvokeDescriptor");       
        registerElementHandler(new XMLElement(EjbTagNames.POST_ACTIVATE_METHOD), LifecycleCallbackNode.class, "addPostActivateDescriptor");       
        registerElementHandler(new XMLElement(EjbTagNames.PRE_PASSIVATE_METHOD), LifecycleCallbackNode.class, "addPrePassivateDescriptor");       

        //jndiEnvironmentRefsGroup
        registerElementHandler(new XMLElement(TagNames.POST_CONSTRUCT), LifecycleCallbackNode.class, "addPostConstructDescriptor");       
        registerElementHandler(new XMLElement(TagNames.PRE_DESTROY), LifecycleCallbackNode.class, "addPreDestroyDescriptor");       

        registerElementHandler(new XMLElement(TagNames.ENVIRONMENT_PROPERTY), 
               EnvEntryNode.class, "addEnvironmentProperty");
        registerElementHandler(new XMLElement(EjbTagNames.EJB_REFERENCE), EjbReferenceNode.class);     
        registerElementHandler(new XMLElement(EjbTagNames.EJB_LOCAL_REFERENCE), EjbLocalReferenceNode.class);     
        registerElementHandler(new XMLElement(WebServicesTagNames.SERVICE_REF), ServiceReferenceNode.class, "addServiceReferenceDescriptor");
        registerElementHandler(new XMLElement(EjbTagNames.RESOURCE_REFERENCE), 
               ResourceRefNode.class, "addResourceReferenceDescriptor");   
        registerElementHandler(new XMLElement(TagNames.RESOURCE_ENV_REFERENCE),
               ResourceEnvRefNode.class, "addJmsDestinationReferenceDescriptor");               
        registerElementHandler(new XMLElement(TagNames.MESSAGE_DESTINATION_REFERENCE), MessageDestinationRefNode.class);
        registerElementHandler(new XMLElement(TagNames.PERSISTENCE_CONTEXT_REF), EntityManagerReferenceNode.class, "addEntityManagerReferenceDescriptor");
        registerElementHandler(new XMLElement(TagNames.PERSISTENCE_UNIT_REF), EntityManagerFactoryReferenceNode.class, "addEntityManagerFactoryReferenceDescriptor");
    
Methods Summary
public voidaddDescriptor(java.lang.Object newDescriptor)
Adds a new DOL descriptor instance to the descriptor instance associated with this XMLNode

param
descriptor the new descriptor

       
        if (newDescriptor instanceof EjbReference) {            
            if (DOLUtils.getDefaultLogger().isLoggable(Level.FINE)) {
                DOLUtils.getDefaultLogger().fine("Adding ejb ref " + newDescriptor);
            }
            getInterceptor().addEjbReferenceDescriptor(
                        (EjbReference) newDescriptor);
        } else if( newDescriptor instanceof 
                   MessageDestinationReferenceDescriptor ) {
            MessageDestinationReferenceDescriptor msgDestRef =
                (MessageDestinationReferenceDescriptor) newDescriptor;
            EjbBundleDescriptor ejbBundle = (EjbBundleDescriptor) 
                getParentNode().getDescriptor();
            // EjbBundle might not be set yet on EjbInterceptor, so set it
            // explicitly here.
            msgDestRef.setReferringBundleDescriptor(ejbBundle);
            getInterceptor().addMessageDestinationReferenceDescriptor
                (msgDestRef);
        } else {
            super.addDescriptor(newDescriptor);
        }
    
public java.lang.ObjectgetDescriptor()

return
the descriptor instance to associate with this XMLNode

        
        if (descriptor==null) {
            descriptor = (EjbInterceptor)DescriptorFactory.getDescriptor(getXMLPath());
            descriptor.setEjbBundleDescriptor((EjbBundleDescriptor)getParentNode().getDescriptor());
        }
        return descriptor;
    
protected java.util.MapgetDispatchTable()
all sub-implementation of this class can use a dispatch table to map xml element to method name on the descriptor class for setting the element value.

return
the map with the element name as a key, the setter method as a value

        // no need to be synchronized for now
        Map table = super.getDispatchTable();
        table.put(EjbTagNames.INTERCEPTOR_CLASS, "setInterceptorClassName");
        return table;
    
private com.sun.enterprise.deployment.EjbInterceptorgetInterceptor()

        return (EjbInterceptor)getDescriptor();
    
public org.w3c.dom.NodewriteDescriptor(org.w3c.dom.Node parent, java.lang.String nodeName, com.sun.enterprise.deployment.EjbInterceptor descriptor)
write the relationships descriptor class to a DOM tree and return it

param
parent node in the DOM tree
param
node name for the root element of this xml fragment
param
the descriptor to write
return
the DOM tree top node

        Node interceptorNode = appendChild(parent, nodeName);

        writeLocalizedDescriptions(interceptorNode, descriptor);
       
        appendTextChild(interceptorNode, EjbTagNames.INTERCEPTOR_CLASS, descriptor.getInterceptorClassName());     

        if (descriptor.hasAroundInvokeDescriptor()) {
            writeAroundInvokeDescriptors(interceptorNode,
                descriptor.getAroundInvokeDescriptors().iterator());
        }
        if (descriptor.hasCallbackDescriptor(CallbackType.POST_CONSTRUCT)) {
            writePostConstructDescriptors(interceptorNode,
                descriptor.getCallbackDescriptors(CallbackType.POST_CONSTRUCT).iterator());
        }
        if (descriptor.hasCallbackDescriptor(CallbackType.PRE_DESTROY)) {
            writePreDestroyDescriptors(interceptorNode,
                descriptor.getCallbackDescriptors(CallbackType.PRE_DESTROY).iterator());
        }
        if (descriptor.hasCallbackDescriptor(CallbackType.POST_ACTIVATE)) {
            writePostActivateDescriptors(interceptorNode,
                descriptor.getCallbackDescriptors(CallbackType.POST_ACTIVATE).iterator());
        }
        if (descriptor.hasCallbackDescriptor(CallbackType.PRE_PASSIVATE)) {
            writePrePassivateDescriptors(interceptorNode,
                descriptor.getCallbackDescriptors(CallbackType.PRE_PASSIVATE).iterator());
        }

        return interceptorNode;