diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests')
8 files changed, 105 insertions, 37 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java index f54645f55..a4e2084c7 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java @@ -474,7 +474,7 @@ public class CompositeMetadataRepositoryTest extends AbstractProvisioningTest { CompositeMetadataRepository compositeRepo = createRepo(false); compositeRepo.addChild(location1); compositeRepo.addChild(location2); - PipedQuery cQuery = new PipedQuery(new MatchQuery() { + IQuery cQuery = new LatestIUVersionQuery(new MatchQuery() { public boolean isMatch(Object candidate) { if (candidate instanceof IInstallableUnit) { IInstallableUnit iInstallableUnit = (IInstallableUnit) candidate; @@ -483,7 +483,7 @@ public class CompositeMetadataRepositoryTest extends AbstractProvisioningTest { } return false; } - }, new LatestIUVersionQuery()); + }); IQueryResult queryResult = compositeRepo.query(cQuery, monitor); assertEquals("1.0", 1, queryResultSize(queryResult)); assertEquals("1.1", Version.createOSGi(2, 2, 0), ((IInstallableUnit) queryResult.iterator().next()).getVersion()); diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AddIUProperty.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AddIUProperty.java index 9453e95be..faac57f10 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AddIUProperty.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AddIUProperty.java @@ -89,7 +89,7 @@ public class AddIUProperty extends AbstractProvisioningTest { allProfileIUs = profile.query(InstallableUnitQuery.ANY, null); assertEquals(queryResultSize(allProfileIUs), 1); - IQueryResult iuProfileProperties = profile.query(new IUProfilePropertyQuery(SimplePlanner.INCLUSION_RULES, null), null); + IQueryResult iuProfileProperties = profile.query(new IUProfilePropertyQuery(SimplePlanner.INCLUSION_RULES, IUProfilePropertyQuery.ANY), null); assertEquals(queryResultSize(iuProfileProperties), 1); //Remove a1 optionality - should be a no-op diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/IUProperties.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/IUProperties.java index 8482dc581..0a872dd8c 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/IUProperties.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/IUProperties.java @@ -8,10 +8,9 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.planner; -import org.eclipse.equinox.internal.p2.engine.ProvisioningPlan; - import org.eclipse.core.runtime.IStatus; import org.eclipse.equinox.internal.p2.core.helpers.LogHelper; +import org.eclipse.equinox.internal.p2.engine.ProvisioningPlan; import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest; import org.eclipse.equinox.p2.engine.*; import org.eclipse.equinox.p2.engine.query.IUProfilePropertyQuery; @@ -59,7 +58,7 @@ public class IUProperties extends AbstractProvisioningTest { IStatus s = engine.perform(pp1, null); if (!s.isOK()) LogHelper.log(s); - IQueryResult queryResult = getProfile(profileId).query(new IUProfilePropertyQuery("FOO", null), null); + IQueryResult queryResult = getProfile(profileId).query(new IUProfilePropertyQuery("FOO", IUProfilePropertyQuery.ANY), null); assertEquals(1, queryResultSize(queryResult)); ProfileChangeRequest req2 = new ProfileChangeRequest(profile); diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/IUPropertyRemoval.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/IUPropertyRemoval.java index 206e018e1..8badf906e 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/IUPropertyRemoval.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/IUPropertyRemoval.java @@ -8,9 +8,8 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.planner; -import org.eclipse.equinox.internal.p2.engine.ProvisioningPlan; - import org.eclipse.core.runtime.IStatus; +import org.eclipse.equinox.internal.p2.engine.ProvisioningPlan; import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest; import org.eclipse.equinox.p2.engine.*; import org.eclipse.equinox.p2.engine.query.IUProfilePropertyQuery; @@ -50,7 +49,7 @@ public class IUPropertyRemoval extends AbstractProvisioningTest { IProvisioningPlan pp1 = planner.getProvisioningPlan(req1, null, null); assertEquals(IStatus.OK, pp1.getStatus().getSeverity()); engine.perform(pp1, null); - IQueryResult res = getProfile(profileId).query(new IUProfilePropertyQuery("FOO", null), null); + IQueryResult res = getProfile(profileId).query(new IUProfilePropertyQuery("FOO", IUProfilePropertyQuery.ANY), null); assertEquals(2, queryResultSize(res)); ProfileChangeRequest req2 = new ProfileChangeRequest(profile); @@ -58,7 +57,7 @@ public class IUPropertyRemoval extends AbstractProvisioningTest { ProvisioningPlan pp2 = (ProvisioningPlan) planner.getProvisioningPlan(req2, null, null); assertEquals(1, pp2.getOperands().length); engine.perform(pp2, null); - IQueryResult res2 = getProfile(profileId).query(new IUProfilePropertyQuery("FOO", null), null); + IQueryResult res2 = getProfile(profileId).query(new IUProfilePropertyQuery("FOO", IUProfilePropertyQuery.ANY), null); assertEquals(1, queryResultSize(res2)); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/EvaluatorTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/EvaluatorTest.java index a46c4e426..137922078 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/EvaluatorTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/EvaluatorTest.java @@ -19,6 +19,7 @@ import org.eclipse.equinox.internal.p2.metadata.IRequiredCapability; import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory; import org.eclipse.equinox.p2.metadata.*; import org.eclipse.equinox.p2.metadata.expression.*; +import org.eclipse.equinox.p2.metadata.expression.IContextExpression; import org.eclipse.equinox.p2.metadata.query.InstallableUnitQuery; import org.eclipse.equinox.p2.publisher.PublisherInfo; import org.eclipse.equinox.p2.publisher.PublisherResult; @@ -34,8 +35,8 @@ import org.eclipse.equinox.p2.tests.TestActivator; import org.osgi.framework.Filter; public class EvaluatorTest extends AbstractProvisioningTest { - private static final IQLParser parser = QL.newParser(); - private static final IQLFactory factory = QL.getFactory(); + private static final IExpressionParser parser = ExpressionUtil.getParser(); + private static final IExpressionFactory factory = ExpressionUtil.getFactory(); public void testArguments() throws Exception { IExpression expr = parser.parse("'a' == $0 && 'b' == $1 && 'c' == $2"); @@ -100,7 +101,7 @@ public class EvaluatorTest extends AbstractProvisioningTest { "parent.requiredCapabilities.unique(requirementsCache).select(rc | rc.filter == null || $2 ~= filter(rc.filter)), _, " + // "{rcs, child | rcs.exists(rc | child ~= rc)})}).limit(10)"; - IContextExpression expr = factory.contextExpression(IInstallableUnit.class, parser.parseQuery(exprString)); + IContextExpression expr = factory.contextExpression(parser.parseQuery(exprString)); System.out.println(expr.toString()); assertEquals(exprString, expr.toString()); } @@ -114,12 +115,12 @@ public class EvaluatorTest extends AbstractProvisioningTest { IExpression cmp2 = factory.equals(factory.at(factory.member(item, "properties"), factory.indexedParameter(1)), factory.indexedParameter(2)); IExpression lambda = factory.lambda(item, factory.and(cmp1, cmp2)); - IExpression latest = factory.latest(factory.select(factory.variable("everything"), lambda)); + IExpression latest = ((IQLFactory) factory).latest(((IQLFactory) factory).select(factory.variable("everything"), lambda)); // Create the query - IContextExpression e3 = factory.contextExpression(IInstallableUnit.class, latest, "test.bundle", "org.eclipse.equinox.p2.type.group", "true"); + IContextExpression<IInstallableUnit> e3 = factory.contextExpression(latest, "test.bundle", "org.eclipse.equinox.p2.type.group", "true"); IMetadataRepository repo = getMDR("/testData/metadataRepo/multipleversions1"); - IQueryResult result = repo.query(new QLContextQuery(e3), new NullProgressMonitor()); + IQueryResult result = repo.query(new QLContextQuery(IInstallableUnit.class, e3), new NullProgressMonitor()); assertEquals(queryResultSize(result), 1); } @@ -213,11 +214,11 @@ public class EvaluatorTest extends AbstractProvisioningTest { env.put("osgi.ws", "gtk"); env.put("osgi.arch", "x86"); - IContextExpression expr = factory.contextExpression(IInstallableUnit.class, parser.parseQuery("" + // + IContextExpression<IInstallableUnit> expr = factory.contextExpression(parser.parseQuery("" + // "select(x | x.id == $0 && x.version == $1).traverse(capabilityIndex(everything), _, { index, parent |" + // "index.satisfiesAny(parent.requiredCapabilities.select(rc | rc.filter == null || $2 ~= rc.filter))})"), "org.eclipse.sdk.feature.group", Version.create("3.5.0.v20090423-7Q7bA7DPR-wM38__Q4iRsmx9z0KOjbpx3AbyvXd-Uq7J2"), env); - QLContextQuery query = new QLContextQuery(expr); + QLContextQuery query = new QLContextQuery(IInstallableUnit.class, expr); IMetadataRepository repo = getMDR("/testData/galileoM7"); IQueryResult result = repo.query(query, new NullProgressMonitor()); assertEquals(queryResultSize(result), 411); @@ -235,7 +236,7 @@ public class EvaluatorTest extends AbstractProvisioningTest { env.put("osgi.ws", "gtk"); env.put("osgi.arch", "x86"); - IContextExpression expr = factory.contextExpression(IInstallableUnit.class, parser.parseQuery("" + // + IContextExpression<IInstallableUnit> expr = factory.contextExpression(parser.parseQuery("" + // "select(x | x.id == $0 && x.version == $1).traverse(parent |" + // "$5.satisfiesAny(parent.requiredCapabilities.select(rc | rc.filter == null || $4 ~= rc.filter))).intersect(" + // "select(x | x.id == $2 && x.version == $3).traverse(parent |" + // @@ -247,7 +248,7 @@ public class EvaluatorTest extends AbstractProvisioningTest { env,// index); - QLContextQuery query = new QLContextQuery(expr); + QLContextQuery query = new QLContextQuery(IInstallableUnit.class, expr); IQueryResult result = repo.query(query, new NullProgressMonitor()); assertEquals(queryResultSize(result), 184); } @@ -301,10 +302,10 @@ public class EvaluatorTest extends AbstractProvisioningTest { IExpression everything = factory.variable("everything"); IExpression lambda = factory.lambda(item, cmp1); - IContextExpression e3 = factory.contextExpression(Object.class, factory.select(everything, lambda)); + IContextExpression e3 = factory.contextExpression(((IQLFactory) factory).select(everything, lambda)); - IContextExpression<Object> contextExpression = factory.contextExpression(Object.class, parser.parseQuery(e3.toString()), "ian bull"); - QLContextQuery qlContextQuery = new QLContextQuery(contextExpression); + IContextExpression<Object> contextExpression = factory.contextExpression(parser.parseQuery(e3.toString()), "ian bull"); + QLContextQuery qlContextQuery = new QLContextQuery(IInstallableUnit.class, contextExpression); System.out.println(e3); IQueryResult queryResult = qlContextQuery.perform(items.iterator()); @@ -317,7 +318,7 @@ public class EvaluatorTest extends AbstractProvisioningTest { public void testMatchQueryInjectionInContext() throws Exception { IMetadataRepository repo = getMDR("/testData/galileoM7"); - IContextExpression expr = factory.contextExpression(IInstallableUnit.class, parser.parseQuery("select(x | iquery($0, x) || iquery($1, x)).latest()"), new MatchQuery() { + IContextExpression<IInstallableUnit> expr = factory.contextExpression(parser.parseQuery("select(x | iquery($0, x) || iquery($1, x)).latest()"), new MatchQuery() { @Override public boolean isMatch(Object candidate) { return "true".equals(((IInstallableUnit) candidate).getProperty("org.eclipse.equinox.p2.type.category")); @@ -328,7 +329,7 @@ public class EvaluatorTest extends AbstractProvisioningTest { return "true".equals(((IInstallableUnit) candidate).getProperty("org.eclipse.equinox.p2.type.group")); } }); - IQueryResult result = repo.query(new QLContextQuery(expr), new NullProgressMonitor()); + IQueryResult result = repo.query(new QLContextQuery(IInstallableUnit.class, expr), new NullProgressMonitor()); assertEquals(queryResultSize(result), 497); } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java index 972a701fb..174433938 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java @@ -134,8 +134,7 @@ public class PerformanceTest extends AbstractProvisioningTest { IInstallableUnit[] roots = new IInstallableUnit[] {(IInstallableUnit) itor.next()}; IQuery query = new QLContextQuery(IInstallableUnit.class, "" + // - "$0.traverse(set(), capabilityIndex(everything), _, {rqCache, index, parent | " + // - "index.satisfiesAny(parent.requiredCapabilities.unique(rqCache).select(rc | rc.filter == null || $1 ~= rc.filter))})", roots, env); + "$0.traverse(set(), _, { cache, parent | parent.requiredCapabilities.unique(cache).select(rc | rc.filter == null || $1 ~= rc.filter).collect(rc | everything.select(iu | iu ~= rc)).flatten()})", roots, env); long sliceTime = 0; long traverseTime = 0; diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/TestIndexes.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/TestIndexes.java new file mode 100644 index 000000000..2fe2ebf99 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/TestIndexes.java @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright (c) 2009 Cloudsmith Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Cloudsmith Inc. - initial API and implementation + *******************************************************************************/ +package org.eclipse.equinox.p2.tests.ql; + +import java.net.URI; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory; +import org.eclipse.equinox.p2.metadata.IInstallableUnit; +import org.eclipse.equinox.p2.metadata.IRequirement; +import org.eclipse.equinox.p2.ql.QLContextQuery; +import org.eclipse.equinox.p2.query.IQuery; +import org.eclipse.equinox.p2.query.IQueryResult; +import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository; +import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager; +import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; + +public class TestIndexes extends AbstractProvisioningTest { + + public void testIdIndexSimple() throws Exception { + IMetadataRepository repo = getMDR("/testData/galileoM7"); + IQuery<IInstallableUnit> query = new QLContextQuery<IInstallableUnit>(IInstallableUnit.class, "select(x | x.id == $0)", "org.eclipse.sdk.feature.group"); + IQueryResult<IInstallableUnit> result = repo.query(query, getMonitor()); + assertEquals(queryResultSize(result), 1); + } + + public void testIdIndexWithOR() throws Exception { + IMetadataRepository repo = getMDR("/testData/galileoM7"); + IQuery<IInstallableUnit> query = new QLContextQuery<IInstallableUnit>(IInstallableUnit.class, "select(x | x.id == $0 || x.id == $1)", "org.eclipse.sdk.feature.group", "org.eclipse.sdk.feature.jar"); + IQueryResult<IInstallableUnit> result = repo.query(query, getMonitor()); + assertEquals(queryResultSize(result), 2); + } + + public void testIdIndexWithNot() throws Exception { + IMetadataRepository repo = getMDR("/testData/galileoM7"); + IQuery<IInstallableUnit> query = new QLContextQuery<IInstallableUnit>(IInstallableUnit.class, "select(x | x.id == $0 || x.id != $1)", "org.eclipse.sdk.feature.group", "org.eclipse.sdk.feature.jar"); + IQueryResult<IInstallableUnit> result = repo.query(query, getMonitor()); + assertEquals(queryResultSize(result), 3464); + } + + public void testCapabilityIndexSimple() throws Exception { + IMetadataRepository repo = getMDR("/testData/galileoM7"); + IQuery<IInstallableUnit> query = new QLContextQuery<IInstallableUnit>(IInstallableUnit.class, "select(x | x.providedCapabilities.exists(pc | pc.namespace == 'org.eclipse.equinox.p2.iu' && pc.name == $0))", "org.eclipse.core.resources"); + IQueryResult<IInstallableUnit> result = repo.query(query, getMonitor()); + assertEquals(queryResultSize(result), 1); + } + + public void testCapabilityIndexMatches() throws Exception { + IMetadataRepository repo = getMDR("/testData/galileoM7"); + IRequirement requirement = MetadataFactory.createRequiredCapability("org.eclipse.equinox.p2.iu", "org.eclipse.core.resources", null, null, 1, 2, true); + IQuery<IInstallableUnit> query = new QLContextQuery<IInstallableUnit>(IInstallableUnit.class, "select(x | x ~= $0)", requirement); + IQueryResult<IInstallableUnit> result = repo.query(query, getMonitor()); + assertEquals(queryResultSize(result), 1); + } + + private IMetadataRepository getMDR(String uri) throws Exception { + URI metadataRepo = getTestData("1.1", uri).toURI(); + + IMetadataRepositoryManager metadataManager = (IMetadataRepositoryManager) getAgent().getService(IMetadataRepositoryManager.SERVICE_NAME); + assertNotNull(metadataManager); + + return metadataManager.loadRepository(metadataRepo, new NullProgressMonitor()); + } +}
\ No newline at end of file diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/TestQueryReimplementation.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/TestQueryReimplementation.java index 9a51eda88..6010bee0b 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/TestQueryReimplementation.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/TestQueryReimplementation.java @@ -12,9 +12,8 @@ package org.eclipse.equinox.p2.tests.ql; import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory; import org.eclipse.equinox.p2.metadata.*; -import org.eclipse.equinox.p2.metadata.expression.IExpression; -import org.eclipse.equinox.p2.metadata.expression.IExpressionParser; -import org.eclipse.equinox.p2.ql.*; +import org.eclipse.equinox.p2.metadata.expression.*; +import org.eclipse.equinox.p2.ql.QLMatchQuery; import org.eclipse.equinox.p2.query.IQueryResult; import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository; import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; @@ -26,7 +25,7 @@ public class TestQueryReimplementation extends AbstractProvisioningTest { private static final IExpression expr2; static { - IQLParser parser = QL.newParser(); + IExpressionParser parser = ExpressionUtil.getParser(); // This expression is used in case the updateFrom is an IInstallableUnitPatch // @@ -41,15 +40,15 @@ public class TestQueryReimplementation extends AbstractProvisioningTest { } public UpdateQuery(IInstallableUnit updateFrom) { - super(IInstallableUnit.class, QL.getFactory().matchExpression(updateFrom instanceof IInstallableUnitPatch ? expr1 : expr2, updateFrom, IInstallableUnitPatch.class)); + super(IInstallableUnit.class, ExpressionUtil.getFactory().matchExpression(updateFrom instanceof IInstallableUnitPatch ? expr1 : expr2, updateFrom, IInstallableUnitPatch.class)); } } public static class IUPropertyQuery extends QLMatchQuery { - private static final IExpression expr = QL.newParser().parse("properties[$0] == $1"); + private static final IExpression expr = ExpressionUtil.getParser().parse("properties[$0] == $1"); public IUPropertyQuery(String propertyName, String propertyValue) { - super(IInstallableUnit.class, QL.getFactory().matchExpression(expr, propertyName, propertyValue)); + super(IInstallableUnit.class, ExpressionUtil.getFactory().matchExpression(expr, propertyName, propertyValue)); } } @@ -64,7 +63,7 @@ public class TestQueryReimplementation extends AbstractProvisioningTest { private static final IExpression idRangeQuery; static { - IExpressionParser parser = QL.newParser(); + IExpressionParser parser = ExpressionUtil.getParser(); idVersionQuery = parser.parse("($0 == null || $0 == id) && ($1 == null || $1 == version)"); idRangeQuery = parser.parse("($0 == null || $0 == id) && ($1 == null || version ~= $1)"); } @@ -87,7 +86,7 @@ public class TestQueryReimplementation extends AbstractProvisioningTest { * @param range The version range to match */ public InstallableUnitQuery(String id, VersionRange range) { - super(IInstallableUnit.class, QL.getFactory().matchExpression(idRangeQuery, id, range)); + super(IInstallableUnit.class, ExpressionUtil.getFactory().matchExpression(idRangeQuery, id, range)); } /** @@ -98,7 +97,7 @@ public class TestQueryReimplementation extends AbstractProvisioningTest { * @param version The precise version that a matching unit must have */ public InstallableUnitQuery(String id, Version version) { - super(IInstallableUnit.class, QL.getFactory().matchExpression(idVersionQuery, id, version)); + super(IInstallableUnit.class, ExpressionUtil.getFactory().matchExpression(idVersionQuery, id, version)); } /** |