Re: Reload html in Wicket + GAE
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? 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
Re: Reload html in Wicket + GAE
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
Re: Reload html in Wicket + GAE
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 HashSetEntryIModifiable,SetIChangeListener(SetMap.EntryIModifiable,SetIChangeListener) is undefined - Incorrect number of arguments for type IntHashMap.Entry; it cannot be parameterized with arguments IModifiable, SetIChangeListener 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
Re: Reload html in Wicket + GAE
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 HashSetEntryIModifiable,SetIChangeListener(SetMap.EntryIModifiable,SetIChangeListener) is undefined - Incorrect number of arguments for type IntHashMap.Entry; it cannot be parameterized with arguments IModifiable, SetIChangeListener 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
Re: Reload html in Wicket + GAE
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(); SetIChangeListener listeners = listenersMap.putIfAbsent(modifiable, new HashSetIChangeListener()); 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 HashSetEntryIModifiable,SetIChangeListener(SetMap.EntryIModifiable,SetIChangeListener) is undefined - Incorrect number of arguments for type IntHashMap.Entry; it cannot be parameterized with arguments IModifiable, SetIChangeListener 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:
Re: Reload html in Wicket + GAE
So I was just looking at what I sent along and it seems that putIfAbsent(modifiable, new HashSetIChangeListener()) should return the value component, which should be the new HashSetIChangeListener. Even if the key modifiable already exists, it should return the previously created HashSetIChangeListener. 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(); SetIChangeListener listeners = listenersMap.putIfAbsent(modifiable, new HashSetIChangeListener()); 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 HashSetEntryIModifiable,SetIChangeListener(SetMap.EntryIModifiable,SetIChangeListener) is undefined - Incorrect number of arguments for type IntHashMap.Entry; it cannot be parameterized with arguments IModifiable, SetIChangeListener 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
Re: Reload html in Wicket + GAE
I finally got it working. Here's the modified function: public boolean add(IModifiable modifiable, IChangeListener listener) { // TODO Auto-generated method stub checkResources(); HashSetIChangeListener listenerSet = new HashSetIChangeListener(); SetIChangeListener 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 HashSetIChangeListener()) should return the value component, which should be the new HashSetIChangeListener. Even if the key modifiable already exists, it should return the previously created HashSetIChangeListener. 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(); SetIChangeListener listeners = listenersMap.putIfAbsent(modifiable, new HashSetIChangeListener()); 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 HashSetEntryIModifiable,SetIChangeListener(SetMap.EntryIModifiable,SetIChangeListener) is undefined - Incorrect number of arguments for type IntHashMap.Entry; it cannot be parameterized with arguments IModifiable, SetIChangeListener 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
Re: Reload html in Wicket + GAE
Glad you got it working Daniel, as Martin mentioned earlier, I'll appreciate if you can contribute this to existing GaeInitializer or somewhere comfortable with the full code so it can be valuable to us all. Thanks On Tue, Feb 7, 2012 at 5:31 PM, Daniel Watrous daniel.watr...@gmail.comwrote: I finally got it working. Here's the modified function: public boolean add(IModifiable modifiable, IChangeListener listener) { // TODO Auto-generated method stub checkResources(); HashSetIChangeListener listenerSet = new HashSetIChangeListener(); SetIChangeListener 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 HashSetIChangeListener()) should return the value component, which should be the new HashSetIChangeListener. Even if the key modifiable already exists, it should return the previously created HashSetIChangeListener. 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(); SetIChangeListener listeners = listenersMap.putIfAbsent(modifiable, new HashSetIChangeListener()); 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 HashSetEntryIModifiable,SetIChangeListener(SetMap.EntryIModifiable,SetIChangeListener) is undefined - Incorrect number of arguments for type IntHashMap.Entry; it cannot be parameterized with arguments IModifiable, SetIChangeListener 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
Re: Reload html in Wicket + GAE
Here's my write up: http://software.danielwatrous.com/software-engineering/wicket-gae-automatic-reload I'm not sure if I can push directly into wicketstuff, but I'm happy to try. You can grab the source from my site and put it in there. You may even have a more clever way to composing things. Daniel On Tue, Feb 7, 2012 at 12:17 PM, Kayode Odeyemi drey...@gmail.com wrote: Glad you got it working Daniel, as Martin mentioned earlier, I'll appreciate if you can contribute this to existing GaeInitializer or somewhere comfortable with the full code so it can be valuable to us all. Thanks On Tue, Feb 7, 2012 at 5:31 PM, Daniel Watrous daniel.watr...@gmail.comwrote: I finally got it working. Here's the modified function: public boolean add(IModifiable modifiable, IChangeListener listener) { // TODO Auto-generated method stub checkResources(); HashSetIChangeListener listenerSet = new HashSetIChangeListener(); SetIChangeListener 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 HashSetIChangeListener()) should return the value component, which should be the new HashSetIChangeListener. Even if the key modifiable already exists, it should return the previously created HashSetIChangeListener. 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(); SetIChangeListener listeners = listenersMap.putIfAbsent(modifiable, new HashSetIChangeListener()); 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 HashSetEntryIModifiable,SetIChangeListener(SetMap.EntryIModifiable,SetIChangeListener) is undefined - Incorrect number of arguments for type IntHashMap.Entry; it cannot be parameterized with arguments IModifiable, SetIChangeListener 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();
Re: Reload html in Wicket + GAE
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