Skip to content

Commit 4a9c2a1

Browse files
committed
Migrate to reworked PluginRegistry.findModel() API
1 parent 68e294f commit 4a9c2a1

File tree

10 files changed

+43
-68
lines changed

10 files changed

+43
-68
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
# To force a version qualifier update add the issue here
22
Fix deprecation tag 'since' value
33
Modernize pde.project description interfaces: https://github.com/eclipse-pde/eclipse.pde/pull/1341
4+
Rework PluginRegistry API and introduce VersionMatchRule enum : https://github.com/eclipse-pde/eclipse.pde/pull/1163

ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/feature/FeatureImport.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class FeatureImport extends VersionableObject implements IFeatureImport {
3737

3838
public IPlugin getPlugin() {
3939
if (id != null && fType == PLUGIN) {
40-
IPluginModelBase model = PluginRegistry.findModel(id, version, fMatch, null);
40+
IPluginModelBase model = PluginRegistry.findModel(id, version, VersionUtil.matchRuleFromLiteral(fMatch));
4141
return model instanceof IPluginModel ? ((IPluginModel) model).getPlugin() : null;
4242
}
4343
return null;

ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/plugin/ImportObject.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public void writeDelimeter(PrintWriter writer) {
8989
protected IPluginModelBase findModel() {
9090
String version = iimport.getVersion();
9191
VersionRange range = new VersionRange(version);
92-
return PluginRegistry.findModel(getId(), range, null);
92+
return PluginRegistry.findModel(getId(), range);
9393
}
9494

9595
}

ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/search/PluginJavaSearchUtil.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public class PluginJavaSearchUtil {
4444
public static IPluginModelBase[] getPluginImports(IPluginImport dep) {
4545
HashSet<IPluginModelBase> set = new HashSet<>();
4646
VersionRange range = new VersionRange(dep.getVersion());
47-
collectAllPrerequisites(PluginRegistry.findModel(dep.getId(), range, null), set);
47+
collectAllPrerequisites(PluginRegistry.findModel(dep.getId(), range), set);
4848
return set.toArray(new IPluginModelBase[set.size()]);
4949
}
5050

ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/project/PluginRegistryTests.java

+28-55
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,18 @@
1717
import static org.junit.Assert.assertNotNull;
1818
import static org.junit.Assert.assertNull;
1919

20+
import java.util.List;
21+
2022
import org.eclipse.core.resources.IProject;
2123
import org.eclipse.core.resources.ResourcesPlugin;
2224
import org.eclipse.core.runtime.CoreException;
2325
import org.eclipse.core.runtime.OperationCanceledException;
2426
import org.eclipse.core.runtime.jobs.Job;
2527
import org.eclipse.osgi.service.resolver.VersionRange;
2628
import org.eclipse.pde.core.plugin.IMatchRules;
27-
import org.eclipse.pde.core.plugin.IPluginBase;
2829
import org.eclipse.pde.core.plugin.IPluginModelBase;
2930
import org.eclipse.pde.core.plugin.PluginRegistry;
30-
import org.eclipse.pde.core.plugin.PluginRegistry.PluginFilter;
31+
import org.eclipse.pde.core.plugin.VersionMatchRule;
3132
import org.eclipse.pde.core.project.IBundleProjectDescription;
3233
import org.junit.Test;
3334
import org.osgi.framework.FrameworkUtil;
@@ -42,124 +43,96 @@ public class PluginRegistryTests {
4243

4344
@Test
4445
public void testMatchNone() {
45-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", null, IMatchRules.NONE, null);
46+
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", null, (VersionMatchRule) null);
4647
assertNotNull(model);
4748
assertEquals("org.eclipse.jdt.debug", model.getPluginBase().getId());
4849
}
4950

5051
@Test
5152
public void testMatchGreaterOrEqual() {
5253
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", "3.0.0",
53-
IMatchRules.GREATER_OR_EQUAL, null);
54+
VersionMatchRule.GREATER_OR_EQUAL);
5455
assertNotNull(model);
5556
assertEquals("org.eclipse.jdt.debug", model.getPluginBase().getId());
5657
}
5758

5859
@Test
5960
public void testMatchPerfect() {
60-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", "3.0.0", IMatchRules.PERFECT, null);
61+
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", "3.0.0", VersionMatchRule.PERFECT);
6162
assertNull(model);
6263
}
6364

6465
@Test
6566
public void testMatchCompatible() {
66-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", "3.6.0", IMatchRules.COMPATIBLE,
67-
null);
67+
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", "3.6.0",
68+
VersionMatchRule.COMPATIBLE);
6869
assertNotNull(model);
6970
assertEquals("org.eclipse.jdt.debug", model.getPluginBase().getId());
7071
}
7172

7273
@Test
7374
public void testMatchCompatibleNone() {
74-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.pde.core", "2.6.0", IMatchRules.COMPATIBLE,
75-
null);
75+
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.pde.core", "2.6.0", VersionMatchRule.COMPATIBLE);
7676
assertNull(model);
7777
}
7878

7979
@Test
8080
public void testMatchPrefix() {
81+
@SuppressWarnings("removal") // Test special behavior of old API
8182
IPluginModelBase model = PluginRegistry.findModel("org.eclipse", "3.6.0", IMatchRules.PREFIX, null);
8283
// prefix rule is not supported by this API, should return null
8384
assertNull(model);
8485
}
8586

8687
@Test
8788
public void testRangeNone() {
88-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", null, (PluginFilter) null);
89+
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", null);
8990
assertNotNull(model);
9091
assertEquals("org.eclipse.jdt.debug", model.getPluginBase().getId());
9192
}
9293

9394
@Test
9495
public void testOverlapRange() {
95-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", new VersionRange("[2.0.0,4.0.0)"),
96-
null);
96+
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", new VersionRange("[2.0.0,4.0.0)"));
9797
assertNotNull(model);
9898
assertEquals("org.eclipse.jdt.debug", model.getPluginBase().getId());
9999
}
100100

101101
@Test
102102
public void testMinRange() {
103-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", new VersionRange("3.0.0"), null);
103+
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", new VersionRange("3.0.0"));
104104
assertNotNull(model);
105105
assertEquals("org.eclipse.jdt.debug", model.getPluginBase().getId());
106106
}
107107

108108
@Test
109109
public void testUnmatchedRange() {
110-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.pde.core", new VersionRange("[1.0.0,2.0.0)"),
111-
null);
110+
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.pde.core", new VersionRange("[1.0.0,2.0.0)"));
112111
assertNull(model);
113112
}
114113

115114
@Test
116115
public void testRangeWithFilterMatch() {
117-
PluginFilter filter = new PluginFilter() {
118-
@Override
119-
public boolean accept(IPluginModelBase model) {
120-
IPluginBase base = model.getPluginBase();
121-
if (base != null) {
122-
String id = base.getId();
123-
if (id != null) {
124-
return id.startsWith("org.eclipse");
125-
}
126-
}
127-
return false;
128-
}
129-
};
130-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", new VersionRange("[2.0.0,4.0.0)"),
131-
filter);
116+
IPluginModelBase model = PluginRegistry.findModels("org.eclipse.jdt.debug", new VersionRange("[2.0.0,4.0.0)"))
117+
.filter(m -> m.getPluginBase().getId().startsWith("org.eclipse")).findFirst().orElse(null);
132118
assertNotNull(model);
133119
assertEquals("org.eclipse.jdt.debug", model.getPluginBase().getId());
134120
}
135121

136122
@Test
137123
public void testRangeWithFilterNoMatch() {
138-
PluginFilter filter = new PluginFilter() {
139-
@Override
140-
public boolean accept(IPluginModelBase model) {
141-
IPluginBase base = model.getPluginBase();
142-
if (base != null) {
143-
String id = base.getId();
144-
if (id != null) {
145-
return id.startsWith("xyz");
146-
}
147-
}
148-
return false;
149-
}
150-
};
151-
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.jdt.debug", new VersionRange("[2.0.0,4.0.0)"),
152-
filter);
124+
IPluginModelBase model = PluginRegistry.findModels("org.eclipse.jdt.debug", new VersionRange("[2.0.0,4.0.0)"))
125+
.filter(m -> m.getPluginBase().getId().startsWith("xyz")).findFirst().orElse(null);
153126
assertNull(model);
154127
}
155128

156129
@Test
157130
public void testSingleRangeMatch() {
158-
IPluginModelBase[] models = PluginRegistry.findModels("org.eclipse.jdt.debug",
159-
new VersionRange("[1.0.0,4.0.0)"), null);
131+
List<IPluginModelBase> models = PluginRegistry
132+
.findModels("org.eclipse.jdt.debug", new VersionRange("[1.0.0,4.0.0)")).toList();
160133
assertNotNull(models);
161-
assertEquals(1, models.length);
162-
assertEquals("org.eclipse.jdt.debug", models[0].getPluginBase().getId());
134+
assertEquals(1, models.size());
135+
assertEquals("org.eclipse.jdt.debug", models.get(0).getPluginBase().getId());
163136
}
164137

165138
@Test
@@ -175,11 +148,12 @@ public void testWorkspaceOverTarget() throws CoreException {
175148

176149
waitForBuild();
177150

178-
IPluginModelBase[] models = PluginRegistry.findModels("org.junit", new VersionRange("[3.8.2,4.8.2]"), null);
151+
List<IPluginModelBase> models = PluginRegistry.findModels("org.junit", new VersionRange("[3.8.2,4.8.2]"))
152+
.toList();
179153
assertNotNull(models);
180-
assertEquals(1, models.length);
181-
assertEquals("org.junit", models[0].getPluginBase().getId());
182-
assertEquals(project, models[0].getUnderlyingResource().getProject());
154+
assertEquals(1, models.size());
155+
assertEquals("org.junit", models.get(0).getPluginBase().getId());
156+
assertEquals(project, models.get(0).getUnderlyingResource().getProject());
183157

184158
} finally {
185159
if (project.exists()) {
@@ -194,8 +168,7 @@ public void testMatchEquivalent() {
194168
Version testsVersion = FrameworkUtil.getBundle(PluginRegistryTests.class).getVersion();
195169
IPluginModelBase model = PluginRegistry.findModel("org.eclipse.pde.ui.tests",
196170
String.format("%s.%s.%s", testsVersion.getMajor(), testsVersion.getMinor(), testsVersion.getMicro()),
197-
IMatchRules.EQUIVALENT,
198-
null);
171+
VersionMatchRule.EQUIVALENT);
199172
assertNotNull("NOTE: This test might also fail because the version of the bundle got changed.", model);
200173
assertEquals("org.eclipse.pde.ui.tests", model.getPluginBase().getId());
201174
}

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDELabelProvider.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.eclipse.pde.core.build.IBuildEntry;
3232
import org.eclipse.pde.core.plugin.IFragment;
3333
import org.eclipse.pde.core.plugin.IFragmentModel;
34-
import org.eclipse.pde.core.plugin.IMatchRules;
3534
import org.eclipse.pde.core.plugin.IPlugin;
3635
import org.eclipse.pde.core.plugin.IPluginAttribute;
3736
import org.eclipse.pde.core.plugin.IPluginBase;
@@ -44,6 +43,7 @@
4443
import org.eclipse.pde.core.plugin.IPluginModelBase;
4544
import org.eclipse.pde.core.plugin.IPluginObject;
4645
import org.eclipse.pde.core.plugin.PluginRegistry;
46+
import org.eclipse.pde.core.plugin.VersionMatchRule;
4747
import org.eclipse.pde.internal.core.ICoreConstants;
4848
import org.eclipse.pde.internal.core.PDECore;
4949
import org.eclipse.pde.internal.core.TargetPlatformHelper;
@@ -385,7 +385,8 @@ public String getObjectText(ISiteFeature obj) {
385385
}
386386

387387
public String getObjectText(ISiteBundle obj) {
388-
IPluginModelBase modelBase = PluginRegistry.findModel(obj.getId(), obj.getVersion(), IMatchRules.COMPATIBLE, null);
388+
IPluginModelBase modelBase = PluginRegistry.findModel(obj.getId(), obj.getVersion(),
389+
VersionMatchRule.COMPATIBLE);
389390
if (modelBase != null)
390391
return getObjectText(modelBase.getPluginBase());
391392
return preventNull(obj.getId());

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/category/CategoryLabelProvider.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
package org.eclipse.pde.internal.ui.editor.category;
1818

1919
import org.eclipse.jface.viewers.LabelProvider;
20-
import org.eclipse.pde.core.plugin.IMatchRules;
2120
import org.eclipse.pde.core.plugin.PluginRegistry;
21+
import org.eclipse.pde.core.plugin.VersionMatchRule;
2222
import org.eclipse.pde.internal.core.PDECore;
2323
import org.eclipse.pde.internal.core.isite.ISiteBundle;
2424
import org.eclipse.pde.internal.core.isite.ISiteCategoryDefinition;
@@ -65,7 +65,7 @@ public Image getImage(Object element) {
6565
}
6666
if (element instanceof SiteBundleAdapter) {
6767
ISiteBundle bundle = ((SiteBundleAdapter) element).bundle;
68-
if (PluginRegistry.findModel(bundle.getId(), bundle.getVersion(), IMatchRules.COMPATIBLE, null) == null) {
68+
if (PluginRegistry.findModel(bundle.getId(), bundle.getVersion(), VersionMatchRule.COMPATIBLE) == null) {
6969
return this.fMissingSiteBundleImage;
7070
}
7171
return this.fSiteBundleImage;

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependencyAnalysisSection.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
import org.eclipse.jface.dialogs.MessageDialog;
1818
import org.eclipse.pde.core.IBaseModel;
19-
import org.eclipse.pde.core.plugin.IMatchRules;
2019
import org.eclipse.pde.core.plugin.IPluginBase;
2120
import org.eclipse.pde.core.plugin.IPluginModel;
2221
import org.eclipse.pde.core.plugin.IPluginModelBase;
2322
import org.eclipse.pde.core.plugin.PluginRegistry;
23+
import org.eclipse.pde.core.plugin.VersionMatchRule;
2424
import org.eclipse.pde.internal.core.builders.DependencyLoop;
2525
import org.eclipse.pde.internal.core.builders.DependencyLoopFinder;
2626
import org.eclipse.pde.internal.ui.PDELabelProvider;
@@ -102,7 +102,7 @@ private IPluginModelBase getStatePlugin(IPluginModelBase pluginModel) {
102102
// The pluginModel set for this page does not have a BundleDescriptor
103103
// set, therefore search the pluginModel from the registry that has it
104104
IPluginBase pluginBase = pluginModel.getPluginBase();
105-
return PluginRegistry.findModel(pluginBase.getId(), pluginBase.getVersion(), IMatchRules.PERFECT, null);
105+
return PluginRegistry.findModel(pluginBase.getId(), pluginBase.getVersion(), VersionMatchRule.PERFECT);
106106
}
107107

108108
private void doFindLoops(IPluginModelBase pluginModelBase) {

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/PluginSection.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@
4242
import org.eclipse.jface.window.Window;
4343
import org.eclipse.jface.wizard.WizardDialog;
4444
import org.eclipse.osgi.service.resolver.BundleDescription;
45-
import org.eclipse.pde.core.plugin.IMatchRules;
4645
import org.eclipse.pde.core.plugin.IPluginModelBase;
4746
import org.eclipse.pde.core.plugin.PluginRegistry;
47+
import org.eclipse.pde.core.plugin.VersionMatchRule;
4848
import org.eclipse.pde.internal.core.DependencyManager;
4949
import org.eclipse.pde.internal.core.DependencyManager.Options;
5050
import org.eclipse.pde.internal.core.ICoreConstants;
@@ -217,7 +217,7 @@ public static void handleAddRequired(IProductPlugin[] plugins, boolean includeOp
217217
}
218218
List<BundleDescription> list = Stream.of(plugins).map(plugin -> {
219219
String version = VersionUtil.isEmptyVersion(plugin.getVersion()) ? null : plugin.getVersion();
220-
return PluginRegistry.findModel(plugin.getId(), version, IMatchRules.PERFECT, null);
220+
return PluginRegistry.findModel(plugin.getId(), version, VersionMatchRule.PERFECT);
221221
}).filter(Objects::nonNull).map(IPluginModelBase::getBundleDescription).toList();
222222

223223
DependencyManager.Options[] options = includeOptional

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@
5252
import org.eclipse.jface.action.Action;
5353
import org.eclipse.jface.window.Window;
5454
import org.eclipse.osgi.service.resolver.BundleDescription;
55-
import org.eclipse.pde.core.plugin.IMatchRules;
5655
import org.eclipse.pde.core.plugin.IPluginModelBase;
5756
import org.eclipse.pde.core.plugin.PluginRegistry;
57+
import org.eclipse.pde.core.plugin.VersionMatchRule;
5858
import org.eclipse.pde.internal.core.DependencyManager;
5959
import org.eclipse.pde.internal.core.FeatureModelManager;
6060
import org.eclipse.pde.internal.core.PDECore;
@@ -382,7 +382,7 @@ private static void addFeaturePlugins(IFeature feature, Set<IPluginModelBase> la
382382
if (id == null || version == null) {
383383
continue;
384384
}
385-
IPluginModelBase model = PluginRegistry.findModel(id, version, IMatchRules.EQUIVALENT, null);
385+
IPluginModelBase model = PluginRegistry.findModel(id, version, VersionMatchRule.EQUIVALENT);
386386
if (model == null) {
387387
model = PluginRegistry.findModel(id);
388388
}

0 commit comments

Comments
 (0)