Re: Refreshing loadable detachable model object inside an ajax call

2011-05-09 Thread lucast
I have finally solved this issue.
In my original scenario, I was implementing an anonymous class and inside
that anonymous class I was calling parentService().load(Parent.class, id);.
To solve this, created an inner class to replace the anonymous class and
when initialising the inner class objects, I passed the containing panel's
model (which is a loadableDetachableModel object).
I simply called the (Parent) model.getObject();  on the inner class function
that responds to ajax calls in order to have a fresh parent object from the
db.

That solved all the problems mentioned in my original post.


--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3509490.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: Refreshing loadable detachable model object inside an ajax call

2011-04-18 Thread lucast
Hi Clint, 
Here is the example of EntityModel as taken from 
http://wicketinaction.com/2008/09/building-a-smart-entitymodel/
http://wicketinaction.com/2008/09/building-a-smart-entitymodel/ .
I've added the constructor that calls super().
public class EntityModelT extends AbstractEntityModelT {
public EntityModel(Class? extends T clazz, Serializable id) {
super(clazz, id);   
}
@Override
protected T load(Class clazz, Serializable id) {
return WicketApplication.get().get_service().load(clazz, id);
}
}
Now my I have two errors from my IDE (Eclipse), the first one on extends
AbstractEntityModelT {. On type T, it says: Bound mismatch: The type T is
not a valid substitute for the bounded parameter T extends Identifiable?
of the type AbstractEntityModelT.
Would you know what is going on here? I am following the exact example.

The second error my IDE is complaining about is on return
WicketApplication.get().get_service().load(clazz, id);: The method
load(ClassT, long) in the type Service is not applicable for the arguments
(Class, Serializable).
That's fair enough since all the objects ID i'm persisting to DB are of type
Long. 
But why is the example using type Serializable instead of Long? 
If you look at the section Using EntityModel to bind to Forms, from the
link above you will see that the values passed are class and Long:
 public EditPersonPage(Long personId)
{
this(new EntityModelPerson(Person.class, personId));
}

I fear I'm missing a very small detail that's stopping me from having this
working.
Thanks, Lucas



--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3456789.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: Refreshing loadable detachable model object inside an ajax call

2011-04-18 Thread jcgarciam
Does your Person class implements the 'Identifiable' interface?

On Mon, Apr 18, 2011 at 4:27 AM, lucast [via Apache Wicket] 
ml-node+3456789-549093517-65...@n4.nabble.com wrote:

 Hi Clint,
 Here is the example of EntityModel as taken from
 http://wicketinaction.com/2008/09/building-a-smart-entitymodel/.
 I've added the constructor that calls super().
 public class EntityModelT extends AbstractEntityModelT {
 public EntityModel(Class? extends T clazz, Serializable id) {
 super(clazz, id);
 }
 @Override
 protected T load(Class clazz, Serializable id) {
 return WicketApplication.get().get_service().load(clazz,
 id);
 }
 }
 Now my I have two errors from my IDE (Eclipse), the first one on *extends
 AbstractEntityModelT {*. On type T, it says: Bound mismatch: The type T
 is not a valid substitute for the bounded parameter T extends
 Identifiable? of the type AbstractEntityModelT.
 Would you know what is going on here? I am following the exact example.

 The second error my IDE is complaining about is on *return
 WicketApplication.get().get_service().load(clazz, id);*: The method
 load(ClassT, long) in the type Service is not applicable for the arguments
 (Class, Serializable).
 That's fair enough since all the objects ID i'm persisting to DB are of
 type Long.
 But why is the example using type Serializable instead of Long?
 If you look at the section Using EntityModel to bind to Forms, from the
 link above you will see that the values passed are class and Long:
  public EditPersonPage(Long personId)
 {
 this(new EntityModelPerson(Person.class, personId));
 }

 I fear I'm missing a very small detail that's stopping me from having this
 working.
 Thanks, Lucas



 --
  If you reply to this email, your message will be added to the discussion
 below:

 http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3456789.html
  To start a new topic under Apache Wicket, email
 ml-node+1842946-398011874-65...@n4.nabble.com
 To unsubscribe from Apache Wicket, click 
 herehttp://apache-wicket.1842946.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_codenode=1842946code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=.





-- 

JC


--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3457165.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: Refreshing loadable detachable model object inside an ajax call

2011-04-18 Thread lucast
Hi jcgarciam, 
I have made sure that my original class Parent does implement class
IdentifiableSerializable and I have now modified EntityModelT to public
class EntityModelT extends AbstractEntityModelParent {. That got rid the
error message.  So that's great. Thanks!
I will try to have it running later on during the day. 

Why does AbstractEntityModel class on 
http://wicketinaction.com/2008/09/building-a-smart-entitymodel/
http://wicketinaction.com/2008/09/building-a-smart-entitymodel/  uses 
Serializable id, when later on,  under Using EntityModel to bind to Forms 
it is passing a value of type Long to initialise the EntityModel class? 
Based on the example of the EntityModel.load() function, should I change my
WicketApplication.get().get_service().load(clazz, id) to accept Serialisable
instead of Long? 
Maybe I'm missing something basic here. But your suggestion helped to get
past the initial hurdle.


--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3457227.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: Refreshing loadable detachable model object inside an ajax call

2011-04-18 Thread Clint Checketts
Your issue with the generics is you need to tell it that 'T extends
Indetifiable', or take it out entirely if you are going to explicitly tell
it that you are using the Parent class.

Also feel free to make the argument match what your load method requires.
The article could be referencing code that is old or whatever. Also keep in
mind that the class Long implements Serializable, but the primitive long
(lower case 'l') isn't an object and doesn't have a type inheritance (even
though it will serialize, but that's a disfferent topic).


-Clint



public class EntityModelT *extends Identifiable* extends
AbstractEntityModelT {
   public EntityModel(Class? extends T clazz, Serializable id) {
   super(clazz, id);
   }
   @Override
   protected T load(Class clazz, Serializable id) {
   return WicketApplication.get().get_
service().load(clazz, id);
   }
}


On Mon, Apr 18, 2011 at 6:16 AM, lucast lucastol...@hotmail.com wrote:

 Hi jcgarciam,
 I have made sure that my original class Parent does implement class
 IdentifiableSerializable and I have now modified EntityModelT to public
 class EntityModelT extends AbstractEntityModelParent {. That got rid
 the
 error message.  So that's great. Thanks!
 I will try to have it running later on during the day.

 Why does AbstractEntityModel class on
 http://wicketinaction.com/2008/09/building-a-smart-entitymodel/
 http://wicketinaction.com/2008/09/building-a-smart-entitymodel/  uses
 Serializable id, when later on,  under Using EntityModel to bind to Forms
 it is passing a value of type Long to initialise the EntityModel class?
 Based on the example of the EntityModel.load() function, should I change my
 WicketApplication.get().get_service().load(clazz, id) to accept
 Serialisable
 instead of Long?
 Maybe I'm missing something basic here. But your suggestion helped to get
 past the initial hurdle.


 --
 View this message in context:
 http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3457227.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: Refreshing loadable detachable model object inside an ajax call

2011-04-17 Thread Clint Checketts
The 'implicit super constructor' warning means that in your constructor you
need to call 'super()'

The 'complains on type T' part I'd need a little more info. Feel free to
post the exact lines of code.

-Clint

On Sat, Apr 16, 2011 at 2:21 AM, lucast lucastol...@hotmail.com wrote:

 However, when I try to extend the AbstractEntityModel as shown on
 EntityModelT extends AbstractEntityModelT example, my IDE starts to
 complaint with things like Implicit super constructor
 AbstractEntityModelT() is undefined for default constructor. Must define
 an explicit constructor.
 as for the extends AbstractEntityModelT it also complaints on type T.




Re: Refreshing loadable detachable model object inside an ajax call

2011-04-16 Thread lucast
Hi Iain, 
Thank you for your reply.
I have tried to follow the examples from 
http://wicketinaction.com/2008/09/building-a-smart-entitymodel/
http://wicketinaction.com/2008/09/building-a-smart-entitymodel/ .
I have successfully implemented both the Identifiable interface from article
and also, the last example of AbstractEntityModelT extends Identifiable ?
 implements IModelT.
However, when I try to extend the AbstractEntityModel as shown on
EntityModelT extends AbstractEntityModelT example, my IDE starts to
complaint with things like Implicit super constructor
AbstractEntityModelT() is undefined for default constructor. Must define
an explicit constructor. 
as for the extends AbstractEntityModelT it also complaints on type T.

I forgot that there are also good examples on 
https://cwiki.apache.org/WICKET/working-with-wicket-models.html
https://cwiki.apache.org/WICKET/working-with-wicket-models.html , in
particular on the Read/Write Detachable Model that I need to give it a
proper try since at the time of implementing my solution,
LoadableDetachableModel was good enough.

As soon as I have figured it out, I will post my findings. Since it is not a
show stopper, I shall park it for this week and come back to it in a week's
time.
Thank you, Iain and @Clint for your posts. They are much appreciated.
Kind regards,
Lucas


--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3453635.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: Refreshing loadable detachable model object inside an ajax call

2011-04-14 Thread Iain Reddick
Firstly, that LDM code is broken - calling detach() on load() makes no sense.

Also, it will hit hibernate on every call to getObject(), as you aren't caching 
the loaded Parent entity. This is probably the cause of the hibernate 
exceptions you are seeing.

Check out http://wicketinaction.com/2008/09/building-a-smart-entitymodel/ for a 
solid persistence backed LDM implementation.

Unrelated, your ParentsService.load() method probably doesn't need to take the 
entity class a parameter - the service should know the entity type it is 
querying hibernate for.

- Original Message -
From: lucast lucastol...@hotmail.com
To: users@wicket.apache.org
Sent: Wednesday, 13 April, 2011 7:20:15 PM
Subject: Re: Refreshing loadable detachable model object inside an ajax call

Hi Clint, thanks for your email.

After reading your post, this is how I've implemented the LDM class:


public class LoadableParentModel extends LoadableDetachableModel {

Long id;

public LoadableParentModel(Long id){

this.id = id;

}

@Override   protected Parent load() {

Parent Parent =
WicketApplication.get().getParents_service().load(Parent.class, id);

detach();

return Parent;

}

}




Is that what you mean by explicitly calling .detach() on the LDM?

I apologise if I didn't get that right straight away. I have implemented it
as in the above example but when I call (Parent) model.getObject(); I get
the same exception as before.

--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3447904.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


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



Re: Refreshing loadable detachable model object inside an ajax call

2011-04-14 Thread lucast
Thank you, Iain.
I shall try that.
Cheers,
Lucas

--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3450740.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: Refreshing loadable detachable model object inside an ajax call

2011-04-14 Thread Jeremy Thomerson
On Thu, Apr 14, 2011 at 3:51 PM, Iain Reddick
iain.redd...@beatsystems.comwrote:

 Firstly, that LDM code is broken - calling detach() on load() makes no
 sense.


Right - you should *not* call detach from within load().


 Also, it will hit hibernate on every call to getObject(), as you aren't
 caching the loaded Parent entity. This is probably the cause of the
 hibernate exceptions you are seeing.


Wrong - LDM caches the returned object within it.  That's the whole point of
LDM.


 Check out http://wicketinaction.com/2008/09/building-a-smart-entitymodel/for 
 a solid persistence backed LDM implementation.

 Unrelated, your ParentsService.load() method probably doesn't need to take
 the entity class a parameter - the service should know the entity type it is
 querying hibernate for.


-- 
Jeremy Thomerson
http://wickettraining.com
*Need a CMS for Wicket?  Use Brix! http://brixcms.org*


Refreshing loadable detachable model object inside an ajax call

2011-04-13 Thread lucast
Hi there,
I have a problem reloading/refreshing Parent object P from inside an Ajax
call.

The conditions are as follow:

I have Parent object P and child object C. 
Child object has a unique time-stamp constraint.
Child objects can be created or updated from two different pages, page A
and/or page B.


In order to avoid unique constraint exception, I want to check if child with
time-stamp T exists for parent P. It is my intention, therefore to refresh
parent P in order to check.

On the main panel I am using loadable detachable model and I am passing that
loadable detachable model object to the panel where I want to do the
checking.


When I call (Parent) model.getObject(); I get the following exception:

ERROR - RequestCycle   - a different object with the same
identifier value was already associated with the session:
[com.myProject.dbEntities.domain.Parent#1364]

org.hibernate.NonUniqueObjectException: a different object with the same
identifier value was already associated with the session:
[com.myProject.dbEntities.domain.Parent#1364]


The way I am implementing the load function for the Loadable Detachable
Model is just the standard: parentService().load(Parent.class, id);

How can I refresh the Loadable Detachable Model object without getting the
above exception and without having to refresh the entire page?


Any help will be greatly appreciated.


--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3446979.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: Refreshing loadable detachable model object inside an ajax call

2011-04-13 Thread Clint Checketts
Have you tried explicitly calling .detach() on the LDM?

The net getObject() call should force the load() method to get called again.

-Clint

On Wed, Apr 13, 2011 at 7:16 AM, lucast lucastol...@hotmail.com wrote:

 Hi there,
 I have a problem reloading/refreshing Parent object P from inside an Ajax
 call.

 The conditions are as follow:

 I have Parent object P and child object C.
 Child object has a unique time-stamp constraint.
 Child objects can be created or updated from two different pages, page A
 and/or page B.


 In order to avoid unique constraint exception, I want to check if child
 with
 time-stamp T exists for parent P. It is my intention, therefore to refresh
 parent P in order to check.

 On the main panel I am using loadable detachable model and I am passing
 that
 loadable detachable model object to the panel where I want to do the
 checking.


 When I call (Parent) model.getObject(); I get the following exception:

 ERROR - RequestCycle   - a different object with the same
 identifier value was already associated with the session:
 [com.myProject.dbEntities.domain.Parent#1364]

 org.hibernate.NonUniqueObjectException: a different object with the same
 identifier value was already associated with the session:
 [com.myProject.dbEntities.domain.Parent#1364]


 The way I am implementing the load function for the Loadable Detachable
 Model is just the standard: parentService().load(Parent.class, id);

 How can I refresh the Loadable Detachable Model object without getting the
 above exception and without having to refresh the entire page?


 Any help will be greatly appreciated.


 --
 View this message in context:
 http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3446979.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: Refreshing loadable detachable model object inside an ajax call

2011-04-13 Thread lucast
Hi Clint, thanks for your email.

After reading your post, this is how I've implemented the LDM class:


public class LoadableParentModel extends LoadableDetachableModel {

Long id;

public LoadableParentModel(Long id){

this.id = id;

}

@Override   protected Parent load() {

Parent Parent =
WicketApplication.get().getParents_service().load(Parent.class, id);

detach();

return Parent;

}

}




Is that what you mean by explicitly calling .detach() on the LDM?

I apologise if I didn't get that right straight away. I have implemented it
as in the above example but when I call (Parent) model.getObject(); I get
the same exception as before.

--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Refreshing-loadable-detachable-model-object-inside-an-ajax-call-tp3446979p3447904.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