[jboss-cvs] JBossAS SVN: r61157 - branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Mar 6 15:48:07 EST 2007
Author: thomas.diesler at jboss.com
Date: 2007-03-06 15:48:07 -0500 (Tue, 06 Mar 2007)
New Revision: 61157
Modified:
branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java
Log:
partial commit
Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java 2007-03-06 20:44:01 UTC (rev 61156)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java 2007-03-06 20:48:07 UTC (rev 61157)
@@ -27,6 +27,7 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -38,7 +39,9 @@
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.jboss.logging.Logger;
+import org.jboss.metadata.MetaData;
import org.jboss.metadata.Ref;
+import org.jboss.xb.QNameBuilder;
/**
* The metdata data from service-ref element in web.xml, ejb-jar.xml, and
@@ -54,44 +57,33 @@
// The required <service-ref-name> element
private String serviceRefName;
-
// The required <service-interface> element
private String serviceInterface;
-
// service-res-type
private String serviceRefType;
-
// The optional <wsdl-file> element
private String wsdlFile;
-
// The optional <jaxrpc-mapping-file> element
private String mappingFile;
-
// The optional <service-qname> element
private QName serviceQName;
-
- // The LinkedHashMap<String, PortComponentRefMetaData> for
- // <port-component-ref> elements
+ // The LinkedHashMap<String, PortComponentRefMetaData> for <port-component-ref> elements
private Map<String, PortComponentRefMetaData> portComponentRefs = new LinkedHashMap<String, PortComponentRefMetaData>();
-
- // The optional <handler> elements
+ // The optional <handler> elements. JAX-RPC handlers declared in the standard J2EE1.4 descriptor
private List<HandlerMetaData> handlers = new ArrayList<HandlerMetaData>();
-
- // The optional <handler-chains> elements
+ // The optional <handler-chains> elements. JAX-WS handlers declared in the standard JavaEE5 descriptor
private HandlerChainsMetaData handlerChains;
-
+ // The optional <handler-chain> element. JAX-WS handler chain declared in the JBoss JavaEE5 descriptor
+ private String handlerChain;
// The optional JBossWS config-name
private String configName;
-
// The optional JBossWS config-file
private String configFile;
-
- /** The URL of the actual WSDL to use, <wsdl-override> */
+ // The optional URL of the actual WSDL to use, <wsdl-override>
private URL wsdlOverride;
+ // Arbitrary proxy properties given by <call-property>
+ private List<CallPropertyMetaData> callProperties = new ArrayList<CallPropertyMetaData>();
- /** Arbitrary proxy properties given by <call-property> */
- private Properties callProperties;
-
/**
* Default constructor, used when unmarshalling on the client side
*/
@@ -101,6 +93,7 @@
public void merge(ServiceRefMetaData sourceRef)
{
+ handlerChain = sourceRef.getHandlerChain();
configName = sourceRef.configName;
configFile = sourceRef.configFile;
wsdlOverride = sourceRef.wsdlOverride;
@@ -123,7 +116,9 @@
pcTargetRef = pcSourceRef;
}
+ pcTargetRef.setPortQName(pcSourceRef.getPortQName());
pcTargetRef.setCallProperties(pcSourceRef.getCallProperties());
+ pcTargetRef.setStubProperties(pcSourceRef.getStubProperties());
}
}
@@ -252,11 +247,21 @@
}
}
- public Properties getCallProperties()
+ public List<CallPropertyMetaData> getCallProperties()
{
return callProperties;
}
+ public void setCallProperties(List<CallPropertyMetaData> callProps)
+ {
+ callProperties = callProps;
+ }
+
+ public void addCallProperty(CallPropertyMetaData callProp)
+ {
+ callProperties.add(callProp);
+ }
+
public HandlerChainsMetaData getHandlerChains()
{
return handlerChains;
@@ -266,13 +271,135 @@
{
this.handlerChains = handlerChains;
}
+
+ public String getHandlerChain()
+ {
+ return handlerChain;
+ }
+ public void setHandlerChain(String handlerChain)
+ {
+ this.handlerChain = handlerChain;
+ }
+
+ /** @deprecated */
+ public void importStandardXml(org.w3c.dom.Element element)
+ {
+ serviceRefName = MetaData.getUniqueChildContent(element, "service-ref-name");
+
+ serviceInterface = MetaData.getUniqueChildContent(element, "service-interface");
+
+ wsdlFile = MetaData.getOptionalChildContent(element, "wsdl-file");
+
+ mappingFile = MetaData.getOptionalChildContent(element, "jaxrpc-mapping-file");
+
+ org.w3c.dom.Element qnameElement = MetaData.getOptionalChild(element, "service-qname");
+ if (qnameElement != null)
+ serviceQName = QNameBuilder.buildQName(qnameElement, MetaData.getElementContent(qnameElement));
+
+ // Parse the port-component-ref elements
+ Iterator iterator = MetaData.getChildrenByTagName(element, "port-component-ref");
+ while (iterator.hasNext())
+ {
+ org.w3c.dom.Element pcrefElement = (org.w3c.dom.Element)iterator.next();
+ PortComponentRefMetaData pcrefMetaData = new PortComponentRefMetaData(this);
+ pcrefMetaData.importStandardXml(pcrefElement);
+ portComponentRefs.put(pcrefMetaData.getServiceEndpointInterface(), pcrefMetaData);
+ }
+
+ // Parse the handler elements
+ iterator = MetaData.getChildrenByTagName(element, "handler");
+ while (iterator.hasNext())
+ {
+ org.w3c.dom.Element handlerElement = (org.w3c.dom.Element)iterator.next();
+ HandlerMetaData handlerMetaData = new HandlerMetaData();
+ handlerMetaData.importStandardXml(handlerElement);
+ handlers.add(handlerMetaData);
+ }
+ }
+
+ /** @deprecated */
+ public void importJBossXml(org.w3c.dom.Element element)
+ {
+ configName = MetaData.getOptionalChildContent(element, "config-name");
+
+ configFile = MetaData.getOptionalChildContent(element, "config-file");
+ String wsdlOverrideOption = MetaData.getOptionalChildContent(element, "wsdl-override");
+ try
+ {
+ if (wsdlOverrideOption != null)
+ wsdlOverride = new URL(wsdlOverrideOption);
+ }
+ catch (MalformedURLException e)
+ {
+ throw new IllegalStateException("Invalid WSDL override: " + wsdlOverrideOption);
+ }
+
+ // Parse the port-component-ref elements
+ Iterator iterator = MetaData.getChildrenByTagName(element, "port-component-ref");
+ while (iterator.hasNext())
+ {
+ org.w3c.dom.Element pcrefElement = (org.w3c.dom.Element)iterator.next();
+ String name = MetaData.getOptionalChildContent(pcrefElement, "service-endpoint-interface");
+ if (name != null)
+ {
+ PortComponentRefMetaData pcrefMetaData = (PortComponentRefMetaData)portComponentRefs.get(name);
+ if (pcrefMetaData == null)
+ {
+ // Its ok to only have the <port-component-ref> in jboss.xml and not in ejb-jar.xml
+ pcrefMetaData = new PortComponentRefMetaData(this);
+ pcrefMetaData.importStandardXml(pcrefElement);
+ portComponentRefs.put(pcrefMetaData.getServiceEndpointInterface(), pcrefMetaData);
+ }
+
+ pcrefMetaData.importJBossXml(pcrefElement);
+ }
+ }
+
+ // Parse the call-property elements
+ iterator = MetaData.getChildrenByTagName(element, "call-property");
+ while (iterator.hasNext())
+ {
+ org.w3c.dom.Element propElement = (org.w3c.dom.Element)iterator.next();
+ String name = MetaData.getUniqueChildContent(propElement, "prop-name");
+ String value = MetaData.getUniqueChildContent(propElement, "prop-value");
+ callProperties.add(new CallPropertyMetaData(name, value));
+ }
+ }
+
+ public static boolean isJ2EE14Descriptor(org.w3c.dom.Element element)
+ {
+ // Verify J2EE-1.4
+ String nsURI = element.getOwnerDocument().getDocumentElement().getNamespaceURI();
+ boolean isValid = "http://java.sun.com/xml/ns/j2ee".equals(nsURI);
+
+ // Verify JBoss-4.0
+ org.w3c.dom.DocumentType doctype = element.getOwnerDocument().getDoctype();
+ if (isValid == false && doctype != null)
+ {
+ String publicId = doctype.getPublicId();
+ isValid |= "-//JBoss//DTD JBOSS 4.0//EN".equals(publicId);
+ isValid |= "-//JBoss//DTD JBOSS 4.2//EN".equals(publicId);
+ isValid |= "-//JBoss//DTD Web Application 2.4//EN".equals(publicId);
+ isValid |= "-//JBoss//DTD Application Client 4.0//EN".equals(publicId);
+ isValid |= "-//JBoss//DTD Application Client 4.2//EN".equals(publicId);
+ }
+
+ if (isValid == false)
+ {
+ String dtstr = (doctype != null ? "[public=" + doctype.getPublicId() + ",system=" + doctype.getSystemId() + "]" : null);
+ log.debug("Skip <service-ref> for: nsURI=" + nsURI + ",doctype=" + dtstr);
+ }
+ return isValid;
+ }
+
public String toXMLFragmet()
{
Document document = DocumentHelper.createDocument();
Element root = document.addElement("service-ref");
root.addElement("service-ref-name").addText(serviceRefName);
- root.addElement("service-interface").addText(serviceInterface);
+ if (serviceInterface != null)
+ root.addElement("service-interface").addText(serviceInterface);
if (serviceRefType != null)
root.addElement("service-ref-type").addText(serviceRefType);
if (wsdlFile != null)
@@ -287,6 +414,22 @@
root.add(handler.toXMLFragment());
if (handlerChains != null)
root.add(handlerChains.toXMLFragment());
+
+ for (CallPropertyMetaData prop : getCallProperties())
+ {
+ Element propEl = root.addElement("call-property");
+ propEl.addElement("prop-name").addText(prop.getPropName());
+ propEl.addElement("prop-value").addText(prop.getPropValue());
+ }
+
+ if (configName != null)
+ root.addElement("config-name").addText(configName);
+ if (configFile != null)
+ root.addElement("config-file").addText(configFile);
+ if (handlerChain != null)
+ root.addElement("handler-chain").addText(handlerChain);
+ if (wsdlOverride != null)
+ root.addElement("wsdl-override").addText(wsdlOverride.toExternalForm());
return root.asXML();
}
}
More information about the jboss-cvs-commits
mailing list