Fair enough. But then how would you expect the framework's viewer to be able to also do this (instantiate and populate the Pageable).
Let me step back a bit. When the framework iterates over your domain object classes, it looks for methods that meet certain naming conventions and from this it builds up its metamodel. These methods are then invoked by the framework when the domain object is rendered/interacted with through the generic Wicket viewer. For example, if there's a method called placeOrder(Product, int) and a supporting method called validate0PlaceOrder(Product), it's the framework that figures out which Product to pass as an argument. It's not possible for the framework to be able to "magically" support your proposed getXxx(Pageable) because to so would require it to have knowledge of how to instantiate and populate the Pageable argument. If you have a proposal as to how it might, do explain / raise a ticket. Thx Dan On Fri, 10 Feb 2017 at 06:24 Arjun Gica Manipes <[email protected]> wrote: > Hi Dan, > > In our implementation the viewer instantiates and populates the Pageable > object. > > -----Original Message----- > From: Dan Haywood [mailto:[email protected]] > Sent: Thursday, February 09, 2017 6:54 PM > To: [email protected] > Subject: Re: Apply pagination to collection (parented list) > > Ok, but I still don't understand I'm afraid... what would instantiate and > populate the Pageable object? > > On Thu, 9 Feb 2017, 09:38 Arjun Gica Manipes, <[email protected]> > wrote: > > > Hi Dan, > > > > Thank you for your response. > > > > We plan it to use on ViewModel only. There's no problem on DataNucleus. > > We want to add an extra parameter (Pageable) to getProperty() method > > located at CollectionAccessorFacetViaAccessor.java where the actual > > invocation happens. > > > > ObjectAdapter.InvokeUtils.invoke(method, pageable, owningAdapter); > > > > > > Thanks and best regards, > > Arjun Gica Manipes > > > > -----Original Message----- > > From: Dan Haywood [mailto:[email protected]] > > Sent: Thursday, February 09, 2017 2:53 PM > > To: [email protected] > > Subject: Re: Apply pagination to collection (parented list) > > > > Hi Arjun, > > and welcome to the mailing list. > > > > Sounds like you've already delved quite a bit into the framework's > > inner workings - that's nice to see! > > > > It's not going to be possible to do pagination this way, I'm afraid, > > though there is pagination support already available, implemented at > > the UI layer rather than in the domain layer. > > > > I was about to say that providing a Pageable as an arg will fail > > because JDO/Datanucleus expects there to be a regular getter/setter to > > populate the collection (assuming it's a regular "parented" > > collection), but actually that's wrong - DN can just use the underlying > instance field. > > > > So, yes, the issue really is that getXxx(Pageable) isn't part of the > > Apache Isis framework's coding conventions (aka programming model); as > > you've uncovered it's current implementation ignores any getters that > > takes args. > > There's perhaps an argument that it should throw an exception flagging > > the fact that a getter with an arg is invalid. By all means raise a > > ticket on that if you wish via our JIRA... should be easy to implement. > > > > My question to you is, with getXxx(Pageable), what would be > > responsible for populating the Pageable object? > > > > Meantime, to do pagination the way we currently have it designed, > > using @CollectionLayout#paged [1] > > > > HTH > > Dan > > > > [1] > > http://isis.apache.org/guides/rgant.html#_rgant-CollectionLayout_paged > > > > > > > > On Thu, 9 Feb 2017 at 01:12 Arjun Gica Manipes <[email protected]> > > wrote: > > > > > Hi Dan, > > > > > > I'm quite new to Apache ISIS. And I am trying to apply pagination to > > > Collections (parented list). > > > What I am trying to do is to add extra parameter to the default > > > getter method of the collection. > > > > > > @Collection(editing = Editing.DISABLED) > > > @CollectionLayout(defaultView = "table") @Getter private > > > List<Person> members = new ArrayList<>(); > > > > > > The default getter method is: > > > public List<Person> getMembers() { > > > ... > > > } > > > > > > I am trying to do this, > > > public List<Person> getMembers(final Pageable pageable) { ... > > > } > > > Pageable contains parameters needed for pagination such us > > > pageNumber, pageSize and etc. > > > > > > But the problem is it's not recognize as its getter because it has a > > > parameter. > > > So far, we have found out that the newly created method with > > > parameter is remove via findAndRemoveCollectionAccessors() method > > > located at CollectionAccessorFacetViaAccessorFactory.java > > > > > > Any idea or suggestion for its implementation? > > > > > > > > > Thanks and best regards, > > > Arjun Gica Manipes > > > > > > > > >
