Thanks Michael for your quick response.

Let me know if I got it correctly:

I created the following generic model:
public class GenericDetachableModel extends LoadableDetachableModel {
        private final long id;
        private final Service service;
        
        public GenericDetachableModel(T object, Service service) {
                this(object, object.getId(), service);
        }
        
        public GenericDetachableModel(T object, long id, Service service) {
                super(object);
                if (id == 0) {
                        throw new IllegalArgumentException();
                }
                this.id = id;
                this.service = service;
        }
        
        @Override
        protected T load() {
                return (T) service.find(id);
        }
}


Now, when I create the DataProvider in my page I can use:

      myModel = new GenericDetachableModel( domainObjectY, aService );
      ...
      myDataProv = new MyDataProvider( myModel, aService );

And then inside MyDataProvider I can use:

      public MyDataProvider(IModel myModel, Service aService) {
          this.myModel = myModel;
          this.aService = aService;
      }

      public int size() { 
          return service.countAllByDomainObjectY( myModel.getObject() ); 
      } 

      public void detach() {
          myModel.detach();
      }

Is this ok?
Should myModel property in MyDataProvider be @Transient?
Is it ok to call myModel.detach() inside the MyDataProvider's detach? or
should I do it outside? (I mean, from the page where I created the
DataProvider)

Thanks in advance!


--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/DataProvider-calling-a-Service-Dao-that-requires-a-domain-object-tp3341572p3341770.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to