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