You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mi...@apache.org on 2008/07/15 02:15:51 UTC
svn commit: r676775 - in /ode/branches/APACHE_ODE_1.X:
axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/
axis2-war/src/test/resources/TestHttpBindingExt_GET/
axis2/src/main/java/org/apache/ode/axis2/httpbinding/
Author: midon
Date: Mon Jul 14 17:15:51 2008
New Revision: 676775
URL: http://svn.apache.org/viewvc?rev=676775&view=rev
Log:
202/204 should not fail even if a part is mapped to the response body
Modified:
ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java
ode/branches/APACHE_ODE_1.X/axis2-war/src/test/resources/TestHttpBindingExt_GET/http-binding-ext-GET.bpel
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpMethodConverter.java
Modified: ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java?rev=676775&r1=676774&r2=676775&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java (original)
+++ ode/branches/APACHE_ODE_1.X/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java Mon Jul 14 17:15:51 2008
@@ -64,7 +64,7 @@
handlerColl = new ContextHandlerCollection();
Handler[] handlers = {arithmeticsContext, blogContext};
handlerColl.setHandlers(handlers);
-
+
server.addHandler(handlerColl);
}
@@ -206,14 +206,14 @@
int left = Integer.valueOf(DOMUtils.getTextContent(firstOperand));
int right = Integer.valueOf(DOMUtils.getTextContent(secondOperand));
- int min = Math.min(left,right);
- int max = Math.max(left,right);
+ int min = Math.min(left, right);
+ int max = Math.max(left, right);
// Element arrayElt = bodyDoc.createElement("sumOfInteger");
Element anElt = bodyDoc.createElementNS("http://ode/bpel/test/arithmetics", "sumOfInteger");
Element msg = bodyDoc.createElement("theresult");
Element resultIs = bodyDoc.createElement("resultIs");
msg.setTextContent("A dummy message we don't care about. Only purpose is to have a complex type");
- resultIs.setTextContent(String.valueOf((max*(max+1)-min*(min+1))/2));
+ resultIs.setTextContent(String.valueOf((max * (max + 1) - min * (min + 1)) / 2));
anElt.appendChild(msg);
anElt.appendChild(resultIs);
@@ -280,6 +280,11 @@
response.getOutputStream().print(DOMUtils.domToString(articleEl));
response.setStatus(200);
+ } else if ("200_missing_body".equals(faultType)) {
+ response.setHeader("TimestampHeader", request.getHeader("TimestampHeader"));
+ response.setHeader("From", request.getHeader("From"));
+
+ response.setStatus(200);
} else if ("200_malformed_body".equals(faultType)) {
// parts to http headers, just send them back and let the caller check the received values
response.setHeader("TimestampHeader", request.getHeader("TimestampHeader"));
@@ -288,6 +293,11 @@
response.setContentType("text/xml");
response.getOutputStream().print("<book><abstract>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</abstract>");
response.setStatus(200);
+ } else if ("202_empty_body".equals(faultType) || "204_empty_body".equals(faultType)) {
+ response.setHeader("TimestampHeader", request.getHeader("TimestampHeader"));
+ response.setHeader("From", request.getHeader("From"));
+
+ response.setStatus(Integer.parseInt(faultType.substring(0, 3)));
} else {
// some parts are bound to http headers
// just send them back and let the caller check the received values
Modified: ode/branches/APACHE_ODE_1.X/axis2-war/src/test/resources/TestHttpBindingExt_GET/http-binding-ext-GET.bpel
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2-war/src/test/resources/TestHttpBindingExt_GET/http-binding-ext-GET.bpel?rev=676775&r1=676774&r2=676775&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/axis2-war/src/test/resources/TestHttpBindingExt_GET/http-binding-ext-GET.bpel (original)
+++ ode/branches/APACHE_ODE_1.X/axis2-war/src/test/resources/TestHttpBindingExt_GET/http-binding-ext-GET.bpel Mon Jul 14 17:15:51 2008
@@ -228,6 +228,80 @@
</scope>
<!-- ############################################### -->
+ <!-- 200_missing_body - failure expected -->
+ <!-- ############################################### -->
+ <scope>
+ <ext:failureHandling>
+ <ext:faultOnFailure>true</ext:faultOnFailure>
+ </ext:failureHandling>
+ <faultHandlers>
+ <catch faultName="ext:activityFailure">
+ <!-- expected result-->
+ <!--
+ Warning #1!! At this point what we know for sure is that a failure occured
+ but we don't know which failure exactly.
+ We would like to test if the the failure is really the one we triggered on purpose and not a TimeoutFailure for instance.
+ -->
+ <empty/>
+ </catch>
+ </faultHandlers>
+ <sequence>
+ <assign>
+ <copy>
+ <from>'200_missing_body'</from>
+ <to variable="idMsg" header="Fault-Type"/>
+ </copy>
+ </assign>
+ <invoke partnerLink="blogPartnerLink" portType="dummy:BlogPortType"
+ operation="doGET" inputVariable="idMsg" outputVariable="articleMsg"/>
+ <assign>
+ <copy>
+ <from>'200_missing_body: A failure should have been thrown'</from>
+ <to>$outputVar.TestPart</to>
+ </copy>
+ </assign>
+ <reply name="end" partnerLink="helloPartnerLink" portType="test:HelloPortType"
+ operation="hello" variable="outputVar"/>
+ </sequence>
+ </scope>
+
+ <!-- ############################################### -->
+ <!-- 202_empty_body - Should pass -->
+ <!-- ############################################### -->
+ <!-- 202/Accepted status code explicitly states that there is no body,
+ so we should not fail even if a part is bound to the body response -->
+ <scope>
+ <sequence>
+ <assign>
+ <copy>
+ <from>'202_empty_body'</from>
+ <to variable="idMsg" header="Fault-Type"/>
+ </copy>
+ </assign>
+ <invoke partnerLink="blogPartnerLink" portType="dummy:BlogPortType"
+ operation="doGET" inputVariable="idMsg" outputVariable="articleMsg"/>
+ </sequence>
+ </scope>
+
+ <!-- ############################################### -->
+ <!-- 204_empty_body - Should pass -->
+ <!-- ############################################### -->
+ <!-- 204/No Content status code explicitly states that there is no body,
+ so we should not fail even if a part is bound to the body response -->
+ <scope>
+ <sequence>
+ <assign>
+ <copy>
+ <from>'204_empty_body'</from>
+ <to variable="idMsg" header="Fault-Type"/>
+ </copy>
+ </assign>
+ <invoke partnerLink="blogPartnerLink" portType="dummy:BlogPortType"
+ operation="doGET" inputVariable="idMsg" outputVariable="articleMsg"/>
+ </sequence>
+ </scope>
+
+ <!-- ############################################### -->
<!-- 200_missing_part_in_header - failure expected -->
<!-- ############################################### -->
<scope>
Modified: ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java?rev=676775&r1=676774&r2=676775&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java (original)
+++ ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java Mon Jul 14 17:15:51 2008
@@ -395,6 +395,7 @@
}
private void _3xx_redirection() throws IOException {
+ // redirections should be handled transparently by http-client
replyWithFailure("Redirections disabled! HTTP Status-Line: " + method.getStatusLine() + " for " + method.getURI());
}
@@ -419,9 +420,12 @@
// assumption is made that a response may have at most one body. HttpBindingValidator checks this.
MIMEContent outputContent = WsdlUtils.getMimeContent(opBinding.getBindingOutput().getExtensibilityElements());
+ int statusCode = method.getStatusCode();
+
boolean xmlExpected = outputContent != null && HttpHelper.isXml(outputContent.getType());
+ // '202/Accepted' and '204/No Content' status codes explicitly state that there is no body, so we should not fail even if a part is bound to the body response
boolean isBodyExpected = outputContent != null;
- boolean isBodyMandatory = isBodyExpected && xmlExpected;
+ boolean isBodyMandatory = isBodyExpected && statusCode!=204 && statusCode!=202;
final String body;
try {
body = method.getResponseBodyAsString();
Modified: ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpMethodConverter.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpMethodConverter.java?rev=676775&r1=676774&r2=676775&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpMethodConverter.java (original)
+++ ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpMethodConverter.java Mon Jul 14 17:15:51 2008
@@ -364,6 +364,8 @@
* For each of them, set the header value as the value of the message part.
* <p/>
* Then add all HTTP headers as header part in the message. The name of the header would be the part name.
+ * <p/>
+ * Finally, insert a header names 'Status-Line'. This header contains an element as returned by {@link HttpHelper#statusLineToElement(String)} .
*
* @param odeMessage
* @param method