Skip to content

Commit a9b118b

Browse files
committed
SWS-142
1 parent 28e4f2d commit a9b118b

File tree

2 files changed

+91
-1
lines changed

2 files changed

+91
-1
lines changed

core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapFaultDetail.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public SoapFaultDetailElement addFaultDetailElement(QName name) {
5151
}
5252

5353
public Iterator getDetailEntries() {
54-
return new AxiomSoapFaultDetailElementIterator(getAxiomFaultDetail().getAllDetailEntries());
54+
return new AxiomSoapFaultDetailElementIterator(getAxiomFaultDetail().getChildElements());
5555
}
5656

5757
public Result getResult() {
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
* Copyright 2007 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.ws.soap.axiom;
18+
19+
import java.io.StringReader;
20+
import javax.xml.stream.XMLInputFactory;
21+
import javax.xml.stream.XMLStreamReader;
22+
23+
import junit.framework.TestCase;
24+
import org.apache.axiom.soap.SOAPMessage;
25+
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
26+
import org.springframework.ws.soap.SoapFault;
27+
import org.springframework.ws.soap.SoapFaultDetail;
28+
29+
/** @author Arjen Poutsma */
30+
public class AxiomSoapFaultDetailTest extends TestCase {
31+
32+
private static final String FAILING_FAULT =
33+
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
34+
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
35+
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n " + "<soapenv:Body>\n " +
36+
"<soapenv:Fault>\n " + "<faultcode>Client</faultcode>\n " +
37+
"<faultstring>Client Error</faultstring>\n " + "<detail>\n " +
38+
"<ns1:dispositionReport xmlns:ns1=\"urn:uddi-org:api_v3\">\n " +
39+
"<ns1:result errno=\"10210\"/>\n " + "</ns1:dispositionReport>" + "</detail>" +
40+
"</soapenv:Fault>" + "</soapenv:Body>" + "</soapenv:Envelope>";
41+
42+
private static final String SUCCEEDING_FAULT =
43+
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
44+
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
45+
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n " + "<soapenv:Body>\n " +
46+
"<soapenv:Fault>\n " + "<faultcode>Client</faultcode>\n " +
47+
"<faultstring>Client Error</faultstring>\n " + "<detail>" +
48+
"<ns1:dispositionReport xmlns:ns1=\"urn:uddi-org:api_v3\">\n " +
49+
"<ns1:result errno=\"10210\"/>\n " + "</ns1:dispositionReport>" + "</detail>" +
50+
"</soapenv:Fault>" + "</soapenv:Body>" + "</soapenv:Envelope>";
51+
52+
private AxiomSoapMessage failingMessage;
53+
54+
private AxiomSoapMessage succeedingMessage;
55+
56+
protected void setUp() throws Exception {
57+
XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(FAILING_FAULT));
58+
StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(parser);
59+
SOAPMessage soapMessage = builder.getSoapMessage();
60+
61+
failingMessage = new AxiomSoapMessage(soapMessage, null, false);
62+
63+
parser = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(SUCCEEDING_FAULT));
64+
builder = new StAXSOAPModelBuilder(parser);
65+
soapMessage = builder.getSoapMessage();
66+
67+
succeedingMessage = new AxiomSoapMessage(soapMessage, null, false);
68+
69+
}
70+
71+
public void testGetDetailEntriesWorksWithWhitespaceNodes() throws Exception {
72+
SoapFault fault = failingMessage.getSoapBody().getFault();
73+
assertNotNull("Fault is null", fault);
74+
assertNotNull("Fault detail is null", fault.getFaultDetail());
75+
SoapFaultDetail detail = fault.getFaultDetail();
76+
assertTrue("No next detail entry present", detail.getDetailEntries().hasNext());
77+
detail.getDetailEntries().next();
78+
79+
}
80+
81+
public void testGetDetailEntriesWorksWithoutWhitespaceNodes() throws Exception {
82+
SoapFault fault = succeedingMessage.getSoapBody().getFault();
83+
assertNotNull("Fault is null", fault);
84+
assertNotNull("Fault detail is null", fault.getFaultDetail());
85+
SoapFaultDetail detail = fault.getFaultDetail();
86+
assertTrue("No next detail entry present", detail.getDetailEntries().hasNext());
87+
detail.getDetailEntries().next();
88+
}
89+
90+
}

0 commit comments

Comments
 (0)