Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Newcomers » Newcomers » Exception in EMF comparison(Facing nullPointerException while using customized EMF comparison utility)
Exception in EMF comparison [message #1060917] Wed, 29 May 2013 07:16 Go to next message
Raghu km is currently offline Raghu kmFriend
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 Go to previous message
Ed Merks is currently offline Ed MerksFriend
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/
Previous Topic:Need HTML perspective? editor?
Next Topic:Have *.txt file types associated with HTML
Goto Forum:
  


Current Time: Tue Sep 24 10:25:59 GMT 2024

Powered by FUDForum. Page generated in 0.05066 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top