Author: chemit Date: 2008-11-24 15:33:01 +0000 (Mon, 24 Nov 2008) New Revision: 1029 Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JXPathDecorator.java lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/JXPathDecoratorTest.java Log: introduce JXPathDecorator but does not works (at the moment...) Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JXPathDecorator.java =================================================================== --- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JXPathDecorator.java (rev 0) +++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/JXPathDecorator.java 2008-11-24 15:33:01 UTC (rev 1029) @@ -0,0 +1,29 @@ +package jaxx.runtime; + +import org.apache.commons.jxpath.JXPathContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** @author chemit */ +public class JXPathDecorator<O> implements Decorator<O> { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + private static final Log log = LogFactory.getLog(JXPathDecorator.class); + + private static final long serialVersionUID = 1L; + + protected String expression; + + public JXPathDecorator(String expression) { + this.expression = expression; + } + + public String toString(O bean) { + JXPathContext jxcontext = JXPathContext.newContext(bean); + String result = (String) jxcontext.getValue(expression); + if (log.isDebugEnabled()) { + log.debug(expression + " : " + result); + } + return result; + } +} Added: lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/JXPathDecoratorTest.java =================================================================== --- lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/JXPathDecoratorTest.java (rev 0) +++ lutinjaxx/trunk/jaxx-core/src/test/java/jaxx/runtime/JXPathDecoratorTest.java 2008-11-24 15:33:01 UTC (rev 1029) @@ -0,0 +1,48 @@ +package jaxx.runtime; + +import org.junit.Test; + +/** @author chemit */ +public class JXPathDecoratorTest { + + public static class Model { + + protected String name; + + protected int integervalue; + + public Model(String name, int integervalue) { + this.name = name; + this.integervalue = integervalue; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getIntegervalue() { + return integervalue; + } + + public void setIntegervalue(int integervalue) { + this.integervalue = integervalue; + } + } + + @Test + public void testDecorator() throws Exception { + //fixme : make me works :) + + //Decorator<Model> decorator = new JXPathDecorator<Model>("./name (./integerValue"); + + //Model m = new Model("name", 10); + //String expected = m.getName() + " (" + m.getIntegervalue() + ")"; + //String result = decorator.toString(m); + + //org.junit.Assert.assertEquals(expected, result); + } +}