Re: Wicket 6 Clustering - Component Not Found Exception

2016-02-20 Thread Martin Grigorov
Which version of Wicket do you use?
I cannot verify at the moment but I believe this is 0 by default since a
long time.

Check Wicket guide, section "Page storage". I think this is the second
level cache.
On Feb 21, 2016 12:58 AM, "mashleyttu"  wrote:

> Hi,
>
> This was also very helpful. A little more insight into our application: It
> is a single page web app and we swap panels via ajax with the following
> code:
>
> myPanel.setOutputMarkupPlaceholderTag(true); //Newly constructed panel
> pnlMain.replaceWith(myPanel); //Replace panel
> pnlMain = myPanel; //Update reference in MainPage.java to new panel
> target.add(myPanel); //Add to target for rendering
>
> On the node where everything worked (node that ran the code above) we had
> all the components on the page we are expecting.
>
> On the node with the component not found exception (code above was not run
> on this node) it had the previous panel that we were on.
>
> Is the DefaultPageStore stored in the session? I'm thinking that is not
> getting serialized by the tomcat memcached session manager.
>
> What would happen if we set cacheSize to 0?
>
> * @param cacheSize
> *the number of pages to cache in memory before passing them to
> *{@link IDataStore#storeData(String, int, byte[])}
>
> Thanks so much!
>
> --
> View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/Wicket-6-Clustering-Component-Not-Found-Exception-tp4673610p4673683.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> -
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>


Re: Wicket 6 Clustering - Component Not Found Exception

2016-02-20 Thread mashleyttu
Hi,

This was also very helpful. A little more insight into our application: It
is a single page web app and we swap panels via ajax with the following
code:

myPanel.setOutputMarkupPlaceholderTag(true); //Newly constructed panel
pnlMain.replaceWith(myPanel); //Replace panel
pnlMain = myPanel; //Update reference in MainPage.java to new panel
target.add(myPanel); //Add to target for rendering

On the node where everything worked (node that ran the code above) we had
all the components on the page we are expecting.

On the node with the component not found exception (code above was not run
on this node) it had the previous panel that we were on.

Is the DefaultPageStore stored in the session? I'm thinking that is not
getting serialized by the tomcat memcached session manager. 

What would happen if we set cacheSize to 0?

* @param cacheSize
*the number of pages to cache in memory before passing them to
*{@link IDataStore#storeData(String, int, byte[])}

Thanks so much!

--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Wicket-6-Clustering-Component-Not-Found-Exception-tp4673610p4673683.html
Sent from the Users forum mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Wicket 6 Clustering - Component Not Found Exception

2016-02-20 Thread Martin Grigorov
Hi,


On Sat, Feb 20, 2016 at 4:47 PM, mashleyttu  wrote:

> Hi Martin,
>
> Thank you for your quick reply. I had to wait for the weekend for further
> testing. I added the timestamp attribute as you suggested but unfortunately
> that didn't work. I also upgraded to the latest version of tomcat memcached
> session manager (I posted on their forum as well), but no luck.
>
> I've also turned on the following logging in Wicket. Is there any finer
> logging I can enable?
>

I've added more logging to HttpSessionDataStore for 6.23.0/7.3.0:
https://issues.apache.org/jira/browse/WICKET-6098


>
> log4j.logger.org.apache.wicket=TRACE
> log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=TRACE
> log4j.logger.org.apache.wicket.version=TRACE
> log4j.logger.org.apache.wicket.RequestCycle=TRACE
> de.javakaffee.web.msm.level=ALL
>
> The logging you suggested adding did turn up something that is intriguing.
> The page length in bytes is about 2k bytes smaller on the failed request
> than the working request. Same page Id (0). Any thoughts on why that might
> be?
>

It looks like the second page instance has smaller component tree...
To see the difference you will have to add logging
to org.apache.wicket.pageStore.DefaultPageStore#storePage().
Use org.apache.wicket.util.tester.WicketTesterHelper#getComponentData(Page)
to dump the component trees.


>
> Please see logs below:
>
> *LOG - NODE 1 - Loaded the initial page - WORKED*
> 20-Feb-2016 09:47:15.262 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached Loading
> session from memcached: E24FAB17D7B8C7AD74186C659F219E9D
> 20-Feb-2016 09:47:15.262 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.LockingStrategy.lock Locking session
> E24FAB17D7B8C7AD74186C659F219E9D
> 20-Feb-2016 09:47:15.269 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.LockingStrategy.acquireLock Locked session
> E24FAB17D7B8C7AD74186C659F219E9D
> 20-Feb-2016 09:47:15.269 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.LockingStrategy.lock Locked session
> E24FAB17D7B8C7AD74186C659F219E9D
> 20-Feb-2016 09:47:15.274 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes
> loading attribute 'Wicket:SessionUnbindingListener-wicket.Title1Crate' with
> value
> 'org.apache.wicket.session.HttpSessionStore$SessionBindingListener@695de0f1
> '
> 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes
> loading attribute 'wicket:wicket.Title1Crate:page:store:memory' with value
> 'org.apache.wicket.pageStore.memory.PageTable@125b2442'
> 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes
> loading attribute 'wicket:wicket.Title1Crate:session' with value
> 'com._806technologies.title1cratecore.components.T1CSession@1da97278'
> 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes
> loading attribute 'wicket:wicket.Title1Crate:timestamp' with value 'Sat Feb
> 20 09:46:46 CST 2016'
> 20-Feb-2016 09:47:15.281 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes
> loading attribute
> 'wicket:wicket.Title1Crate:wicket:persistentPageManagerData -
> wicket.Title1Crate' with value
> 'org.apache.wicket.page.PageStoreManager$SessionEntry@5f9a337e'
> 20-Feb-2016 09:47:15.282 FINE [http-apr-443-exec-1]
> de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached Found
> session with id E24FAB17D7B8C7AD74186C659F219E9D
> DEBUG - ServletWebRequest  - Calculating context relative path
> from:
> context path '', filterPrefix '', uri '/wicket/page'
> DEBUG - CompoundRequestMapper  - One compatible mapper found for URL
>
> 'wicket/page?0-1.IBehaviorListener.0-pnlMain-pnlUploaderPanel-cntFileUploader=true=eCrate'
> -> 'Mapper: org.apache.wicket.core.request.mapper.PageInstanceMapper;
> Score:
> 2147483647'
> DEBUG - PageAccessSynchronizer - 'http-apr-443-exec-1' attempting to
> acquire lock to page with id '0'
> DEBUG - PageAccessSynchronizer - http-apr-443-exec-1 acquired lock to
> page 0
> INFO  - BlockTimer - getDataObject, t=4 milliseconds
> WARN  - AmazonS3Client - No content length specified for stream
> data.  Stream contents will be buffered in memory and could result in out
> of
> memory errors.
> INFO  - BlockTimer - getDataObject, t=2 milliseconds
> INFO  - BlockTimer - getDataObject, t=9 milliseconds
> DEBUG - Page   - ending request for page [Page class =
> com._806technologies.title1crateweb.MainPage, id = 0, render count = 1],
> request org.apache.wicket.protocol.http.servlet.ServletWebRequest@449d2f28
> DEBUG - Page   - ending request for page [Page class =
> com._806technologies.title1crateweb.MainPage, id = 0, 

Re: Wicket 6 Clustering - Component Not Found Exception

2016-02-20 Thread mashleyttu
Hi Martin, 

Thank you for your quick reply. I had to wait for the weekend for further
testing. I added the timestamp attribute as you suggested but unfortunately
that didn't work. I also upgraded to the latest version of tomcat memcached
session manager (I posted on their forum as well), but no luck.

I've also turned on the following logging in Wicket. Is there any finer
logging I can enable?

log4j.logger.org.apache.wicket=TRACE
log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=TRACE
log4j.logger.org.apache.wicket.version=TRACE
log4j.logger.org.apache.wicket.RequestCycle=TRACE
de.javakaffee.web.msm.level=ALL

The logging you suggested adding did turn up something that is intriguing.
The page length in bytes is about 2k bytes smaller on the failed request
than the working request. Same page Id (0). Any thoughts on why that might
be?

Please see logs below:

*LOG - NODE 1 - Loaded the initial page - WORKED*
20-Feb-2016 09:47:15.262 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached Loading
session from memcached: E24FAB17D7B8C7AD74186C659F219E9D
20-Feb-2016 09:47:15.262 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.LockingStrategy.lock Locking session
E24FAB17D7B8C7AD74186C659F219E9D
20-Feb-2016 09:47:15.269 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.LockingStrategy.acquireLock Locked session
E24FAB17D7B8C7AD74186C659F219E9D
20-Feb-2016 09:47:15.269 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.LockingStrategy.lock Locked session
E24FAB17D7B8C7AD74186C659F219E9D
20-Feb-2016 09:47:15.274 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes  
loading attribute 'Wicket:SessionUnbindingListener-wicket.Title1Crate' with
value
'org.apache.wicket.session.HttpSessionStore$SessionBindingListener@695de0f1'
20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes  
loading attribute 'wicket:wicket.Title1Crate:page:store:memory' with value
'org.apache.wicket.pageStore.memory.PageTable@125b2442'
20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes  
loading attribute 'wicket:wicket.Title1Crate:session' with value
'com._806technologies.title1cratecore.components.T1CSession@1da97278'
20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes  
loading attribute 'wicket:wicket.Title1Crate:timestamp' with value 'Sat Feb
20 09:46:46 CST 2016'
20-Feb-2016 09:47:15.281 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes  
loading attribute
'wicket:wicket.Title1Crate:wicket:persistentPageManagerData -
wicket.Title1Crate' with value
'org.apache.wicket.page.PageStoreManager$SessionEntry@5f9a337e'
20-Feb-2016 09:47:15.282 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached Found
session with id E24FAB17D7B8C7AD74186C659F219E9D
DEBUG - ServletWebRequest  - Calculating context relative path from:
context path '', filterPrefix '', uri '/wicket/page'
DEBUG - CompoundRequestMapper  - One compatible mapper found for URL
'wicket/page?0-1.IBehaviorListener.0-pnlMain-pnlUploaderPanel-cntFileUploader=true=eCrate'
-> 'Mapper: org.apache.wicket.core.request.mapper.PageInstanceMapper; Score:
2147483647'
DEBUG - PageAccessSynchronizer - 'http-apr-443-exec-1' attempting to
acquire lock to page with id '0'
DEBUG - PageAccessSynchronizer - http-apr-443-exec-1 acquired lock to
page 0
INFO  - BlockTimer - getDataObject, t=4 milliseconds
WARN  - AmazonS3Client - No content length specified for stream
data.  Stream contents will be buffered in memory and could result in out of
memory errors.
INFO  - BlockTimer - getDataObject, t=2 milliseconds
INFO  - BlockTimer - getDataObject, t=9 milliseconds
DEBUG - Page   - ending request for page [Page class =
com._806technologies.title1crateweb.MainPage, id = 0, render count = 1],
request org.apache.wicket.protocol.http.servlet.ServletWebRequest@449d2f28
DEBUG - Page   - ending request for page [Page class =
com._806technologies.title1crateweb.MainPage, id = 0, render count = 1],
request org.apache.wicket.protocol.http.servlet.ServletWebRequest@449d2f28
*INFO  - 806HttpSessionDataStoreLog - StoreData session id:
E24FAB17D7B8C7AD74186C659F219E9D page id: 0 byte length: 7097*
INFO  - T806WebApplication - Writing Timestamp to session.
DEBUG - PageAccessSynchronizer - 'http-apr-443-exec-1' released lock to
page with id '0'
DEBUG - PageAccessSynchronizer - 'http-apr-443-exec-1' notifying blocked
threads
20-Feb-2016 09:47:16.335 FINE [http-apr-443-exec-1]
de.javakaffee.web.msm.BackupSessionService.backupSession Starting for
session id E24FAB17D7B8C7AD74186C659F219E9D
20-Feb-2016 

Re: Wicket model problem

2016-02-20 Thread Francois Meillet
Very interesting discussion.
Yes I agree, IDetachListener should only be used as a checker in dev.

François 








Le 20 févr. 2016 à 12:54, Martin Grigorov  a écrit :

> Hi,
> 
> You might be interested in this discussion:
> http://markmail.org/message/qttwc5kunubl6ieo
> 
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
> 
> On Fri, Feb 19, 2016 at 7:19 PM, Francois Meillet <
> francois.meil...@gmail.com> wrote:
> 
>> You can also use a IDetachListener to check that no one LDM (field) is
>> attached after the page#detach() has been called.
>> 
>> In the Application#init() you can add
>> 
>> getFrameworkSettings().setDetachListener(
>> 
>>new IDetachListener() {
>> 
>>@Override
>>public void onDetach(Component component) {
>> 
>>for (Field field :
>> component.getClass().getDeclaredFields()) {
>>field.setAccessible(true);
>> 
>>Class theClass = field.getType();
>>if
>> (LoadableDetachableModel.class.isAssignableFrom(theClass)) {
>> 
>>try {
>>if (((LoadableDetachableModel)
>> field.get(component)).isAttached()) {
>>System.err.println("warning:
>> component:" + component.getClass().getName() + " / " + field.getName() + "
>> is attached");
>>}
>>}
>>//
>>catch (IllegalAccessException e) {
>>e.printStackTrace();
>>}
>>}
>>}
>>}
>> 
>>@Override
>>public void onDestroyListener() {
>> 
>>}
>>}
>>);
>> 
>> 
>> François
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> Le 19 févr. 2016 à 16:47, Bas Gooren  a écrit :
>> 
>>> Hi,
>>> 
>>> I think the only way to track this is with custom code (or with aspects
>> for example).
>>> 
>>> Since the contract of IModel only has detach() (and not isDetached()),
>> this cannot be tracked easily.
>>> 
>>> What I would do in such a case is probably to add a requestcyclelistener
>> which walks a page after a request, iterates (/visits) over all the
>> components and checks their models.
>>> Of course this requires the models to expose a way to check their status
>> and origin.
>>> 
>>> Also, what we do to prevent this: we have an abstract base model called
>> a AbstractConversionModel which takes a parent model (S) and converts
>> to a target type (T), caching the conversion.
>>> This model takes a parent model as input (and subclasses of it require a
>> java 8 Function or expose an abstract method for the conversion etc).
>>> This model also takes care of detaching the parent model.
>>> 
>>> In the end it’s all about education I guess: programmer’s should be
>> careful when chaining models and ensure they detach the parent (/chained)
>> model.
>>> 
>>> Met vriendelijke groet,
>>> Kind regards,
>>> 
>>> Bas
>>> 
>>> Op 19 februari 2016 bij 15:41:03, gmparker2000 (greg.par...@brovada.com)
>> schreef:
>>> 
>>> Thanks for the reply. I suspect this is exactly the case we have created
>> for
>>> ourselves. Although we have a good grasp on the detach process I suspect
>>> that there are places where this rule of thumb is not being followed.
>>> Although the example I gave is somewhat fictitious, any of the LDMs we
>> have
>>> in our framework perform a detach on the parent. In the form there are
>>> numerous places where adhoc anonymous models are created and this is
>>> probably where the problems occur. Is there a recommended way to track
>>> these down? I ended up recompiling a version of Wicket with changes to
>>> LoadableDetachableModel that would essentially track every LDM within a
>>> RequestCycle. At the end of a request cycle I was left with a list of the
>>> models that never got detached. I also added a "whereAmI" member variable
>>> to LDM that would capture the stack trace in the constructor so I could
>>> figure out who instantiated the model in the first place.
>>> 
>>> --
>>> View this message in context:
>> http://apache-wicket.1842946.n4.nabble.com/Wicket-model-problem-tp4673620p4673664.html
>>> Sent from the Users forum mailing list archive at Nabble.com.
>>> 
>>> -
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>> 
>> 
>> 



Re: Change text on wizard buttons.

2016-02-20 Thread Martin Grigorov
Hi,

Just follow the steps at http://wicket.apache.org/start/quickstart.html to
create a mini application that reproduces the problem.
Don't forget to add Svedish version of the resource bundle so we can add it
for the next release!
Thank you!

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Thu, Feb 18, 2016 at 9:48 AM, calle sollander 
wrote:

> Thank you Martin.
> I'll create a ticket, I have never done this before but will read the
> instructions and give it a go next week.
>
> I gave up on the Wizard component and have now built my own little purpose
> built workflow instead.
>
> Regards, Calle
>
> 
> From: Martin Grigorov 
> Sent: Thursday, February 18, 2016 7:44 AM
> To: users@wicket.apache.org
> Subject: Re: Change text on wizard buttons.
>
> Hi,
>
> Please create a ticket with a quickstart application.
> I this you are correct - because of the existence of Wizard.properties
> Wicket doesn't consult with MyApplication_sv.properties.
> A workaround would be to introduce org.apache.wicket.extensions.wizard
> package in your application and put there Wizard_sv.properties.xml
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Wed, Feb 17, 2016 at 9:06 AM, calle sollander 
> wrote:
>
> > Hello!
> >
> > I'm trying to get the buttons in the Wizard component to be in Swedish
> but
> > I can't get it working.
> > I have added this to my properties file:
> >
> > datatable.no-records-found=Din sökning gav ingen träff
> > org.apache.wicket.extensions.wizard.next=Nästa >
> > org.apache.wicket.extensions.wizard.previous=< Föregående
> > org.apache.wicket.extensions.wizard.last=Sista
> > org.apache.wicket.extensions.wizard.finish=Spara
> > org.apache.wicket.extensions.wizard.cancel=Avbryt
> >
> > I use a Wizard with two simple WizardSteps like this:
> >
> > System.out.println("previous: "
> >
> +Application.get().getResourceSettings().getLocalizer().getString("org.apache.wicket.extensions.wizard.previous",
> > null, null, null, null, "DEFAULT"));
> > WizardModel m = new WizardModel();
> > m.add(new DummyStep());
> > m.add(new DummyStep2());
> > Wizard w = new Wizard("wizard", m);
> > add(w);
> >
> > The sys.out above prints the Swedish word for previous but the button in
> > the wizard is in English.
> > If I change the Locale to e.g. French the buttons show French texts, it
> > seems like the wizard is always using the Wizard.properties file and
> since
> > there
> > is no Swedish version it defaults to the English one.
> > The "datatable.no-records-found" property works like it is supposed to in
> > a Datatable on the same page.
> >
> > Is it not possible to override the button texts in a Wizard?
> > Should I use some other component for my Wizard?
> >
> > Regards, Calle
> >
> >
>
> -
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>


Re: Wicket model problem

2016-02-20 Thread Martin Grigorov
Hi,

You might be interested in this discussion:
http://markmail.org/message/qttwc5kunubl6ieo

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Fri, Feb 19, 2016 at 7:19 PM, Francois Meillet <
francois.meil...@gmail.com> wrote:

> You can also use a IDetachListener to check that no one LDM (field) is
> attached after the page#detach() has been called.
>
> In the Application#init() you can add
>
> getFrameworkSettings().setDetachListener(
>
> new IDetachListener() {
>
> @Override
> public void onDetach(Component component) {
>
> for (Field field :
> component.getClass().getDeclaredFields()) {
> field.setAccessible(true);
>
> Class theClass = field.getType();
> if
> (LoadableDetachableModel.class.isAssignableFrom(theClass)) {
>
> try {
> if (((LoadableDetachableModel)
> field.get(component)).isAttached()) {
> System.err.println("warning:
> component:" + component.getClass().getName() + " / " + field.getName() + "
> is attached");
> }
> }
> //
> catch (IllegalAccessException e) {
> e.printStackTrace();
> }
> }
> }
> }
>
> @Override
> public void onDestroyListener() {
>
> }
> }
> );
>
>
> François
>
>
>
>
>
>
>
>
> Le 19 févr. 2016 à 16:47, Bas Gooren  a écrit :
>
> > Hi,
> >
> > I think the only way to track this is with custom code (or with aspects
> for example).
> >
> > Since the contract of IModel only has detach() (and not isDetached()),
> this cannot be tracked easily.
> >
> > What I would do in such a case is probably to add a requestcyclelistener
> which walks a page after a request, iterates (/visits) over all the
> components and checks their models.
> > Of course this requires the models to expose a way to check their status
> and origin.
> >
> > Also, what we do to prevent this: we have an abstract base model called
> a AbstractConversionModel which takes a parent model (S) and converts
> to a target type (T), caching the conversion.
> > This model takes a parent model as input (and subclasses of it require a
> java 8 Function or expose an abstract method for the conversion etc).
> > This model also takes care of detaching the parent model.
> >
> > In the end it’s all about education I guess: programmer’s should be
> careful when chaining models and ensure they detach the parent (/chained)
> model.
> >
> > Met vriendelijke groet,
> > Kind regards,
> >
> > Bas
> >
> > Op 19 februari 2016 bij 15:41:03, gmparker2000 (greg.par...@brovada.com)
> schreef:
> >
> > Thanks for the reply. I suspect this is exactly the case we have created
> for
> > ourselves. Although we have a good grasp on the detach process I suspect
> > that there are places where this rule of thumb is not being followed.
> > Although the example I gave is somewhat fictitious, any of the LDMs we
> have
> > in our framework perform a detach on the parent. In the form there are
> > numerous places where adhoc anonymous models are created and this is
> > probably where the problems occur. Is there a recommended way to track
> > these down? I ended up recompiling a version of Wicket with changes to
> > LoadableDetachableModel that would essentially track every LDM within a
> > RequestCycle. At the end of a request cycle I was left with a list of the
> > models that never got detached. I also added a "whereAmI" member variable
> > to LDM that would capture the stack trace in the constructor so I could
> > figure out who instantiated the model in the first place.
> >
> > --
> > View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/Wicket-model-problem-tp4673620p4673664.html
> > Sent from the Users forum mailing list archive at Nabble.com.
> >
> > -
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > For additional commands, e-mail: users-h...@wicket.apache.org
> >
>
>


Re: Wicketstuff editable grid - 7.1.0

2016-02-20 Thread Martin Grigorov
Hi,

Please share the mini application somewhere, e.g. GitHub.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Fri, Feb 19, 2016 at 7:30 PM, Mihir Chhaya 
wrote:

> Ok, so creating a small project with two panels(Person and Customer) and a
> page for similar use case resulted in following stacktrace.
> The panels are added in the order of PersonPanel, CustomerPanel in the
> parent page.
>
> The line# 163 in onSave method of EditableGrid is calling
> EditableGrid.this.onSave(target, rowModel); I wonder if the reference to
> this is referring to the first EditableGrid with Person records. Switching
> the order of adding grid panels throws the error other way around;
> complaining for Person cannot be cast to Customer.
>
> *java.lang.ClassCastException: spikes.domain.Customer cannot be cast
> to spikes.domain.Person*
>  at spikes.view.PersonPanel$1.onSave(PersonPanel.java:68)
>  at org.wicketstuff.egrid.EditableGrid$3.onSave(EditableGrid.java:163)
>  at
> org.wicketstuff.egrid.column.EditableGridActionsColumn$1.onSave(EditableGridActionsColumn.java:34)
>  at
> org.wicketstuff.egrid.column.EditableGridActionsPanel$2.onSuccess(EditableGridActionsPanel.java:71)
>  at
> org.wicketstuff.egrid.component.EditableGridSubmitLink.onSubmit(EditableGridSubmitLink.java:37)
>  at
> org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:110)
>  at
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:215)
>  at
> org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1307)
>  at
> org.wicketstuff.egrid.EditableGrid$NonValidatingForm.process(EditableGrid.java:79)
>  at
> org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:795)
>  at
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171)
>  at
> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155)
>  at
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:588)
>  at java.lang.reflect.Method.invoke(Method.java:606)
>  at
> org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
>  at
> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
>  at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
>  at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
>  at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:865)
>  at
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
>  at
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
>  at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
>  at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
>  at
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
>  at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
>  at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284)
>  at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>  at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>  at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>  at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>  at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>  at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>  at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
>  at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>  at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>  at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>  at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>  at
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>  at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>  at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>  at java.lang.Thread.run(Thread.java:744)
>
> Complete stack:
>
> 

Re: Quesitont about .repeater.DataTableFilterToolbarPage : mutliple fitered

2016-02-20 Thread Martin Grigorov
Hi,

On Sat, Feb 20, 2016 at 12:38 AM, andre seame  wrote:

> Hello,
>
>
> The repeater.DataTableFilterToolpage <
> http://examples6x.wicket.apache.org/repeater/wicket/bookmarkable/org.apache.wicket.examples.source.SourcesPage?1_class=org.apache.wicket.examples.repeater.DataTableFilterToolbarPage>
> demonstrates a unique filter.
>
>
> My questions are :
>
> - Is it possible to have several sortable columns.
>

Do you mean filterable instead of sortable?


>
> - How to put the 2 sortable fields into the th ? Or Foreach sortable
> column, I would like to add the 2 fields in the associated column.
>
>
> For instance:
>
> 
>  
>Born datefrom: ...
>Death Datefrom: ...
>
>
>
> Thanks,
>
> PHL.
>