Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 360757

Summary: Integration of SysML language into EMF Compare
Product: [Modeling] EMFCompare Reporter: Arthur Daussy <arthur.daussy>
Component: CoreAssignee: EMF Compare <emf.compare-inbox>
Status: CLOSED FIXED QA Contact:
Severity: enhancement    
Priority: P3 CC: cedric.brun, erche, faure.tristan, laurent.goubet, vincent.lorenzo
Version: 1.3   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on:    
Bug Blocks: 361379, 361531, 361666, 365285    
Attachments:
Description Flags
Plugins to integrate SysML language into EMF Comapre
none
Plugins for SysML integration after refactoring from observation
cedric.brun: iplog+
Feature for SysML Integration cedric.brun: iplog+

Description Arthur Daussy CLA 2011-10-13 02:15:29 EDT
The aim of this bug is to integrate the SysML language into EMF Compare. The implementation of SysML chosen is the one used in MDT Papyrus that is to say UML with static profile.
 In order to do this several other enhancement has to be added:
  -> New extension point :  https://bugs.eclipse.org/bugs/show_bug.cgi?id=358225
  -> New Apdater factory into MDT Papyrus : https://bugs.eclipse.org/bugs/show_bug.cgi?id=352555
  -> Create a SysML differences meta model in order to handle specifically SysML profile modification (this bug).

With in this bug the plugins corresponding to the difference meta model will be publish.
Comment 1 Cedric Brun CLA 2011-10-13 04:28:59 EDT
Nice ! We'll make sure to integrate #358225 quickly.
Comment 2 Arthur Daussy CLA 2011-10-14 03:30:13 EDT
I'm currently reviewing my plugins in order to respect the EMF Compare developer process. But I'm unable to use your checkstyle template. I have try to use both Checkstyle configuration but none of them seem to work. Each time I get the following error:
net.sf.eclipsecs.core.util.CheckstylePluginException: cannot initialize module TreeWalker - TreeWalker is not allowed as a parent of FileLength
	at net.sf.eclipsecs.core.util.CheckstylePluginException.rethrow(CheckstylePluginException.java:66)
	at net.sf.eclipsecs.core.util.CheckstylePluginException.rethrow(CheckstylePluginException.java:77)
	at net.sf.eclipsecs.core.builder.Auditor.runAudit(Auditor.java:166)
	at net.sf.eclipsecs.core.builder.CheckstyleBuilder.handleBuildSelection(CheckstyleBuilder.java:288)
	at net.sf.eclipsecs.core.builder.CheckstyleBuilder.build(CheckstyleBuilder.java:169)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module TreeWalker - TreeWalker is not allowed as a parent of FileLength
	at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:178)
	at com.puppycrawl.tools.checkstyle.api.AutomaticBean.configure(AutomaticBean.java:184)
	at net.sf.eclipsecs.core.builder.CheckerFactory.createCheckerInternal(CheckerFactory.java:320)
	at net.sf.eclipsecs.core.builder.CheckerFactory.createChecker(CheckerFactory.java:143)
	at net.sf.eclipsecs.core.builder.Auditor.runAudit(Auditor.java:142)
	... 14 more
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: TreeWalker is not allowed as a parent of FileLength
	at com.puppycrawl.tools.checkstyle.TreeWalker.setupChild(TreeWalker.java:163)
	at com.puppycrawl.tools.checkstyle.api.AutomaticBean.configure(AutomaticBean.java:184)
	at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:157)
	... 18 more
	
	As I'm not a Checkstyle expert I would like to know if you have already face such difficulty?
	
	Regards
Comment 3 Arthur Daussy CLA 2011-10-19 03:45:17 EDT
Created attachment 205480 [details]
Plugins to integrate SysML language into EMF Comapre

On this attachment you will find plugins for SysML integration into EMF Compare.

To use those plugins you will need MDT Papyrus installed (from nightly build that you can find  on the following update site http://download.eclipse.org/modeling/mdt/papyrus/updates/nightly/indigo/). With this you will have the correction of Bug 352555.

You will also need to have the enhancement describe in Bug 358225.

In order to respect Eclipse process:

I wrote 100% of the code;
I have the right to contribute the code to Eclipse, and
I have included the EPL license header in all source files.
Comment 4 Cedric Brun CLA 2011-10-19 05:44:55 EDT

The Acceleo team encountered the checkstyle error, I tweaked the configuration file and pushed it, when you'll rebase the error should be gone.

I took the time to review your contribution, it looks globaly good though a few things need to be taken care of :

1°) you have "src" and "custom-src", for the sake of consistency among all the emf compare components I'd like you to change this to "src-gen" for generated code and "src" for custom code.

2°) org.eclipse.emf.compare.sysml.edit/custom-src is not in the build path and looks empty, probably need to be deleted.

3°) checkstyle should be used with the /org.eclipse.emf.compare/codeStyle/EMFCompareCheckstyle5Configuration.xml configuration and projects should be configured to refer to this configuration as a "project relative path". You can have a look on the other projects of emf compare, src-gen folders should be excluded. You did this already for the sysml plugin and the sysml.edit was "exploding". This is just a reminder that now that the CS5 configuration has been fixed, you'll have to enable it on the .edit project.

4°) It's probably better if you delete  all the .svn directories before re-submitting the patch.

5°) You should enable the api-tooling on your project, set the latest 1.2.1 release as a baseline and add the missing @since annotations

6°) org.eclipse.emf.compare.sysml/model/uml2diff.ecore looks like a copy of the one in org.eclipse.emf.compare.uml and should be deleted from this project

7°) Version numbers in Manifest.MF should be set to 1.3.0.qualifier

8°) all the plugin name should be meaningfull please have a look on the coresponding org.eclipse.emf.compare.uml2* plugins

9°) provider name should be set to "Eclipse Modeling Project" in Manifest.MF/plugin.properties

10°) org.eclipse.emf.compare.sysml/templates has nothing interesting in it and should be deleted.

11°) as the /org.eclipse.emf.compare.sysml.edit has a specific lower bound dependency on papyrus the require bundle in the corresponding manifest.mf should express this lower bound.

These are fairly small changes, the last one bother me more : so far there is no 
 test for this feature and that would make its maintenance quite impossible when the compare engine evolves.

12°) Could you have a look on the org.eclipse.emf.compare.uml2.tests and provide a fairly similar project for sysml models : validating the detection of the diff extensions and their merge (application & undo).
Comment 5 Arthur Daussy CLA 2011-10-19 07:47:22 EDT
I'm currently taking all you observations into account.
I'm have open a "sub bug" needed for this enhancement
https://bugs.eclipse.org/bugs/show_bug.cgi?id=361379 .
Comment 6 Arthur Daussy CLA 2011-10-20 08:46:22 EDT
I have just finished corrected the several enhancement you had highlighted except one:

12 -> I have open a "sub bug" which I would need for this plugin https://bugs.eclipse.org/bugs/show_bug.cgi?id=361531 .

Regards,
Comment 7 Arthur Daussy CLA 2011-10-24 09:09:10 EDT
Created attachment 205811 [details]
Plugins for SysML integration after refactoring from observation

All the observation has been taken into account. 
So I have uploaded a new version of the plugins.
Comment 8 Cedric Brun CLA 2011-10-24 11:08:29 EDT
Thanks for being so reactive ! I'm reviewing it.
Comment 9 Cedric Brun CLA 2011-10-24 11:42:26 EDT
This looks good, thanks for your work !

I opened a contribution questionnaire (CQ) to the IP team. Once we get both the Modeling PMC/Eclipse Legal team clearances we will be able to commit these new plugins.
Comment 10 Arthur Daussy CLA 2011-11-04 11:51:35 EDT
Created attachment 206472 [details]
Feature for SysML Integration

This feature integrate the two following plugins:
 -> org.eclipse.emf.compare.sysml
 -> org.eclipse.emf.compare.sysml.edit

Hoping it's not to late.

When do you think the SysML plugins and the featuer would integrate to the update site?

Regards,

Arthur Daussy.
Comment 11 Cedric Brun CLA 2011-11-09 10:35:08 EST
Hi Arthur,

the contribution is still being processed by the IP team. They asked a few clarifications about some part of the code which I just gave. Hopefully we'll get clearance quite soon and then we will be able to integrate it in the repository.
Comment 12 Cedric Brun CLA 2011-12-01 04:05:53 EST
We got clearance from the IP team, I can now proceed to the commit.
Comment 13 Cedric Brun CLA 2011-12-01 08:47:43 EST
https://hudson.eclipse.org/hudson/user/sbouchet/my-views/view/Obeo/job/emf-compare-master/118/

First passing build with your contribution : congrats ! 

The 119th build should launch the SysML tests.

Please have a look on both the integrated code and build result and reopen the bug if anything looks strange to you.
Comment 14 Arthur Daussy CLA 2011-12-01 09:03:45 EST
Thanks.
 I will look into it.