RE: Attribute question for Commons Digester
You mean: digester.addObjectCreate(article, Article.class); digester.addSetProperties(article, id, id); Yup. I've tried that. The actual value of the id field in the XML _1234 is ignored and 0 is set on the Article id field instead. I assume that this is because of the underscore in the id field. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of James Carman Sent: 29 June 2007 11:48 To: Jakarta Commons Users List Subject: Re: Attribute question for Commons Digester Have you tried an ObjectCreate followed by a SetProperties? On 6/29/07, Poulton, Jonathan [EMAIL PROTECTED] wrote: Surely someone has done this before? -Original Message- From: Poulton, Jonathan [mailto:[EMAIL PROTECTED] Sent: 28 June 2007 17:41 To: commons-user@jakarta.apache.org Subject: Digester problem Hi there, I've tried finding a solution to what I think should be quite a simple problem using the Commons Digester, but the tutorials I can find on the subject only really cover the basics and aren't of any help. Given an XML fragment like the following: article id=_1234 text.../text /article I need the Digester to call a method on an Article class, with the following signiture: public void setId(long id); In other words I just need a Rule that will fire for an XML id attribute, and remove an underscore from the front of a String before converting it to a long, and calling the appropriate method. I realise that this will require some kind of custom class to chop up the String, but the pattern you apply to matching the rule (article/id) appears to refer to a nested id element, rather than an id attribute. I can't seem to find an example of this anywhere. All the custom rules examples appear to refer to nested elements. Any suggestions? Have I missed something in the API? Cheers Jon - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Attribute question for Commons Digester
Surely someone has done this before? -Original Message- From: Poulton, Jonathan [mailto:[EMAIL PROTECTED] Sent: 28 June 2007 17:41 To: commons-user@jakarta.apache.org Subject: Digester problem Hi there, I've tried finding a solution to what I think should be quite a simple problem using the Commons Digester, but the tutorials I can find on the subject only really cover the basics and aren't of any help. Given an XML fragment like the following: article id=_1234 text.../text /article I need the Digester to call a method on an Article class, with the following signiture: public void setId(long id); In other words I just need a Rule that will fire for an XML id attribute, and remove an underscore from the front of a String before converting it to a long, and calling the appropriate method. I realise that this will require some kind of custom class to chop up the String, but the pattern you apply to matching the rule (article/id) appears to refer to a nested id element, rather than an id attribute. I can't seem to find an example of this anywhere. All the custom rules examples appear to refer to nested elements. Any suggestions? Have I missed something in the API? Cheers Jon - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Attribute question for Commons Digester
Also, does the plugin class need to implement a specific class? It doesn't look that way in the examples, and there doesn't appear to be any way to get the Digester to call a specific method in the plugin class. I have the feeling I have misunderstood something here.. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of James Carman Sent: 29 June 2007 11:59 To: Jakarta Commons Users List Subject: Re: Attribute question for Commons Digester Yeah, I didn't notice the _ (or read the rest of the request). You'll need a custom rule here to convert that value, otherwise SetProperties would work (and you don't need to specify id/id because it'll match the properties to the attributes if they match exactly). Why the underscore anyway? On 6/29/07, Poulton, Jonathan [EMAIL PROTECTED] wrote: You mean: digester.addObjectCreate(article, Article.class); digester.addSetProperties(article, id, id); Yup. I've tried that. The actual value of the id field in the XML _1234 is ignored and 0 is set on the Article id field instead. I assume that this is because of the underscore in the id field. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of James Carman Sent: 29 June 2007 11:48 To: Jakarta Commons Users List Subject: Re: Attribute question for Commons Digester Have you tried an ObjectCreate followed by a SetProperties? On 6/29/07, Poulton, Jonathan [EMAIL PROTECTED] wrote: Surely someone has done this before? -Original Message- From: Poulton, Jonathan [mailto:[EMAIL PROTECTED] Sent: 28 June 2007 17:41 To: commons-user@jakarta.apache.org Subject: Digester problem Hi there, I've tried finding a solution to what I think should be quite a simple problem using the Commons Digester, but the tutorials I can find on the subject only really cover the basics and aren't of any help. Given an XML fragment like the following: article id=_1234 text.../text /article I need the Digester to call a method on an Article class, with the following signiture: public void setId(long id); In other words I just need a Rule that will fire for an XML id attribute, and remove an underscore from the front of a String before converting it to a long, and calling the appropriate method. I realise that this will require some kind of custom class to chop up the String, but the pattern you apply to matching the rule (article/id) appears to refer to a nested id element, rather than an id attribute. I can't seem to find an example of this anywhere. All the custom rules examples appear to refer to nested elements. Any suggestions? Have I missed something in the API? Cheers Jon - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Attribute question for Commons Digester
I have no idea why the underscore is there; but its there in the source XML and my code has to deal with it *shrug*. I do realise that I need a custom rule - but I can't seem to get it working. Say I have a rule called ArticleIDTransform, then I do something like: PluginCreateRule pcr = new PluginCreateRule(ArticleIDTransform.class); digester.addRule(article, pcr); digester.addSetProperties(article, id, id); The rule doesn't fire..what I am doing wrong? Jon -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of James Carman Sent: 29 June 2007 11:59 To: Jakarta Commons Users List Subject: Re: Attribute question for Commons Digester Yeah, I didn't notice the _ (or read the rest of the request). You'll need a custom rule here to convert that value, otherwise SetProperties would work (and you don't need to specify id/id because it'll match the properties to the attributes if they match exactly). Why the underscore anyway? On 6/29/07, Poulton, Jonathan [EMAIL PROTECTED] wrote: You mean: digester.addObjectCreate(article, Article.class); digester.addSetProperties(article, id, id); Yup. I've tried that. The actual value of the id field in the XML _1234 is ignored and 0 is set on the Article id field instead. I assume that this is because of the underscore in the id field. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of James Carman Sent: 29 June 2007 11:48 To: Jakarta Commons Users List Subject: Re: Attribute question for Commons Digester Have you tried an ObjectCreate followed by a SetProperties? On 6/29/07, Poulton, Jonathan [EMAIL PROTECTED] wrote: Surely someone has done this before? -Original Message- From: Poulton, Jonathan [mailto:[EMAIL PROTECTED] Sent: 28 June 2007 17:41 To: commons-user@jakarta.apache.org Subject: Digester problem Hi there, I've tried finding a solution to what I think should be quite a simple problem using the Commons Digester, but the tutorials I can find on the subject only really cover the basics and aren't of any help. Given an XML fragment like the following: article id=_1234 text.../text /article I need the Digester to call a method on an Article class, with the following signiture: public void setId(long id); In other words I just need a Rule that will fire for an XML id attribute, and remove an underscore from the front of a String before converting it to a long, and calling the appropriate method. I realise that this will require some kind of custom class to chop up the String, but the pattern you apply to matching the rule (article/id) appears to refer to a nested id element, rather than an id attribute. I can't seem to find an example of this anywhere. All the custom rules examples appear to refer to nested elements. Any suggestions? Have I missed something in the API? Cheers Jon - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Digester problem
Hi there, I've tried finding a solution to what I think should be quite a simple problem using the Commons Digester, but the tutorials I can find on the subject only really cover the basics and aren't of any help. Given an XML fragment like the following: article id=_1234 text.../text /article I need the Digester to call a method on an Article class, with the following signiture: public void setId(long id); In other words I just need a Rule that will fire for an XML id attribute, and remove an underscore from the front of a String before converting it to a long, and calling the appropriate method. I realise that this will require some kind of custom class to chop up the String, but the pattern you apply to matching the rule (article/id) appears to refer to a nested id element, rather than an id attribute. I can't seem to find an example of this anywhere. All the custom rules examples appear to refer to nested elements. Any suggestions? Have I missed something in the API? Cheers Jon