Exception in EMF comparison [message #1060917] |
Wed, 29 May 2013 07:16 |
Raghu km Messages: 1 Registered: May 2013 |
Junior Member |
|
|
Hello,
I am using EMF compare to compare two ecore models in the java code to find out if both models are equal or not. For this i am doing as below
model1
model2
Both the models are loaded from the same ecore model
Code snipet:::::::::::::::
Map<String, Object> options = new HashMap<String, Object>();
MatchModel matchModel = MatchService.doMatch(model1, model2, options);
CustomizedDiffEngine diffEngine = new CustomizedDiffEngine();
//CustomizedDiffEngine extends GenericDiffEngine
DiffModel diffFull = diffEngine.doDiff(matchModel, false);
EList<DiffElement> differences = diffFull.getDifferences();
// if there are no differences then success
if (differences.size() == 0) {
System.out.println("EQUAL");
}
CustomizedDiffEngine.java::::::::::::::: To return CustomReferencesCheck instead of ReferencesCheck
public class CustomizedDiffEngine extends GenericDiffEngine {
@Override
protected ReferencesCheck getReferencesChecker() {
return new CustomReferencesCheck(getMatchManager());
}
}
CustomReferencesCheck.java:::::::::::::: In this class I wanted to do some customizations in the method shouldBeIgnored() for ignoring some references. But currently calling super menthod.
public class CustomReferencesCheck extends ReferencesCheck {
Map<EReference, Boolean> ignoreReferenceMap = new HashMap<EReference, Boolean>();
public CustomReferencesCheck(final IMatchManager manager) {
super(manager);
}
@Override
protected boolean shouldBeIgnored(final EReference reference) {
/*
* Boolean ignoreReference = this.ignoreReferenceMap.get(reference); if ((ignoreReference != null) &&
* ignoreReference.equals(Boolean.valueOf(true))) { return true; }
*/
return super.shouldBeIgnored(reference);
}
}
With above code, when I run the project i am facing below exception
Exception in thread "main" java.lang.NullPointerException
at org.eclipse.emf.compare.diff.engine.check.ReferencesCheck.checkContainmentReferenceOrderChange(ReferencesCheck.java:168)
at org.eclipse.emf.compare.diff.engine.check.ReferencesCheck.checkReferencesUpdates(ReferencesCheck.java:104)
at org.eclipse.emf.compare.diff.engine.GenericDiffEngine.checkForDiffs(GenericDiffEngine.java:368)
at org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiffDelegate(GenericDiffEngine.java:930)
at org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiffTwoWay(GenericDiffEngine.java:607)
at org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiffResourceSet(GenericDiffEngine.java:160)
at org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiff(GenericDiffEngine.java:127)
at org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiff(GenericDiffEngine.java:115)
1. Can any one tell me why it is throwing exception even though i am using default behaviour of GenericDiffEngine.
2. When i return { new ReferencesCheck(getMatchManager()) } in the class CustomizedDiffEngine.java then the default behaviour is working fine. But i am expecting this to work by using CustomReferencesCheck class as i wanted to do some customizations later.
|
|
|
Re: Exception in EMF comparison [message #1061002 is a reply to message #1060917] |
Wed, 29 May 2013 13:30 |
Ed Merks Messages: 33217 Registered: July 2009 |
Senior Member |
|
|
It's better to ask on the eclipse.tools.emf forum.
On 29/05/2013 2:58 PM, Raghu km wrote:
> Hello,
>
> I am using EMF compare to compare two ecore models in the java code to
> find out if both models are equal or not. For this i am doing as below
> model1
> model2
> Both the models are loaded from the same ecore model
>
>
>
> Code snipet:::::::::::::::
> Map<String, Object> options = new HashMap<String, Object>();
> MatchModel matchModel = MatchService.doMatch(model1, model2, options);
>
> CustomizedDiffEngine diffEngine = new CustomizedDiffEngine();
> //CustomizedDiffEngine extends GenericDiffEngine
>
> DiffModel diffFull = diffEngine.doDiff(matchModel, false);
> EList<DiffElement> differences = diffFull.getDifferences();
>
> // if there are no differences then success
> if (differences.size() == 0) {
> System.out.println("EQUAL");
> }
>
>
>
> CustomizedDiffEngine.java::::::::::::::: To return
> CustomReferencesCheck instead of ReferencesCheck
>
> public class CustomizedDiffEngine extends GenericDiffEngine {
> @Override
> protected ReferencesCheck getReferencesChecker() {
> return new CustomReferencesCheck(getMatchManager());
> }
> }
>
>
>
>
> CustomReferencesCheck.java:::::::::::::: In this class I wanted to do
> some customizations in the method shouldBeIgnored() for ignoring some
> references. But currently calling super menthod.
>
> public class CustomReferencesCheck extends ReferencesCheck {
> Map<EReference, Boolean> ignoreReferenceMap = new HashMap<EReference,
> Boolean>();
> public CustomReferencesCheck(final IMatchManager manager) {
> super(manager);
> }
> @Override
> protected boolean shouldBeIgnored(final EReference reference) {
> /*
> * Boolean ignoreReference =
> this.ignoreReferenceMap.get(reference); if ((ignoreReference != null) &&
> * ignoreReference.equals(Boolean.valueOf(true))) { return true; }
> */
> return super.shouldBeIgnored(reference);
> }
> }
>
>
>
> With above code, when I run the project i am facing below exception
>
>
> Exception in thread "main" java.lang.NullPointerException
> at
> org.eclipse.emf.compare.diff.engine.check.ReferencesCheck.checkContainmentReferenceOrderChange(ReferencesCheck.java:168)
> at
> org.eclipse.emf.compare.diff.engine.check.ReferencesCheck.checkReferencesUpdates(ReferencesCheck.java:104)
> at
> org.eclipse.emf.compare.diff.engine.GenericDiffEngine.checkForDiffs(GenericDiffEngine.java:368)
> at
> org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiffDelegate(GenericDiffEngine.java:930)
> at
> org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiffTwoWay(GenericDiffEngine.java:607)
> at
> org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiffResourceSet(GenericDiffEngine.java:160)
> at
> org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiff(GenericDiffEngine.java:127)
> at
> org.eclipse.emf.compare.diff.engine.GenericDiffEngine.doDiff(GenericDiffEngine.java:115)
>
>
>
> 1. Can any one tell me why it is throwing exception even though i am
> using default behaviour of GenericDiffEngine.
>
> 2. When i return { new ReferencesCheck(getMatchManager()) } in the
> class CustomizedDiffEngine.java then the default behaviour is working
> fine. But i am expecting this to work by using CustomReferencesCheck
> class as i wanted to do some customizations later.
>
>
>
>
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Powered by
FUDForum. Page generated in 0.05066 seconds