This sounds famliar. I think we already fixed something like this but dont know if it is done in the 1.2.x stream
Send in a patch if you like and attach it to a jira issue 2007/12/4, Seldon, Richard <[EMAIL PROTECTED]>: > > Working with Wicket 1.2.6. Having trouble with the implementation of > Component toString() - it has been implemented by wicket framework to > use an overloaded 'detailed' version that contains the following: > > .append((isRenderAllowed() && isVisible()) > > The repercussions of this is that where component.toString() is called > from within an overridden instance of component isVisible() method we > get ourselves into a recursive loop. Eventually, this leads to a > java.lang.StackOverflowError with varying results depending on app > server. In IBM Websphere version 6.0.2.2 it actually crashes the server > altogether. > > Unfortunately, the wicket framework itself unwittingly corroborates in > this situation arising. A contrived example code and scenario where this > can occur is in wicket.model.AbstractDetachableModel :- > > public final Object getObject(final Component component) > { > attach(); > try > { > return onGetObject(component); > } > catch (RuntimeException e) > { > throw new WicketRuntimeException("unable to get > object, model: " + this > + ", called with component " + > component, e); > } > } > > Above the WicketRuntimeException message string calls the > component.toString() method. Below is an overridden isVisible() > implementation (from within MyPage component) where a PropertyModel > fails to find the appropriate getXXX for the expression XXX leading to a > WicketRuntimeException in wicket.util.lang.PropertyResolver. For > instance:- > > final PropertyModel model = new PropertyModel(this, > "incorrectNameOfListGetMethod"); > > Panel myPanel = new MyPanel("myPanel") { > public boolean isVisible() { > return > ((List)model.getObject(this)).size() > 0; > } > }; > > Stacktrace of error:- > > at > wicket.util.lang.PropertyResolver.findGetter(PropertyResolver.java:374) > at > wicket.util.lang.PropertyResolver.getGetAndSetter(PropertyResolver.java: > 233) > at > wicket.util.lang.PropertyResolver.getObjectAndGetSetter(PropertyResolver > .java:200) > at > wicket.util.lang.PropertyResolver.getValue(PropertyResolver.java:88) > at > wicket.model.AbstractPropertyModel.onGetObject(AbstractPropertyModel.jav > a:132) > at > wicket.model.AbstractDetachableModel.getObject(AbstractDetachableModel.j > ava:104) > at com.arcs.spike.page.MyPage$1.isVisible(MyPage.java:29) > > > Is there some way we can work easily around this sort of issue? Eg. A > hook in the framework etc to create our own versions of components (with > overridden implementaiton of toString() via a factory? Would rather > avoid patching the wicket jar if possible. Thanks in advance for any > help. > > >> apologies if footer of email is verbose - company policy restricts us > to include this and have no other email account available << > > ********************************************************************** > This email (and any attachments) may contain privileged and/or confidential > information. If you are not the intended recipient please do not disclose, > copy, distribute, disseminate or take any action in reliance on it. If you > have received this message in error please reply and tell us and then delete > it. Should you wish to communicate with us by email we cannot guarantee the > security of any data outside our own computer systems. For the protection of > Legal & General's systems and staff, incoming emails will be automatically > scanned. Any information contained in this message may be subject to > applicable terms and conditions and must not be construed as giving > investment advice within or outside the United Kingdom. > > Legal & General Group plc is registered in England under company number > 1417162 and is a holding company. > > The registered office for all companies in the Legal & General group is One > Coleman Street London EC2R 5AA. > > The following subsidiary companies of Legal & General Group Plc are > authorised and regulated by the Financial Services Authority: Legal & > General Partnership Services Limited, Legal & General Insurance Limited, > Legal & General Assurance Society Limited, Legal & General (Unit Trust > Managers) Limited and Legal & General (Portfolio Management Services) > Limited. > > Legal & General International (Ireland) is incorporated in Ireland under > company number 440141 with its registered office at Alexandra House, The > Sweepstakes, Ballsbridge, Dublin 4 and is authorised by the Financial > Regulator in Ireland and by the Financial Services Authority for the conduct > of insurance business in the UK. > > Full details can be found at http://www.legalandgeneralgroup.com/ > > ********************************************************************** > > > --------------------------------------------------------------------- > 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]