Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTodor Boev2017-12-11 12:40:13 +0000
committerAlexander Kurtakov2017-12-12 14:59:14 +0000
commitcf04c14fb70f9579577a5dcd3df5a71366cbeb97 (patch)
treef3674511c107a32c0d69c9b46b35eeb7a61303d6 /bundles/org.eclipse.equinox.p2.metadata.repository
parentbca37abc53dfd293c1b750c5c9844f7cd905ddf8 (diff)
downloadrt.equinox.p2-cf04c14fb70f9579577a5dcd3df5a71366cbeb97.tar.gz
rt.equinox.p2-cf04c14fb70f9579577a5dcd3df5a71366cbeb97.tar.xz
rt.equinox.p2-cf04c14fb70f9579577a5dcd3df5a71366cbeb97.zip
Bug 528408 - Extract the IRequirement impl from RequiredCapabilityI20171214-0120I20171213-2000I20171212-2000
- Fix p2 codebase to use MetadataFactory instead of new RequiredCapabiilty - Work around the implicit restriction that IRequiredCapability must always have maxCard > 1. This is due to the serialization format that does not support maxCard == 0 since it only has optional and multiple flags. Change-Id: Ia8f2c9abd4aee553020018032a22784f1af3b3ba Signed-off-by: Todor Boev <rinsvind@gmail.com>
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.metadata.repository')
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java19
1 files changed, 12 insertions, 7 deletions
diff --git a/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java b/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java
index 90e27da4b..20fc56a8d 100644
--- a/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java
+++ b/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java
@@ -134,7 +134,7 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
private PropertiesHandler propertiesHandler = null;
private ProvidedCapabilitiesHandler providedCapabilitiesHandler = null;
- private RequiredCapabilitiesHandler requiredCapabilitiesHandler = null;
+ private RequirementsHandler requiredCapabilitiesHandler = null;
private HostRequiredCapabilitiesHandler hostRequiredCapabilitiesHandler = null;
private MetaRequiredCapabilitiesHandler metaRequiredCapabilitiesHandler = null;
private TextHandler filterHandler = null;
@@ -188,7 +188,7 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
}
} else if (REQUIREMENTS_ELEMENT.equals(name)) {
if (requiredCapabilitiesHandler == null) {
- requiredCapabilitiesHandler = new RequiredCapabilitiesHandler(this, attributes);
+ requiredCapabilitiesHandler = new RequirementsHandler(this, attributes);
} else {
duplicateElement(this, name, attributes);
}
@@ -369,7 +369,7 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
}
protected class ApplicabilityScopeHandler extends AbstractHandler {
- private RequiredCapabilitiesHandler children;
+ private RequirementsHandler children;
private List<IRequirement[]> scopes;
public ApplicabilityScopeHandler(AbstractHandler parentHandler, Attributes attributes, List<IRequirement[]> scopes) {
@@ -380,7 +380,7 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
@Override
public void startElement(String name, Attributes attributes) {
if (REQUIREMENTS_ELEMENT.equals(name)) {
- children = new RequiredCapabilitiesHandler(this, attributes);
+ children = new RequirementsHandler(this, attributes);
} else {
duplicateElement(this, name, attributes);
}
@@ -690,10 +690,10 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
}
}
- protected class RequiredCapabilitiesHandler extends AbstractMetadataHandler {
+ protected class RequirementsHandler extends AbstractMetadataHandler {
private List<IRequirement> requiredCapabilities;
- public RequiredCapabilitiesHandler(AbstractHandler parentHandler, Attributes attributes) {
+ public RequirementsHandler(AbstractHandler parentHandler, Attributes attributes) {
super(parentHandler, REQUIREMENTS_ELEMENT);
requiredCapabilities = new ArrayList<>(getOptionalSize(attributes, 4));
}
@@ -715,11 +715,15 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
protected class RequirementHandler extends AbstractHandler {
private List<IRequirement> capabilities;
+ // Expression based requirement
private String match;
private String matchParams;
+
+ // Simple requirement
private String namespace;
private String name;
private VersionRange range;
+
private int min;
private int max;
private boolean greedy;
@@ -783,8 +787,9 @@ public abstract class MetadataParser extends XMLParser implements XMLConstants {
if (match != null) {
IMatchExpression<IInstallableUnit> matchExpr = createMatchExpression(match, matchParams);
requirement = MetadataFactory.createRequirement(matchExpr, filter, min, max, greedy, description);
- } else
+ } else {
requirement = MetadataFactory.createRequirement(namespace, name, range, filter, min, max, greedy, description);
+ }
capabilities.add(requirement);
}

Back to the top