
Author: ceki Date: Thu Nov 2 20:06:37 2006 New Revision: 855 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/util/PropertySetter.java logback/trunk/logback-core/src/test/input/joran/simplePropertyIA1.xml logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/Fruit.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/FruitContextAction.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/SimplePropertyIATest.java Log: Fixed bug #27. 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 Thu Nov 2 20:06:37 2006 @@ -57,8 +57,6 @@ ContainmentType containmentType = parentBean.canContainComponent(nestedElementTagName); - System.out.println("==="+containmentType); - switch (containmentType) { case NOT_FOUND: case AS_SINGLE_COMPONENT: @@ -70,7 +68,7 @@ ImplicitActionData ad = new ImplicitActionData(parentBean, containmentType); ad.propertyName = nestedElementTagName; actionDataStack.push(ad); - //System.out.println("in NestedSimplePropertyIA deemed applicable <" + pattern + ">"); + addInfo("NestedSimplePropertyIA deemed applicable <" + pattern + ">"); return true; default: addError("PropertySetter.canContainComponent returned " + containmentType); @@ -89,9 +87,8 @@ //System.out.println("body "+body+", finalBody="+finalBody); // get the action data object pushed in isApplicable() method call ImplicitActionData actionData = (ImplicitActionData) actionDataStack.peek(); - switch (actionData.containmentType) { - case AS_SINGLE_COMPONENT: + case AS_SINGLE_PROPERTY: actionData.parentBean.setProperty(actionData.propertyName, finalBody); break; case AS_PROPERTY_COLLECTION: 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 Thu Nov 2 20:06:37 2006 @@ -113,8 +113,7 @@ name = Introspector.decapitalize(name); PropertyDescriptor prop = getPropertyDescriptor(name); - - // LogLog.debug("---------Key: "+name+", type="+prop.getPropertyType()); + if (prop == null) { addWarn("No such property [" + name + "] in " + objClass.getName() + "."); } else { @@ -287,8 +286,8 @@ } name = capitalizeFirstLetter(name); - Method adderMethod = getMethod("add" + name); + if (adderMethod == null) { addError("No adder for property [" + name + "]."); return; @@ -308,12 +307,12 @@ return; } + if (arg == null) { addError("Conversion to type [" + paramTypes[0] + "] failed."); } else { - try { - adderMethod.invoke(obj, new Object[] { arg }); + adderMethod.invoke(obj, arg); } catch (Exception ex) { addError("Failed to invoke adder for " + name, ex); } Modified: logback/trunk/logback-core/src/test/input/joran/simplePropertyIA1.xml ============================================================================== --- logback/trunk/logback-core/src/test/input/joran/simplePropertyIA1.xml (original) +++ logback/trunk/logback-core/src/test/input/joran/simplePropertyIA1.xml Thu Nov 2 20:06:37 2006 @@ -4,5 +4,6 @@ <fruit class="ch.qos.logback.core.joran.ia.Fruit"> <name>blue</name> <text>hello</text> + <text>world</text> </fruit> </context> \ No newline at end of file Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java Thu Nov 2 20:06:37 2006 @@ -34,7 +34,7 @@ interpreter.addImplicitAction(nestedIA); NestedSimplePropertyIA nestedSimpleIA = new NestedSimplePropertyIA(); - nestedIA.setContext(context); + nestedSimpleIA.setContext(context); interpreter.addImplicitAction(nestedSimpleIA); } @@ -42,7 +42,6 @@ protected void addInstanceRules(RuleStore rs) { for(Pattern pattern : rulesMap.keySet()) { Action action = rulesMap.get(pattern); - System.out.println("Adding "+pattern +" "+action); rs.addRule(pattern, action); } } Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/Fruit.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/Fruit.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/Fruit.java Thu Nov 2 20:06:37 2006 @@ -9,11 +9,10 @@ List<String> textList = new ArrayList<String>(); public Fruit() { - System.out.println("Fruit constructor called"); } - public void setName(String name) { - this.name = name; + public void setName(String n) { + this.name = n; } public String getName() { Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/FruitContextAction.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/FruitContextAction.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/FruitContextAction.java Thu Nov 2 20:06:37 2006 @@ -25,7 +25,6 @@ public void begin(InterpretationContext ec, String name, Attributes attributes) throws ActionException { - inError = false; try { Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/SimplePropertyIATest.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/SimplePropertyIATest.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/ia/SimplePropertyIATest.java Thu Nov 2 20:06:37 2006 @@ -44,7 +44,9 @@ Fruit f0 = fList.get(0); assertEquals("blue", f0.getName()); - assertEquals(1, f0.textList.size()); + assertEquals(2, f0.textList.size()); + assertEquals("hello", f0.textList.get(0)); + assertEquals("world", f0.textList.get(1)); } catch (Exception je) { StatusPrinter.print(fruitContext); throw je;