[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