1 23 24 package com.sun.enterprise.deployment.node.connector; 25 26 import java.util.*; 27 import org.xml.sax.Attributes ; 28 import com.sun.enterprise.deployment.Descriptor; 29 import com.sun.enterprise.deployment.ConnectorDescriptor; 30 import com.sun.enterprise.deployment.InboundResourceAdapter; 31 import com.sun.enterprise.deployment.xml.ConnectorTagNames; 32 import com.sun.enterprise.deployment.xml.TagNames; 33 import com.sun.enterprise.deployment.EnvironmentProperty; 34 import com.sun.enterprise.deployment.node.DescriptorFactory; 35 import com.sun.enterprise.deployment.node.DeploymentDescriptorNode; 36 import com.sun.enterprise.deployment.node.ConfigurableNode; 37 import com.sun.enterprise.deployment.node.XMLElement; 38 import com.sun.enterprise.deployment.MessageListener; 39 import com.sun.enterprise.deployment.node.connector.ActivationSpecNode; 40 41 import org.xml.sax.Attributes ; 42 import org.w3c.dom.Node ; 43 44 50 public class MessageListenerNode extends DeploymentDescriptorNode { 51 52 private MessageListener msgListener = null; 53 54 public MessageListenerNode() { 55 registerElementHandler(new XMLElement(ConnectorTagNames.ACTIVATION_SPEC), 56 ActivationSpecNode.class); 57 58 } 59 60 66 67 protected Map getDispatchTable() { 68 Map table = super.getDispatchTable(); 69 table.put(ConnectorTagNames.MSG_LISTENER_TYPE, "setMessageListenerType"); 70 return table; 71 } 72 73 76 public Object getDescriptor() { 77 if (msgListener == null) { 78 msgListener = (MessageListener) DescriptorFactory.getDescriptor(getXMLPath()); 79 } 80 return msgListener; 81 } 82 83 90 public Node writeDescriptor(Node parent, Descriptor descriptor) { 91 92 if (! (descriptor instanceof InboundResourceAdapter)) { 93 throw new IllegalArgumentException (getClass() + " cannot handle descriptors of type " + descriptor.getClass()); 94 } 95 Iterator msgListeners = ((InboundResourceAdapter)descriptor).getMessageListeners().iterator(); 96 if (!msgListeners.hasNext()) { 97 throw new RuntimeException ("There must be at least one messagelistener for this inbound resource adapter"); 98 } 99 for (;msgListeners.hasNext();) { 101 MessageListener msgListener = (MessageListener) msgListeners.next(); 102 Node msgListenerNode = appendChild(parent, ConnectorTagNames.MSG_LISTENER); 103 appendTextChild(msgListenerNode, ConnectorTagNames.MSG_LISTENER_TYPE, msgListener.getMessageListenerType()); 104 105 ActivationSpecNode actSpecNode = new ActivationSpecNode(); 107 msgListenerNode = actSpecNode.writeDescriptor(msgListenerNode, msgListener); 108 } 109 return parent; 110 } 111 } 112 | Popular Tags |