Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStéphane Thibaudeau2018-04-25 15:22:07 +0000
committerlgoubet2018-06-22 08:54:44 +0000
commit78e31afcf90d719208115fa622aa003b1f19addd (patch)
tree39ad2facda811203d33be3ac11c8807faaba4de3 /plugins
parent9dee904cd971679c3e86773cf7836da0c71878d3 (diff)
downloadorg.eclipse.emf.compare-78e31afcf90d719208115fa622aa003b1f19addd.tar.gz
org.eclipse.emf.compare-78e31afcf90d719208115fa622aa003b1f19addd.tar.xz
org.eclipse.emf.compare-78e31afcf90d719208115fa622aa003b1f19addd.zip
Use white-list strategy to retrieve the Model provider
Change-Id: I32c2d9b2033aabe8ba5d43b6764f2534ce8d3a56 Signed-off-by: Stéphane Thibaudeau <stephane.thibaudeau@obeo.fr>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.compare.egit/.classpath2
-rw-r--r--plugins/org.eclipse.emf.compare.egit/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--plugins/org.eclipse.emf.compare.egit/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.emf.compare.egit/src/org/eclipse/emf/compare/egit/internal/merge/LogicalModels.java60
4 files changed, 29 insertions, 41 deletions
diff --git a/plugins/org.eclipse.emf.compare.egit/.classpath b/plugins/org.eclipse.emf.compare.egit/.classpath
index b1dabee38..b862a296d 100644
--- a/plugins/org.eclipse.emf.compare.egit/.classpath
+++ b/plugins/org.eclipse.emf.compare.egit/.classpath
@@ -1,6 +1,6 @@
<?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.7"/>
+ <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"/>
<classpathentry kind="output" path="bin"/>
diff --git a/plugins/org.eclipse.emf.compare.egit/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.compare.egit/.settings/org.eclipse.jdt.core.prefs
index 03f34aba8..7b911f656 100644
--- a/plugins/org.eclipse.emf.compare.egit/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.emf.compare.egit/.settings/org.eclipse.jdt.core.prefs
@@ -7,9 +7,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+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
@@ -97,7 +97,7 @@ 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.7
+org.eclipse.jdt.core.compiler.source=1.8
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
diff --git a/plugins/org.eclipse.emf.compare.egit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.egit/META-INF/MANIFEST.MF
index 6a036b2a2..e9627a04d 100644
--- a/plugins/org.eclipse.emf.compare.egit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.egit/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@ Require-Bundle: org.eclipse.core.resources,
org.eclipse.egit.ui;bundle-version="4.2.0"
Import-Package: com.google.common.collect;version="[15.0.0,22.0.0)",
org.apache.log4j;version="[1.2.15,2.0.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.emf.compare.egit/src/org/eclipse/emf/compare/egit/internal/merge/LogicalModels.java b/plugins/org.eclipse.emf.compare.egit/src/org/eclipse/emf/compare/egit/internal/merge/LogicalModels.java
index a2ff4cb32..5bd16eeb9 100644
--- a/plugins/org.eclipse.emf.compare.egit/src/org/eclipse/emf/compare/egit/internal/merge/LogicalModels.java
+++ b/plugins/org.eclipse.emf.compare.egit/src/org/eclipse/emf/compare/egit/internal/merge/LogicalModels.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (C) 2015, Obeo.
+ * Copyright (C) 2015, 2018 Obeo.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -8,11 +8,9 @@
*******************************************************************************/
package org.eclipse.emf.compare.egit.internal.merge;
-//CHECKSTYLE:OFF
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -40,18 +38,11 @@ import org.eclipse.egit.core.Activator;
*/
@SuppressWarnings("restriction")
public final class LogicalModels {
- /**
- * These model providers are active on most (for the first, "all") files. They provide a default merger
- * that does not actually take care of model merging and are actually not defining a "larger model" : they
- * only provide single-resource traversals. Since we are not interested in these defaults, we'll ignore
- * them for all "model" lookup.
- */
- private static final Set<String> ignoredModelDescriptors = new HashSet<String>(
- Arrays.asList("org.eclipse.core.resources.modelProvider", //$NON-NLS-1$
- "org.eclipse.jdt.ui.modelProvider", //$NON-NLS-1$
- "org.eclipse.egit.ui.changeSetModel")); //$NON-NLS-1$
+ /** ID of the EMFModelProvider. */
+ private static final String EMF_MODEL_PROVIDER_ID = "org.eclipse.emf.compare.model.provider"; //$NON-NLS-1$
- private Map<IResource, Set<IResource>> models = new HashMap<IResource, Set<IResource>>();
+ /** Cache of the discovered models. */
+ private Map<IResource, Set<IResource>> models = new HashMap<>();
/**
* Iterate over the resources in the given set to discover and cache the logical model of each.
@@ -104,13 +95,13 @@ public final class LogicalModels {
* @return the model which this resource is a part of.
*/
public static Set<IResource> discoverModel(IResource resource, ResourceMappingContext mappingContext) {
- final Set<IResource> model = new LinkedHashSet<IResource>();
+ final Set<IResource> model = new LinkedHashSet<>();
- Set<IResource> newResources = new LinkedHashSet<IResource>();
+ Set<IResource> newResources = new LinkedHashSet<>();
newResources.add(resource);
do {
final Set<IResource> temp = newResources;
- newResources = new LinkedHashSet<IResource>();
+ newResources = new LinkedHashSet<>();
for (IResource res : temp) {
final Set<ResourceMapping> mappings = getResourceMappings(Collections.singleton(res),
mappingContext);
@@ -142,26 +133,19 @@ public final class LogicalModels {
return null;
}
final IResource[] modelArray = model.toArray(new IResource[model.size()]);
- final IModelProviderDescriptor[] descriptors = ModelProvider.getModelProviderDescriptors();
- // FIXME: Only care about EMFCompare model provider, dismiss all others?
- for (int i = 0; i < descriptors.length; i++) {
- final IModelProviderDescriptor descriptor = descriptors[i];
- if (ignoredModelDescriptors.contains(descriptor.getId())) {
- continue;
- }
+ final IModelProviderDescriptor descriptor = getEMFModelProvider();
+ if (descriptor != null) {
final IResource[] matchingResources = descriptor.getMatchingResources(modelArray);
if (matchingResources.length == modelArray.length) {
final ModelProvider provider = descriptor.getModelProvider();
T adapter = (T)provider.getAdapter(adapterClass);
if (adapter != null) {
- // The first merger is used (arbitrary decision)
return adapter;
}
- } else {
- // This provider does not match the whole target model
}
}
+
return null;
}
@@ -172,15 +156,11 @@ public final class LogicalModels {
*/
public static Set<ResourceMapping> getResourceMappings(Set<IResource> model,
ResourceMappingContext mappingContext) {
- final Set<ResourceMapping> allMappings = new LinkedHashSet<ResourceMapping>();
+ final Set<ResourceMapping> allMappings = new LinkedHashSet<>();
final IResource[] modelArray = model.toArray(new IResource[model.size()]);
- final IModelProviderDescriptor[] descriptors = ModelProvider.getModelProviderDescriptors();
-
- for (IModelProviderDescriptor descriptor : descriptors) {
- if (ignoredModelDescriptors.contains(descriptor.getId())) {
- continue;
- }
+ final IModelProviderDescriptor descriptor = getEMFModelProvider();
+ if (descriptor != null) {
try {
final IResource[] matchingResources = descriptor.getMatchingResources(modelArray);
if (matchingResources.length > 0) {
@@ -197,9 +177,18 @@ public final class LogicalModels {
return allMappings;
}
+ /**
+ * Return the ModelProvider to be used
+ *
+ * @return EMFModelProvider's descriptor
+ */
+ private static IModelProviderDescriptor getEMFModelProvider() {
+ return ModelProvider.getModelProviderDescriptor(EMF_MODEL_PROVIDER_ID);
+ }
+
private static Set<IResource> collectResources(Set<ResourceMapping> mappings,
ResourceMappingContext mappingContext) {
- final Set<IResource> resources = new LinkedHashSet<IResource>();
+ final Set<IResource> resources = new LinkedHashSet<>();
for (ResourceMapping mapping : mappings) {
try {
final ResourceTraversal[] traversals = mapping.getTraversals(mappingContext,
@@ -214,4 +203,3 @@ public final class LogicalModels {
return resources;
}
}
-// CHECKSTYLE:ON

Back to the top