Merge remote-tracking branch 'origin/release_1.24.0' into develop

Change-Id: I3628e58fb6a24f2560e6962044e9dfa8cc942f3a
diff --git a/CONTRIBUTING b/CONTRIBUTING
index 55a835f..e948082 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -27,6 +27,9 @@
 * http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.other.git
 * http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.releng.git
 
+You will only need the http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.core.git repository.
+In order to build you need to trigger `mvn clean install` on `releng/org.eclipse.emf.ecp.releng/pom.xml`.
+
 This project uses Bugzilla to track ongoing development and issues.
 
 * Search for issues: https://eclipse.org/bugs/buglist.cgi?product=ECP
diff --git a/bundles/org.eclipse.emf.ecp.graphiti.integration/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.graphiti.integration/META-INF/MANIFEST.MF
index 934b11a..f20f452 100644
--- a/bundles/org.eclipse.emf.ecp.graphiti.integration/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.graphiti.integration/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@
  org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.300",
  org.eclipse.emf.edit.ui;bundle-version="2.8.0",
  org.eclipse.emf.databinding.edit;bundle-version="1.2.0",
- org.eclipse.emf.ecp.graphiti.core;bundle-version="[1.24.0,1.24.1)",
+ org.eclipse.emf.ecp.graphiti.core;bundle-version="[1.7.0,2.0.0)",
  org.eclipse.emf.ecp.ui;bundle-version="[1.24.0,1.24.1)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Automatic-Module-Name: org.eclipse.emf.ecp.graphiti.integration
diff --git a/bundles/org.eclipse.emfforms.swt.reference.table/.settings/.api_filters b/bundles/org.eclipse.emfforms.swt.reference.table/.settings/.api_filters
index fbb74bb..255d0b2 100644
--- a/bundles/org.eclipse.emfforms.swt.reference.table/.settings/.api_filters
+++ b/bundles/org.eclipse.emfforms.swt.reference.table/.settings/.api_filters
@@ -8,6 +8,13 @@
                 <message_argument value="org.eclipse.emfforms.swt.internal.reference.table.DummyDomainExpander"/>
             </message_arguments>
         </filter>
+        <filter comment="Since Tag was added later as it was forgot initially" id="1108344834">
+            <message_arguments>
+                <message_argument value="1.22"/>
+                <message_argument value="1.24"/>
+                <message_argument value="org.eclipse.emfforms.swt.internal.reference.table.DummyDomainExpander"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/emfforms/swt/internal/reference/table/SelectionTableCompositeStrategyProvider.java" type="org.eclipse.emfforms.swt.internal.reference.table.SelectionTableCompositeStrategyProvider">
         <filter comment="Fixed since tags that were missing" id="1108344834">
@@ -17,6 +24,13 @@
                 <message_argument value="org.eclipse.emfforms.swt.internal.reference.table.SelectionTableCompositeStrategyProvider"/>
             </message_arguments>
         </filter>
+        <filter comment="Since Tag was added later as it was forgot initially" id="1108344834">
+            <message_arguments>
+                <message_argument value="1.22"/>
+                <message_argument value="1.24"/>
+                <message_argument value="org.eclipse.emfforms.swt.internal.reference.table.SelectionTableCompositeStrategyProvider"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/emfforms/swt/internal/reference/table/TableSelectionCompositeImpl.java" type="org.eclipse.emfforms.swt.internal.reference.table.TableSelectionCompositeImpl">
         <filter comment="Fixed since tags that were missing" id="1108344834">
@@ -26,5 +40,12 @@
                 <message_argument value="org.eclipse.emfforms.swt.internal.reference.table.TableSelectionCompositeImpl"/>
             </message_arguments>
         </filter>
+        <filter comment="Since Tag was added later as it was forgot initially" id="1108344834">
+            <message_arguments>
+                <message_argument value="1.22"/>
+                <message_argument value="1.24"/>
+                <message_argument value="org.eclipse.emfforms.swt.internal.reference.table.TableSelectionCompositeImpl"/>
+            </message_arguments>
+        </filter>
     </resource>
 </component>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/makeithappen_e3.product b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/makeithappen_e3.product
index defe86b..39a60c8 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/makeithappen_e3.product
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/makeithappen_e3.product
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="MakeItHappen Sample e3 Product" uid="org.eclipse.emf.ecp.makeithappen.sample.product.e3" id="org.eclipse.emf.ecp.makeithappen.application.sample.e3.product" application="org.eclipse.emf.ecp.makeithappen.application.sample.e3.application" version="1.23.0.qualifier" useFeatures="true" includeLaunchers="true">
+<product name="MakeItHappen Sample e3 Product" uid="org.eclipse.emf.ecp.makeithappen.sample.product.e3" id="org.eclipse.emf.ecp.makeithappen.application.sample.e3.product" application="org.eclipse.emf.ecp.makeithappen.application.sample.e3.application" version="1.24.0.qualifier" useFeatures="true" includeLaunchers="true">
 
    <configIni use="default">
    </configIni>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/makeithappen_e4.product b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/makeithappen_e4.product
index e9361b3..e02e696 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/makeithappen_e4.product
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/makeithappen_e4.product
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="MakeItHappen Sample e4 Product" uid="org.eclipse.emf.ecp.makeithappen.sample.product.e4" id="org.eclipse.emf.ecp.makeithappen.application.sample.e4.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.23.0.qualifier" useFeatures="true" includeLaunchers="true">
+<product name="MakeItHappen Sample e4 Product" uid="org.eclipse.emf.ecp.makeithappen.sample.product.e4" id="org.eclipse.emf.ecp.makeithappen.application.sample.e4.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.24.0.qualifier" useFeatures="true" includeLaunchers="true">
 
    <configIni use="default">
    </configIni>
diff --git a/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.3x.product b/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.3x.product
index 3869afa..0aceefe 100644
--- a/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.3x.product
+++ b/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.3x.product
@@ -68,11 +68,12 @@
    </features>
 
    <configurations>
+      <plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
       <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.emf.ecp.emfstore.localserver" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="3" />
-      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
       <property name="eclipse.buildId" value="${BUILD_NUMBER}" />
    </configurations>
 
diff --git a/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.application.e4.product b/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.application.e4.product
index dcc6132..6a91186 100644
--- a/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.application.e4.product
+++ b/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.application.e4.product
@@ -3,6 +3,7 @@
 
 <product name="org.eclipse.emf.ecp.e4.application" uid="org.eclipse.emf.ecp.application.e4.demo" id="org.eclipse.emf.ecp.application.e4.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.24.0.qualifier" useFeatures="false" includeLaunchers="true">
 
+
    <configIni use="default">
    </configIni>
 
@@ -15,15 +16,18 @@
 
    <windowImages/>
 
+
    <launcher>
       <win useIco="false">
          <bmp/>
       </win>
    </launcher>
 
+
    <vm>
    </vm>
 
+
    <plugins>
       <plugin id="com.ibm.icu"/>
       <plugin id="javax.annotation"/>
@@ -166,11 +170,18 @@
    </plugins>
 
    <configurations>
+      <plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
       <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="3" />
-      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
       <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
    </configurations>
 
+   <preferencesInfo>
+      <targetfile overwrite="false"/>
+   </preferencesInfo>
+
+   <cssInfo>
+   </cssInfo>
+
 </product>
diff --git a/releng/org.eclipse.emf.ecp.releng/scripts/verify-sources-exceptions b/releng/org.eclipse.emf.ecp.releng/scripts/verify-sources-exceptions
new file mode 100644
index 0000000..bbd4b27
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.releng/scripts/verify-sources-exceptions
@@ -0,0 +1,54 @@
+# Source Exceptions
+
+## Plugins
+org.eclipse.emfforms.coffee.model.viewmodel
+org.eclipse.emfforms.setup.base
+org.eclipse.emf.ecp.common.ui.nl
+org.eclipse.emf.ecp.core.nl
+org.eclipse.emf.ecp.diffmerge.model.edit.nl
+org.eclipse.emf.ecp.diffmerge.swt.nl
+org.eclipse.emf.ecp.edit.nl
+org.eclipse.emf.ecp.edit.swt.nl
+org.eclipse.emf.ecp.emfstore.ui.e4
+org.eclipse.emf.ecp.ide.editor.view.nl
+org.eclipse.emf.ecp.makeithappen.model.edit.nl
+org.eclipse.emf.ecp.makeithappen.wizards.nl
+org.eclipse.emf.ecp.ui.e3.nl
+org.eclipse.emf.ecp.ui.e4
+org.eclipse.emf.ecp.ui.nl
+org.eclipse.emf.ecp.ui.validation.nl
+org.eclipse.emf.ecp.ui.view.editor.controls.nl
+org.eclipse.emf.ecp.validation.nl
+org.eclipse.emf.ecp.view.categorization.model.edit.nl
+org.eclipse.emf.ecp.view.core.swt.nl
+org.eclipse.emf.ecp.view.custom.model.edit.nl
+org.eclipse.emf.ecp.view.custom.model.nl
+org.eclipse.emf.ecp.view.dynamictree.model.edit.nl
+org.eclipse.emf.ecp.view.group.model.edit.nl
+org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl
+org.eclipse.emf.ecp.view.horizontal.model.edit.nl
+org.eclipse.emf.ecp.view.label.model.edit.nl
+org.eclipse.emf.ecp.view.model.edit.nl
+org.eclipse.emf.ecp.view.model.editor.nl
+org.eclipse.emf.ecp.view.model.nl
+org.eclipse.emf.ecp.view.rule.model.edit.nl
+org.eclipse.emf.ecp.view.stack.viewmodel
+org.eclipse.emf.ecp.view.table.model.edit.nl
+org.eclipse.emf.ecp.view.table.model.nl
+org.eclipse.emf.ecp.view.table.ui.nebula.grid.nl
+org.eclipse.emf.ecp.view.table.ui.swt.nl
+org.eclipse.emf.ecp.view.table.validation
+org.eclipse.emf.ecp.view.template.model.edit.nl
+org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl
+org.eclipse.emf.ecp.view.vertical.model.edit.nl
+
+## Features
+org.eclipse.emf.ecp.demo.e4.feature
+org.eclipse.emf.ecp.e4.feature
+org.eclipse.emf.ecp.emfforms.sdk.feature
+org.eclipse.emf.ecp.i18n.feature
+org.eclipse.emf.ecp.license.feature
+org.eclipse.emf.ecp.rap.sdk.feature
+org.eclipse.emf.ecp.sdk.e4.feature
+org.eclipse.emf.ecp.sdk.feature
+org.eclipse.emfforms.i18n.feature
\ No newline at end of file
diff --git a/releng/org.eclipse.emf.ecp.releng/scripts/verify-sources.py b/releng/org.eclipse.emf.ecp.releng/scripts/verify-sources.py
new file mode 100644
index 0000000..6a37cb6
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.releng/scripts/verify-sources.py
@@ -0,0 +1,61 @@
+#!python
+import os
+import sys
+
+SOURCE_POSTFIX = '.source'
+
+def get_missing_source_bundles(root_dir = '.', exceptions = []):
+  missing_source = []
+  source_jars = []
+  jars = []
+  for root, dirs, files in os.walk(root_dir):
+    for file in files:
+      # get rid of the version identifier and file extension. only the bundle name is relevant
+      stripped_name = file.split('_')[0]
+      if stripped_name.endswith(SOURCE_POSTFIX):
+        source_jars.append(stripped_name[:len(stripped_name) - len(SOURCE_POSTFIX)])
+      else:
+        jars.append(stripped_name)
+
+  for jar in jars:
+    if (jar not in source_jars) and (jar not in exceptions):
+      missing_source.append(jar)
+
+  return missing_source
+
+# Assumes that the scripts workding dir is the repository bundle's project base dir.
+# arguments
+# argv[0] - path to exceptions
+def main(argv):
+  print("Verify source bundles have been exported...")
+  with open(argv[0], mode="rt") as exceptions_file:
+    exceptions = [ex.strip() for ex in exceptions_file if ex.strip() and not ex.strip().startswith('#')]
+
+  plugins_missing_src = get_missing_source_bundles('./target/repository/plugins', exceptions)
+  features_missing_src = get_missing_source_bundles('./target/repository/features', exceptions)
+
+  if plugins_missing_src:
+    print('----------------------------------')
+    print('Plugins with missing source jars:')
+    print('----------------------------------')
+    plugins_missing_src.sort()
+    for b in plugins_missing_src:
+      print(b)
+    print('----------------------------------')
+
+  if features_missing_src:
+    print('----------------------------------')
+    print('Features with missing source jars:')
+    print('----------------------------------')
+    features_missing_src.sort()
+    for b in features_missing_src:
+      print(b)
+    print('----------------------------------')
+
+  if plugins_missing_src or features_missing_src:
+    print("There are missing source bundles! See output above.")
+    sys.exit(2)
+  print("...verification successful.")
+
+if __name__ == "__main__":
+  main(sys.argv[1:])
\ No newline at end of file
diff --git a/releng/org.eclipse.emf.ecp.repository.target/pom.xml b/releng/org.eclipse.emf.ecp.repository.target/pom.xml
index 934b853..49058c6 100644
--- a/releng/org.eclipse.emf.ecp.repository.target/pom.xml
+++ b/releng/org.eclipse.emf.ecp.repository.target/pom.xml
@@ -26,6 +26,28 @@
 					<xzCompress>false</xzCompress>
 				</configuration>
 			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>exec-maven-plugin</artifactId>
+				<version>1.2.1</version>
+				<executions>
+					<execution>
+						<id>verify-source-bundles</id>
+						<phase>verify</phase>
+						<goals>
+							<goal>exec</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<executable>python</executable>
+					<workingDirectory>${project.basedir}</workingDirectory>
+					<arguments>
+						<argument>${project.basedir}/../org.eclipse.emf.ecp.releng/scripts/verify-sources.py</argument>
+						<argument>${project.basedir}/../org.eclipse.emf.ecp.releng/scripts/verify-sources-exceptions</argument>
+					</arguments>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
 	
diff --git a/releng/org.eclipse.emf.ecp.repository/pom.xml b/releng/org.eclipse.emf.ecp.repository/pom.xml
index 08d2d44..2c08054 100644
--- a/releng/org.eclipse.emf.ecp.repository/pom.xml
+++ b/releng/org.eclipse.emf.ecp.repository/pom.xml
@@ -26,6 +26,28 @@
 					<xzCompress>false</xzCompress>
 				</configuration>
 			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>exec-maven-plugin</artifactId>
+				<version>1.2.1</version>
+				<executions>
+					<execution>
+						<id>verify-source-bundles</id>
+						<phase>verify</phase>
+						<goals>
+							<goal>exec</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<executable>python</executable>
+					<workingDirectory>${project.basedir}</workingDirectory>
+					<arguments>
+						<argument>${project.basedir}/../org.eclipse.emf.ecp.releng/scripts/verify-sources.py</argument>
+						<argument>${project.basedir}/../org.eclipse.emf.ecp.releng/scripts/verify-sources-exceptions</argument>
+					</arguments>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>