And removing ~/,m2/repository/org/apache/isis before mvn clean install is
also worth trying.

On 24 October 2015 at 12:13, Jeroen van der Wal <[email protected]> wrote:

> You could try a mvn clean install and reimport the project into Intellij.
>
> On 24 October 2015 at 03:01, Stephen Cameron <[email protected]>
> wrote:
>
>> What do I have to change to go from 1.9.0 to 1.10.0-SNAPSHOT?
>>
>>  I just changed version number in pom.xml but then I get the dreaded guice
>> cannot instantiate class ... error, last time I fixed this by updating
>> simpleapp with my classes.  Now it looks like the same thing is required
>> again to get a working version :(
>>
>>
>>
>> On Thu, Oct 22, 2015 at 12:44 AM, Cesar Lugo <[email protected]>
>> wrote:
>>
>> > Great!
>> >
>> > -----Original Message-----
>> > From: Dan Haywood [mailto:[email protected]]
>> > Sent: Wednesday, October 21, 2015 2:57 AM
>> > To: users
>> > Subject: Re: Automatic created-by and modified-by property updates
>> >
>> > Just to close off this thread... in 1.10.0-SNAPSHOT there is built-in
>> > support for this feature... just implement Timetstampable [1]
>> >
>> > Cheers
>> > Dan
>> >
>> > [1] http://isis.apache.org/guides/rg.html#_rg_classes_roles
>> >
>> > On 28 September 2015 at 04:01, Stephen Cameron <
>> [email protected]
>> > >
>> > wrote:
>> >
>> > > Hi Dan,
>> > >
>> > > I tried this and its not correct, I get the open and close methods
>> > > being called over and over whenever I open and close an object in the
>> > > UI. but the jdo listener method preStore (InstanceLifecycleEvent
>> > > event) never gets called.
>> > >
>> > > I pictured open()  and close() being called just once as the DOMAIN
>> > > service singleton is created by Isis and then it listens on the JDO
>> > > events as each entity goes through its lifecycle.
>> > >
>> > >  I will put this aside as its not the main priority. I'll read up and
>> > > understand the jdo events to find an answer, this must be close to
>> > correct.
>> > >
>> > >
>> > > On Wed, Sep 16, 2015 at 4:02 PM, Dan Haywood
>> > > <[email protected]
>> > > >
>> > > wrote:
>> > >
>> > > > Hi Steve,
>> > > >
>> > > > Although there isn't any direct support for this, it's should be
>> > > relatively
>> > > > easy to do by using the underlying JDO API.
>> > > >
>> > > > As a quick code sketch:
>> > > >
>> > > > public interface CreateTrackingEntity {
>> > > >     void setCreatedBy(String createdBy);
>> > > >     void setCreatedOn(DateTime createdOn); }
>> > > >
>> > > > public interface ModifyTrackingEntity {
>> > > >     void setModifiedBy(String username);
>> > > >     void setModifiedOn(DateTime modifiedOn); }
>> > > >
>> > > >
>> > > > Your entity should implement one or both of the above.
>> > > >
>> > > > Then, define a service such as:
>> > > >
>> > > > @RequestScoped
>> > > > @DomainService(nature=NatureOfService.DOMAIN)
>> > > > public class UpdateableEntityServices implements
>> > > > javax.jdo.listener.StoreLifecycleListener {
>> > > >
>> > > >     @PostConstruct
>> > > >     public void open() {
>> > > >
>> > > >
>> > > >
>> > >
>> >
>> isisJdoSupport.getJdoPersistenceManager().addInstanceLifecycleListener(this);
>> > > >     }
>> > > >
>> > > >     @PreDestroy
>> > > >     public void close() {
>> > > >
>> > > >
>> > > >
>> > >
>> >
>> isisJdoSupport.getJdoPersistenceManager().removeInstanceLifecycleListener(this);
>> > > >     }
>> > > >
>> > > >     @Programmatic
>> > > >     public void preStore (InstanceLifecycleEvent event) {
>> > > >
>> > > >         final Object pi = event.getPersistentInstance();
>> > > >
>> > > >         if(pi instanceof org.datanucleus.enhancement.Persistable) {
>> > > >             boolean isPersistent =
>> > > > ((org.datanucleus.enhancement.Persistable)pi).dnIsPersistent();
>> > > >
>> > > >             if(!isPersistent) {
>> > > >                 if(pi instanceof CreateTrackingEntity) {
>> > > >
>> > > >  ((CreateTrackingEntity)pi).setCreatedBy(container.getUserName());
>> > > >
>> > > >
>> ((CreateTrackingEntity)pi).setCreatedOn(clockService.nowAsDateTime());
>> > > >                 }
>> > > >             } else {
>> > > >                 if(pi instanceof ModifyTrackingEntity) {
>> > > >
>> > > >  ((ModifyTrackingEntity)pi).setModifiedBy(container.getUserName());
>> > > >
>> > > >
>> ((ModifyTrackingEntity)pi).setModifedOn(clockService.nowAsDateTime());
>> > > >                 }
>> > > >             }
>> > > >         }
>> > > >     }
>> > > >
>> > > >     @Programmatic
>> > > >     public void postStore (InstanceLifecycleEvent event) {
>> > > >         // no-op
>> > > >     }
>> > > >
>> > > >     @Inject
>> > > >     private DomainObjectContainer container;
>> > > >
>> > > >     @Inject
>> > > >     private ClockService clockService;
>> > > >
>> > > >     @Inject
>> > > >     private IsisJdoSupport isisJdoSupport;
>> > > > }
>> > > >
>> > > >
>> > > >
>> > > > ~~~~~~~~~~~~
>> > > > There is actually a ticket in JIRA for this [1], so I'll formalize
>> this
>> > > as
>> > > > a service in Isis 1.10.0.
>> > > >
>> > > > HTH
>> > > > Dan
>> > > >
>> > > > [1] https://issues.apache.org/jira/browse/ISIS-867
>> > > >
>> > > >
>> > > > On 16 September 2015 at 05:18, Stephen Cameron <
>> > > [email protected]
>> > > > >
>> > > > wrote:
>> > > >
>> > > > > Hi,
>> > > > >
>> > > > > Could someone please assist me in adding this capability, to
>> automate
>> > > the
>> > > > > creation and update of values in these standard fields
>> > > > >
>> > > > > created_by
>> > > > > created_on
>> > > > > modified_by
>> > > > > modified_on
>> > > > >
>> > > > > That is I need to set the first two on creating a new object, and
>> the
>> > > > last
>> > > > > two on modifying an object.
>> > > > >
>> > > > > Thanks
>> > > > > Steve Cameron
>> > > > >
>> > > >
>> > >
>> >
>> >
>> > ---
>> > This email has been checked for viruses by Avast antivirus software.
>> > https://www.avast.com/antivirus
>> >
>> >
>>
>
>

Reply via email to