Launched test-result ant target, test results:
Tests 321

Failures 1

Errors 0

Skipped 0

Success rate 99.69%

Time 1326.873

The failed one:
basetests testBasicDisk Failure is-empty

junit.framework.AssertionFailedError: is-empty
        at
org.ofbiz.base.util.cache.test.UtilCacheTests.assertHasSingleKey(UtilCacheTests.java:225)
        at
org.ofbiz.base.util.cache.test.UtilCacheTests.basicTest(UtilCacheTests.java:301)
        at
org.ofbiz.base.util.cache.test.UtilCacheTests.testBasicDisk(UtilCacheTests.java:321)
        at org.ofbiz.testtools.TestRunContainer.start(TestRunContainer.java:147)
        at 
org.ofbiz.base.container.ContainerLoader.start(ContainerLoader.java:235)
        at org.ofbiz.base.start.Start.startStartLoaders(Start.java:353)
        at org.ofbiz.base.start.Start.start(Start.java:379)
        at org.ofbiz.base.start.Start.main(Start.java:135)
 
I assume that failure is not related to my modifications.
This is the patch that includes the modifications I made for the sendError
too:


Index: framework/webapp/src/org/ofbiz/webapp/event/SOAPEventHandler.java
===================================================================
--- framework/webapp/src/org/ofbiz/webapp/event/SOAPEventHandler.java
(revisione 1638710)
+++ framework/webapp/src/org/ofbiz/webapp/event/SOAPEventHandler.java   (copia
locale)
@@ -20,7 +20,6 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.StringReader;
 import java.io.Writer;
 import java.util.Iterator;
 import java.util.List;
@@ -30,34 +29,37 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.wsdl.WSDLException;
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.util.XMLUtils;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.serialize.SerializeException;
+import org.ofbiz.entity.serialize.XmlSerializer;
 import org.ofbiz.service.DispatchContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ModelService;
 import org.ofbiz.service.ServiceUtil;
 import org.ofbiz.service.engine.SoapSerializer;
+import org.ofbiz.webapp.control.ConfigXMLReader;
 import org.ofbiz.webapp.control.ConfigXMLReader.Event;
 import org.ofbiz.webapp.control.ConfigXMLReader.RequestMap;
 import org.ofbiz.webapp.control.RequestHandler;
+import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 /**
  * SOAPEventHandler - SOAP Event Handler implementation
@@ -230,33 +232,46 @@
             throw new EventHandlerException("One service call expected, but
received: " + numServiceCallRequests.toString());
         }
     }
+    
+    private OMElement buildResponseOMElement(String serviceName,
SOAPFactory factory, Object serviceResults) throws DOMException,
SerializeException, Exception{
+       Document document = UtilXml.makeEmptyXmlDocument(serviceName);
+       Element rootElement = document.getDocumentElement();
+       rootElement.appendChild(XmlSerializer.serializeSingle(serviceResults,
document));
+       OMNamespace namespace =
factory.createOMNamespace(ModelService.TNS,"tns");
 
+       OMElement rootOM=XMLUtils.toOM(document.getDocumentElement(), true);
+       rootOM.setNamespaceWithNoFindInCurrentScope(namespace);
+
+       enforceNameSpace(rootOM.getFirstElement(), namespace);
+       return rootOM;
+    }
+    
+    private void enforceNameSpace(OMElement element, OMNamespace
namespace){
+       @SuppressWarnings("unchecked")
+       Iterator<OMElement> allChildren =
(Iterator<OMElement>)element.getChildElements();
+       if(allChildren!=null){
+               while (allChildren.hasNext()) {
+                       OMElement el = (OMElement) allChildren.next();
+                       el.setNamespaceWithNoFindInCurrentScope(namespace);
+                       enforceNameSpace(el, namespace);
+               }
+       }
+    }
+    
     private void createAndSendSOAPResponse(Map<String, Object>
serviceResults, String serviceName, HttpServletResponse response) throws
EventHandlerException {
         try {
         // setup the response
             Debug.logVerbose("[EventHandler] : Setting up response
message", module);
-            String xmlResults = SoapSerializer.serialize(serviceResults);
-            //Debug.logInfo("xmlResults ==================" + xmlResults,
module);
-            XMLStreamReader reader =
XMLInputFactory.newInstance().createXMLStreamReader(new
StringReader(xmlResults));
-            StAXOMBuilder resultsBuilder = new StAXOMBuilder(reader);
-            OMElement resultSer = resultsBuilder.getDocumentElement();
 
             // create the response soap
             SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
             SOAPEnvelope resEnv = factory.createSOAPEnvelope();
             SOAPBody resBody = factory.createSOAPBody();
-            OMElement resService = factory.createOMElement(new
QName(serviceName + "Response"));
-            resService.addChild(resultSer.getFirstElement());
+            OMElement resService=buildResponseOMElement(serviceName +
"Response",factory, serviceResults);
+            //Debug.logInfo("resService ==================" + resService,
module);
             resBody.addChild(resService);
             resEnv.addChild(resBody);
 
-            // The declareDefaultNamespace method doesn't work see
(https://issues.apache.org/jira/browse/AXIS2-3156)
-            // so the following doesn't work:
-            // resService.declareDefaultNamespace(ModelService.TNS);
-            // instead, create the xmlns attribute directly:
-            OMAttribute defaultNS = factory.createOMAttribute("xmlns",
null, ModelService.TNS);
-            resService.addAttribute(defaultNS);
-
             // log the response message
             if (Debug.verboseOn()) {
                 try {
@@ -285,27 +300,15 @@
         try {
             // setup the response
             res.setContentType("text/xml");
-            String xmlResults= SoapSerializer.serialize(object);
-            XMLStreamReader xmlReader =
XMLInputFactory.newInstance().createXMLStreamReader(new
StringReader(xmlResults));
-            StAXOMBuilder resultsBuilder = new StAXOMBuilder(xmlReader);
-            OMElement resultSer = resultsBuilder.getDocumentElement();
-
             // create the response soap
             SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
             SOAPEnvelope resEnv = factory.createSOAPEnvelope();
             SOAPBody resBody = factory.createSOAPBody();
-            OMElement errMsg = factory.createOMElement(new
QName((serviceName != null ? serviceName : "") + "Response"));
-            errMsg.addChild(resultSer.getFirstElement());
-            resBody.addChild(errMsg);
+            OMElement resService=buildResponseOMElement(serviceName +
"Response",factory, object);
+            //Debug.logInfo("resService ==================" + resService,
module);
+            resBody.addChild(resService);
             resEnv.addChild(resBody);
 
-            // The declareDefaultNamespace method doesn't work see
(https://issues.apache.org/jira/browse/AXIS2-3156)
-            // so the following doesn't work:
-            // resService.declareDefaultNamespace(ModelService.TNS);
-            // instead, create the xmlns attribute directly:
-            OMAttribute defaultNS = factory.createOMAttribute("xmlns",
null, ModelService.TNS);
-            errMsg.addAttribute(defaultNS);
-
             // log the response message
             if (Debug.verboseOn()) {
                 try {




--
View this message in context: 
http://ofbiz.135035.n4.nabble.com/Failed-comunication-between-Axis-server-and-JAX-WSclient-tp4658126p4658146.html
Sent from the OFBiz - Dev mailing list archive at Nabble.com.

Reply via email to