diff options
author | Todor Boev | 2017-12-11 12:40:13 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2017-12-12 14:59:14 +0000 |
commit | cf04c14fb70f9579577a5dcd3df5a71366cbeb97 (patch) | |
tree | f3674511c107a32c0d69c9b46b35eeb7a61303d6 /bundles/org.eclipse.equinox.p2.metadata.repository | |
parent | bca37abc53dfd293c1b750c5c9844f7cd905ddf8 (diff) | |
download | rt.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.java | 19 |
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); } |