You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/08/28 18:18:07 UTC

svn commit: r437739 - in /incubator/servicemix/trunk/servicemix-core/src: main/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilder.java test/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilderTest.java

Author: gnodet
Date: Mon Aug 28 09:18:06 2006
New Revision: 437739

URL: http://svn.apache.org/viewvc?rev=437739&view=rev
Log:
SM-560: Internal EPR document fragments provided by ServiceMix are not valid NS-aware DOMs

Modified:
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilder.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilderTest.java

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilder.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilder.java?rev=437739&r1=437738&r2=437739&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilder.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilder.java Mon Aug 28 09:18:06 2006
@@ -16,24 +16,28 @@
  */
 package org.apache.servicemix.jbi.servicedesc;
 
+import javax.jbi.servicedesc.ServiceEndpoint;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
 import org.w3c.dom.Document;
 import org.w3c.dom.DocumentFragment;
 import org.w3c.dom.Element;
 
-import javax.jbi.servicedesc.ServiceEndpoint;
-import javax.xml.parsers.DocumentBuilderFactory;
-
 public class EndpointReferenceBuilder {
 
-    public static final String JBI_NAMESPACE = "http://java.sun.com/xml/ns/jbi";
+    public static final String JBI_NAMESPACE = "http://java.sun.com/jbi/end-point-reference";
+    public static final String XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/";
     
     public static DocumentFragment getReference(ServiceEndpoint endpoint) {
         try {
-            Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setNamespaceAware(true);
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            Document doc = db.newDocument();
             DocumentFragment fragment = doc.createDocumentFragment();
             Element epr = doc.createElementNS(JBI_NAMESPACE, "jbi:end-point-reference");
-            epr.setAttribute("xmlns:jbi", JBI_NAMESPACE);
-            epr.setAttribute("xmlns:sns", endpoint.getServiceName().getNamespaceURI());
+            epr.setAttributeNS(XMLNS_NAMESPACE,"xmlns:sns", endpoint.getServiceName().getNamespaceURI());
             epr.setAttributeNS(JBI_NAMESPACE, "jbi:service-name", "sns:" + endpoint.getServiceName().getLocalPart());
             epr.setAttributeNS(JBI_NAMESPACE, "jbi:end-point-name", endpoint.getEndpointName());
             fragment.appendChild(epr);

Modified: incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilderTest.java?rev=437739&r1=437738&r2=437739&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilderTest.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/servicedesc/EndpointReferenceBuilderTest.java Mon Aug 28 09:18:06 2006
@@ -16,16 +16,16 @@
  */
 package org.apache.servicemix.jbi.servicedesc;
 
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.servicemix.jbi.jaxp.SourceTransformer;
-import org.apache.servicemix.jbi.servicedesc.EndpointReferenceBuilder;
-import org.apache.servicemix.jbi.servicedesc.InternalEndpoint;
+import org.apache.servicemix.jbi.util.DOMUtil;
 import org.w3c.dom.DocumentFragment;
-
-import javax.xml.namespace.QName;
-
-import junit.framework.TestCase;
+import org.w3c.dom.Element;
 
 public class EndpointReferenceBuilderTest extends TestCase {
 
@@ -39,6 +39,12 @@
         DocumentFragment df = EndpointReferenceBuilder.getReference(endpoint);
         assertNotNull(df);
         log.info(new SourceTransformer().toString(df));
+        Element e = (Element) df.getFirstChild();
+        assertEquals("http://java.sun.com/jbi/end-point-reference", e.getNamespaceURI());
+        assertEquals("end-point-reference", e.getNodeName());
+        assertEquals("myEndpoint", e.getAttributeNodeNS("http://java.sun.com/jbi/end-point-reference", "end-point-name"));
+        assertEquals(new QName("http://foo.bar.com", "myService"),
+                     DOMUtil.createQName(e, e.getAttributeNS("http://java.sun.com/jbi/end-point-reference", "service-name")));
     }
 
 }