
Author: ceki Date: Wed Oct 25 23:33:56 2006 New Revision: 779 Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/AbstractEvalutatorFilter.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedComponentIA.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedSimplePropertyIA.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/util/PropertySetter.java Log: - trying to make an MDC based filtering work Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/AbstractEvalutatorFilter.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/AbstractEvalutatorFilter.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/AbstractEvalutatorFilter.java Wed Oct 25 23:33:56 2006 @@ -24,6 +24,7 @@ int onMatch = NEUTRAL; int onMismatch = NEUTRAL; + public void setOnMatch(String action) { if ("NEUTRAL".equals(action)) { onMatch = NEUTRAL; Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java Wed Oct 25 23:33:56 2006 @@ -7,8 +7,20 @@ EventEvaluator evaluator; + public EvaluatorFilter() { + } - + + public void setX(String action) { + if ("NEUTRAL".equals(action)) { + onMatch = NEUTRAL; + } else if ("ACCEPT".equals(action)) { + onMatch = ACCEPT; + } else if ("DENY".equals(action)) { + onMatch = DENY; + } + } + public void start() { if(evaluator != null) { super.start(); @@ -21,12 +33,17 @@ return evaluator; } + public void setEvaluator(EventEvaluator evaluator) { this.evaluator = evaluator; } public int decide(Object event) { - + // let us not throw an exception + // see also bug #17. + if(!isStarted()) { + return NEUTRAL; + } try { if (evaluator.evaluate(event)) { return onMatch; Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedComponentIA.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedComponentIA.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedComponentIA.java Wed Oct 25 23:33:56 2006 @@ -45,7 +45,7 @@ public boolean isApplicable( Pattern pattern, Attributes attributes, InterpretationContext ec) { - //LogLog.debug("in NestComponentIA.isApplicable <" + pattern + ">"); + //System.out.println("in NestComponentIA.isApplicable <" + pattern + ">"); String nestedElementTagName = pattern.peekLast(); // calling ec.peekObject with an empty stack will throw an exception @@ -55,7 +55,8 @@ Object o = ec.peekObject(); PropertySetter parentBean = new PropertySetter(o); - + parentBean.setContext(context); + int containmentType = parentBean.canContainComponent(nestedElementTagName); switch (containmentType) { @@ -66,6 +67,7 @@ // we only push action data if NestComponentIA is applicable case PropertySetter.AS_COLLECTION: case PropertySetter.AS_COMPONENT: + addInfo("is dmmed applicable for "+pattern); ImplicitActionData ad = new ImplicitActionData(parentBean, containmentType); actionDataStack.push(ad); @@ -108,7 +110,7 @@ ((ContextAware) actionData.nestedComponent).setContext(this.context); } //getLogger().debug( - // "Pushing component <{}> on top of the object stack.", localName); + addInfo("Pushing component <"+localName+"> on top of the object stack."); ec.pushObject(actionData.nestedComponent); } catch (Exception oops) { actionData.inError = true; @@ -151,9 +153,8 @@ // Now let us attach the component switch (actionData.containmentType) { case PropertySetter.AS_COMPONENT: - //getLogger().debug( - //"Setting [{}] to parent of type [{}]", tagName, - //actionData.parentBean.getObjClass()); + //addInfo("Setting ["+tagName+"}] to parent of type ["+actionData.parentBean.getObjClass()+"]"); + actionData.parentBean.setComponent( tagName, actionData.nestedComponent); Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedSimplePropertyIA.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedSimplePropertyIA.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedSimplePropertyIA.java Wed Oct 25 23:33:56 2006 @@ -42,7 +42,7 @@ public boolean isApplicable( Pattern pattern, Attributes attributes, InterpretationContext ec) { - //LogLog.debug("in NestComponentIA.isApplicable <" + pattern + ">"); + //System.out.println("in NestedSimplePropertyIA.isApplicable <" + pattern + ">"); String nestedElementTagName = pattern.peekLast(); // no point in attempting if there is no parent object @@ -52,7 +52,8 @@ Object o = ec.peekObject(); PropertySetter parentBean = new PropertySetter(o); - + parentBean.setContext(context); + int containmentType = parentBean.canContainComponent(nestedElementTagName); switch (containmentType) { @@ -65,7 +66,7 @@ ImplicitActionData ad = new ImplicitActionData(parentBean, containmentType); ad.propertyName = nestedElementTagName; actionDataStack.push(ad); - // System.out.println("NestedSimplePropertyIA deemed applicable for " +pattern); + //System.out.println("in NestedSimplePropertyIA deemed applicable <" + pattern + ">"); return true; default: addError("PropertySetter.canContainComponent returned " + containmentType); Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/util/PropertySetter.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/util/PropertySetter.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/util/PropertySetter.java Wed Oct 25 23:33:56 2006 @@ -92,34 +92,33 @@ * Set the properties for the object that match the <code>prefix</code> * passed as parameter. */ -// public void setProperties(Properties properties, String prefix) { -// int len = prefix.length(); -// -// for (Enumeration e = properties.propertyNames(); e.hasMoreElements();) { -// String key = (String) e.nextElement(); -// -// // handle only properties that start with the desired frefix. -// if (key.startsWith(prefix)) { -// // ignore key if it contains dots after the prefix -// if (key.indexOf('.', len + 1) > 0) { -// // System.err.println("----------Ignoring---["+key -// // +"], prefix=["+prefix+"]."); -// continue; -// } -// -// String value = OptionHelper.findAndSubst(key, properties); -// -// key = key.substring(len); -// -// if ("layout".equals(key) && obj instanceof Appender) { -// continue; -// } -// -// setProperty(key, value); -// } -// } -// } - + // public void setProperties(Properties properties, String prefix) { + // int len = prefix.length(); + // + // for (Enumeration e = properties.propertyNames(); e.hasMoreElements();) { + // String key = (String) e.nextElement(); + // + // // handle only properties that start with the desired frefix. + // if (key.startsWith(prefix)) { + // // ignore key if it contains dots after the prefix + // if (key.indexOf('.', len + 1) > 0) { + // // System.err.println("----------Ignoring---["+key + // // +"], prefix=["+prefix+"]."); + // continue; + // } + // + // String value = OptionHelper.findAndSubst(key, properties); + // + // key = key.substring(len); + // + // if ("layout".equals(key) && obj instanceof Appender) { + // continue; + // } + // + // setProperty(key, value); + // } + // } + // } /** * Set a property on this PropertySetter's Object. If successful, this method * will invoke a setter method on the underlying Object. The setter is the one @@ -227,7 +226,6 @@ if (propertyDescriptor != null) { Method setterMethod = propertyDescriptor.getWriteMethod(); - if (setterMethod != null) { // getLogger().debug( // "Found setter method for property [{}] in class {}", name, @@ -295,7 +293,8 @@ } public void setComponent(String name, Object childComponent) { - PropertyDescriptor propertyDescriptor = getPropertyDescriptor(name); + String dName = Introspector.decapitalize(name); + PropertyDescriptor propertyDescriptor = getPropertyDescriptor(dName); if (propertyDescriptor == null) { addWarn("Could not find PropertyDescriptor for [" + name + "] in " @@ -388,7 +387,10 @@ } for (int i = 0; i < propertyDescriptors.length; i++) { + //System.out.println("Comparing " + name + " against " + // + propertyDescriptors[i].getName()); if (name.equals(propertyDescriptors[i].getName())) { + //System.out.println("matched"); return propertyDescriptors[i]; } }