FileDocCategorySizeDatePackage
EjbReferenceNode.javaAPI DocGlassfish v2 API5979Fri May 04 22:31:38 BST 2007com.sun.enterprise.deployment.node

EjbReferenceNode

public class EjbReferenceNode extends DeploymentDescriptorNode
This class handles all information in the ejb-reference xml node
author
Jerome Dochez
version

Fields Summary
protected com.sun.enterprise.deployment.types.EjbReference
descriptor
Constructors Summary
public EjbReferenceNode()

        super();
        registerElementHandler(new XMLElement(TagNames.INJECTION_TARGET), 
                                InjectionTargetNode.class, "addInjectionTarget");                          
    
Methods Summary
public java.lang.ObjectgetDescriptor()

return
the descriptor instance to associate with this XMLNode

        if (descriptor==null) {
            descriptor = (EjbReference) DescriptorFactory.getDescriptor(getXMLPath());
            descriptor.setLocal(false);   
        }
        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

        Map table = super.getDispatchTable();
        table.put(EjbTagNames.EJB_REFERENCE_NAME, "setName");
        table.put(EjbTagNames.EJB_REFERENCE_TYPE, "setType");
        table.put(EjbTagNames.HOME, "setEjbHomeInterface");
        table.put(EjbTagNames.REMOTE, "setEjbInterface");
        table.put(EjbTagNames.LOCAL_HOME, "setEjbHomeInterface");
        table.put(EjbTagNames.LOCAL, "setEjbInterface");        
        table.put(EjbTagNames.EJB_LINK, "setLinkName");
        table.put(TagNames.MAPPED_NAME, "setMappedName");
        return table;
    
public org.w3c.dom.NodewriteDescriptor(org.w3c.dom.Node parent, java.lang.String nodeName, com.sun.enterprise.deployment.types.EjbReference descriptor)
write the 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 ejbRefNode = appendChild(parent, nodeName);
        if (descriptor instanceof Descriptor) {
            Descriptor ejbRefDesc = (Descriptor)descriptor;
            writeLocalizedDescriptions(ejbRefNode, ejbRefDesc);
        }
        appendTextChild(ejbRefNode, EjbTagNames.EJB_REFERENCE_NAME, descriptor.getName());
        appendTextChild(ejbRefNode, EjbTagNames.EJB_REFERENCE_TYPE, descriptor.getType());
        if (descriptor.isLocal()) {
            appendTextChild(ejbRefNode, EjbTagNames.LOCAL_HOME, descriptor.getEjbHomeInterface());
            appendTextChild(ejbRefNode, EjbTagNames.LOCAL, descriptor.getEjbInterface());
        } else {
            appendTextChild(ejbRefNode, EjbTagNames.HOME, descriptor.getEjbHomeInterface());                
            appendTextChild(ejbRefNode, EjbTagNames.REMOTE, descriptor.getEjbInterface());
        }
        appendTextChild(ejbRefNode, EjbTagNames.EJB_LINK, descriptor.getLinkName());        

        if( descriptor instanceof EnvironmentProperty) {
            EnvironmentProperty envProp = (EnvironmentProperty)descriptor;
            appendTextChild(ejbRefNode, TagNames.MAPPED_NAME, envProp.getMappedName()); 
        }
        if( descriptor.isInjectable() ) {
            InjectionTargetNode ijNode = new InjectionTargetNode();
            for (InjectionTarget target : descriptor.getInjectionTargets()) {
                ijNode.writeDescriptor(ejbRefNode, TagNames.INJECTION_TARGET, target);
            }
        }

        return ejbRefNode;