I finally got it working. Here's the modified function: public boolean add(IModifiable modifiable, IChangeListener listener) { // TODO Auto-generated method stub checkResources(); HashSet<IChangeListener> listenerSet = new HashSet<IChangeListener>(); Set<IChangeListener> listeners = listenersMap.putIfAbsent(modifiable, listenerSet); if (listeners != null) { return listeners.add(listener); } else return listenerSet.add(listener); }
I'm not sure if that's a good approach or not, but it works for me and that's fantastic. Daniel On Tue, Feb 7, 2012 at 9:30 AM, Daniel Watrous <daniel.watr...@gmail.com> wrote: > So I was just looking at what I sent along and it seems that > putIfAbsent(modifiable, new HashSet<IChangeListener>()) should return > the value component, which should be the new HashSet<IChangeListener>. > Even if the key modifiable already exists, it should return the > previously created HashSet<IChangeListener>. > > I'm confused that listener is coming back null. > > Daniel > > On Tue, Feb 7, 2012 at 9:21 AM, Daniel Watrous <daniel.watr...@gmail.com> > wrote: >> That helped. I'm getting really close. >> >> I'm now getting a null pointer exception in this function >> >> public boolean add(IModifiable modifiable, IChangeListener listener) { >> // TODO Auto-generated method stub >> checkResources(); >> Set<IChangeListener> listeners = >> listenersMap.putIfAbsent(modifiable, >> new HashSet<IChangeListener>()); >> return listeners.add(listener); >> } >> >> listeners is null. >> >> I noticed that start(Duration pollFrequency) in GaeModificationWatcher >> was never getting called, so I updated my WicketApplication to set it >> like this: >> >> IModificationWatcher watcher = new GaeModificationWatcher(); >> watcher.start(Duration.ONE_SECOND); >> getResourceSettings().setResourceWatcher(watcher); >> >> But that didn't help my problem. I'm still trying to follow >> http://agilewombat.blogspot.com/2010/01/wicket-on-google-app-engine.html >> >> Any pointers? >> >> Thanks, >> Daniel >> >> On Tue, Feb 7, 2012 at 8:42 AM, Martin Grigorov <mgrigo...@apache.org> wrote: >>> Try with java.util.Map.Entry >>> >>> On Tue, Feb 7, 2012 at 5:39 PM, Daniel Watrous <daniel.watr...@gmail.com> >>> wrote: >>>> I've now created a class MyRequestCycleListener extends >>>> AbstractRequestCycleListener. >>>> >>>> I'm having a little trouble building class GaeModificationWatcher >>>> implements IModificationWatcher. I've tried following this example: >>>> http://agilewombat.blogspot.com/2010/01/wicket-on-google-app-engine.html >>>> >>>> to create the public void checkResources() function, but I'm not sure >>>> what Entry class to import. I have tried importing these two Entry >>>> classes: >>>> org.apache.wicket.util.collections.IntHashMap.Entry >>>> import >>>> com.google.appengine.repackaged.com.google.common.collect.Multiset.Entry >>>> >>>> It seems no matter which Entry class I import I get errors like: >>>> >>>> Multiple markers at this line >>>> - Entry cannot be resolved to a type >>>> - The constructor >>>> HashSet<Entry<IModifiable,Set<IChangeListener>>>(Set<Map.Entry<IModifiable,Set<IChangeListener>>>) >>>> is >>>> undefined >>>> - Incorrect number of arguments for type IntHashMap.Entry; it cannot >>>> be parameterized with arguments <IModifiable, >>>> Set<IChangeListener>> >>>> >>>> Thanks for any pointers. >>>> >>>> Daniel >>>> >>>> >>>> On Tue, Feb 7, 2012 at 7:07 AM, Martin Grigorov <mgrigo...@apache.org> >>>> wrote: >>>>> On Tue, Feb 7, 2012 at 3:53 PM, Daniel Watrous <daniel.watr...@gmail.com> >>>>> wrote: >>>>>> Thanks Martin, >>>>>> >>>>>> I did make that much progress yesterday after sending this, but I >>>>>> can't figure out how to get the Application inside the onBeginRequest >>>>>> method that I override. In the other examples they call >>>>>> getApplication() >>>>>> >>>>>> @Override >>>>>> protected void onBeginRequest() { >>>>>> if >>>>>> (getApplication().getConfigurationType().equals(Application.DEVELOPMENT)) >>>>>> { >>>>>> final GaeModificationWatcher resourceWatcher = >>>>>> (GaeModificationWatcher) getApplication() >>>>>> .getResourceSettings().getResourceWatcher(true); >>>>>> resourceWatcher.checkResources(); >>>>>> } >>>>>> } >>>>>> >>>>>> How can I get the Application object? >>>>> >>>>> Application.get() >>>>> >>>>>> >>>>>> Daniel >>>>>> >>>>>> On Mon, Feb 6, 2012 at 11:43 PM, Martin Grigorov <mgrigo...@apache.org> >>>>>> wrote: >>>>>>> Hi, >>>>>>> >>>>>>> On Tue, Feb 7, 2012 at 1:32 AM, Daniel Watrous >>>>>>> <daniel.watr...@gmail.com> wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>> I'm following up on a previous thread that's still unresolved. I would >>>>>>>> like GAE to automatically reload my HTML when I save changes. Classes >>>>>>>> are reloaded when I save (compile) them, but I have to restart each >>>>>>>> time for HTML changes. >>>>>>>> >>>>>>>> There are some old articles that show how to do this, but they deal >>>>>>>> with older versions of Wicket and GAE. For example: >>>>>>>> http://agilewombat.blogspot.com/2010/01/wicket-on-google-app-engine.html >>>>>>>> http://apache-wicket.1842946.n4.nabble.com/How-can-I-reload-HTML-in-app-engine-td3005241.html >>>>>>>> http://code.google.com/p/kickat26/source/browse/trunk/src/de/kickat26/ui/wicket/GAEModificationWatcher.java >>>>>>>> >>>>>>>> Those suggest creating a class MyWebRequestCycle extends >>>>>>>> WebRequestCycle, but wicket 1.5 doesn't have WebRequestCycle. >>>>>>>> >>>>>>>> How can I accomplish this same thing in the current version of wicket? >>>>>>> >>>>>>> application.getRequestCycleListeners().add(new MyRequestCycleListener()) >>>>>>> >>>>>>> class MyRequestCycleListener extends AbstractRequestCycleListener { >>>>>>> // override the method you need here >>>>>>> } >>>>>>> >>>>>>> Once you have it you can contribute it to gae-initializer project so >>>>>>> other people can re-use it and improve it. >>>>>>> >>>>>>>> >>>>>>>> Daniel >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Martin Grigorov >>>>>>> jWeekend >>>>>>> Training, Consulting, Development >>>>>>> http://jWeekend.com >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Martin Grigorov >>>>> jWeekend >>>>> Training, Consulting, Development >>>>> http://jWeekend.com >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>> >>> >>> >>> >>> -- >>> Martin Grigorov >>> jWeekend >>> Training, Consulting, Development >>> http://jWeekend.com >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org