hi edgar i think that this ability might well be missing from digester at the moment.
there are various ways in which this could be added. i'll have a think about which seems the best. (i don't know if anyone out there has any preferences.) - robert On Tuesday, July 9, 2002, at 05:15 PM, Edgar Vonk wrote: > Hi all, > > I have an XML message of which the toplevel element contains amongst > others > an attribute named 'class'. > I cannot map this attribute to a JavaBeans property named 'class' since > the > getClass() method is final in java.lang.Object. > > Therefore I have created a different JavaBeans property named 'content' to > which I want to map this XML attribute. > The same JavaBean I want to use for the other attributes of this XML > element. > > My question is how do I do this (neatly)? > > I have looked into the Digester documentation but could not find a way. > In the end I took the source code of both the latest commons-digester > (version 1.2) and the commons-beanutils (version 1.3) and created my own > 'SetPropertiesRule' and 'BeanUtils' class. > > In the former I adapted the 'begin' method to include special handling for > my 'class' attribute. > The latter I only modified slightly: I made the 'setProperty' method > public. > Why is it private anyway? It seems to me like a method which could be of > use > outside of the class. > > My version of the SetPropertiesRule class now maps all attributes of my > 'request' element to their corresponding JavaBeans property except for the > 'class' attribute. > It maps this one to the 'content' property. > > However, I'd much rather just use the digester API as it is (well, I am > still using the API I guess..) so I wondered if there was a neater way to > do > this? > Somehow this feels like a problem other people may have run into in the > past? > > > Example XML message: > > <?xml version="1.0" encoding="ISO-8859-1"?> > <!DOCTYPE request SYSTEM "http://localhost:8080/zrt_1_0.dtd"> > <request class="screensaver" command="GetCategories" msisdn="31612345678" > > > </request> > > Example part of corresponding JavaBean: > > public class Request { > public String getCommand() {..} > public void setCommand(String command) {..} > public String getContent() {..} > public void setContent(String content) {..} > } > > Current solution: part of my adapted SetPropertiesRule#begin method: > > // special handling for 'class' attribute > // this attribute corresponds to the 'content' property > // in the Java bean > String name = "class"; > String value = classValue; > if (digester.getLogger().isDebugEnabled()) { > digester.getLogger().debug("[SetPropertiesRule]{" + > digester.getMatch() + > "} Setting property '" + name + "' to '" + > value + "'"); > } > RequestBeanUtils.setProperty(top, "content", value); > > > > regards, > > Edgar > > _______________________ > Edgar Vonk > Software Engineering > Info.nl > Sint Antoniesbreestraat 16 > 1011 HB Amsterdam > > [EMAIL PROTECTED] > tel: 020 - 5 30 91 00 > fax: 020 - 5 30 91 01 > mobile: 06 - 417 23 151 > http://www.info.nl/ > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]. > org> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]. > org> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
