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());
+ }
+ }
+
+}