Skip to content

Commit c4ccfee

Browse files
committed
Merge branch '4.0.x'
Closes gh-1538
2 parents 1c5543a + 514abec commit c4ccfee

File tree

11 files changed

+74
-53
lines changed

11 files changed

+74
-53
lines changed

gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/CheckstyleConventions.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ public class CheckstyleConventions {
4040
public void apply(Project project) {
4141
project.getPlugins().withType(JavaPlugin.class, (java) -> {
4242
project.getPlugins().apply(CheckstylePlugin.class);
43-
project.getTasks().withType(Checkstyle.class).forEach(checkstyle -> checkstyle.getMaxHeapSize().set("1g"));
44-
project.getTasks().named("checkstyleTest").configure(task -> task.setEnabled(false));
43+
project.getTasks()
44+
.withType(Checkstyle.class)
45+
.forEach((checkstyle) -> checkstyle.getMaxHeapSize().set("1g"));
46+
project.getTasks().named("checkstyleTest").configure((task) -> task.setEnabled(false));
4547
CheckstyleExtension checkstyle = project.getExtensions().getByType(CheckstyleExtension.class);
4648
checkstyle.setToolVersion("10.21.1");
4749
checkstyle.getConfigDirectory().set(project.getRootProject().file("src/checkstyle"));

gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/JavaPluginConventions.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.ws.gradle.conventions;
1818

19+
import java.util.Arrays;
20+
import java.util.List;
1921
import java.util.Map;
2022
import java.util.TreeMap;
2123

@@ -29,6 +31,7 @@
2931
import org.gradle.api.plugins.JavaPluginExtension;
3032
import org.gradle.api.tasks.SourceSet;
3133
import org.gradle.api.tasks.bundling.Jar;
34+
import org.gradle.api.tasks.compile.JavaCompile;
3235
import org.gradle.api.tasks.testing.Test;
3336
import org.gradle.jvm.toolchain.JavaLanguageVersion;
3437

@@ -43,6 +46,7 @@ class JavaPluginConventions {
4346

4447
void apply(Project project) {
4548
project.getPlugins().apply(SpringJavaFormatPlugin.class);
49+
configureJavaConventions(project);
4650
JavaPluginExtension java = project.getExtensions().getByType(JavaPluginExtension.class);
4751
enableSourceAndJavadocJars(java);
4852
configureSourceAndTargetCompatibility(java);
@@ -53,7 +57,22 @@ void apply(Project project) {
5357
configureJUnitPlatform(project);
5458
}
5559

56-
60+
private void configureJavaConventions(Project project) {
61+
project.getTasks().withType(JavaCompile.class, (compile) -> {
62+
compile.getOptions().setEncoding("UTF-8");
63+
List<String> args = compile.getOptions().getCompilerArgs();
64+
if (!args.contains("-parameters")) {
65+
args.add("-parameters");
66+
}
67+
boolean buildWithJava17 = !project.hasProperty("toolchainVersion")
68+
&& JavaVersion.current() == JavaVersion.VERSION_17;
69+
if (buildWithJava17) {
70+
args.addAll(Arrays.asList("-Werror", "-Xlint:unchecked", "-Xlint:deprecation", "-Xlint:rawtypes",
71+
"-Xlint:varargs"));
72+
}
73+
});
74+
project.getDependencies().add("compileOnly", "com.google.code.findbugs:jsr305");
75+
}
5776

5877
private void enableSourceAndJavadocJars(JavaPluginExtension java) {
5978
java.withSourcesJar();
@@ -111,6 +130,7 @@ private void configureJavadocClasspath(Project project, JavaPluginExtension java
111130

112131
private void configureJUnitPlatform(Project project) {
113132
project.getTasks().withType(Test.class).configureEach((task) -> task.useJUnitPlatform());
133+
project.getDependencies().add("testImplementation", "org.apiguardian:apiguardian-api");
114134
project.getDependencies().add("testRuntimeOnly", "org.junit.platform:junit-platform-launcher");
115135
}
116136

spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessage.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -294,12 +294,7 @@ else if (SoapVersion.SOAP_12 == version) {
294294
writeSwAMessage(outputStream, outputFormat);
295295
}
296296
else {
297-
if (this.payloadCaching) {
298-
this.axiomMessage.serialize(outputStream, outputFormat);
299-
}
300-
else {
301-
this.axiomMessage.serializeAndConsume(outputStream, outputFormat);
302-
}
297+
this.axiomMessage.serialize(outputStream, outputFormat, this.payloadCaching);
303298
}
304299
outputStream.flush();
305300
}
@@ -347,11 +342,11 @@ private void writeSwAMessage(OutputStream outputStream, OMOutputFormat format)
347342
throws XMLStreamException, UnsupportedEncodingException {
348343
StringWriter writer = new StringWriter();
349344
SOAPEnvelope envelope = this.axiomMessage.getSOAPEnvelope();
350-
if (this.payloadCaching) {
351-
envelope.serialize(writer, format);
345+
try {
346+
envelope.serialize(writer, format, this.payloadCaching);
352347
}
353-
else {
354-
envelope.serializeAndConsume(writer, format);
348+
catch (IOException ex) {
349+
throw new XMLStreamException(ex);
355350
}
356351

357352
try {

spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,10 @@
3131
import org.apache.axiom.om.OMException;
3232
import org.apache.axiom.om.OMXMLBuilderFactory;
3333
import org.apache.axiom.om.impl.MTOMConstants;
34-
import org.apache.axiom.soap.SOAP11Constants;
35-
import org.apache.axiom.soap.SOAP11Version;
36-
import org.apache.axiom.soap.SOAP12Constants;
37-
import org.apache.axiom.soap.SOAP12Version;
3834
import org.apache.axiom.soap.SOAPFactory;
3935
import org.apache.axiom.soap.SOAPMessage;
4036
import org.apache.axiom.soap.SOAPModelBuilder;
37+
import org.apache.axiom.soap.SOAPVersion;
4138
import org.apache.commons.logging.Log;
4239
import org.apache.commons.logging.LogFactory;
4340

@@ -316,19 +313,6 @@ else if (MTOMConstants.MTOM_TYPE.equals(attachments.getAttachmentSpecType())) {
316313
this.langAttributeOnSoap11FaultString);
317314
}
318315

319-
private String getSoapEnvelopeNamespace(String contentType) {
320-
if (contentType.contains(SOAP11Constants.SOAP_11_CONTENT_TYPE)) {
321-
return SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
322-
}
323-
else if (contentType.contains(SOAP12Constants.SOAP_12_CONTENT_TYPE)) {
324-
return SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
325-
}
326-
else {
327-
throw new AxiomSoapMessageCreationException("Unknown content type '" + contentType + "'");
328-
}
329-
330-
}
331-
332316
/**
333317
* Returns the character set from the given content type. Mostly copied
334318
* @return the character set encoding
@@ -385,10 +369,10 @@ protected XMLInputFactory createXmlInputFactory() {
385369

386370
public String toString() {
387371
StringBuilder builder = new StringBuilder("AxiomSoapMessageFactory[");
388-
if (this.soapFactory.getSOAPVersion() == SOAP11Version.getSingleton()) {
372+
if (this.soapFactory.getSOAPVersion() == SOAPVersion.SOAP11) {
389373
builder.append("SOAP 1.1");
390374
}
391-
else if (this.soapFactory.getSOAPVersion() == SOAP12Version.getSingleton()) {
375+
else if (this.soapFactory.getSOAPVersion() == SOAPVersion.SOAP12) {
392376
builder.append("SOAP 1.2");
393377
}
394378
builder.append(',');

spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/NonCachingPayload.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ private final class DelegatingStreamWriter implements XMLStreamWriter {
7575

7676
private boolean payloadAdded = false;
7777

78+
@SuppressWarnings("deprecation")
7879
private DelegatingStreamWriter() {
7980
try {
8081
this.delegate = StAXUtils.createXMLStreamWriter(this.baos);

spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/support/AxiomUtils.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.axiom.om.OMElement;
3030
import org.apache.axiom.om.OMException;
3131
import org.apache.axiom.om.OMNamespace;
32+
import org.apache.axiom.om.OMOutputFormat;
3233
import org.apache.axiom.om.OMXMLBuilderFactory;
3334
import org.apache.axiom.soap.SOAPEnvelope;
3435
import org.w3c.dom.Document;
@@ -50,6 +51,8 @@
5051
@SuppressWarnings("Since15")
5152
public abstract class AxiomUtils {
5253

54+
private static final OMOutputFormat DEFAULT_OUTPUT_FORMAT = new OMOutputFormat();
55+
5356
/**
5457
* Converts a {@code javax.xml.namespace.QName} to a
5558
* {@code org.apache.axiom.om.OMNamespace}. A {@code OMElement} is used to resolve the
@@ -116,7 +119,7 @@ public static Document toDocument(SOAPEnvelope envelope) {
116119
else {
117120
ByteArrayOutputStream bos = new ByteArrayOutputStream();
118121
envelope.build();
119-
envelope.serialize(bos);
122+
envelope.serialize(bos, DEFAULT_OUTPUT_FORMAT, true);
120123

121124
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
122125
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactoryUtils.newInstance();

spring-ws-core/src/test/java/org/springframework/ws/client/core/WebServiceTemplateTests.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public void testSendAndReceiveMessageResponse() throws Exception {
118118
WebServiceMessageCallback requestCallback = mock(WebServiceMessageCallback.class);
119119
requestCallback.doWithMessage(isA(WebServiceMessage.class));
120120

121-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
121+
WebServiceMessageExtractor<Object> extractorMock = mockWebServiceMessageExtractor();
122122
Object extracted = new Object();
123123
when(extractorMock.extractData(isA(WebServiceMessage.class))).thenReturn(extracted);
124124

@@ -136,7 +136,7 @@ public void testSendAndReceiveMessageResponse() throws Exception {
136136
@Test
137137
public void testSendAndReceiveMessageNoResponse() throws Exception {
138138

139-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
139+
WebServiceMessageExtractor<?> extractorMock = mock(WebServiceMessageExtractor.class);
140140

141141
this.connectionMock.send(isA(WebServiceMessage.class));
142142
when(this.connectionMock.hasError()).thenReturn(false);
@@ -151,7 +151,7 @@ public void testSendAndReceiveMessageNoResponse() throws Exception {
151151
@Test
152152
public void testSendAndReceiveMessageFault() throws Exception {
153153

154-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
154+
WebServiceMessageExtractor<Object> extractorMock = mockWebServiceMessageExtractor();
155155

156156
FaultMessageResolver faultMessageResolverMock = mock(FaultMessageResolver.class);
157157
this.template.setFaultMessageResolver(faultMessageResolverMock);
@@ -174,7 +174,7 @@ public void testSendAndReceiveMessageFault() throws Exception {
174174
@Test
175175
public void testSendAndReceiveConnectionError() throws Exception {
176176

177-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
177+
WebServiceMessageExtractor<Object> extractorMock = mockWebServiceMessageExtractor();
178178

179179
this.template.setFaultMessageResolver(null);
180180

@@ -193,7 +193,7 @@ public void testSendAndReceiveConnectionError() throws Exception {
193193
@Test
194194
public void testSendAndReceiveSourceResponse() throws Exception {
195195

196-
SourceExtractor extractorMock = mock(SourceExtractor.class);
196+
SourceExtractor<Object> extractorMock = mockSourceExtractor();
197197
Object extracted = new Object();
198198
when(extractorMock.extractData(isA(Source.class))).thenReturn(extracted);
199199

@@ -211,7 +211,7 @@ public void testSendAndReceiveSourceResponse() throws Exception {
211211
@Test
212212
public void testSendAndReceiveSourceNoResponse() throws Exception {
213213

214-
SourceExtractor extractorMock = mock(SourceExtractor.class);
214+
SourceExtractor<Object> extractorMock = mockSourceExtractor();
215215

216216
this.connectionMock.send(isA(WebServiceMessage.class));
217217
when(this.connectionMock.hasError()).thenReturn(false);
@@ -330,7 +330,7 @@ public boolean supports(URI uri) {
330330
WebServiceMessageCallback requestCallback = mock(WebServiceMessageCallback.class);
331331
requestCallback.doWithMessage(isA(WebServiceMessage.class));
332332

333-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
333+
WebServiceMessageExtractor<Object> extractorMock = mockWebServiceMessageExtractor();
334334
Object extracted = new Object();
335335
when(extractorMock.extractData(isA(WebServiceMessage.class))).thenReturn(extracted);
336336

@@ -361,7 +361,7 @@ public void testInterceptors() throws Exception {
361361
WebServiceMessageCallback requestCallback = mock(WebServiceMessageCallback.class);
362362
requestCallback.doWithMessage(isA(WebServiceMessage.class));
363363

364-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
364+
WebServiceMessageExtractor<Object> extractorMock = mockWebServiceMessageExtractor();
365365
Object extracted = new Object();
366366
when(extractorMock.extractData(isA(WebServiceMessage.class))).thenReturn(extracted);
367367

@@ -390,7 +390,7 @@ public void testInterceptorsInterceptedNoResponse() throws Exception {
390390
WebServiceMessageCallback requestCallback = mock(WebServiceMessageCallback.class);
391391
requestCallback.doWithMessage(messageContext.getRequest());
392392

393-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
393+
WebServiceMessageExtractor<Object> extractorMock = mockWebServiceMessageExtractor();
394394

395395
Object result = this.template.doSendAndReceive(messageContext, this.connectionMock, requestCallback,
396396
extractorMock);
@@ -415,7 +415,7 @@ public void testInterceptorsInterceptedCreateResponse() throws Exception {
415415
WebServiceMessageCallback requestCallback = mock(WebServiceMessageCallback.class);
416416
requestCallback.doWithMessage(messageContext.getRequest());
417417

418-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
418+
WebServiceMessageExtractor<Object> extractorMock = mockWebServiceMessageExtractor();
419419
Object extracted = new Object();
420420
when(extractorMock.extractData(messageContext.getResponse())).thenReturn(extracted);
421421

@@ -585,7 +585,7 @@ public boolean supports(URI uri) {
585585
}
586586
});
587587

588-
WebServiceMessageExtractor extractorMock = mock(WebServiceMessageExtractor.class);
588+
WebServiceMessageExtractor<Object> extractorMock = mockWebServiceMessageExtractor();
589589

590590
reset(this.connectionMock);
591591

@@ -600,6 +600,14 @@ public boolean supports(URI uri) {
600600
assertThat(result).isNull();
601601
}
602602

603+
private static WebServiceMessageExtractor<Object> mockWebServiceMessageExtractor() {
604+
return mock(WebServiceMessageExtractor.class);
605+
}
606+
607+
private static SourceExtractor<Object> mockSourceExtractor() {
608+
return mock(SourceExtractor.class);
609+
}
610+
603611
private static class NoOpClientInterceptor
604612
implements ClientInterceptor, AssertProvider<NoOpClientInterceptorAssert> {
605613

spring-ws-core/src/test/java/org/springframework/ws/soap/axiom/NonCachingPayloadTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void testDelegatingStreamWriter() throws Exception {
6161
streamWriter.flush();
6262

6363
StringWriter writer = new StringWriter();
64-
this.body.serialize(writer);
64+
this.body.serialize(writer, true);
6565

6666
String expected = "<soapenv:Body xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>"
6767
+ "<root xmlns='http://springframework.org/spring-ws'>" + "<child>text</child>"
@@ -85,7 +85,7 @@ public void testDelegatingStreamWriterWriteEndDocument() throws Exception {
8585
streamWriter.flush();
8686

8787
StringWriter writer = new StringWriter();
88-
this.body.serialize(writer);
88+
this.body.serialize(writer, true);
8989

9090
String expected = "<soapenv:Body xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>"
9191
+ "<root xmlns='http://springframework.org/spring-ws'>" + "<child>text</child>"
@@ -107,7 +107,7 @@ public void testDelegatingStreamWriterWriteEmptyElement() throws Exception {
107107
streamWriter.flush();
108108

109109
StringWriter writer = new StringWriter();
110-
this.body.serialize(writer);
110+
this.body.serialize(writer, true);
111111

112112
String expected = "<soapenv:Body xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>"
113113
+ "<root xmlns='http://springframework.org/spring-ws'>" + "<child />" + "</root></soapenv:Body>";

spring-ws-core/src/test/java/org/springframework/ws/soap/axiom/support/AxiomUtilsTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public void testToEnvelope() throws Exception {
147147

148148
SOAPEnvelope envelope = AxiomUtils.toEnvelope(document);
149149
StringWriter writer = new StringWriter();
150-
envelope.serialize(writer);
150+
envelope.serialize(writer, true);
151151
String result = writer.toString();
152152

153153
XmlAssert.assertThat(result).and(expected).ignoreWhitespace().areIdentical();

spring-ws-core/src/test/java/org/springframework/ws/wsdl/wsdl11/provider/InliningXsdSchemaTypesProviderTests.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.ws.wsdl.wsdl11.provider;
1818

19+
import java.util.List;
20+
1921
import javax.wsdl.Definition;
2022
import javax.wsdl.Types;
2123
import javax.wsdl.extensions.schema.Schema;
@@ -65,9 +67,9 @@ public void testSingle() throws Exception {
6567
Types types = this.definition.getTypes();
6668

6769
assertThat(types).isNotNull();
68-
assertThat(types.getExtensibilityElements()).hasSize(1);
70+
assertThat(getExtensibilityElements(types)).hasSize(1);
6971

70-
Schema wsdlSchema = (Schema) types.getExtensibilityElements().get(0);
72+
Schema wsdlSchema = (Schema) getExtensibilityElements(types).get(0);
7173

7274
assertThat(wsdlSchema.getElement()).isNotNull();
7375
}
@@ -93,15 +95,19 @@ public void testComplex() throws Exception {
9395
Types types = this.definition.getTypes();
9496

9597
assertThat(types).isNotNull();
96-
assertThat(types.getExtensibilityElements()).hasSize(2);
98+
assertThat(getExtensibilityElements(types)).hasSize(2);
9799

98-
Schema wsdlSchema = (Schema) types.getExtensibilityElements().get(0);
100+
Schema wsdlSchema = (Schema) getExtensibilityElements(types).get(0);
99101

100102
assertThat(wsdlSchema.getElement()).isNotNull();
101103

102-
wsdlSchema = (Schema) types.getExtensibilityElements().get(1);
104+
wsdlSchema = (Schema) getExtensibilityElements(types).get(1);
103105

104106
assertThat(wsdlSchema.getElement()).isNotNull();
105107
}
106108

109+
private static List<?> getExtensibilityElements(Types types) {
110+
return types.getExtensibilityElements();
111+
}
112+
107113
}

0 commit comments

Comments
 (0)