Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » MoDisco » Compare two source code files using EMF
Compare two source code files using EMF [message #764597] Mon, 12 December 2011 08:59 Go to previous message
Missing name Missing name is currently offline Missing name Missing name
Messages: 6
Registered: December 2011
Junior Member
I´m not sure if this is the right place to ask this, but I couldn´t find any better place.

In my application I should compare two source code files to see if something has changed and then highlight those changes. For that i thought of using EMF compare. My application is a standalone application and is not used as a plugin or something similar. It should run without eclipse. Therefore I linked all the necessary libraries and tried to use EMF compare.

The problem now is that I don´t know how to build the two models that I have to use to compare the two source code files against each other. In the following code snippet I wrote as a first approach, the source code files are passed as files (Test1.java and Test2.java) but actually the source code of both files are stored in a string as the method parameters indicate.

So my question is basically how can I generate two models based on String that contain Java source code so that I can use these two models to compare against each other?

	public void compare(String source1, String source2) throws IOException, InterruptedException {
		
		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("java", new ResourceFactoryImpl());
		
		XSDEcoreBuilder builder = new XSDEcoreBuilder();
		
		Collection<EObject> model1 = builder.generate(URI.createFileURI("Test1.java"));
		Collection<EObject> model2 = builder.generate(URI.createFileURI("Test2.java"));
		
		final MatchModel match = MatchService.doMatch(model1.iterator().next(), model2.iterator().next(), Collections.<String, Object> emptyMap());
		final DiffModel diff = DiffService.doDiff(match, false);
		
		final List<DiffElement> differences = new ArrayList<DiffElement>(diff.getOwnedElements());
		
		System.out.println("MatchModel :\n");
		 	System.out.println(ModelUtils.serialize(match));
		 	System.out.println("DiffModel :\n");
		 	System.out.println(ModelUtils.serialize(diff));
	}
 
Read Message
Read Message
Read Message
Read Message
Previous Topic:Languages Supported by MoDisco
Next Topic:Auto-Reverse Engineering
Goto Forum:
  


Current Time: Fri May 24 23:12:00 EDT 2013

Powered by FUDForum. Page generated in 0.04153 seconds