[jboss-svn-commits] JBL Code SVN: r26638 - in labs/jbossesb/trunk/product/services/soapui-client/src: test/java/org/jboss/soa/esb/services/soapui and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 20 10:14:19 EDT 2009


Author: beve
Date: 2009-05-20 10:14:19 -0400 (Wed, 20 May 2009)
New Revision: 26638

Added:
   labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/expected_05.xml
Modified:
   labs/jbossesb/trunk/product/services/soapui-client/src/main/java/org/jboss/soa/esb/services/soapui/SoapUIClientService.java
   labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/Customer.xsd
   labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/RetailerCallback.wsdl
   labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/SoapUIClientServiceMBeanUnitTest.java
Log:
Work for https://jira.jboss.org/jira/browse/JBESB-2455 "SoapUIClientService does not populate request attributes".


Modified: labs/jbossesb/trunk/product/services/soapui-client/src/main/java/org/jboss/soa/esb/services/soapui/SoapUIClientService.java
===================================================================
--- labs/jbossesb/trunk/product/services/soapui-client/src/main/java/org/jboss/soa/esb/services/soapui/SoapUIClientService.java	2009-05-20 14:08:30 UTC (rev 26637)
+++ labs/jbossesb/trunk/product/services/soapui-client/src/main/java/org/jboss/soa/esb/services/soapui/SoapUIClientService.java	2009-05-20 14:14:19 UTC (rev 26638)
@@ -27,6 +27,7 @@
 import java.io.InputStream;
 import java.io.StringReader;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
@@ -63,6 +64,7 @@
 import org.w3c.dom.Comment;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
@@ -699,16 +701,16 @@
             Node node = children.item(i);
 
             if (childCount == 1 && node.getNodeType() == Node.TEXT_NODE) {
-                if (node.getTextContent().equals("?")) {
+                if (isParameter(node)) {
                     String ognl = OGNLUtils.getOGNLExpression(element, soapNs);
-                    Object param;
+                    Object param = OGNLUtils.getParameter(ognl, params);
 
-                    param = OGNLUtils.getParameter(ognl, params);
-
                     element.removeChild(node);
                     element.appendChild(element.getOwnerDocument().createTextNode(param.toString()));
                 }
             } else if (node.getNodeType() == Node.ELEMENT_NODE) {
+                NamedNodeMap attributes = node.getAttributes();
+                injectAttributeParameters(params, soapNs, node, attributes);
                 injectParameters((Element) node, params, soapNs);
             }
         }
@@ -716,7 +718,37 @@
         element.removeAttributeNS(OGNLUtils.JBOSSESB_SOAP_NS, IS_CLONE_ATTRIB);
         element.removeAttributeNS(OGNLUtils.JBOSSESB_SOAP_NS, OGNLUtils.OGNL_ATTRIB);
     }
+    
+    private void injectAttributeParameters(Map params, String soapNs, Node node, NamedNodeMap attributes) {
+        for (Node attribute : getNodes(attributes)) {
+            if (isParameter(attribute)) {
+                String localName = attribute.getLocalName();
+                String ognl = OGNLUtils.getOGNLExpression((Element)node, soapNs) + "." + localName;
+      
+                Object param = OGNLUtils.getParameter(ognl, params);
+                if (param != null && param.toString().length() > 0) {
+                    attribute.setTextContent(param.toString());
+                } else {
+                    attributes.removeNamedItem(attribute.getNodeName());
+                }
+            }
+        }
+    }
 
+    private boolean isParameter(Node node) {
+        return node.getTextContent().equals("?");
+    }
+
+    private List<Node> getNodes(NamedNodeMap attributes) {
+        int len = attributes.getLength();
+        List<Node> list = new ArrayList<Node>(len);
+        for ( int a = 0 ; a < len ; a++)
+        {
+            list.add(attributes.item(a));
+        }
+        return list;
+    }
+
     private synchronized DocumentBuilder getDocBuilder() throws IOException {
         try {
             return docBuilderFactory.newDocumentBuilder();

Modified: labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/Customer.xsd
===================================================================
--- labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/Customer.xsd	2009-05-20 14:08:30 UTC (rev 26637)
+++ labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/Customer.xsd	2009-05-20 14:14:19 UTC (rev 26638)
@@ -15,6 +15,7 @@
 			<xs:element name="poNumber" type="xs:string" />
 			<xs:element name="orderNumber" type="xs:string" />
 		</xs:sequence>
+		<xs:attribute name="inquiryId" type="xs:string"/>
 	</xs:complexType>
 
 </xs:schema>

Modified: labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/RetailerCallback.wsdl
===================================================================
--- labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/RetailerCallback.wsdl	2009-05-20 14:08:30 UTC (rev 26637)
+++ labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/RetailerCallback.wsdl	2009-05-20 14:14:19 UTC (rev 26638)
@@ -75,6 +75,15 @@
             <element name="salesOrderNotificationAck" type="boolean"/>
 
             <element name="orderNumber" type="string"/>
+            
+            <element name="CancelOrder">
+               <complexType>
+                   <sequence>
+                       <element name="in" type="string"></element>
+                   </sequence>
+               </complexType>
+            </element>
+            <element name="out" type="string"></element>
 
         </schema>
 
@@ -172,6 +181,7 @@
                     <element name="poNumber" nillable="true" type="string"/>
 
                 </sequence>
+                <attribute name="inquiryId" type="string"/>
 
             </complexType>
 
@@ -204,6 +214,19 @@
         <part element="tns:salesOrderNotification" name="Document"/>
 
     </message>
+    
+<message name="CancelOrderRequest">
+    
+       <part name="Document" element="tns:cancelOrder"></part>
+       
+    </message>
+    
+    <message name="CancelOrderResponse">
+    
+       <part name="Document" element="tns:cancelOrderResponse"></part>
+       
+    </message>
+    
 
     <portType name="RetailerCallbackPortType">
 
@@ -214,6 +237,11 @@
             <output message="tns:SendSalesOrderNotificationResponse"/>
 
         </operation>
+        <operation name="CancelOrder">
+           <input message="tns:CancelOrderRequest"></input>
+           <output message="tns:CancelOrderResponse"></output>
+        </operation>
+        
 
     </portType>
 
@@ -239,7 +267,25 @@
             </output>
 
         </operation>
+        
+        <operation name="CancelOrder">
 
+           <soap:operation soapAction="" style="document" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
+
+            <input>
+
+              <soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
+
+            </input>
+
+          <output>
+
+                <soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
+
+            </output>
+
+        </operation>
+
     </binding>
 
     <service name="RetailerCallback">

Modified: labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/SoapUIClientServiceMBeanUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/SoapUIClientServiceMBeanUnitTest.java	2009-05-20 14:08:30 UTC (rev 26637)
+++ labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/SoapUIClientServiceMBeanUnitTest.java	2009-05-20 14:14:19 UTC (rev 26638)
@@ -332,6 +332,26 @@
     	assertTrue("Failed to generate correct soap fault message", str.indexOf("<say:code>test</say:code>") > -1);
     }
     
+    public void test_has_attributes() throws IOException, SAXException, ConfigurationException {
+        File wsdlFile = new File(WSDL_LOCATAION + "/RetailerCallback.wsdl");
+        SoapUIClientService mbean = new SoapUIClientService();
+        Map<String, CancelOrder> params = new HashMap<String, CancelOrder>();
+
+        properties.setProperty(HttpClientFactory.TARGET_HOST_URL, wsdlFile.toURI().toString());
+        CancelOrder cancelorder = new CancelOrder();
+        cancelorder.orderInquiry.inquiryId = "X2343443";
+        cancelorder.orderInquiry.customerNumber = "12345";
+        cancelorder.orderInquiry.poNumber = "asdsadfdfd";
+
+        params.put("cancelOrder", cancelorder);
+
+        String message = mbean.buildRequest(wsdlFile.toURI().toString(), "CancelOrder", params, properties, null, null);
+        assertTrue("Generated SOAP message not as expected. See expected_05.xml.  Generated message: \n" + message, compareCharStreams(getClass().getResourceAsStream("expected_05.xml"), new ByteArrayInputStream(message.getBytes())));
+        assertEquals("http://localhost:18080/active-bpel/services/RetailerCallback", mbean.getEndpoint(wsdlFile.toURI().toString(), properties));
+    }
+
+
+    
     private void addOrderItems(List<OrderItem> items) {
         items.add(new OrderItem(1, "item1", 1, new BigDecimal(1.00), 1));
         items.add(new OrderItem(2, "item2", 2, new BigDecimal(2.00), 2));
@@ -410,4 +430,16 @@
         
         System.out.println("compare returns: " + compareCharStreams(expectedIS, outputIS));
     }    
+    
+    private class CancelOrder {
+       public OrderInquiry orderInquiry = new OrderInquiry();
+    }
+   
+    private class OrderInquiry {
+       public String customerNumber;
+       public String poNumber;
+       public String inquiryId;
+    }
+   
+
 }

Added: labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/expected_05.xml
===================================================================
--- labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/expected_05.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/soapui-client/src/test/java/org/jboss/soa/esb/services/soapui/expected_05.xml	2009-05-20 14:14:19 UTC (rev 26638)
@@ -0,0 +1,11 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:abi="http://org.jboss.esb/quickstarts/bpel/ABI_OrderManager" xmlns:jaws="http://ordermanagement.activebpel.com/jaws">
+   <soapenv:Header/>
+   <soapenv:Body>
+      <abi:cancelOrder>
+         <abi:orderInquiry inquiryId="X2343443">
+            <jaws:customerNumber>12345</jaws:customerNumber>
+            <jaws:poNumber>asdsadfdfd</jaws:poNumber>
+         </abi:orderInquiry>
+      </abi:cancelOrder>
+   </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file




More information about the jboss-svn-commits mailing list