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")));
     }
 
 }


Reply via email to