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

ServiceRefPortInfoRuntimeNode

public class ServiceRefPortInfoRuntimeNode extends com.sun.enterprise.deployment.node.DeploymentDescriptorNode
This node is responsible for handling runtime info for a service reference wsdl port.
author
Kenneth Saks
version

Fields Summary
private String
namespaceUri
Constructors Summary
public ServiceRefPortInfoRuntimeNode()

        super();
        registerElementHandler
            (new XMLElement(WebServicesTagNames.STUB_PROPERTY),
             NameValuePairNode.class, "addStubProperty");
        registerElementHandler
            (new XMLElement(WebServicesTagNames.CALL_PROPERTY),
             NameValuePairNode.class, "addCallProperty");
        registerElementHandler(new XMLElement(WebServicesTagNames.MESSAGE_SECURITY_BINDING), MessageSecurityBindingNode.class, "setMessageSecurityBinding");
    
Methods Summary
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(WebServicesTagNames.SERVICE_ENDPOINT_INTERFACE, 
                  "setServiceEndpointInterface");
        return table;
    
public voidsetElementValue(com.sun.enterprise.deployment.node.XMLElement element, java.lang.String value)
receives notiification of the value for a particular tag

param
element the xml element
param
value it's associated value

        String name = element.getQName();
        if (WebServicesTagNames.NAMESPACE_URI.equals(name)) {
            namespaceUri = value;
        } else if (WebServicesTagNames.LOCAL_PART.equals(name)) {
            ServiceRefPortInfo desc = (ServiceRefPortInfo)
                getDescriptor();
            QName wsdlPort = new QName(namespaceUri, value);
            desc.setWsdlPort(wsdlPort);
            namespaceUri = null;
        } else super.setElementValue(element, value);
        
    
public org.w3c.dom.NodewriteDescriptor(org.w3c.dom.Node parent, java.lang.String nodeName, com.sun.enterprise.deployment.ServiceRefPortInfo desc)
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 serviceRefPortInfoRuntimeNode = 
            super.writeDescriptor(parent, nodeName, desc);

        appendTextChild(serviceRefPortInfoRuntimeNode,
                        WebServicesTagNames.SERVICE_ENDPOINT_INTERFACE,
                        desc.getServiceEndpointInterface());

        QName port = desc.getWsdlPort();

        if( port != null ) {
            Node wsdlPortNode = appendChild(serviceRefPortInfoRuntimeNode,
                                            WebServicesTagNames.WSDL_PORT);
            appendTextChild(wsdlPortNode, 
                            WebServicesTagNames.NAMESPACE_URI,
                            port.getNamespaceURI());
            appendTextChild(wsdlPortNode,
                            WebServicesTagNames.LOCAL_PART,
                            port.getLocalPart());
        }

        // stub-property*

        NameValuePairNode nameValueNode = new NameValuePairNode();

        Set stubProperties = desc.getStubProperties();
        for(Iterator iter = stubProperties.iterator(); iter.hasNext();) {
            NameValuePairDescriptor next = (NameValuePairDescriptor)iter.next();
            nameValueNode.writeDescriptor
                (serviceRefPortInfoRuntimeNode,
                 WebServicesTagNames.STUB_PROPERTY, next);
        }

        // call-property*
        for(Iterator iter = desc.getCallProperties().iterator();
            iter.hasNext();) {
            NameValuePairDescriptor next = (NameValuePairDescriptor)iter.next();
            nameValueNode.writeDescriptor
                (serviceRefPortInfoRuntimeNode, 
                 WebServicesTagNames.CALL_PROPERTY, next);
        }

        // message-security-binding
        MessageSecurityBindingDescriptor messageSecBindingDesc =
            desc.getMessageSecurityBinding();
        if (messageSecBindingDesc != null) {
            MessageSecurityBindingNode messageSecBindingNode =
                new MessageSecurityBindingNode();
            messageSecBindingNode.writeDescriptor(serviceRefPortInfoRuntimeNode, WebServicesTagNames.MESSAGE_SECURITY_BINDING, messageSecBindingDesc);
        }

        return serviceRefPortInfoRuntimeNode;