Re: Digester rules problem.
Digester is a good piece of software, I would love, but not at the moment, I have so little free time and so many things to do. Anyway, I have added it in my todo list. Maurizio Cucchiara On 6 October 2011 14:40, Simone Tripodi wrote: > About your question: currently there's NO full XPath rule matcher > engine :( if you are interested on providing an implementation we can > discuss about it on the dev@ ML - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: Digester rules problem.
Hi Mau, thanks for providing to Eric the needed help, very appreciated! Just a minor hint: the double SetProperties rule declaration can be replaced by just one call: public class ResponseTest { @Test public void buildTest() throws IOException, SAXException { Digester digester = new Digester(); digester.addObjectCreate("response", Response.class); digester.addSetProperties("response", new String[]{ "query", "result" }, new String[]{ "query", "result" }); [OMISS] } } since attribute names are exactly the properties names, the attributes/properties arrays can be omitted: public class ResponseTest { @Test public void buildTest() throws IOException, SAXException { Digester digester = new Digester(); digester.addObjectCreate( "response", Response.class ); digester.addSetProperties( "response" ); [OMISS] } } if you use the Digester3 rules binder (which I prefer, yuk yuk), you can write the rules as new AbstractRulesModule() { @Override public void configure() { forPattern( "response" ) .createObject().ofType( Response.class ) .then() .setProperties() .addAlias( "query", "query" ) .addAlias( "result", "result" ), forPattern( "response/attribute" ) .setBeanProperty().extractPropertyNameFromAttribute( "name" ); } } About your question: currently there's NO full XPath rule matcher engine :( if you are interested on providing an implementation we can discuss about it on the dev@ ML HTH, have a nice day!!! Simo http://people.apache.org/~simonetripodi/ http://www.99soft.org/ On Thu, Oct 6, 2011 at 12:38 PM, Maurizio Cucchiara wrote: > Hi Simo, > looking at the http://s.apache.org/OQ0 I realized that Digester uses > an xpath-like string, I am wondering if there is a way (or a rule) > which allows using full xpath syntax (Eric could have used something > like "response/attribute[@name='ip' ]"). > Is there any Rule implementation about this specific topic? > > > Maurizio Cucchiara > > > > On 6 October 2011 09:40, Simone Tripodi wrote: >> Hi Eric, >> I can provide you the solution but I'll be busy for the whole morning. >> Please wait I'll send you the hints ASAP. >> All the best, >> Simo >> >> http://people.apache.org/~simonetripodi/ >> http://www.99soft.org/ >> >> >> >> On Thu, Oct 6, 2011 at 5:02 AM, Eric Chow wrote: >>> Hello, >>> >>> >>> >>> >>> >>> 10.70.0.2 >>> >>> 3 >>> >>> 1 >>> >>> active >>> >>> >>> >>> >>> In the above XML, I have a bean as following: >>> >>> public class Response { >>> private String query; >>> private boolean result; >>> >>> private String ip; >>> private String slot; >>> private String port; >>> private String status; >>> >>> >>> >>> } >>> >>> >>> >>> >>> For the query, result, I can easy to use the following codes to parse. >>> >>> Digester digester = new Digester(); >>> digester.setNamespaceAware( true ); >>> digester.setXIncludeAware( true ); >>> >>> digester.addObjectCreate( "response", Response .class ); >>> digester.addSetProperties( "response", "query", "query" ); >>> digester.addSetProperties( "response", "result", "result" ); >>> >>> >>> >>> >>> >>> But, how can I set those into the related properties? >>> >>> Please help. >>> >>> Thanks. >>> Eric >>> >> >> - >> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org >> For additional commands, e-mail: user-h...@commons.apache.org >> >> > > - > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org > > - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: Digester rules problem.
Hi Simo, looking at the http://s.apache.org/OQ0 I realized that Digester uses an xpath-like string, I am wondering if there is a way (or a rule) which allows using full xpath syntax (Eric could have used something like "response/attribute[@name='ip' ]"). Is there any Rule implementation about this specific topic? Maurizio Cucchiara On 6 October 2011 09:40, Simone Tripodi wrote: > Hi Eric, > I can provide you the solution but I'll be busy for the whole morning. > Please wait I'll send you the hints ASAP. > All the best, > Simo > > http://people.apache.org/~simonetripodi/ > http://www.99soft.org/ > > > > On Thu, Oct 6, 2011 at 5:02 AM, Eric Chow wrote: >> Hello, >> >> >> >> >> >> 10.70.0.2 >> >> 3 >> >> 1 >> >> active >> >> >> >> >> In the above XML, I have a bean as following: >> >> public class Response { >> private String query; >> private boolean result; >> >> private String ip; >> private String slot; >> private String port; >> private String status; >> >> >> >> } >> >> >> >> >> For the query, result, I can easy to use the following codes to parse. >> >> Digester digester = new Digester(); >> digester.setNamespaceAware( true ); >> digester.setXIncludeAware( true ); >> >> digester.addObjectCreate( "response", Response .class ); >> digester.addSetProperties( "response", "query", "query" ); >> digester.addSetProperties( "response", "result", "result" ); >> >> >> >> >> >> But, how can I set those into the related properties? >> >> Please help. >> >> Thanks. >> Eric >> > > - > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org > > - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: Digester rules problem.
Hi Eric, I took a quick look at Digester, I have to say that I am not a Digester guru (rather I am a newbie), but looking at source code I am able to get what you are looking for using the code below. public class ResponseTest { @Test public void buildTest() throws IOException, SAXException { Digester digester = new Digester(); digester.addObjectCreate("response", Response.class); digester.addSetProperties("response", "query", "query"); digester.addSetProperties("response", "result", "result"); BeanPropertySetterRule rule = new BeanPropertySetterRule(); rule.setPropertyNameFromAttribute("name"); digester.addRule("response/attribute", rule); Response r = digester.parse(this.getClass().getResourceAsStream("Response.xml")); assertNotNull(r); assertEquals("10.70.0.2", r.getIp()); assertEquals("1", r.getPort()); assertEquals("3", r.getSlot()); assertEquals("active", r.getStatus()); } } Maurizio Cucchiara On 6 October 2011 09:40, Simone Tripodi wrote: > Hi Eric, > I can provide you the solution but I'll be busy for the whole morning. > Please wait I'll send you the hints ASAP. > All the best, > Simo > > http://people.apache.org/~simonetripodi/ > http://www.99soft.org/ > > > > On Thu, Oct 6, 2011 at 5:02 AM, Eric Chow wrote: >> Hello, >> >> >> >> >> >> 10.70.0.2 >> >> 3 >> >> 1 >> >> active >> >> >> >> >> In the above XML, I have a bean as following: >> >> public class Response { >> private String query; >> private boolean result; >> >> private String ip; >> private String slot; >> private String port; >> private String status; >> >> >> >> } >> >> >> >> >> For the query, result, I can easy to use the following codes to parse. >> >> Digester digester = new Digester(); >> digester.setNamespaceAware( true ); >> digester.setXIncludeAware( true ); >> >> digester.addObjectCreate( "response", Response .class ); >> digester.addSetProperties( "response", "query", "query" ); >> digester.addSetProperties( "response", "result", "result" ); >> >> >> >> >> >> But, how can I set those into the related properties? >> >> Please help. >> >> Thanks. >> Eric >> > > - > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org > > - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: Digester rules problem.
Hi Eric, I can provide you the solution but I'll be busy for the whole morning. Please wait I'll send you the hints ASAP. All the best, Simo http://people.apache.org/~simonetripodi/ http://www.99soft.org/ On Thu, Oct 6, 2011 at 5:02 AM, Eric Chow wrote: > Hello, > > > > > > 10.70.0.2 > > 3 > > 1 > > active > > > > > In the above XML, I have a bean as following: > > public class Response { > private String query; > private boolean result; > > private String ip; > private String slot; > private String port; > private String status; > > > > } > > > > > For the query, result, I can easy to use the following codes to parse. > > Digester digester = new Digester(); > digester.setNamespaceAware( true ); > digester.setXIncludeAware( true ); > > digester.addObjectCreate( "response", Response .class ); > digester.addSetProperties( "response", "query", "query" ); > digester.addSetProperties( "response", "result", "result" ); > > > > > > But, how can I set those into the related properties? > > Please help. > > Thanks. > Eric > - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Digester rules problem.
Hello, 10.70.0.2 3 1 active In the above XML, I have a bean as following: public class Response { private String query; private boolean result; private String ip; private String slot; private String port; private String status; } For the query, result, I can easy to use the following codes to parse. Digester digester = new Digester(); digester.setNamespaceAware( true ); digester.setXIncludeAware( true ); digester.addObjectCreate( "response", Response .class ); digester.addSetProperties( "response", "query", "query" ); digester.addSetProperties( "response", "result", "result" ); But, how can I set those into the related properties? Please help. Thanks. Eric