ServiceRefNodepublic class ServiceRefNode extends com.sun.enterprise.deployment.node.DeploymentDescriptorNode This node is responsible for handling runtime info for
service references |
Fields Summary |
---|
private com.sun.enterprise.deployment.ServiceReferenceDescriptor | descriptor |
Constructors Summary |
---|
public ServiceRefNode()
super();
registerElementHandler
(new XMLElement(WebServicesTagNames.PORT_INFO),
ServiceRefPortInfoRuntimeNode.class);
registerElementHandler
(new XMLElement(WebServicesTagNames.CALL_PROPERTY),
NameValuePairNode.class, "addCallProperty");
|
Methods Summary |
---|
public void | addDescriptor(java.lang.Object desc)
if( desc instanceof ServiceRefPortInfo ) {
ServiceRefPortInfo newPortInfo = (ServiceRefPortInfo) desc;
ServiceReferenceDescriptor serviceRef =
(ServiceReferenceDescriptor) getDescriptor();
serviceRef.addRuntimePortInfo(newPortInfo);
}
| public java.lang.Object | getDescriptor()
return descriptor;
| protected java.util.Map | getDispatchTable()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.
Map table = super.getDispatchTable();
table.put(WebServicesTagNames.SERVICE_IMPL_CLASS,
"setServiceImplClassName");
return table;
| public void | setElementValue(com.sun.enterprise.deployment.node.XMLElement element, java.lang.String value)receives notiification of the value for a particular tag
String name = element.getQName();
if (WebServicesTagNames.SERVICE_REF_NAME.equals(name)) {
Object parentDesc = getParentNode().getDescriptor();
if (parentDesc instanceof JndiNameEnvironment) {
descriptor = ((JndiNameEnvironment) parentDesc).
getServiceReferenceByName(value);
} else if (parentDesc instanceof SunWebApp) {
WebBundleDescriptor desc = ((WebBundleRuntimeNode) getParentNode()).getWebBundleDescriptor();
descriptor = desc.getServiceReferenceByName(value);
}
} else if (WebServicesTagNames.NAMESPACE_URI.equals(name)) {
// Any service-qname set in standard DD takes precedence
if( descriptor.getServiceNamespaceUri() == null ) {
descriptor.setServiceNamespaceUri(value);
}
} else if (WebServicesTagNames.LOCAL_PART.equals(name)) {
// Any service-qname set in standard DD takes precedence
if( descriptor.getServiceLocalPart() == null ) {
descriptor.setServiceLocalPart(value);
}
} else if (WebServicesTagNames.WSDL_OVERRIDE.equals(name)) {
try {
URL url = new URL(value);
descriptor.setWsdlOverride(url);
} catch(MalformedURLException mue) {
DOLUtils.getDefaultLogger().log(Level.INFO,
"Warning : Invalid wsdl override url=" + value, mue);
}
} else {
super.setElementValue(element, value);
}
| public org.w3c.dom.Node | writeDescriptor(org.w3c.dom.Node parent, java.lang.String nodeName, com.sun.enterprise.deployment.ServiceReferenceDescriptor serviceRef)write the descriptor class to a DOM tree and return it
Node serviceRefNode =
super.writeDescriptor(parent, nodeName, serviceRef);
appendTextChild(serviceRefNode, WebServicesTagNames.SERVICE_REF_NAME,
serviceRef.getName());
ServiceRefPortInfoRuntimeNode portInfoRuntimeNode =
new ServiceRefPortInfoRuntimeNode();
Set portsInfo = serviceRef.getPortsInfo();
for(Iterator iter = portsInfo.iterator(); iter.hasNext();) {
ServiceRefPortInfo next = (ServiceRefPortInfo) iter.next();
portInfoRuntimeNode.writeDescriptor
(serviceRefNode, WebServicesTagNames.PORT_INFO, next);
}
NameValuePairNode nameValueNode = new NameValuePairNode();
for(Iterator iter = serviceRef.getCallProperties().iterator();
iter.hasNext();) {
NameValuePairDescriptor next = (NameValuePairDescriptor)iter.next();
nameValueNode.writeDescriptor
(serviceRefNode, WebServicesTagNames.CALL_PROPERTY, next);
}
if( serviceRef.hasWsdlOverride() ) {
URL wsdlOverride = serviceRef.getWsdlOverride();
appendTextChild(serviceRefNode, WebServicesTagNames.WSDL_OVERRIDE,
wsdlOverride.toExternalForm());
}
appendTextChild(serviceRefNode, WebServicesTagNames.SERVICE_IMPL_CLASS,
serviceRef.getServiceImplClassName());
if( serviceRef.hasServiceName() ) {
Node serviceNameNode = appendChild
(serviceRefNode, WebServicesTagNames.SERVICE_QNAME);
QName serviceName = serviceRef.getServiceName();
appendTextChild(serviceNameNode,
WebServicesTagNames.NAMESPACE_URI,
serviceName.getNamespaceURI());
appendTextChild(serviceNameNode,
WebServicesTagNames.LOCAL_PART,
serviceName.getLocalPart());
}
return serviceRefNode;
| public static void | writeServiceReferences(org.w3c.dom.Node parent, com.sun.enterprise.deployment.JndiNameEnvironment descriptor)writes all the runtime information for service references
Iterator serviceRefs =
descriptor.getServiceReferenceDescriptors().iterator();
if (serviceRefs.hasNext()) {
ServiceRefNode serviceRefNode = new ServiceRefNode();
while (serviceRefs.hasNext()) {
ServiceReferenceDescriptor next =
(ServiceReferenceDescriptor) serviceRefs.next();
// Only write runtime service-ref entry if there IS
// some runtime info...
if( next.hasServiceImplClassName() ||
!next.getPortsInfo().isEmpty() ||
!next.getCallProperties().isEmpty() ||
next.hasWsdlOverride()) {
serviceRefNode.writeDescriptor
(parent, WebServicesTagNames.SERVICE_REF, next);
}
}
}
|
|