
Author: ceki Date: Wed Oct 29 20:07:39 2008 New Revision: 1910 Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java Log: LBCORE-35 Added a setter for the StatusManager. Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java Wed Oct 29 20:07:39 2008 @@ -17,17 +17,36 @@ public class ContextBase implements Context { private String name; - StatusManager sm = new BasicStatusManager(); + private StatusManager sm = new BasicStatusManager(); // TODO propertyMap should be observable so that we can be notified // when it changes so that a new instance of propertyMap can be // serialized. For the time being, we ignore this shortcoming. Map<String, String> propertyMap = new HashMap<String, String>(); Map<String, Object> objectMap = new HashMap<String, Object>(); - + public StatusManager getStatusManager() { return sm; } + /** + * Set the {@link StatusManager} for this context. Note that by default this + * context is initialized with a {@link BasicStatusManager}. A null value for + * the 'statusManager' argument is not allowed. + * + * <p> + * A malicious attacker can set the status manager to a dummy instance, + * disabling internal error reporting. + * + * @param statusManager + * the new status manager + */ + public void setStatusManager(StatusManager statusManager) { + if (sm == null) { + throw new IllegalArgumentException("null StatusManager not allowed"); + } + this.sm = statusManager; + } + public Map<String, String> getCopyOfPropertyMap() { return new HashMap<String, String>(propertyMap); } @@ -48,7 +67,6 @@ objectMap.put(key, value); } - public String getName() { return name; }