Author: sergeyb
Date: Mon Feb 13 22:57:19 2012
New Revision: 1243727
URL: http://svn.apache.org/viewvc?rev=1243727&view=rev
Log:
[CXF-4102] Updating Logging interceptors to ignore the binary content by default
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/annotations/Logging.java
cxf/trunk/api/src/main/java/org/apache/cxf/feature/LoggingFeature.java
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/annotations/Logging.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/annotations/Logging.java?rev=1243727&r1=1243726&r2=1243727&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/annotations/Logging.java
(original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/annotations/Logging.java Mon Feb
13 22:57:19 2012
@@ -50,5 +50,10 @@ public @interface Logging {
* For XML content, turn on pretty printing in the logs
*/
boolean pretty() default false;
+
+ /**
+ * Ignore binary payloads by default
+ */
+ boolean showBinary() default false;
}
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/feature/LoggingFeature.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/feature/LoggingFeature.java?rev=1243727&r1=1243726&r2=1243727&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/feature/LoggingFeature.java
(original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/feature/LoggingFeature.java Mon
Feb 13 22:57:19 2012
@@ -50,6 +50,7 @@ public class LoggingFeature extends Abst
String inLocation;
String outLocation;
boolean prettyLogging;
+ boolean showBinary;
int limit = DEFAULT_LIMIT;
@@ -75,12 +76,18 @@ public class LoggingFeature extends Abst
limit = lim;
prettyLogging = p;
}
+
+ public LoggingFeature(String in, String out, int lim, boolean p, boolean
showBinary) {
+ this(in, out, lim, p);
+ this.showBinary = showBinary;
+ }
public LoggingFeature(Logging annotation) {
inLocation = annotation.inLocation();
outLocation = annotation.outLocation();
limit = annotation.limit();
prettyLogging = annotation.pretty();
+ showBinary = annotation.showBinary();
}
@Override
@@ -95,9 +102,11 @@ public class LoggingFeature extends Abst
LoggingInInterceptor in = new LoggingInInterceptor(limit);
in.setOutputLocation(inLocation);
in.setPrettyLogging(prettyLogging);
+ in.setShowBinaryContent(showBinary);
LoggingOutInterceptor out = new LoggingOutInterceptor(limit);
out.setOutputLocation(outLocation);
out.setPrettyLogging(prettyLogging);
+ out.setShowBinaryContent(showBinary);
provider.getInInterceptors().add(in);
provider.getInFaultInterceptors().add(in);
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java?rev=1243727&r1=1243726&r2=1243727&view=diff
==============================================================================
---
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java
(original)
+++
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java
Mon Feb 13 22:57:19 2012
@@ -23,6 +23,8 @@ import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
@@ -46,11 +48,22 @@ import org.apache.cxf.service.model.Inte
* Logger.
*/
public abstract class AbstractLoggingInterceptor extends
AbstractPhaseInterceptor<Message> {
-
+
+ protected static final String BINARY_CONTENT_MESSAGE = "--- Binary Content
---";
+ private static final List<String> BINARY_CONTENT_MEDIA_TYPES;
+ static {
+ BINARY_CONTENT_MEDIA_TYPES = new ArrayList<String>();
+ BINARY_CONTENT_MEDIA_TYPES.add("application/octet-stream");
+ BINARY_CONTENT_MEDIA_TYPES.add("image/png");
+ BINARY_CONTENT_MEDIA_TYPES.add("image/jpeg");
+ BINARY_CONTENT_MEDIA_TYPES.add("image/gif");
+ }
+
protected int limit = 100 * 1024;
protected long threshold = -1;
protected PrintWriter writer;
protected boolean prettyLogging;
+ private boolean showBinaryContent;
public AbstractLoggingInterceptor(String phase) {
super(phase);
@@ -186,5 +199,13 @@ public abstract class AbstractLoggingInt
logger.log(lr);
}
}
-
+ public void setShowBinaryContent(boolean showBinaryContent) {
+ this.showBinaryContent = showBinaryContent;
+ }
+ public boolean isShowBinaryContent() {
+ return showBinaryContent;
+ }
+ public boolean isBinaryContent(String contentType) {
+ return contentType != null &&
BINARY_CONTENT_MEDIA_TYPES.contains(contentType);
+ }
}
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java?rev=1243727&r1=1243726&r2=1243727&view=diff
==============================================================================
---
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java
(original)
+++
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java
Mon Feb 13 22:57:19 2012
@@ -119,7 +119,13 @@ public class LoggingInInterceptor extend
buffer.getAddress().append("?").append(query);
}
}
-
+
+ if (!isShowBinaryContent() && isBinaryContent(ct)) {
+ buffer.getMessage().append(BINARY_CONTENT_MESSAGE).append('\n');
+ log(logger, buffer.toString());
+ return;
+ }
+
InputStream is = message.getContent(InputStream.class);
if (is != null) {
CachedOutputStream bos = new CachedOutputStream();
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java?rev=1243727&r1=1243726&r2=1243727&view=diff
==============================================================================
---
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java
(original)
+++
cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java
Mon Feb 13 22:57:19 2012
@@ -132,6 +132,12 @@ public class LoggingOutInterceptor exten
buffer.getHeader().append(headers);
}
+ if (!isShowBinaryContent() && isBinaryContent(ct)) {
+
buffer.getMessage().append(BINARY_CONTENT_MESSAGE).append('\n');
+ log(logger, buffer.toString());
+ return;
+ }
+
if (cos.getTempFile() == null) {
//buffer.append("Outbound Message:\n");
if (cos.size() > limit) {