Skip to content

Commit 11d4262

Browse files
committed
SWS-326
1 parent aaa4d02 commit 11d4262

File tree

3 files changed

+68
-44
lines changed

3 files changed

+68
-44
lines changed

core/src/main/java/org/springframework/ws/client/core/WebServiceTemplate.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,13 @@ public class WebServiceTemplate extends WebServiceAccessor implements WebService
105105
/** Log category to use for message tracing. */
106106
public static final String MESSAGE_TRACING_LOG_CATEGORY = "org.springframework.ws.client.MessageTracing";
107107

108-
/** Additional logger to use for message tracing. */
109-
protected static final Log messageTracingLogger =
110-
LogFactory.getLog(WebServiceTemplate.MESSAGE_TRACING_LOG_CATEGORY);
108+
/** Additional logger to use for sent message tracing. */
109+
protected static final Log sentMessageTracingLogger =
110+
LogFactory.getLog(WebServiceTemplate.MESSAGE_TRACING_LOG_CATEGORY + ".sent");
111+
112+
/** Additional logger to use for received message tracing. */
113+
protected static final Log receivedMessageTracingLogger =
114+
LogFactory.getLog(WebServiceTemplate.MESSAGE_TRACING_LOG_CATEGORY + ".received");
111115

112116
private Marshaller marshaller;
113117

@@ -513,13 +517,13 @@ protected Object doSendAndReceive(MessageContext messageContext,
513517

514518
/** Sends the request in the given message context over the connection. */
515519
private void sendRequest(WebServiceConnection connection, WebServiceMessage request) throws IOException {
516-
if (messageTracingLogger.isTraceEnabled()) {
520+
if (sentMessageTracingLogger.isTraceEnabled()) {
517521
ByteArrayOutputStream os = new ByteArrayOutputStream();
518522
request.writeTo(os);
519-
messageTracingLogger.trace("Sent request [" + os.toString("UTF-8") + "]");
523+
sentMessageTracingLogger.trace("Sent request [" + os.toString("UTF-8") + "]");
520524
}
521-
else if (messageTracingLogger.isDebugEnabled()) {
522-
messageTracingLogger.debug("Sent request [" + request + "]");
525+
else if (sentMessageTracingLogger.isDebugEnabled()) {
526+
sentMessageTracingLogger.debug("Sent request [" + request + "]");
523527
}
524528
connection.send(request);
525529
}
@@ -563,22 +567,22 @@ protected Object handleError(WebServiceConnection connection, WebServiceMessage
563567

564568
private void logResponse(MessageContext messageContext) throws IOException {
565569
if (messageContext.hasResponse()) {
566-
if (messageTracingLogger.isTraceEnabled()) {
570+
if (receivedMessageTracingLogger.isTraceEnabled()) {
567571
ByteArrayOutputStream requestStream = new ByteArrayOutputStream();
568572
messageContext.getRequest().writeTo(requestStream);
569573
ByteArrayOutputStream responseStream = new ByteArrayOutputStream();
570574
messageContext.getResponse().writeTo(responseStream);
571-
messageTracingLogger.trace("Received response [" + responseStream.toString("UTF-8") +
575+
receivedMessageTracingLogger.trace("Received response [" + responseStream.toString("UTF-8") +
572576
"] for request [" + requestStream.toString("UTF-8") + "]");
573577
}
574-
else if (messageTracingLogger.isDebugEnabled()) {
575-
messageTracingLogger.debug("Received response [" + messageContext.getResponse() + "] for request [" +
576-
messageContext.getRequest() + "]");
578+
else if (receivedMessageTracingLogger.isDebugEnabled()) {
579+
receivedMessageTracingLogger.debug("Received response [" + messageContext.getResponse() +
580+
"] for request [" + messageContext.getRequest() + "]");
577581
}
578582
}
579583
else {
580584
if (logger.isDebugEnabled()) {
581-
messageTracingLogger
585+
receivedMessageTracingLogger
582586
.debug("Received no response for request [" + messageContext.getRequest() + "]");
583587
}
584588
}

core/src/main/java/org/springframework/ws/server/MessageDispatcher.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,13 @@ public class MessageDispatcher implements WebServiceMessageReceiver, BeanNameAwa
8888
/** Log category to use for message tracing. */
8989
public static final String MESSAGE_TRACING_LOG_CATEGORY = "org.springframework.ws.server.MessageTracing";
9090

91-
/** Additional logger to use for message tracing. */
92-
protected static final Log messageTracingLogger = LogFactory.getLog(MessageDispatcher.MESSAGE_TRACING_LOG_CATEGORY);
91+
/** Additional logger to use for sent message tracing. */
92+
protected static final Log sentMessageTracingLogger =
93+
LogFactory.getLog(MessageDispatcher.MESSAGE_TRACING_LOG_CATEGORY + ".sent");
94+
95+
/** Additional logger to use for received message tracing. */
96+
protected static final Log receivedMessageTracingLogger =
97+
LogFactory.getLog(MessageDispatcher.MESSAGE_TRACING_LOG_CATEGORY + ".received");
9398

9499
private final DefaultStrategiesHelper defaultStrategiesHelper;
95100

@@ -152,31 +157,31 @@ public void setApplicationContext(ApplicationContext applicationContext) throws
152157
}
153158

154159
public void receive(MessageContext messageContext) throws Exception {
155-
if (messageTracingLogger.isTraceEnabled()) {
160+
if (receivedMessageTracingLogger.isTraceEnabled()) {
156161
ByteArrayOutputStream os = new ByteArrayOutputStream();
157162
messageContext.getRequest().writeTo(os);
158-
messageTracingLogger.trace("Received request [" + os.toString("UTF-8") + "]");
163+
receivedMessageTracingLogger.trace("Received request [" + os.toString("UTF-8") + "]");
159164
}
160-
else if (messageTracingLogger.isDebugEnabled()) {
161-
messageTracingLogger.debug("Received request [" + messageContext.getRequest() + "]");
165+
else if (receivedMessageTracingLogger.isDebugEnabled()) {
166+
receivedMessageTracingLogger.debug("Received request [" + messageContext.getRequest() + "]");
162167
}
163168
dispatch(messageContext);
164169
if (messageContext.hasResponse()) {
165-
if (messageTracingLogger.isTraceEnabled()) {
170+
if (sentMessageTracingLogger.isTraceEnabled()) {
166171
ByteArrayOutputStream requestStream = new ByteArrayOutputStream();
167172
messageContext.getRequest().writeTo(requestStream);
168173
ByteArrayOutputStream responseStream = new ByteArrayOutputStream();
169174
messageContext.getResponse().writeTo(responseStream);
170-
messageTracingLogger.trace("Sent response [" + responseStream.toString("UTF-8") + "] for request [" +
171-
requestStream.toString("UTF-8") + "]");
175+
sentMessageTracingLogger.trace("Sent response [" + responseStream.toString("UTF-8") +
176+
"] for request [" + requestStream.toString("UTF-8") + "]");
172177
}
173-
else if (messageTracingLogger.isDebugEnabled()) {
174-
messageTracingLogger.debug("Sent response [" + messageContext.getResponse() + "] for request [" +
178+
else if (sentMessageTracingLogger.isDebugEnabled()) {
179+
sentMessageTracingLogger.debug("Sent response [" + messageContext.getResponse() + "] for request [" +
175180
messageContext.getRequest() + "]");
176181
}
177182
}
178-
else if (messageTracingLogger.isDebugEnabled()) {
179-
messageTracingLogger.debug("MessageDispatcher with name '" + beanName +
183+
else if (sentMessageTracingLogger.isDebugEnabled()) {
184+
sentMessageTracingLogger.debug("MessageDispatcher with name '" + beanName +
180185
"' sends no response for request [" + messageContext.getRequest() + "]");
181186
}
182187
}

core/src/test/java/org/springframework/ws/client/core/WebServiceTemplateIntegrationTest.java

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
import javax.xml.transform.dom.DOMSource;
4141
import javax.xml.transform.stream.StreamResult;
4242

43+
import junit.extensions.TestSetup;
44+
import junit.framework.Test;
45+
import junit.framework.TestSuite;
4346
import org.custommonkey.xmlunit.XMLTestCase;
4447
import org.mortbay.jetty.Server;
4548
import org.mortbay.jetty.servlet.Context;
@@ -62,25 +65,10 @@ public class WebServiceTemplateIntegrationTest extends XMLTestCase {
6265

6366
private WebServiceTemplate template;
6467

65-
private Server jettyServer;
66-
67-
protected void setUp() throws Exception {
68-
jettyServer = new Server(8888);
69-
Context jettyContext = new Context(jettyServer, "/");
70-
jettyContext.addServlet(new ServletHolder(new EchoSoapServlet()), "/soap/echo");
71-
jettyContext.addServlet(new ServletHolder(new SoapFaultServlet()), "/soap/fault");
72-
SoapFaultServlet badRequestFault = new SoapFaultServlet();
73-
badRequestFault.setSc(400);
74-
jettyContext.addServlet(new ServletHolder(badRequestFault), "/soap/badRequestFault");
75-
jettyContext.addServlet(new ServletHolder(new NoResponseSoapServlet()), "/soap/noResponse");
76-
jettyContext.addServlet(new ServletHolder(new PoxServlet()), "/pox");
77-
jettyContext.addServlet(new ServletHolder(new ErrorServlet(404)), "/errors/notfound");
78-
jettyContext.addServlet(new ServletHolder(new ErrorServlet(500)), "/errors/server");
79-
jettyServer.start();
80-
}
68+
private static Server jettyServer;
8169

82-
protected void tearDown() throws Exception {
83-
jettyServer.stop();
70+
public static Test suite() {
71+
return new ServerTestSetup(new TestSuite(WebServiceTemplateIntegrationTest.class));
8472
}
8573

8674
public void testAxiom() throws Exception {
@@ -295,4 +283,31 @@ protected SOAPMessage onMessage(SOAPMessage message) throws SOAPException {
295283
}
296284
}
297285

286+
/** A custom TestSetup to make sure that setUp() and tearDown() are only called once. */
287+
private static class ServerTestSetup extends TestSetup {
288+
289+
private ServerTestSetup(Test test) {
290+
super(test);
291+
}
292+
293+
protected void setUp() throws Exception {
294+
jettyServer = new Server(8888);
295+
Context jettyContext = new Context(jettyServer, "/");
296+
jettyContext.addServlet(new ServletHolder(new EchoSoapServlet()), "/soap/echo");
297+
jettyContext.addServlet(new ServletHolder(new SoapFaultServlet()), "/soap/fault");
298+
SoapFaultServlet badRequestFault = new SoapFaultServlet();
299+
badRequestFault.setSc(400);
300+
jettyContext.addServlet(new ServletHolder(badRequestFault), "/soap/badRequestFault");
301+
jettyContext.addServlet(new ServletHolder(new NoResponseSoapServlet()), "/soap/noResponse");
302+
jettyContext.addServlet(new ServletHolder(new PoxServlet()), "/pox");
303+
jettyContext.addServlet(new ServletHolder(new ErrorServlet(404)), "/errors/notfound");
304+
jettyContext.addServlet(new ServletHolder(new ErrorServlet(500)), "/errors/server");
305+
jettyServer.start();
306+
}
307+
308+
protected void tearDown() throws Exception {
309+
jettyServer.stop();
310+
}
311+
}
312+
298313
}

0 commit comments

Comments
 (0)