Community
Participate
Working Groups
Build Identifier: 20110218-0911 After adding an EInt attribute to a model, the following code fails with a NullPointerException: MatchModel match = MatchService.doContentMatch(newSection, section, null); DiffModel diff = DiffService.doDiff(match, false); MergeService.merge(diff.getOwnedElements(), true); Stacktrace: java.lang.NullPointerException at org.eclipse.emf.compare.util.EFactory.eStructuralFeature(EFactory.java:287) at org.eclipse.emf.compare.util.EFactory.eGet(EFactory.java:156) at org.eclipse.emf.compare.diff.internal.merge.impl.UpdateAttributeMerger.undoInTarget(UpdateAttributeMerger.java:58) at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:166) at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:130) at org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMerger.undoInTarget(DiffGroupMerger.java:48) at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:166) at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:130) at org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMerger.undoInTarget(DiffGroupMerger.java:48) at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:166) at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:130) at org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMerger.undoInTarget(DiffGroupMerger.java:48) at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:166) at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:130) at org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMerger.undoInTarget(DiffGroupMerger.java:48) at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:166) at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:130) Problem seems to be in UpdateAttributeMerger.undoInTarget: final UpdateAttribute theDiff = (UpdateAttribute)this.diff; ... final EObject origin = theDiff.getLeftElement(); origin is null here for some reason, and later dereferenced in EFactory.eGet(). Reproducible: Always Steps to Reproduce: Use the attached ecore model. Create two identical section objects with a few groups and parameters. Change one parameter in one of them. Do the merge as described.
Created attachment 194607 [details] ecore file causing the NPE ecore file describing the model. After adding the ParameterGroup/order attribute, things went south.
Eclipse Version: Helios Service Release 2 EMF Compare SDK version: 1.1.2.v20110202-0936
Martin, This cannot be reproduced from the GUI, or at least not with the example models I've created using the provided metamodel. Do you still have this issue when you use "MatchService.doResourceSetMatch(newSection.eResource().getResourceSet(), section.eResource().getResourceSet())" instead of "doContentMatch" ? Could you create a small unit test that would allow us to reproduce the failure?
Closing this bug as for now, will reopen if it can be reproduced.