From f6cb09555ef5ac4a161cd1099add3b5bfe501121 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Thu, 17 Jul 2008 10:26:36 +0000 Subject: [PATCH] SWS-400 --- .../endpoint/AbstractLoggingInterceptor.java | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/springframework/ws/server/endpoint/AbstractLoggingInterceptor.java b/core/src/main/java/org/springframework/ws/server/endpoint/AbstractLoggingInterceptor.java index f032afea..62444d7e 100644 --- a/core/src/main/java/org/springframework/ws/server/endpoint/AbstractLoggingInterceptor.java +++ b/core/src/main/java/org/springframework/ws/server/endpoint/AbstractLoggingInterceptor.java @@ -85,7 +85,7 @@ public abstract class AbstractLoggingInterceptor extends TransformerObjectSuppor * @throws TransformerException when the payload cannot be transformed to a string */ public final boolean handleRequest(MessageContext messageContext, Object endpoint) throws TransformerException { - if (logRequest && logger.isDebugEnabled()) { + if (logRequest && isLogEnabled()) { logMessageSource("Request: ", getSource(messageContext.getRequest())); } return true; @@ -100,7 +100,7 @@ public abstract class AbstractLoggingInterceptor extends TransformerObjectSuppor * @throws TransformerException when the payload cannot be transformed to a string */ public boolean handleResponse(MessageContext messageContext, Object endpoint) throws Exception { - if (logResponse && logger.isDebugEnabled()) { + if (logResponse && isLogEnabled()) { logMessageSource("Response: ", getSource(messageContext.getResponse())); } return true; @@ -111,6 +111,16 @@ public abstract class AbstractLoggingInterceptor extends TransformerObjectSuppor return true; } + /** + * Determine whether the {@link #logger} field is enabled. + *

+ * Default is true when the "debug" level is enabled. Subclasses can override this to change the level + * under which logging occurs. + */ + protected boolean isLogEnabled() { + return logger.isDebugEnabled(); + } + private Transformer createNonIndentingTransformer() throws TransformerConfigurationException { Transformer transformer = createTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); @@ -118,15 +128,38 @@ public abstract class AbstractLoggingInterceptor extends TransformerObjectSuppor return transformer; } + /** + * Logs the given {@link Source source} to the {@link #logger}, using the message as a prefix. + *

+ * By default, this message creates a string representation of the given source, and delegates to {@link + * #logMessage(String)}. + * + * @param logMessage the log message + * @param source the source to be logged + * @throws TransformerException in case of errors + */ protected void logMessageSource(String logMessage, Source source) throws TransformerException { if (source != null) { Transformer transformer = createNonIndentingTransformer(); StringWriter writer = new StringWriter(); transformer.transform(source, new StreamResult(writer)); - logger.debug(logMessage + writer.toString()); + String message = logMessage + writer.toString(); + logMessage(message); } } + /** + * Logs the given string message. + *

+ * By default, this method uses a "debug" level of logging. Subclasses can override this method to change the level + * of loging used by the logger. + * + * @param message the message + */ + protected void logMessage(String message) { + logger.debug(message); + } + /** * Abstract template method that returns the Source for the given WebServiceMessage. *