yeah, I only just committed the feature. So you'll need to build from source.
Cheers Dan On 9 October 2013 04:53, Ezequiel Celiz <[email protected]> wrote: > Ok, what I wrote in the previous mail does not help ... > > I looked in the class ToDoItem.java in the github's repository [1] > and found: > > org.apache.isis.applib.annotation.Bulk import; > org.apache.isis.applib.annotation.Bulk.InteractionContext import; > > I'll have to update my applib to implement the solution ... > > [1] > > https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java > > > 2013/10/8 Ezequiel Celiz <[email protected]> > > > Dan, thanks for the interest > > > > When I try to implement the solution that you suggest, I find that > > InteractionContext is an interface, and this can be found in the package > > org.apache.isis.core.metamodel.interactions. * ...... > > > > Then add in the pom.xml of "project-dom" this dependency: > > > > <dependency> > > <groupId> org.apache.isis.progmodels </ groupId> > > <artifactId> wrapper-metamodel </ artifactId> > > <version> 0.2.0-incubating </ version> > > </ dependency> > > > > Now I can use InteractionContext.java > > > > However, I can't make use of: > > final InteractionContext ctxt = InteractionContext.current.get(); > > because InteractionContext.current.get() does not exist. > > > > Apologies Dan, that's what I can be doing wrong? > > > > regards > > Ezequiel > > > > > > 2013/10/8 Dan Haywood <[email protected]> > > > >> OK, I've committed ISIS-559 [1], which implements the above pattern. > >> > >> Anyone... feel free to resurrect this thread if you take great exception > >> to > >> this implementation... > >> > >> Dan > >> > >> [1] https://issues.apache.org/jira/browse/ISIS-559 > >> > >> > >> On 8 October 2013 20:43, Dan Haywood <[email protected]> > >> wrote: > >> > >> > > >> > > >> > > >> > On 8 October 2013 19:16, Ezequiel Celiz <[email protected]> wrote: > >> > > >> >> Hi community > >> >> > >> >> > >> > Hi Ezequiel, > >> > I'm cc'ing dev on this reply, since some of the committers might want > to > >> > remark on my proposed solution here :-) > >> > > >> > > >> > > >> > > >> >> When using the annotation @Bulk in action, you can apply changes to > the > >> >> list of selected objects. > >> >> > >> >> I would be interested to use this list of items to send to a service > >> >> function entity and to apply the data supplied by the user (in the > >> >> WebForm) > >> >> to this. > >> >> > >> >> Is it possible? > >> >> > >> > I hope I was clear on what I need > >> >> > >> >> > >> > yes, the request makes sense, but unfortunately right now there's way > to > >> > get this information. > >> > > >> > Arguably the "right" thing to do would be for bulk actions to be > >> > implemented as an action on a domain service that takes a list of > >> object. > >> > However, making this change would be a big deal, and isn't one that I > >> want > >> > to embark at the moment. > >> > > >> > What would be easy (though I'm not sure if it's reasonable or not) > would > >> > be to define a ThreadLocal in the applib, and use this as a means to > >> pass > >> > context information. > >> > > >> > I've just spiked this, it works well enough: > >> > > >> > > >> > @Bulk > >> > public ToDoItem completed() { > >> > ... > >> > > >> > final BulkInteractionContext ctxt = > >> Bulk.interactionContext.get(); > >> > > >> > @SuppressWarnings("unused") > >> > List<Object> allObjects = ctxt.getDomainObjects(); > >> > > >> > LOG.debug("completed: " > >> > + ctxt.getIndex() + > >> > " [" + ctxt.getSize() + "]" > >> > + (ctxt.isFirst() ? " (first)" : "") > >> > + (ctxt.isLast() ? " (last)" : "")); > >> > > >> > ... > >> > } > >> > > >> > when I run this with 3 todo items selected, my log prints out: > >> > > >> > 20:36:30,351 [ToDoItem 2091197094@qtp-722659319-1 DEBUG] > >> > completed: 0 [3] (first) > >> > 20:36:30,371 [ToDoItem 2091197094@qtp-722659319-1 DEBUG] > >> > completed: 1 [3] > >> > 20:36:30,373 [ToDoItem 2091197094@qtp-722659319-1 DEBUG] > >> > completed: 2 [3] (last) > >> > > >> > The idea, then, is that you could write the action to be a no-op > except > >> > for when called for the first (or last) time, in which case it could > >> work > >> > on all the objects provided via ctxt.getDomainObjects(). > >> > > >> > ~~~ > >> > I'm not sure if using a ThreadLocal in this way is just too hacky for > >> > words... but if no-one objects, I'll check it in anyway.... > >> > > >> > > >> > > >> > > >> >> Thanks as always! > >> >> regards > >> >> Ezequiel > >> >> > >> > > >> > Cheers > >> > Dan > >> > > >> > > >> > > > > >
