Aha, just found what you need. Check the root pom.xml on trunk. Locate this section:
<pluginManagement> <plugins> <!-- M2Eclipse configuration. Has no effect for command line builds --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> … </plugin> You will need to drop <plugin>…</plugin> part for lifecycle-mapping plugin into 3.0 root pom. Let me know if you have any trouble with this. I'll do it myself. Andrus On Sep 19, 2013, at 5:46 PM, Andrus Adamchik <and...@objectstyle.org> wrote: > You can exclude cayenne-legal-unpublished. > >> Release Build id: 20120614-1722 > > I happen to have the same version of Eclipse. What's the m2eclipse (Maven > plugin) version? Mine is 1.1.0.20120530-0009. And IIRC it allows you to > ignore all these errors explicitly on import. > > Andrus > > > > On Sep 18, 2013, at 8:27 PM, Mike Kienenberger <mkien...@gmail.com> wrote: > >> After closing the modeler, doc, and tutorial projects, I am left with >> these unresolved errors: >> >> Description Resource Path Location Type >> Plugin execution not covered by lifecycle configuration: >> org.apache.cayenne.build-tools:maven-cayenne-build-plugin:3.2M1:date >> (execution: date, phase: initialize) pom.xml >> /cayenne-jdk1.6-unpublished line 78 Maven Project Build >> Lifecycle Mapping Problem >> Plugin execution not covered by lifecycle configuration: >> org.apache.maven.plugins:maven-remote-resources-plugin:1.4:bundle >> (execution: default, phase: generate-resources) pom.xml >> /cayenne-legal-unpublished line 65 Maven Project Build Lifecycle >> Mapping Problem >> Plugin execution not covered by lifecycle configuration: >> org.apache.cayenne.build-tools:maven-cayenne-build-plugin:3.2M1:date >> (execution: date, phase: initialize) pom.xml >> /cayenne-legal-unpublished line 53 Maven Project Build Lifecycle >> Mapping Problem >> Plugin execution not covered by lifecycle configuration: >> org.objectstyle.woproject.maven2:maven-japplication-plugin:2.0.17:japplication >> (execution: default, phase: generate-resources) pom.xml >> /cayenne-modeler-java line 77 Maven Project Build Lifecycle >> Mapping Problem >> Plugin execution not covered by lifecycle configuration: >> org.apache.maven.plugins:maven-antrun-plugin:1.3:run (execution: >> default, phase: process-sources) pom.xml >> /cayenne-jdk1.5-unpublished line 214 Maven Project Build >> Lifecycle Mapping Problem >> Plugin execution not covered by lifecycle configuration: >> org.codehaus.mojo:javacc-maven-plugin:2.5:javacc (execution: >> javacc-ejbql, phase: generate-sources) pom.xml >> /cayenne-jdk1.5-unpublished line 172 Maven Project Build >> Lifecycle Mapping Problem >> Plugin execution not covered by lifecycle configuration: >> org.codehaus.mojo:javacc-maven-plugin:2.5:jjtree (execution: >> jjtree-ejbql, phase: generate-sources) pom.xml >> /cayenne-jdk1.5-unpublished line 156 Maven Project Build >> Lifecycle Mapping Problem >> Plugin execution not covered by lifecycle configuration: >> org.apache.cayenne.build-tools:maven-cayenne-build-plugin:3.2M1:date >> (execution: date, phase: initialize) pom.xml >> /cayenne-jdk1.5-unpublished line 263 Maven Project Build >> Lifecycle Mapping Problem >> >> >> >> On Wed, Sep 18, 2013 at 1:25 PM, Mike Kienenberger <mkien...@gmail.com> >> wrote: >>> All 2100+ tests for my own project now pass under my modified 3.0.2. >>> >>> However, I'm having problems getting a STABLE-3.0 development >>> environment set up under Eclipse so that I can investigate the failing >>> cayenne tests. >>> >>> I tried following the directions under >>> http://cayenne.apache.org/dev/eclipse.html using Eclipse Version: Juno >>> Release Build id: 20120614-1722 but after the process created 37 >>> projects in the workspace, I'm still left with 243 java compile errors >>> and 13 maven problems. >>> >>> The java errors seem like tutorial or modeler errors which I can >>> probably ignore. (like no com.apple imports). >>> >>> I'm not sure what to make of the maven errors as some of these are in >>> primary modules. >>> >>> Description Resource Path Location Type >>> Plugin execution not covered by lifecycle configuration: >>> org.apache.cayenne.build-tools:maven-cayenne-build-plugin:3.2M1:date >>> (execution: date, phase: initialize) pom.xml >>> /cayenne-jdk1.6-unpublished line 78 Maven Project Build >>> Lifecycle Mapping Problem >>> Plugin execution not covered by lifecycle configuration: >>> org.apache.maven.plugins:maven-remote-resources-plugin:1.4:bundle >>> (execution: default, phase: generate-resources) pom.xml >>> /cayenne-legal-unpublished line 65 Maven Project Build Lifecycle >>> Mapping Problem >>> Plugin execution not covered by lifecycle configuration: >>> org.apache.cayenne.build-tools:maven-cayenne-build-plugin:3.2M1:date >>> (execution: date, phase: initialize) pom.xml >>> /cayenne-legal-unpublished line 53 Maven Project Build Lifecycle >>> Mapping Problem >>> Plugin execution not covered by lifecycle configuration: >>> org.objectstyle.woproject.maven2:maven-japplication-plugin:2.0.17:japplication >>> (execution: default, phase: generate-resources) pom.xml >>> /cayenne-modeler-java line 77 Maven Project Build Lifecycle >>> Mapping Problem >>> Plugin execution not covered by lifecycle configuration: >>> org.apache.maven.plugins:maven-antrun-plugin:1.3:run (execution: >>> default, phase: process-sources) pom.xml >>> /cayenne-jdk1.5-unpublished line 214 Maven Project Build >>> Lifecycle Mapping Problem >>> Plugin execution not covered by lifecycle configuration: >>> org.codehaus.mojo:javacc-maven-plugin:2.5:javacc (execution: >>> javacc-ejbql, phase: generate-sources) pom.xml >>> /cayenne-jdk1.5-unpublished line 172 Maven Project Build >>> Lifecycle Mapping Problem >>> Plugin execution not covered by lifecycle configuration: >>> org.codehaus.mojo:javacc-maven-plugin:2.5:jjtree (execution: >>> jjtree-ejbql, phase: generate-sources) pom.xml >>> /cayenne-jdk1.5-unpublished line 156 Maven Project Build >>> Lifecycle Mapping Problem >>> Plugin execution not covered by lifecycle configuration: >>> org.apache.cayenne.build-tools:maven-cayenne-build-plugin:3.2M1:date >>> (execution: date, phase: initialize) pom.xml >>> /cayenne-jdk1.5-unpublished line 263 Maven Project Build >>> Lifecycle Mapping Problem >>> >>> >>> >>> >>> >>> On Sun, Sep 15, 2013 at 3:59 AM, Andrus Adamchik <and...@objectstyle.org> >>> wrote: >>>> Hi Mike, >>>> >>>> So looks like you are on top of it… Let me know if you need any help. >>>> >>>> Andrus >>>> >>>> >>>> >>>> On Sep 14, 2013, at 8:22 AM, Mike Kienenberger <mkien...@gmail.com> wrote: >>>>> I remembered to update the subject this time. >>>>> >>>>> So if I replace >>>>> >>>>> arcSnapshot.put(property.getName(), target); >>>>> >>>>> with >>>>> >>>>> if (property.getRelationship().isUsedForLocking()) { >>>>> arcSnapshot.put(property.getName(), target); >>>>> } >>>>> >>>>> then the primary key qualifier is correct: "WHERE USER_ID = 2" instead >>>>> of "WHERE USER_ID is null." >>>>> >>>>> Unfortunately, this also causes several unit tests to fail. I haven't >>>>> yet investigated why this might be. >>>>> >>>>> Failed tests: >>>>> testReadToOneRelationship(org.apache.cayenne.access.NestedDataContextReadTest) >>>>> testRemoveToMany(org.apache.cayenne.CDOSetRelationshipTest) >>>>> testRemove(org.apache.cayenne.CDOMany2OneTest) >>>>> testNullifyToOne(org.apache.cayenne.access.NestedDataContextWriteTest) >>>>> testMultipleToOneDeletion(org.apache.cayenne.unit.jira.CAY_901Test) >>>>> testRemoveToMany(org.apache.cayenne.CDOMapRelationshipTest) >>>>> testPhantomRelationshipModificationValidate(org.apache.cayenne.access.DataContextExtrasTest) >>>>> testRemove1(org.apache.cayenne.CDOOne2ManyTest) >>>>> testRemove2(org.apache.cayenne.CDOOne2ManyTest) >>>>> testIsToOneTargetModified(org.apache.cayenne.access.DataRowUtilsTest) >>>>> testRemoveToMany(org.apache.cayenne.CDOCollectionRelationshipTest) >>>>> >>>>> So far, basic functionality for my app seems working. >>>>> >>>>> On Fri, Sep 13, 2013 at 4:46 PM, Mike Kienenberger <mkien...@gmail.com> >>>>> wrote: >>>>>> As I mentioned earlier, I'm upgrading my ancient Cayenne project from >>>>>> 1.1 to 3.x, currently 3.0.2. >>>>>> >>>>>> I started by upgrading to 1.2 and 2.0, unfortunately hitting the old >>>>>> null-relationship-breaks-optimistic-locking error. >>>>>> >>>>>> http://mail-archives.apache.org/mod_mbox/cayenne-dev/200803.mbox/%3c8f985b960803271232s5018a5a9hbf0f731f82666...@mail.gmail.com%3E >>>>>> >>>>>> Since most everything else seemed to be working, and the the >>>>>> workaround I had for 1.1 wasn't possible in 1.2/2.0, I decided to skip >>>>>> ahead to 3.0 and hope it was fixed there, or that it'd be more >>>>>> relevant to fix there. >>>>>> >>>>>> But the same behavior I see in 1.2 and 2.0 still occurs in 3.0.2. For >>>>>> 1.1, the fix was to retain a new snapshot when resolving faults, but >>>>>> the problem here seems to be slightly different. >>>>>> >>>>>> My model has a "User" object and a "PotentialCustomer" object. The >>>>>> PotentialCustomer is an optional one-to-one relationship with the >>>>>> User, where they both have the same primary key. In the past I have >>>>>> left the PotentialCustomer relationship as "Used for Locking", >>>>>> although I've set it both ways without changing the resulting error. >>>>>> >>>>>> Committing an unrelated attribute change to the "User" object when it >>>>>> has no corresponding "PotentialCustomer" object generates a "where >>>>>> USER_ID is null" clause. >>>>>> >>>>>> Writing a property change eventually generates an arcSnapshot for all >>>>>> to-one relationships, even if they are not marked for locking. >>>>>> org.apache.cayenne.access.ObjectDiff.java - line 114: >>>>>> >>>>>> public boolean visitToOne(ToOneProperty property) { >>>>>> >>>>>> // eagerly resolve optimistically locked relationships >>>>>> Object target = lock ? >>>>>> property.readProperty(object) : property >>>>>> .readPropertyDirectly(object); >>>>>> >>>>>> if (target instanceof Persistent) { >>>>>> target = ((Persistent) target).getObjectId(); >>>>>> } >>>>>> // else - null || Fault >>>>>> >>>>>> arcSnapshot.put(property.getName(), target); >>>>>> return true; >>>>>> } >>>>>> >>>>>> The problem is that with a relationship which is optional, the target >>>>>> is going to be null. And later on, when we generate optimistic >>>>>> locking qualifiers in >>>>>> org.apache.cayenne.access.DataNodeSyncQualifierDescriptor, we store >>>>>> this null value as the matching value for the record's primary key. >>>>>> >>>>>> To me, part of the fix would seem to be to not do anything if we're >>>>>> not locking on this column. Why do we need to resolve a relationship >>>>>> or store a snapshot for a column not involved in optimistic locking? >>>>>> >>>>>> Second, even if this column is involved with optimistic locking, it >>>>>> should not be used as a replacement value for the modified object's >>>>>> primary key. It's probably a model error to specify a relationship >>>>>> based on the modified object's primary key as a locking column. >>>>>> However, I can correct this by removing the "Used for Locking" value. >>>>>> >>>>>> >>>>>> On Thu, Mar 27, 2008 at 3:32 PM, Mike Kienenberger <mkien...@gmail.com> >>>>>> wrote: >>>>>>> Here's an interesting situation I'm debugging now for Cayenne 1.1. >>>>>>> It seems to be related to CAY-213 "NullPointerException in >>>>>>> ContextCommit with locking". I suspect that it's true of 1.2 and >>>>>>> could very well be true for 3.0 as well, although I don't have that >>>>>>> handy to test with. >>>>>>> >>>>>>> http://issues.apache.org/cayenne/browse/CAY-213 >>>>>>> >>>>>>> My testing seems to reveal that the same problem occurs when you set a >>>>>>> to-one relationship to null. Line 291 in removeToManyTarget() sets >>>>>>> the state of the previous to-one relationship object to MODIFIED, but >>>>>>> doesn't retain a snapshot for that object. >>>>>>> >>>>>>> Here's some simple test code that shows the problem. And switching >>>>>>> the scalar setter with the relationship setter works around the >>>>>>> problem. >>>>>>> >>>>>>> It seems to me that the the fix is to add >>>>>>> >>>>>>> dataContext.getObjectStore().retainSnapshot(this); >>>>>>> >>>>>>> as was done for writeProperty(). >>>>>>> >>>>>>> >>>>>>> public void run() throws Exception >>>>>>> { >>>>>>> initCayenne("cayenne.xml"); >>>>>>> >>>>>>> // Set up database >>>>>>> >>>>>>> createSchemaForObjEntityName(Configuration.getSharedConfiguration(), >>>>>>> "PotentialCustomer"); >>>>>>> DataContext dc = DataContext.createDataContext(); >>>>>>> >>>>>>> // Set up test data >>>>>>> PotentialCustomer pc = >>>>>>> (PotentialCustomer)dc.createAndRegisterNewObject(PotentialCustomer.class); >>>>>>> Premise premise = >>>>>>> (Premise)dc.createAndRegisterNewObject(Premise.class); >>>>>>> pc.setToOneTarget("premise", premise, true); >>>>>>> dc.commitChanges(); >>>>>>> >>>>>>> // Force failure: >>>>>>> pc.setToOneTarget("premise", null, true); >>>>>>> premise.writeProperty("altitude", new Integer(0)); >>>>>>> >>>>>>> // On commitChanges(), no snapshot available for building locking >>>>>>> // java.lang.NullPointerException >>>>>>> // at >>>>>>> org.objectstyle.cayenne.access.ContextCommit.appendOptimisticLockingAttributes(ContextCommit.java:564) >>>>>>> >>>>>>> dc.commitChanges(); >>>>>>> } >>>>>>> >>>>>>> >>>>>>> java.lang.NullPointerException >>>>>>> at >>>>>>> org.objectstyle.cayenne.access.ContextCommit.appendOptimisticLockingAttributes(ContextCommit.java:564) >>>>>>> at >>>>>>> org.objectstyle.cayenne.access.ContextCommit.prepareUpdateQueries(ContextCommit.java:426) >>>>>>> at >>>>>>> org.objectstyle.cayenne.access.ContextCommit.commit(ContextCommit.java:156) >>>>>>> at >>>>>>> org.objectstyle.cayenne.access.DataContext.commitChanges(DataContext.java:1266) >>>>>>> at >>>>>>> org.objectstyle.cayenne.access.DataContext.commitChanges(DataContext.java:1236) >>>>>>> at >>>>>>> com.gvea.cayenne.TestOptimisticLockingFailureOnSingleTargetNull.run(TestOptimisticLockingFailureOnSingleTargetNull.java:110) >>>>>>> at >>>>>>> com.gvea.cayenne.TestOptimisticLockingFailureOnSingleTargetNull.main(TestOptimisticLockingFailureOnSingleTargetNull.java:24) >>>>>>> >>>>>>> Note that some of these line numbers may vary as my version of Cayenne >>>>>>> 1.1 has local mods. >>>>> >>>> >> > >