FileDocCategorySizeDatePackage
CmpNode.javaAPI DocGlassfish v2 API6235Fri May 04 22:31:42 BST 2007com.sun.enterprise.deployment.node.runtime

CmpNode

public class CmpNode extends com.sun.enterprise.deployment.node.DeploymentDescriptorNode
This node handles the cmp runtime deployment descriptors
author
Jerome Dochez
version

Fields Summary
protected com.sun.enterprise.deployment.IASEjbCMPEntityDescriptor
descriptor
Constructors Summary
public CmpNode()
Creates new CmpNode

    
        
      
        registerElementHandler(new XMLElement(RuntimeTagNames.FINDER), FinderNode.class);   
        registerElementHandler(new XMLElement(RuntimeTagNames.PREFETCH_DISABLED), PrefetchDisabledNode.class);   
    
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

    
        getDescriptor();
        if (newDescriptor instanceof IASEjbCMPFinder ) {
            descriptor.addOneOneFinder((IASEjbCMPFinder ) newDescriptor);
        }
         else if (newDescriptor instanceof PrefetchDisabledDescriptor) {
            descriptor.setPrefetchDisabledDescriptor((PrefetchDisabledDescriptor)newDescriptor);
        } else super.addDescriptor(descriptor);        
    
public java.lang.ObjectgetDescriptor()

return
the descriptor instance to associate with this XMLNode

        if (descriptor == null) {
            Object desc = getParentNode().getDescriptor();
            if (desc instanceof IASEjbCMPEntityDescriptor) {
                descriptor = (IASEjbCMPEntityDescriptor) desc;            
            }
        }
        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 dispatchTable = super.getDispatchTable();
	dispatchTable.put(RuntimeTagNames.MAPPING_PROPERTIES, "setMappingProperties");
        // deprecated element, will be ignored at reading
        dispatchTable.put(RuntimeTagNames.IS_ONE_ONE_CMP, null);
	return dispatchTable;
    
public org.w3c.dom.NodewriteDescriptor(org.w3c.dom.Node parent, java.lang.String nodeName, com.sun.enterprise.deployment.IASEjbCMPEntityDescriptor ejbDescriptor)
write the descriptor class to a DOM tree and return it

param
parent node for the DOM tree
param
node name for the descriptor
param
the descriptor to write
return
the DOM tree top node

    
	Node cmpNode = super.writeDescriptor(parent, nodeName, ejbDescriptor);
	appendTextChild(cmpNode, RuntimeTagNames.MAPPING_PROPERTIES, ejbDescriptor.getMappingProperties());
	Map finders = ejbDescriptor.getOneOneFinders();
	if (!finders.isEmpty()) {
	    Node findersNode = appendChild(cmpNode, RuntimeTagNames.ONE_ONE_FINDERS);
	    FinderNode fn = new FinderNode();
	    for (Iterator finderIterator = finders.values().iterator();finderIterator.hasNext();) {
		IASEjbCMPFinder aFinder = (IASEjbCMPFinder) finderIterator.next();
		fn.writeDescriptor(findersNode, RuntimeTagNames.FINDER, aFinder);
	    }
	}
        
        // prefetch-disabled
        PrefetchDisabledDescriptor prefetchDisabledDesc = 
            ejbDescriptor.getPrefetchDisabledDescriptor();             
        if (prefetchDisabledDesc != null) {
            PrefetchDisabledNode prefetchDisabledNode = 
                new PrefetchDisabledNode();
            prefetchDisabledNode.writeDescriptor(cmpNode, 
                RuntimeTagNames.PREFETCH_DISABLED, prefetchDisabledDesc);
        }

	return cmpNode;