Bug 549532 - Deleting a view should also clean the plugin.xml

Add DeleteParticipant to handle the cleanup of the plugin.xml.
Also add tests for the participant.

Change-Id: I2c4c6682fda7d54739cd782b08ce0b958d0ffde7
Signed-off-by: Eugen Neufeld <eneufeld@eclipsesource.com>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.editor/META-INF/MANIFEST.MF
index 3c669a7..c50391a 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.editor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor/META-INF/MANIFEST.MF
@@ -8,7 +8,8 @@
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.emf.ecp.view.model.actions;version="1.22.0";x-internal:=true,
- org.eclipse.emf.ecp.view.model.presentation;version="1.22.0";x-friends:="org.eclipse.emf.ecp.view.model.project.installer"
+ org.eclipse.emf.ecp.view.model.presentation;version="1.22.0";x-friends:="org.eclipse.emf.ecp.view.model.project.installer",
+ org.eclipse.emf.ecp.view.model.refactoring;version="1.22.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.22.0,1.23.0)",
@@ -20,7 +21,8 @@
  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.22.0,1.23.0)",
  org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.22.0,1.23.0)",
  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.22.0,1.23.0)",
- org.eclipse.emf.ecp.ide.util;bundle-version="[1.22.0,1.23.0)"
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.22.0,1.23.0)",
+ org.eclipse.ltk.core.refactoring;bundle-version="[3.5.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.emf.ecp.view.model.editor
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor/plugin.xml b/bundles/org.eclipse.emf.ecp.view.model.editor/plugin.xml
index 3580bf3..e483ed3 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.editor/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor/plugin.xml
@@ -78,6 +78,21 @@
          </iterate>
       </definition>
    </extension>
-
-
+   <extension
+         point="org.eclipse.ltk.core.refactoring.deleteParticipants">
+      <deleteParticipant
+            class="org.eclipse.emf.ecp.view.model.refactoring.ViewModelDeleteParticipant"
+            id="org.eclipse.emf.ecp.view.model.editor.deleteParticipant"
+            name="ViewModelDeleteParticipant">
+         <enablement>
+            <adapt
+                  type="org.eclipse.core.resources.IFile">
+               <test
+                     property="org.eclipse.core.resources.name"
+                     value="*.view">
+               </test>
+            </adapt>
+         </enablement>
+      </deleteParticipant>
+   </extension>
 </plugin>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/presentation/ContributionUtil.java b/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/presentation/ContributionUtil.java
new file mode 100644
index 0000000..dac1503
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/presentation/ContributionUtil.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2019 EclipseSource Muenchen GmbH and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * eugen - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.model.presentation;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Optional;
+import java.util.Scanner;
+import java.util.stream.Collectors;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.osgi.framework.Constants;
+
+/**
+ * Util class used during the creation and deletion of view models to update other project files accordingly.
+ *
+ * @author Eugen Neufeld
+ *
+ */
+public final class ContributionUtil {
+
+	private static final String MANIFEST_PATH = "META-INF/MANIFEST.MF"; //$NON-NLS-1$
+
+	private ContributionUtil() {
+	}
+
+	/**
+	 * Checks whether the project is a plugin project.
+	 *
+	 * @param project the project to checks
+	 * @return true if the project has the plugin nature
+	 */
+	public static boolean isPluginProject(IProject project) {
+		try {
+			return project.hasNature("org.eclipse.pde.PluginNature"); //$NON-NLS-1$
+		} catch (final CoreException ex) {
+			// not interested in handling the exception
+			return false;
+		}
+	}
+
+	/**
+	 * Checks whether the project is a fragment project.
+	 *
+	 * @param project the project to checks
+	 * @return true if the Manifest has a fragment host
+	 */
+	public static boolean isFragmentProject(IProject project) {
+		try {
+			final IResource manifest = project.findMember(MANIFEST_PATH);
+			if (manifest == null || !IFile.class.isInstance(manifest)) {
+				/* no osgi project at all */
+				return false;
+			}
+			final InputStream inputStream = IFile.class.cast(manifest).getContents(true);
+			final Scanner scanner = new Scanner(inputStream, "UTF-8"); //$NON-NLS-1$
+			/* read file as one string */
+			final String content = scanner.useDelimiter("\\A").next(); //$NON-NLS-1$
+			scanner.close();
+			/* Every fragment has a fragment host header in the manifest */
+			final int index = content.indexOf(Constants.FRAGMENT_HOST);
+			return index != -1;
+		} catch (final CoreException ex) {
+			return false;
+		}
+	}
+
+	/**
+	 * Util method which allows to parse an IFile.
+	 *
+	 * @param file the IFile to parse
+	 * @return The content of the IFile
+	 * @throws UnsupportedEncodingException
+	 * @throws IOException Thrown if file is not readable
+	 * @throws CoreException Thrown if eclipse cannot read the file
+	 */
+	public static Optional<String> parseIFile(IFile file) throws IOException, CoreException {
+		if (!file.exists()) {
+			return Optional.empty();
+		}
+		try (BufferedReader br = new BufferedReader(
+			new InputStreamReader(file.getContents(true), file.getCharset()))) {
+			return Optional.ofNullable(br.lines().collect(Collectors.joining(System.lineSeparator())));
+		}
+	}
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/presentation/ViewModelWizard.java b/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/presentation/ViewModelWizard.java
index 924deee..0082f7a 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/presentation/ViewModelWizard.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/presentation/ViewModelWizard.java
@@ -17,7 +17,6 @@
 import java.io.ByteArrayInputStream;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -25,7 +24,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Scanner;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
@@ -61,7 +59,6 @@
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 import org.eclipse.ui.part.FileEditorInput;
-import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 
 /**
@@ -72,7 +69,6 @@
  */
 public class ViewModelWizard extends Wizard implements INewWizard {
 
-	private static final String MANIFEST_PATH = "META-INF/MANIFEST.MF"; //$NON-NLS-1$
 	private static final String PLUGIN_ID = "org.eclipse.emf.ecp.view.model.presentation"; //$NON-NLS-1$
 	private Object selectedContainer;
 	private List<EClass> selectedEClasses;
@@ -382,7 +378,7 @@
 			return false;
 		}
 		final IProject project = page.getModelFile().getProject();
-		return isPluginProject(project);
+		return ContributionUtil.isPluginProject(project);
 	}
 
 	/**
@@ -430,7 +426,9 @@
 							page.openEditor(new FileEditorInput(modelFile),
 								workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString())
 									.getId());
+							modelFile.getProject().refreshLocal(IResource.DEPTH_INFINITE, progressMonitor);
 						}
+
 					} catch (final Exception exception) {
 						ViewEditorPlugin.INSTANCE.log(exception);
 					} finally {
@@ -466,6 +464,7 @@
 		final IProject project = modelFile.getProject();
 		final String projectRelPath = modelFile.getProjectRelativePath().toString();
 		final int lastPathDelimiter = projectRelPath.lastIndexOf("/"); //$NON-NLS-1$
+		final String pluginXml = "plugin.xml"; //$NON-NLS-1$
 		final String path;
 		if (lastPathDelimiter == -1) {
 			path = projectRelPath;
@@ -484,18 +483,21 @@
 			while ((line = in.readLine()) != null) {
 				if (line.contains(includes)) {
 					boolean found = false;
+					boolean foundPlugin = false;
 					while (line.contains(",\\")) //$NON-NLS-1$
 					{
 						// entry start
-						int start = line.indexOf("="); //$NON-NLS-1$
-						if (start == -1) {
-							start = 0;
-						}
+						final int start = line.indexOf("="); //$NON-NLS-1$
 
 						final String entry = line.substring(start + 1, line.indexOf(",\\")).trim(); //$NON-NLS-1$
 
 						if (entry.equals(path)) {
 							found = true;
+						}
+						if (entry.equals(pluginXml)) {
+							foundPlugin = true;
+						}
+						if (found && foundPlugin) {
 							break;
 						}
 						contents.append(line + "\n"); //$NON-NLS-1$
@@ -510,7 +512,18 @@
 						}
 						final String entry = line.substring(start).trim();
 						if (!entry.equals(path)) {
-							contents.append(path + ",\\\n"); //$NON-NLS-1$
+							contents.append("               " + path + ",\\\n"); //$NON-NLS-1$ //$NON-NLS-2$
+						}
+					}
+					if (!foundPlugin) {
+						// check last line
+						int start = line.indexOf("="); //$NON-NLS-1$
+						if (start == -1) {
+							start = 0;
+						}
+						final String entry = line.substring(start).trim();
+						if (!entry.equals(pluginXml)) {
+							contents.append("               " + pluginXml + ",\\\n"); //$NON-NLS-1$ //$NON-NLS-2$
 						}
 					}
 				}
@@ -540,10 +553,10 @@
 	 */
 	protected void addContribution(IFile modelFile) {
 		final IProject project = modelFile.getProject();
-		if (!isPluginProject(project)) {
+		if (!ContributionUtil.isPluginProject(project)) {
 			return;
 		}
-		final boolean isFragmentProject = isFragmentProject(project);
+		final boolean isFragmentProject = ContributionUtil.isFragmentProject(project);
 		final String contributionFileName = isFragmentProject ? "fragment.xml" : "plugin.xml"; //$NON-NLS-1$ //$NON-NLS-2$
 		final IFile pluginFile = project.getFile(contributionFileName);
 		try {
@@ -552,7 +565,6 @@
 					"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?eclipse version=\"3.4\"?>\n<{0}>\n</{0}>", //$NON-NLS-1$
 					isFragmentProject ? "fragment" : "plugin"); //$NON-NLS-1$//$NON-NLS-2$
 				pluginFile.create(new ByteArrayInputStream(xmlContents.getBytes()), true, null);
-				project.refreshLocal(IResource.DEPTH_INFINITE, null);
 			}
 			final BufferedReader in = new BufferedReader(new InputStreamReader(pluginFile.getContents()));
 			final String extension = "org.eclipse.emf.ecp.view.model.provider.xmi.file"; //$NON-NLS-1$
@@ -591,7 +603,6 @@
 			out.flush();
 			out.close();
 
-			project.refreshLocal(IResource.DEPTH_INFINITE, null);
 		} catch (final CoreException e) {
 			ViewEditorPlugin.INSTANCE.log(new Status(IStatus.ERROR, PLUGIN_ID, e.getMessage(), e));
 		} catch (final IOException e) {
@@ -600,41 +611,6 @@
 	}
 
 	/**
-	 * Checks whether the project is a plugin project.
-	 *
-	 * @param project the project to checks
-	 * @return true if the project has the plugin nature
-	 */
-	private boolean isPluginProject(IProject project) {
-		try {
-			return project.hasNature("org.eclipse.pde.PluginNature"); //$NON-NLS-1$
-		} catch (final CoreException ex) {
-			// not interested in handling the exception
-			return false;
-		}
-	}
-
-	private boolean isFragmentProject(IProject project) {
-		try {
-			final IResource manifest = project.findMember(MANIFEST_PATH);
-			if (manifest == null || !IFile.class.isInstance(manifest)) {
-				/* no osgi project at all */
-				return false;
-			}
-			final InputStream inputStream = IFile.class.cast(manifest).getContents(true);
-			final Scanner scanner = new Scanner(inputStream, "UTF-8"); //$NON-NLS-1$
-			/* read file as one string */
-			final String content = scanner.useDelimiter("\\A").next(); //$NON-NLS-1$
-			scanner.close();
-			/* Every fragment has a fragment host header in the manifest */
-			final int index = content.indexOf(Constants.FRAGMENT_HOST);
-			return index != -1;
-		} catch (final CoreException ex) {
-			return false;
-		}
-	}
-
-	/**
 	 * Return the {@link IDEViewModelRegistry}.
 	 *
 	 * @return the {@link IDEViewModelRegistry}
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/refactoring/ViewModelDeleteParticipant.java b/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/refactoring/ViewModelDeleteParticipant.java
new file mode 100644
index 0000000..1880102
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor/src/org/eclipse/emf/ecp/view/model/refactoring/ViewModelDeleteParticipant.java
@@ -0,0 +1,197 @@
+/**
+ * Copyright (c) 2011-2019 EclipseSource Muenchen GmbH and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Eugen Neufeld - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.model.refactoring;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.Adapters;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.ecp.view.model.presentation.ContributionUtil;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
+import org.eclipse.ltk.core.refactoring.participants.DeleteParticipant;
+import org.eclipse.ltk.core.refactoring.participants.ResourceChangeChecker;
+
+/**
+ * Delete Participant for View Models.
+ * This class cleans up the plugin.xml.
+ *
+ * @author Eugen Neufeld
+ **/
+
+public class ViewModelDeleteParticipant extends DeleteParticipant {
+	private static final Pattern EMPTY_PLUGIN_PATTERN = Pattern.compile("<plugin>\\s*</plugin>", //$NON-NLS-1$
+		Pattern.DOTALL | Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
+
+	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
+	private static final Pattern EMPTY_XMI_EXTENSIONPOINT = Pattern.compile(
+		"<extension.*point=\"org.eclipse.emf.ecp.view.model.provider.xmi.file\">\\s*</extension>", //$NON-NLS-1$
+		Pattern.DOTALL | Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
+	private static final String ONE_LINE_FILE = "<file filePath=\"%s\"/>"; //$NON-NLS-1$
+	private static final String MULTI_LINE_FILE = "<file\\s*filePath=\"%s\">\\s*</file>"; //$NON-NLS-1$
+	private static final String REMOVE_PLUGIN_XML = "plugin.xml,?\\\\?\\s*"; //$NON-NLS-1$
+	private static final String REMOVE_FOLDER = "%s/,?\\\\?\\s*"; //$NON-NLS-1$
+	private static final String REMOVE_VIEW = "%s,?\\\\?\\s*"; //$NON-NLS-1$
+	private static final String CLEAN_PLUGIN_XML = ",\\\\\\s*$"; //$NON-NLS-1$
+
+	/**
+	 * Custom Change that removes the registered view model from the plugin.xml .
+	 *
+	 * @author Eugen Neufeld
+	 *
+	 */
+	private final class ChangeExtension extends Change {
+		@Override
+		public Change perform(IProgressMonitor pm) throws CoreException {
+
+			try {
+				final String pluginString = ContributionUtil.parseIFile(pluginXml).get();
+				final String viewPath = viewModel.getProjectRelativePath().toString();
+
+				final String cleanExtensionString = pluginString
+					.replaceAll(String.format(ONE_LINE_FILE, viewPath), EMPTY_STRING)
+					.replaceAll(String.format(MULTI_LINE_FILE, viewPath), EMPTY_STRING);
+
+				final String cleanPlugin = EMPTY_XMI_EXTENSIONPOINT.matcher(cleanExtensionString)
+					.replaceAll(EMPTY_STRING);
+				final Matcher matcher = EMPTY_PLUGIN_PATTERN.matcher(cleanPlugin);
+				boolean removePluginXml = false;
+				if (!matcher.find()) {
+					final FileWriter out = new FileWriter(pluginXml.getRawLocation().makeAbsolute().toFile());
+					out.write(String.valueOf(cleanPlugin));
+					out.close();
+				} else {
+					pluginXml.delete(true, pm);
+					removePluginXml = true;
+				}
+				boolean removeFolder = false;
+				if (viewModel.getParent().members().length == 0) {
+					viewModel.getParent().delete(true, pm);
+					removeFolder = true;
+				}
+				final IFile buildProperties = viewModel.getProject().getFile("build.properties"); //$NON-NLS-1$
+				final String buildPropertiesString = ContributionUtil.parseIFile(buildProperties).get();
+				String cleanedProperties = null;
+				if (removePluginXml || removeFolder) {
+					if (removePluginXml) {
+						cleanedProperties = buildPropertiesString
+							.replaceAll(REMOVE_PLUGIN_XML, EMPTY_STRING);
+					}
+					if (removeFolder) {
+						cleanedProperties = (cleanedProperties != null ? cleanedProperties : buildPropertiesString)
+							.replaceAll(
+								String.format(REMOVE_FOLDER,
+									viewModel.getParent().getProjectRelativePath().toString()),
+								EMPTY_STRING);
+					}
+				}
+				{
+					cleanedProperties = (cleanedProperties != null ? cleanedProperties : buildPropertiesString)
+						.replaceAll(
+							String.format(REMOVE_VIEW, viewModel.getProjectRelativePath().toString()),
+							EMPTY_STRING);
+				}
+
+				cleanedProperties = cleanedProperties.replaceAll(CLEAN_PLUGIN_XML, EMPTY_STRING);
+				final FileWriter out = new FileWriter(buildProperties.getRawLocation().makeAbsolute().toFile());
+				out.write(String.valueOf(cleanedProperties));
+				out.flush();
+				out.close();
+
+				viewModel.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
+
+			} catch (final IOException ex) {
+				throw new CoreException(
+					new Status(IStatus.ERROR, "org.eclipse.emf.ecp.view.model.editor", ex.getMessage(), ex)); //$NON-NLS-1$
+			}
+
+			return null;
+		}
+
+		@Override
+		public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException, OperationCanceledException {
+			return RefactoringStatus.create(Status.OK_STATUS);
+		}
+
+		@Override
+		public void initializeValidationData(IProgressMonitor pm) {
+		}
+
+		@Override
+		public String getName() {
+			return "Remove view model from plugin.xml"; //$NON-NLS-1$
+		}
+
+		@Override
+		public Object getModifiedElement() {
+			return null;
+		}
+	}
+
+	private IFile viewModel;
+	private IFile pluginXml;
+
+	/**
+	 * Default constructor.
+	 */
+	public ViewModelDeleteParticipant() {
+	}
+
+	@Override
+	protected boolean initialize(Object element) {
+		viewModel = Adapters.adapt(element, IFile.class);
+		pluginXml = viewModel.getProject().getFile("plugin.xml"); //$NON-NLS-1$
+
+		return viewModel != null && pluginXml.exists();
+	}
+
+	@Override
+	public String getName() {
+		return "Clean up after View Model Removal"; //$NON-NLS-1$
+	}
+
+	@Override
+	public RefactoringStatus checkConditions(IProgressMonitor pm, CheckConditionsContext context)
+		throws OperationCanceledException {
+		final ResourceChangeChecker resourceChecker = context.getChecker(ResourceChangeChecker.class);
+		if (resourceChecker != null) {
+			try {
+				final RefactoringStatus result = resourceChecker.check(pm);
+				final String projectInfo = "Remove view model from plugin.xml"; //$NON-NLS-1$
+				result.addInfo(projectInfo);
+				return result;
+			} catch (final CoreException e) {
+				return RefactoringStatus.create(e.getStatus());
+			}
+		}
+
+		return new RefactoringStatus();
+	}
+
+	@Override
+	public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
+		return new ChangeExtension();
+	}
+
+}
\ No newline at end of file
diff --git a/features/org.eclipse.emf.ecp.view.model.feature/ECP IDE Tooling.launch b/features/org.eclipse.emf.ecp.view.model.feature/ECP IDE Tooling.launch
index e759e05..aff13f7 100644
--- a/features/org.eclipse.emf.ecp.view.model.feature/ECP IDE Tooling.launch
+++ b/features/org.eclipse.emf.ecp.view.model.feature/ECP IDE Tooling.launch
@@ -64,8 +64,8 @@
 <setEntry value="org.eclipse.platform:default"/>
 <setEntry value="org.eclipse.rcp:default"/>
 </setAttribute>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,lpg.runtime.java@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.dom@default:default,org.apache.batik.ext.awt@default:default,org.apache.batik.svggen@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.xml@default:default,org.apache.commons.codec*1.10.0.v20180409-1845@default:default,org.apache.commons.codec*1.9.0.v20170208-1614@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.commons.logging*1.2.0.v20180409-1502@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.scr@1:true,org.apache.lucene.analyzers-common@default:default,org.apache.lucene.analyzers-smartcn@default:default,org.apache.lucene.core@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.beans*1.3.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.linux.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.draw2d@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.converter@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edapt.common@default:default,org.eclipse.emf.edapt.declaration@default:default,org.eclipse.emf.edapt.history@default:default,org.eclipse.emf.edapt.migration@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client.model.edit@default:default,org.eclipse.emf.emfstore.client.ui.rcp@default:false,org.eclipse.emf.emfstore.client.ui@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model.edit@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model.edit@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.emf.importer@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation@default:default,org.eclipse.emf.workspace@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.supplement@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.gef@default:default,org.eclipse.help.base@default:default,org.eclipse.help@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db.jdbc@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default,org.eclipse.ocl.common@default:default,org.eclipse.ocl.ecore@default:default,org.eclipse.ocl@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.search@default:default,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.swtbot.ant.junit@default:false,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.h2@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.slf4j.api@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.0.v200806040011@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.application.e3@default:default,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.emffilter@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.doc@default:default,org.eclipse.emf.ecp.edit.ecore.swt@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.emfstore.ui.search@default:default,org.eclipse.emf.ecp.emfstore.ui@default:default,org.eclipse.emf.ecp.examplemodel.ui@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ide.editor.view.templatebridge@default:default,org.eclipse.emf.ecp.ide.editor.view@default:default,org.eclipse.emf.ecp.ide.editor.viewmodel@default:default,org.eclipse.emf.ecp.ide.util@default:default,org.eclipse.emf.ecp.ide.view.service@default:default,org.eclipse.emf.ecp.makeithappen.wizards@default:default,org.eclipse.emf.ecp.ui.e3@default:default,org.eclipse.emf.ecp.ui.rcp@default:false,org.eclipse.emf.ecp.ui.transaction@default:default,org.eclipse.emf.ecp.ui.view.editor.controls@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.validation.connector@default:default,org.eclipse.emf.ecp.validation@default:default,org.eclipse.emf.ecp.view.categorization.model.edit@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.categorization.swt@default:default,org.eclipse.emf.ecp.view.context.locale@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.control.multireference@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.custom.model.edit@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.custom.ui.swt@default:default,org.eclipse.emf.ecp.view.edapt@default:default,org.eclipse.emf.ecp.view.group.model.edit@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.group.ui.swt@default:default,org.eclipse.emf.ecp.view.groupedgrid.model.edit@default:default,org.eclipse.emf.ecp.view.groupedgrid.model@default:default,org.eclipse.emf.ecp.view.groupedgrid.ui.swt@default:default,org.eclipse.emf.ecp.view.horizontal.model.edit@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.horizontal.ui.swt@default:default,org.eclipse.emf.ecp.view.indexdmr.model.edit@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.label.model.edit@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.label.ui.swt@default:default,org.eclipse.emf.ecp.view.mappingdmr.model.edit@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edit@default:default,org.eclipse.emf.ecp.view.model.editor@default:default,org.eclipse.emf.ecp.view.model.preview.common@default:default,org.eclipse.emf.ecp.view.model.preview.e3@default:default,org.eclipse.emf.ecp.view.model.project.installer@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model.edit@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.rule@default:default,org.eclipse.emf.ecp.view.stack.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.columnservice@default:default,org.eclipse.emf.ecp.view.table.edapt@default:default,org.eclipse.emf.ecp.view.table.model.edit@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.table.validation@default:default,org.eclipse.emf.ecp.view.template.annotation.model.edit@default:default,org.eclipse.emf.ecp.view.template.annotation.model@default:default,org.eclipse.emf.ecp.view.template.model.edit@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.template.tooling@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model.edit@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt@default:default,org.eclipse.emf.ecp.view.treemasterdetail.validation@default:default,org.eclipse.emf.ecp.view.unset@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model.edit@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.vertical.ui.swt@default:default,org.eclipse.emf.ecp.workspace.core@default:default,org.eclipse.emf.ecp.workspace.ui@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.index@default:default,org.eclipse.emfforms.core.services.domainexpander.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange.index@default:default,org.eclipse.emfforms.core.services.structuralchange.mapping@default:default,org.eclipse.emfforms.core.services.structuralchange.table@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.editor.ecore@default:default,org.eclipse.emfforms.editor.genmodel.util@default:default,org.eclipse.emfforms.editor.genmodel@default:default,org.eclipse.emfforms.editor.viewmodel@default:default,org.eclipse.emfforms.editor@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.setup.base@default:default,org.eclipse.emfforms.swt.control.multiattribute@default:default,org.eclipse.emfforms.swt.controlgrid@default:default,org.eclipse.emfforms.swt.core.di.extension@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.plugin@default:default,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.swt.table@default:default,org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default@default:default,org.eclipse.emfforms.swt.treemasterdetail@default:default,org.eclipse.emfforms.view.annotation.model.edit@default:default,org.eclipse.emfforms.view.annotation.model@default:default,org.eclipse.emfforms.view.controlgrid.model.edit@default:default,org.eclipse.emfforms.view.controlgrid.model@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu,javax.annotation,javax.inject,javax.servlet,lpg.runtime.java,org.apache.ant,org.apache.batik.constants*1.11.0.v20190515-0436,org.apache.batik.css*1.11.0.v20190515-0436,org.apache.batik.i18n*1.11.0.v20190515-0436,org.apache.batik.util*1.11.0.v20190515-0436,org.apache.commons.codec,org.apache.commons.jxpath,org.apache.commons.logging*1.1.1.v201101211721,org.apache.commons.logging*1.2.0.v20180409-1502,org.apache.felix.gogo.command,org.apache.felix.gogo.runtime,org.apache.felix.scr,org.apache.lucene.analyzers-common,org.apache.lucene.analyzers-smartcn,org.apache.lucene.core,org.apache.xmlgraphics,org.eclipse.ant.core,org.eclipse.ant.launching,org.eclipse.ant.ui,org.eclipse.compare,org.eclipse.compare.core,org.eclipse.core.commands,org.eclipse.core.contenttype,org.eclipse.core.databinding,org.eclipse.core.databinding.beans,org.eclipse.core.databinding.observable,org.eclipse.core.databinding.property,org.eclipse.core.expressions,org.eclipse.core.externaltools,org.eclipse.core.filebuffers,org.eclipse.core.filesystem,org.eclipse.core.filesystem.linux.x86_64,org.eclipse.core.jobs,org.eclipse.core.net,org.eclipse.core.net.linux.x86_64,org.eclipse.core.resources,org.eclipse.core.runtime,org.eclipse.core.variables,org.eclipse.debug.core,org.eclipse.debug.ui,org.eclipse.draw2d,org.eclipse.e4.core.commands,org.eclipse.e4.core.contexts,org.eclipse.e4.core.di,org.eclipse.e4.core.di.annotations,org.eclipse.e4.core.di.extensions,org.eclipse.e4.core.di.extensions.supplier,org.eclipse.e4.core.services,org.eclipse.e4.emf.xpath,org.eclipse.e4.ui.bindings,org.eclipse.e4.ui.css.core,org.eclipse.e4.ui.css.swt,org.eclipse.e4.ui.css.swt.theme,org.eclipse.e4.ui.di,org.eclipse.e4.ui.model.workbench,org.eclipse.e4.ui.services,org.eclipse.e4.ui.swt.gtk,org.eclipse.e4.ui.widgets,org.eclipse.e4.ui.workbench,org.eclipse.e4.ui.workbench.addons.swt,org.eclipse.e4.ui.workbench.renderers.swt,org.eclipse.e4.ui.workbench.swt,org.eclipse.e4.ui.workbench3,org.eclipse.emf.codegen,org.eclipse.emf.codegen.ecore,org.eclipse.emf.codegen.ecore.ui,org.eclipse.emf.common,org.eclipse.emf.common.ui,org.eclipse.emf.converter,org.eclipse.emf.databinding,org.eclipse.emf.databinding.edit,org.eclipse.emf.ecore,org.eclipse.emf.ecore.change,org.eclipse.emf.ecore.edit,org.eclipse.emf.ecore.editor,org.eclipse.emf.ecore.xmi,org.eclipse.emf.edapt.common,org.eclipse.emf.edapt.declaration,org.eclipse.emf.edapt.history,org.eclipse.emf.edapt.migration,org.eclipse.emf.edit,org.eclipse.emf.edit.ui,org.eclipse.emf.emfstore.client,org.eclipse.emf.emfstore.client.model.edit,org.eclipse.emf.emfstore.client.ui,org.eclipse.emf.emfstore.client.ui.rcp,org.eclipse.emf.emfstore.common,org.eclipse.emf.emfstore.common.model,org.eclipse.emf.emfstore.common.model.edit,org.eclipse.emf.emfstore.examplemodel,org.eclipse.emf.emfstore.examplemodel.edit,org.eclipse.emf.emfstore.migration,org.eclipse.emf.emfstore.server,org.eclipse.emf.emfstore.server.model,org.eclipse.emf.emfstore.server.model.edit,org.eclipse.emf.importer,org.eclipse.emf.importer.ecore,org.eclipse.emf.transaction,org.eclipse.emf.validation,org.eclipse.emf.workspace,org.eclipse.equinox.app,org.eclipse.equinox.bidi,org.eclipse.equinox.common,org.eclipse.equinox.ds,org.eclipse.equinox.event,org.eclipse.equinox.frameworkadmin,org.eclipse.equinox.frameworkadmin.equinox,org.eclipse.equinox.http.registry,org.eclipse.equinox.p2.artifact.repository,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.director,org.eclipse.equinox.p2.director.app,org.eclipse.equinox.p2.engine,org.eclipse.equinox.p2.garbagecollector,org.eclipse.equinox.p2.jarprocessor,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.p2.metadata.repository,org.eclipse.equinox.p2.operations,org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.p2.repository,org.eclipse.equinox.p2.repository.tools,org.eclipse.equinox.p2.touchpoint.eclipse,org.eclipse.equinox.p2.ui,org.eclipse.equinox.preferences,org.eclipse.equinox.region,org.eclipse.equinox.registry,org.eclipse.equinox.security,org.eclipse.equinox.security.ui,org.eclipse.equinox.simpleconfigurator,org.eclipse.equinox.simpleconfigurator.manipulator,org.eclipse.equinox.supplement,org.eclipse.equinox.transforms.hook,org.eclipse.equinox.util,org.eclipse.equinox.weaving.hook,org.eclipse.gef,org.eclipse.help,org.eclipse.help.base,org.eclipse.jdt,org.eclipse.jdt.compiler.apt,org.eclipse.jdt.compiler.tool,org.eclipse.jdt.core,org.eclipse.jdt.core.manipulation,org.eclipse.jdt.debug,org.eclipse.jdt.debug.ui,org.eclipse.jdt.junit,org.eclipse.jdt.junit.core,org.eclipse.jdt.junit.runtime,org.eclipse.jdt.launching,org.eclipse.jdt.ui,org.eclipse.jface,org.eclipse.jface.databinding,org.eclipse.jface.text,org.eclipse.ltk.core.refactoring,org.eclipse.ltk.ui.refactoring,org.eclipse.net4j,org.eclipse.net4j.db,org.eclipse.net4j.db.h2,org.eclipse.net4j.db.jdbc,org.eclipse.net4j.jvm,org.eclipse.net4j.ui.shared,org.eclipse.net4j.util,org.eclipse.net4j.util.ui,org.eclipse.ocl,org.eclipse.ocl.common,org.eclipse.ocl.ecore,org.eclipse.osgi,org.eclipse.osgi.compatibility.state,org.eclipse.osgi.services,org.eclipse.osgi.util,org.eclipse.pde.build,org.eclipse.pde.core,org.eclipse.search,org.eclipse.swt,org.eclipse.swt.gtk.linux.x86_64,org.eclipse.swtbot.ant.junit,org.eclipse.team.core,org.eclipse.team.ui,org.eclipse.text,org.eclipse.ui,org.eclipse.ui.cheatsheets,org.eclipse.ui.console,org.eclipse.ui.editors,org.eclipse.ui.externaltools,org.eclipse.ui.forms,org.eclipse.ui.ide,org.eclipse.ui.ide.application,org.eclipse.ui.intro,org.eclipse.ui.navigator,org.eclipse.ui.navigator.resources,org.eclipse.ui.trace,org.eclipse.ui.views,org.eclipse.ui.views.properties.tabbed,org.eclipse.ui.workbench,org.eclipse.ui.workbench.texteditor,org.eclipse.update.configurator,org.eclipse.urischeme,org.h2,org.hamcrest.core,org.junit,org.mockito.mockito-core-hamcrest-modified,org.objenesis,org.sat4j.core,org.sat4j.pb,org.slf4j.api,org.tukaani.xz,org.w3c.css.sac,org.w3c.dom.events,org.w3c.dom.smil*1.0.0.v200806040011,org.w3c.dom.smil*1.0.1.v200903091627,org.w3c.dom.svg"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.application.e3,org.eclipse.emf.ecp.common,org.eclipse.emf.ecp.common.ui,org.eclipse.emf.ecp.core,org.eclipse.emf.ecp.core.emffilter,org.eclipse.emf.ecp.doc,org.eclipse.emf.ecp.edit,org.eclipse.emf.ecp.edit.ecore.swt,org.eclipse.emf.ecp.edit.swt,org.eclipse.emf.ecp.editor.e3,org.eclipse.emf.ecp.emfstore.core,org.eclipse.emf.ecp.emfstore.ui,org.eclipse.emf.ecp.emfstore.ui.search,org.eclipse.emf.ecp.examplemodel.ui,org.eclipse.emf.ecp.explorereditorbridge,org.eclipse.emf.ecp.ide.editor.view,org.eclipse.emf.ecp.ide.editor.view.templatebridge,org.eclipse.emf.ecp.ide.editor.viewmodel,org.eclipse.emf.ecp.ide.util,org.eclipse.emf.ecp.ide.view.service,org.eclipse.emf.ecp.makeithappen.wizards@default:default,org.eclipse.emf.ecp.ui,org.eclipse.emf.ecp.ui.e3,org.eclipse.emf.ecp.ui.rcp,org.eclipse.emf.ecp.ui.transaction,org.eclipse.emf.ecp.ui.view,org.eclipse.emf.ecp.ui.view.editor.controls,org.eclipse.emf.ecp.ui.view.swt,org.eclipse.emf.ecp.validation,org.eclipse.emf.ecp.validation.connector,org.eclipse.emf.ecp.view.categorization.model,org.eclipse.emf.ecp.view.categorization.model.edit,org.eclipse.emf.ecp.view.categorization.swt,org.eclipse.emf.ecp.view.context,org.eclipse.emf.ecp.view.context.locale,org.eclipse.emf.ecp.view.control.multireference,org.eclipse.emf.ecp.view.core.swt,org.eclipse.emf.ecp.view.custom.model,org.eclipse.emf.ecp.view.custom.model.edit,org.eclipse.emf.ecp.view.custom.ui.swt,org.eclipse.emf.ecp.view.edapt,org.eclipse.emf.ecp.view.group.model,org.eclipse.emf.ecp.view.group.model.edit,org.eclipse.emf.ecp.view.group.ui.swt,org.eclipse.emf.ecp.view.groupedgrid.model,org.eclipse.emf.ecp.view.groupedgrid.model.edit,org.eclipse.emf.ecp.view.groupedgrid.ui.swt,org.eclipse.emf.ecp.view.horizontal.model,org.eclipse.emf.ecp.view.horizontal.model.edit,org.eclipse.emf.ecp.view.horizontal.ui.swt,org.eclipse.emf.ecp.view.indexdmr.model,org.eclipse.emf.ecp.view.indexdmr.model.edit,org.eclipse.emf.ecp.view.label.model,org.eclipse.emf.ecp.view.label.model.edit,org.eclipse.emf.ecp.view.label.ui.swt,org.eclipse.emf.ecp.view.mappingdmr.model,org.eclipse.emf.ecp.view.mappingdmr.model.edit,org.eclipse.emf.ecp.view.migrator,org.eclipse.emf.ecp.view.model,org.eclipse.emf.ecp.view.model.common,org.eclipse.emf.ecp.view.model.common.di,org.eclipse.emf.ecp.view.model.edit,org.eclipse.emf.ecp.view.model.editor,org.eclipse.emf.ecp.view.model.preview.common,org.eclipse.emf.ecp.view.model.preview.e3,org.eclipse.emf.ecp.view.model.project.installer,org.eclipse.emf.ecp.view.model.provider.generator,org.eclipse.emf.ecp.view.model.provider.xmi,org.eclipse.emf.ecp.view.rule,org.eclipse.emf.ecp.view.rule.model,org.eclipse.emf.ecp.view.rule.model.edit,org.eclipse.emf.ecp.view.stack.model,org.eclipse.emf.ecp.view.swt.layout,org.eclipse.emf.ecp.view.table.columnservice,org.eclipse.emf.ecp.view.table.edapt,org.eclipse.emf.ecp.view.table.model,org.eclipse.emf.ecp.view.table.model.edit,org.eclipse.emf.ecp.view.table.ui.swt,org.eclipse.emf.ecp.view.table.validation,org.eclipse.emf.ecp.view.template.annotation.model,org.eclipse.emf.ecp.view.template.annotation.model.edit,org.eclipse.emf.ecp.view.template.model,org.eclipse.emf.ecp.view.template.model.edit,org.eclipse.emf.ecp.view.template.service,org.eclipse.emf.ecp.view.template.tooling,org.eclipse.emf.ecp.view.treemasterdetail.model,org.eclipse.emf.ecp.view.treemasterdetail.model.edit,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt,org.eclipse.emf.ecp.view.treemasterdetail.validation,org.eclipse.emf.ecp.view.unset,org.eclipse.emf.ecp.view.util.swt,org.eclipse.emf.ecp.view.validation,org.eclipse.emf.ecp.view.vertical.model,org.eclipse.emf.ecp.view.vertical.model.edit,org.eclipse.emf.ecp.view.vertical.ui.swt,org.eclipse.emf.ecp.workspace.core,org.eclipse.emf.ecp.workspace.ui,org.eclipse.emfforms.common,org.eclipse.emfforms.common.prevalidation,org.eclipse.emfforms.common.validation,org.eclipse.emfforms.core.bazaar,org.eclipse.emfforms.core.services,org.eclipse.emfforms.core.services.databinding.featurepath,org.eclipse.emfforms.core.services.databinding.index,org.eclipse.emfforms.core.services.databinding.mapping,org.eclipse.emfforms.core.services.domainexpander.default,org.eclipse.emfforms.core.services.domainexpander.index,org.eclipse.emfforms.core.services.domainexpander.mapping,org.eclipse.emfforms.core.services.domainexpander.table,org.eclipse.emfforms.core.services.editsupport,org.eclipse.emfforms.core.services.emf,org.eclipse.emfforms.core.services.emfspecificservice,org.eclipse.emfforms.core.services.legacy,org.eclipse.emfforms.core.services.locale.default,org.eclipse.emfforms.core.services.mappingprovider.default,org.eclipse.emfforms.core.services.mappingprovider.table,org.eclipse.emfforms.core.services.segments,org.eclipse.emfforms.core.services.segments.featurepath,org.eclipse.emfforms.core.services.segments.index,org.eclipse.emfforms.core.services.segments.mapping,org.eclipse.emfforms.core.services.segments.multi,org.eclipse.emfforms.core.services.structuralchange,org.eclipse.emfforms.core.services.structuralchange.default,org.eclipse.emfforms.core.services.structuralchange.index,org.eclipse.emfforms.core.services.structuralchange.mapping,org.eclipse.emfforms.core.services.structuralchange.table,org.eclipse.emfforms.editor,org.eclipse.emfforms.editor.ecore,org.eclipse.emfforms.editor.genmodel,org.eclipse.emfforms.editor.genmodel.util,org.eclipse.emfforms.editor.viewmodel,org.eclipse.emfforms.example.common.wizards@default:default,org.eclipse.emfforms.ide.view.indexsegment,org.eclipse.emfforms.ide.view.multisegment,org.eclipse.emfforms.ide.view.segments,org.eclipse.emfforms.localization,org.eclipse.emfforms.setup.base,org.eclipse.emfforms.swt.control.multiattribute,org.eclipse.emfforms.swt.controlgrid,org.eclipse.emfforms.swt.core,org.eclipse.emfforms.swt.core.di,org.eclipse.emfforms.swt.core.di.extension,org.eclipse.emfforms.swt.core.plugin,org.eclipse.emfforms.swt.table,org.eclipse.emfforms.swt.treemasterdetail,org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default,org.eclipse.emfforms.view.annotation.model,org.eclipse.emfforms.view.annotation.model.edit,org.eclipse.emfforms.view.controlgrid.model,org.eclipse.emfforms.view.controlgrid.model.edit,org.eclipse.emfforms.view.indexsegment.model,org.eclipse.emfforms.view.mappingsegment.model,org.eclipse.emfforms.view.model.localization,org.eclipse.emfforms.view.multisegment.model"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <stringAttribute key="timestamp" value="1366714902913"/>
 <booleanAttribute key="tracing" value="false"/>
diff --git a/releng/org.eclipse.emf.ecp.releng.tests/pom.xml b/releng/org.eclipse.emf.ecp.releng.tests/pom.xml
index 7fa7305..d2c3dbf 100644
--- a/releng/org.eclipse.emf.ecp.releng.tests/pom.xml
+++ b/releng/org.eclipse.emf.ecp.releng.tests/pom.xml
@@ -240,6 +240,8 @@
 		<module>../../tests/org.eclipse.emfforms.editor.test</module>
 		
 		<module>../../tests/org.eclipse.emfforms.sdk.integration.test</module>
+
+		<module>../../tests/org.eclipse.emf.ecp.view.model.editor.test</module>
 		
 	</modules>
 	
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.classpath b/tests/org.eclipse.emf.ecp.view.model.editor.test/.classpath
new file mode 100644
index 0000000..3e5654f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src">
+		<attributes>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.project b/tests/org.eclipse.emf.ecp.view.model.editor.test/.project
new file mode 100644
index 0000000..33f075f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.model.editor.test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..df3d5b4
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1

+org.eclipse.jdt.core.builder.cleanOutputFolder=clean

+org.eclipse.jdt.core.builder.duplicateResourceTask=warning

+org.eclipse.jdt.core.builder.invalidClasspath=abort

+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore

+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=

+org.eclipse.jdt.core.circularClasspath=error

+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error

+org.eclipse.jdt.core.codeComplete.argumentPrefixes=

+org.eclipse.jdt.core.codeComplete.argumentSuffixes=

+org.eclipse.jdt.core.codeComplete.fieldPrefixes=

+org.eclipse.jdt.core.codeComplete.fieldSuffixes=

+org.eclipse.jdt.core.codeComplete.localPrefixes=

+org.eclipse.jdt.core.codeComplete.localSuffixes=

+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=

+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=

+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=

+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=

+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled

+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore

+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull

+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault

+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable

+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

+org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.debug.lineNumber=generate

+org.eclipse.jdt.core.compiler.debug.localVariable=generate

+org.eclipse.jdt.core.compiler.debug.sourceFile=generate

+org.eclipse.jdt.core.compiler.doc.comment.support=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning

+org.eclipse.jdt.core.compiler.problem.deadCode=warning

+org.eclipse.jdt.core.compiler.problem.deprecation=warning

+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore

+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning

+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled

+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning

+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled

+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore

+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore

+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled

+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning

+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled

+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning

+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning

+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error

+org.eclipse.jdt.core.compiler.problem.nullReference=warning

+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error

+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning

+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore

+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore

+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning

+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled

+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning

+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning

+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.unusedImport=warning

+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

+org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled

+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL

+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO

+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_assignment=0

+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16

+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80

+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0

+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16

+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0

+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16

+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80

+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16

+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16

+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1

+org.eclipse.jdt.core.formatter.blank_lines_after_package=1

+org.eclipse.jdt.core.formatter.blank_lines_before_field=0

+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0

+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1

+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1

+org.eclipse.jdt.core.formatter.blank_lines_before_method=1

+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1

+org.eclipse.jdt.core.formatter.blank_lines_before_package=0

+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1

+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1

+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true

+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false

+org.eclipse.jdt.core.formatter.comment.format_block_comments=true

+org.eclipse.jdt.core.formatter.comment.format_header=true

+org.eclipse.jdt.core.formatter.comment.format_html=true

+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true

+org.eclipse.jdt.core.formatter.comment.format_line_comments=true

+org.eclipse.jdt.core.formatter.comment.format_source_code=true

+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true

+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true

+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert

+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert

+org.eclipse.jdt.core.formatter.comment.line_length=120

+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true

+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true

+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false

+org.eclipse.jdt.core.formatter.compact_else_if=true

+org.eclipse.jdt.core.formatter.continuation_indentation=1

+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1

+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off

+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on

+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false

+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true

+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true

+org.eclipse.jdt.core.formatter.indent_empty_lines=false

+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true

+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true

+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true

+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false

+org.eclipse.jdt.core.formatter.indentation.size=4

+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert

+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert

+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert

+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert

+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert

+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert

+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert

+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert

+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert

+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert

+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert

+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.join_lines_in_comments=false

+org.eclipse.jdt.core.formatter.join_wrapped_lines=false

+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false

+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false

+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false

+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false

+org.eclipse.jdt.core.formatter.lineSplit=120

+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false

+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false

+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0

+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1

+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true

+org.eclipse.jdt.core.formatter.tabulation.char=tab

+org.eclipse.jdt.core.formatter.tabulation.size=4

+org.eclipse.jdt.core.formatter.use_on_off_tags=true

+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true

+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

+org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..6ed4937
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=true
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License 2.0\n * which accompanies this distribution, and is available at\n * https\://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier\: EPL-2.0\n * \n * Contributors\:\n * ${user} - initial API and implementation\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * {@inheritDoc}\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">\t\t\t// TODO Auto-generated catch block\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\n\t\t\t// Log AND handle Exceptions if possible \n            //\n            // You can just uncomment one of the lines below to log an exception\:\n\t\t\t// logException will show the logged excpetion to the user\n\t\t\t// ModelUtil.logException(${exception_var});\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\n\t\t\t// logWarning will only add the message to the error log\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\n\t\t\t//\t\t\t\n\t\t\t// If handling is not possible declare and rethrow Exception</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=false
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..cfb400b
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,104 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Warning
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Ignore
+incompatible_api_component_version_report_minor_without_api_change=Ignore
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.core.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.model.editor.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..097dc6c
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: View Model Editor Tests
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.editor.test
+Bundle-Version: 1.22.0.qualifier
+Fragment-Host: org.eclipse.emf.ecp.view.model.editor;bundle-version="[1.22.0,1.23.0)"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.editor.test
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.model.refactoring;version="1.22.0";x-internal:=true
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/build.properties b/tests/org.eclipse.emf.ecp.view.model.editor.test/build.properties
new file mode 100644
index 0000000..342f3ff
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               resources/
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/pom.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test/pom.xml
new file mode 100644
index 0000000..92b0bf6
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-tests-parent</artifactId>
+		<version>1.22.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>org.eclipse.emf.ecp.view.model.editor.test</artifactId>
+	<version>1.22.0-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+		          	<useUIHarness>true</useUIHarness>
+		          	<useUIThread>true</useUIThread>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>target-platform-configuration</artifactId>
+				<configuration>
+					<dependency-resolution>
+						<extraRequirements>
+							<requirement>
+								<type>eclipse-feature</type>
+								<id>org.eclipse.emf.ecp.emfforms.sdk.feature</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+						</extraRequirements>
+					</dependency-resolution>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/build.properties b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/build.properties
new file mode 100644
index 0000000..38fcf85
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/build.properties
@@ -0,0 +1,4 @@
+bin.includes = plugin.xml,\
+               views/,\
+               .,\
+               META-INF/
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/build.properties-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/build.properties-final
new file mode 100644
index 0000000..3ad7f45
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/build.properties-final
@@ -0,0 +1,2 @@
+bin.includes = .,\
+               META-INF/
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/plugin.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/plugin.xml
new file mode 100644
index 0000000..3846d6d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      <file
+            filePath="views/test.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/views/test.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/views/test.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryFirstInProperties/views/test.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/build.properties b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/build.properties
new file mode 100644
index 0000000..d431fdc
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/build.properties
@@ -0,0 +1,4 @@
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               views/
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/build.properties-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/build.properties-final
new file mode 100644
index 0000000..3ad7f45
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/build.properties-final
@@ -0,0 +1,2 @@
+bin.includes = .,\
+               META-INF/
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/plugin.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/plugin.xml
new file mode 100644
index 0000000..3846d6d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      <file
+            filePath="views/test.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/views/test.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/views/test.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryLastInProperties/views/test.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/build.properties b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/build.properties
new file mode 100644
index 0000000..baac44d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/build.properties
@@ -0,0 +1,4 @@
+bin.includes = .,\
+               plugin.xml,\
+               views/,\
+               META-INF/
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/build.properties-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/build.properties-final
new file mode 100644
index 0000000..3ad7f45
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/build.properties-final
@@ -0,0 +1,2 @@
+bin.includes = .,\
+               META-INF/
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/plugin.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/plugin.xml
new file mode 100644
index 0000000..3846d6d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      <file
+            filePath="views/test.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/views/test.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/views/test.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/lastEntryMidInProperties/views/test.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/build.properties b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/build.properties
new file mode 100644
index 0000000..d431fdc
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/build.properties
@@ -0,0 +1,4 @@
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               views/
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/build.properties-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/build.properties-final
new file mode 100644
index 0000000..d431fdc
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/build.properties-final
@@ -0,0 +1,4 @@
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               views/
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/plugin.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/plugin.xml
new file mode 100644
index 0000000..56deee4
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      <file
+            filePath="views/test.view">
+      </file>
+      <file
+            filePath="views/test2.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/plugin.xml-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/plugin.xml-final
new file mode 100644
index 0000000..577acc6
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/plugin.xml-final
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      
+      <file
+            filePath="views/test2.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/views/test.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/views/test.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/views/test.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/views/test2.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/views/test2.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntries/views/test2.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/build.properties b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/build.properties
new file mode 100644
index 0000000..20e3a04
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/build.properties
@@ -0,0 +1,5 @@
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               views/test.view,\
+               views/test2.view
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/build.properties-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/build.properties-final
new file mode 100644
index 0000000..e92078b
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/build.properties-final
@@ -0,0 +1,4 @@
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               views/test2.view
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/plugin.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/plugin.xml
new file mode 100644
index 0000000..56deee4
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      <file
+            filePath="views/test.view">
+      </file>
+      <file
+            filePath="views/test2.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/plugin.xml-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/plugin.xml-final
new file mode 100644
index 0000000..577acc6
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/plugin.xml-final
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      
+      <file
+            filePath="views/test2.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/views/test.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/views/test.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/views/test.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/views/test2.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/views/test2.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPaths/views/test2.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/build.properties b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/build.properties
new file mode 100644
index 0000000..1e15f5e
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/build.properties
@@ -0,0 +1,5 @@
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               test.view,\
+               test2.view
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/build.properties-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/build.properties-final
new file mode 100644
index 0000000..92b1815
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/build.properties-final
@@ -0,0 +1,4 @@
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               test2.view
\ No newline at end of file
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/plugin.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/plugin.xml
new file mode 100644
index 0000000..1c5c2ce
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      <file
+            filePath="test.view">
+      </file>
+      <file
+            filePath="test2.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/plugin.xml-final b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/plugin.xml-final
new file mode 100644
index 0000000..b27f8af
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/plugin.xml-final
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
+      
+      <file
+            filePath="test2.view">
+      </file>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/test.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/test.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/test.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/test2.view b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/test2.view
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/resources/multipleEntriesPathsRoot/test2.view
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test/src/org/eclipse/emf/ecp/view/model/refactoring/ViewModelDeleteParticipant_PTest.java b/tests/org.eclipse.emf.ecp.view.model.editor.test/src/org/eclipse/emf/ecp/view/model/refactoring/ViewModelDeleteParticipant_PTest.java
new file mode 100644
index 0000000..4de84d0
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test/src/org/eclipse/emf/ecp/view/model/refactoring/ViewModelDeleteParticipant_PTest.java
@@ -0,0 +1,125 @@
+package org.eclipse.emf.ecp.view.model.refactoring;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Optional;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecp.view.model.presentation.ContributionUtil;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class ViewModelDeleteParticipant_PTest {
+
+	@Parameters(name = "project:{0}")
+	public static Object[] parameters() {
+		return new Object[][] {
+			{ "multipleEntries", "views/test.view" },
+			{ "multipleEntriesPaths", "views/test.view" },
+			{ "multipleEntriesPathsRoot", "test.view" },
+			{ "lastEntryLastInProperties", "views/test.view" },
+			{ "lastEntryMidInProperties", "views/test.view" },
+			{ "lastEntryFirstInProperties", "views/test.view" },
+		};
+	}
+
+	private ViewModelDeleteParticipant participant;
+	private final String projectName;
+	private final String viewModelToDelete;
+
+	public ViewModelDeleteParticipant_PTest(String projectName, String viewModelToDelete) {
+		this.projectName = projectName;
+		this.viewModelToDelete = viewModelToDelete;
+	}
+
+	@Before
+	public void setUp() throws Exception {
+		participant = new ViewModelDeleteParticipant();
+	}
+
+	private static IProject createProject(String name, IProgressMonitor monitor) throws CoreException {
+		final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+		final IProject project = root.getProject(name);
+		project.create(monitor);
+		project.open(monitor);
+		return project;
+	}
+
+	private static IResource importFileIntoProject(IContainer container, File file, IProgressMonitor monitor)
+		throws CoreException, IOException {
+		if (file.isDirectory()) {
+			final IPath folderPath = container.getProjectRelativePath().append(file.getName());
+			final IFolder folder = container.getFolder(folderPath);
+			folder.create(true, true, monitor);
+			for (final File child : file.listFiles()) {
+				importFileIntoProject(folder, child, monitor);
+			}
+			return folder;
+		}
+		final IFile targetResource = container.getFile(new Path(file.getName()));
+		final InputStream contentStream = new FileInputStream(file);
+		targetResource.create(contentStream, false, monitor);
+		contentStream.close();
+		return targetResource;
+
+	}
+
+	private static IProject createAndPopulateProject(String projectName, IProgressMonitor monitor)
+		throws CoreException, IOException {
+		final IProject project = createProject(projectName, monitor);
+		// copy content of the resources equivalent folder
+		final String folderName = String.format("/resources/%s/", projectName);//$NON-NLS-1$
+		final String resourceFolderPath = new File(".").getAbsolutePath() + folderName;//$NON-NLS-1$
+		final File resourceFolder = new File(resourceFolderPath);
+		for (final File file : resourceFolder.listFiles()) {
+			importFileIntoProject(project, file, monitor);
+		}
+		return project;
+	}
+
+	@Test
+	public void testCreateChangeIProgressMonitor() throws CoreException, IOException {
+		final IProject project = createAndPopulateProject(projectName, new NullProgressMonitor());
+		final IFile viewFile = project.getFile(viewModelToDelete);
+		viewFile.delete(true, new NullProgressMonitor());
+		participant.initialize(viewFile);
+		final Change change = participant.createChange(new NullProgressMonitor());
+		change.perform(new NullProgressMonitor());
+		// assert project
+
+		final Optional<String> buildProperties = ContributionUtil.parseIFile(project.getFile("build.properties"));
+		final Optional<String> buildPropertiesFinal = ContributionUtil
+			.parseIFile(project.getFile("build.properties-final"));
+		final Optional<String> pluginXml = ContributionUtil.parseIFile(project.getFile("plugin.xml"));
+		final Optional<String> pluginXmlFinal = ContributionUtil.parseIFile(project.getFile("plugin.xml-final"));
+
+		assertTrue(buildProperties.isPresent() == buildPropertiesFinal.isPresent());
+		assertTrue(pluginXml.isPresent() == pluginXmlFinal.isPresent());
+		assertEquals(buildPropertiesFinal.get(), buildProperties.get());
+		if (pluginXml.isPresent()) {
+			assertEquals(pluginXmlFinal.get(), pluginXml.get());
+		}
+	}
+
+}