From ea0f09096afe05e2d414c707584e1e33c0c44383 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Fri, 21 Apr 2023 02:12:04 +0200 Subject: refactor: simplify ModelAdapter * Remove the reflection-based machinery around adapter types. * Adapter builders, store adapters, and model adapters are now only associated with each other based on static and runtime types. * Simplifies writing new adapters. * Hierarchical syntax for adding adapter builders to the store builder. --- .../store/query/viatra/ViatraModelQuery.java | 26 ----- .../query/viatra/ViatraModelQueryAdapter.java | 5 + .../query/viatra/ViatraModelQueryBuilder.java | 2 +- .../internal/ViatraModelQueryBuilderImpl.java | 22 +++- .../store/query/viatra/DiagonalQueryTest.java | 66 +++++------ .../store/query/viatra/FunctionalQueryTest.java | 90 +++++++-------- .../refinery/store/query/viatra/QueryTest.java | 123 ++++++++++----------- .../store/query/viatra/QueryTransactionTest.java | 46 ++++---- 8 files changed, 185 insertions(+), 195 deletions(-) delete mode 100644 subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQuery.java (limited to 'subprojects/store-query-viatra/src') diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQuery.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQuery.java deleted file mode 100644 index 3fff6f2e..00000000 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQuery.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors - * - * SPDX-License-Identifier: EPL-2.0 - */ -package tools.refinery.store.query.viatra; - -import tools.refinery.store.adapter.ModelAdapterBuilderFactory; -import tools.refinery.store.model.ModelStoreBuilder; -import tools.refinery.store.query.ModelQuery; -import tools.refinery.store.query.viatra.internal.ViatraModelQueryBuilderImpl; - -public final class ViatraModelQuery extends ModelAdapterBuilderFactory { - public static final ViatraModelQuery ADAPTER = new ViatraModelQuery(); - - private ViatraModelQuery() { - super(ViatraModelQueryAdapter.class, ViatraModelQueryStoreAdapter.class, ViatraModelQueryBuilder.class); - extendsAdapter(ModelQuery.ADAPTER); - } - - @Override - public ViatraModelQueryBuilder createBuilder(ModelStoreBuilder storeBuilder) { - return new ViatraModelQueryBuilderImpl(storeBuilder); - } -} diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryAdapter.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryAdapter.java index 411e251e..12c93f62 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryAdapter.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryAdapter.java @@ -6,8 +6,13 @@ package tools.refinery.store.query.viatra; import tools.refinery.store.query.ModelQueryAdapter; +import tools.refinery.store.query.viatra.internal.ViatraModelQueryBuilderImpl; public interface ViatraModelQueryAdapter extends ModelQueryAdapter { @Override ViatraModelQueryStoreAdapter getStoreAdapter(); + + static ViatraModelQueryBuilder builder() { + return new ViatraModelQueryBuilderImpl(); + } } diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java index 310171e8..931a07aa 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java @@ -50,5 +50,5 @@ public interface ViatraModelQueryBuilder extends ModelQueryBuilder { ViatraModelQueryBuilder hint(Dnf dnf, QueryEvaluationHint queryEvaluationHint); @Override - ViatraModelQueryStoreAdapter createStoreAdapter(ModelStore store); + ViatraModelQueryStoreAdapter build(ModelStore store); } diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java index 44ed1505..ce2467b4 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java @@ -25,7 +25,8 @@ import tools.refinery.store.query.viatra.internal.pquery.Dnf2PQuery; import java.util.*; import java.util.function.Function; -public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder implements ViatraModelQueryBuilder { +public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder + implements ViatraModelQueryBuilder { private ViatraQueryEngineOptions.Builder engineOptionsBuilder; private QueryEvaluationHint defaultHint = new QueryEvaluationHint(Map.of( // Use a cost function that ignores the initial (empty) model but allows higher arity input keys. @@ -35,8 +36,7 @@ public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder imp private final Set vacuousQueries = new LinkedHashSet<>(); private final Map> querySpecifications = new LinkedHashMap<>(); - public ViatraModelQueryBuilderImpl(ModelStoreBuilder storeBuilder) { - super(storeBuilder); + public ViatraModelQueryBuilderImpl() { engineOptionsBuilder = new ViatraQueryEngineOptions.Builder() .withDefaultBackend(ReteBackendFactory.INSTANCE) .withDefaultCachingBackend(ReteBackendFactory.INSTANCE) @@ -45,36 +45,42 @@ public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder imp @Override public ViatraModelQueryBuilder engineOptions(ViatraQueryEngineOptions engineOptions) { + checkNotConfigured(); engineOptionsBuilder = new ViatraQueryEngineOptions.Builder(engineOptions); return this; } @Override public ViatraModelQueryBuilder defaultHint(QueryEvaluationHint queryEvaluationHint) { + checkNotConfigured(); defaultHint = defaultHint.overrideBy(queryEvaluationHint); return this; } @Override public ViatraModelQueryBuilder backend(IQueryBackendFactory queryBackendFactory) { + checkNotConfigured(); engineOptionsBuilder.withDefaultBackend(queryBackendFactory); return this; } @Override public ViatraModelQueryBuilder cachingBackend(IQueryBackendFactory queryBackendFactory) { + checkNotConfigured(); engineOptionsBuilder.withDefaultCachingBackend(queryBackendFactory); return this; } @Override public ViatraModelQueryBuilder searchBackend(IQueryBackendFactory queryBackendFactory) { + checkNotConfigured(); engineOptionsBuilder.withDefaultSearchBackend(queryBackendFactory); return this; } @Override public ViatraModelQueryBuilder query(AnyQuery query) { + checkNotConfigured(); if (querySpecifications.containsKey(query) || vacuousQueries.contains(query)) { // Ignore duplicate queries. return this; @@ -103,20 +109,26 @@ public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder imp @Override public ViatraModelQueryBuilder computeHint(Function computeHint) { + checkNotConfigured(); dnf2PQuery.setComputeHint(computeHint); return this; } @Override public ViatraModelQueryBuilder hint(Dnf dnf, QueryEvaluationHint queryEvaluationHint) { + checkNotConfigured(); dnf2PQuery.hint(dnf, queryEvaluationHint); return this; } @Override - public ViatraModelQueryStoreAdapterImpl createStoreAdapter(ModelStore store) { - validateSymbols(store); + public void doConfigure(ModelStoreBuilder storeBuilder) { dnf2PQuery.assertNoUnusedHints(); + } + + @Override + public ViatraModelQueryStoreAdapterImpl doBuild(ModelStore store) { + validateSymbols(store); return new ViatraModelQueryStoreAdapterImpl(store, buildEngineOptions(), dnf2PQuery.getSymbolViews(), Collections.unmodifiableMap(querySpecifications), Collections.unmodifiableSet(vacuousQueries)); } diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java index 3ff01064..56ddb9b4 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java @@ -7,7 +7,7 @@ package tools.refinery.store.query.viatra; import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; import tools.refinery.store.model.ModelStore; -import tools.refinery.store.query.ModelQuery; +import tools.refinery.store.query.ModelQueryAdapter; import tools.refinery.store.query.dnf.Dnf; import tools.refinery.store.query.dnf.Query; import tools.refinery.store.query.viatra.tests.QueryEngineTest; @@ -40,15 +40,15 @@ class DiagonalQueryTest { var store = ModelStore.builder() .symbols(person, symbol) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var symbolInterpretation = model.getInterpretation(symbol); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -97,15 +97,15 @@ class DiagonalQueryTest { var store = ModelStore.builder() .symbols(person, symbol) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var symbolInterpretation = model.getInterpretation(symbol); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -140,15 +140,15 @@ class DiagonalQueryTest { var store = ModelStore.builder() .symbols(person, symbol) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var symbolInterpretation = model.getInterpretation(symbol); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -198,15 +198,15 @@ class DiagonalQueryTest { var store = ModelStore.builder() .symbols(person, symbol) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var symbolInterpretation = model.getInterpretation(symbol); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -243,15 +243,15 @@ class DiagonalQueryTest { var store = ModelStore.builder() .symbols(person, symbol) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var symbolInterpretation = model.getInterpretation(symbol); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -306,15 +306,15 @@ class DiagonalQueryTest { var store = ModelStore.builder() .symbols(person, symbol) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var symbolInterpretation = model.getInterpretation(symbol); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -350,15 +350,15 @@ class DiagonalQueryTest { var store = ModelStore.builder() .symbols(person, symbol) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var symbolInterpretation = model.getInterpretation(symbol); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -404,15 +404,15 @@ class DiagonalQueryTest { var store = ModelStore.builder() .symbols(person, symbol) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var symbolInterpretation = model.getInterpretation(symbol); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java index ffa5e60b..98c8cd92 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java @@ -8,7 +8,7 @@ package tools.refinery.store.query.viatra; import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; import tools.refinery.store.map.Cursor; import tools.refinery.store.model.ModelStore; -import tools.refinery.store.query.ModelQuery; +import tools.refinery.store.query.ModelQueryAdapter; import tools.refinery.store.query.dnf.Dnf; import tools.refinery.store.query.dnf.Query; import tools.refinery.store.query.term.Variable; @@ -49,15 +49,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -97,15 +97,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -141,15 +141,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -180,15 +180,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -231,15 +231,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -269,14 +269,14 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(age) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); ageInterpretation.put(Tuple.of(0), 12); @@ -306,15 +306,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -349,15 +349,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(minQuery, maxQuery) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(minQuery, maxQuery)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var minResultSet = queryEngine.getResultSet(minQuery); var maxResultSet = queryEngine.getResultSet(maxQuery); @@ -408,15 +408,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -448,15 +448,15 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -493,16 +493,16 @@ class FunctionalQueryTest { var store = ModelStore.builder() .symbols(person, age, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .query(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java index a90889c6..46ce37b4 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java @@ -8,7 +8,7 @@ package tools.refinery.store.query.viatra; import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; import org.junit.jupiter.api.Test; import tools.refinery.store.model.ModelStore; -import tools.refinery.store.query.ModelQuery; +import tools.refinery.store.query.ModelQueryAdapter; import tools.refinery.store.query.dnf.Dnf; import tools.refinery.store.query.dnf.Query; import tools.refinery.store.query.term.Variable; @@ -41,15 +41,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, asset) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .query(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var assetInterpretation = model.getInterpretation(asset); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -81,15 +81,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -125,15 +125,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -175,16 +175,16 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, animal, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var animalInterpretation = model.getInterpretation(animal); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -221,14 +221,14 @@ class QueryTest { var store = ModelStore.builder() .symbols(person) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -262,15 +262,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -312,15 +312,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -355,15 +355,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -413,15 +413,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -461,15 +461,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -511,15 +511,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -553,15 +553,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -610,15 +610,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, friend) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var friendInterpretation = model.getInterpretation(friend); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -658,15 +658,15 @@ class QueryTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(hint) - .queries(query) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -691,13 +691,13 @@ class QueryTest { var store = ModelStore.builder() .symbols(person) - .with(ViatraModelQuery.ADAPTER) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -713,8 +713,7 @@ class QueryTest { var p1 = Variable.of("p1"); var predicate = Query.builder("AlwaysTrue").parameters(p1).clause().build(); - var storeBuilder = ModelStore.builder().symbols(person); - var queryBuilder = storeBuilder.with(ViatraModelQuery.ADAPTER); + var queryBuilder = ViatraModelQueryAdapter.builder(); assertThrows(IllegalArgumentException.class, () -> queryBuilder.queries(predicate)); } diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java index 9de2655f..6860ece9 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java @@ -9,7 +9,7 @@ import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import tools.refinery.store.model.ModelStore; -import tools.refinery.store.query.ModelQuery; +import tools.refinery.store.query.ModelQueryAdapter; import tools.refinery.store.query.dnf.Query; import tools.refinery.store.query.view.FilteredView; import tools.refinery.store.query.view.FunctionView; @@ -35,13 +35,13 @@ class QueryTransactionTest { var store = ModelStore.builder() .symbols(person) - .with(ViatraModelQuery.ADAPTER) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); assertResults(Map.of( @@ -102,14 +102,14 @@ class QueryTransactionTest { var store = ModelStore.builder() .symbols(person) - .with(ViatraModelQuery.ADAPTER) - .defaultHint(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.DEFAULT_SEARCH)) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.DEFAULT_SEARCH)) + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); assertResults(Map.of( @@ -153,14 +153,14 @@ class QueryTransactionTest { var store = ModelStore.builder() .symbols(person, asset) - .with(ViatraModelQuery.ADAPTER) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var assetInterpretation = model.getInterpretation(asset); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); assertFalse(queryEngine.hasPendingChanges()); @@ -226,14 +226,14 @@ class QueryTransactionTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .query(query) + .with(ViatraModelQueryAdapter.builder() + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -268,14 +268,14 @@ class QueryTransactionTest { var store = ModelStore.builder() .symbols(person, age) - .with(ViatraModelQuery.ADAPTER) - .query(query) + .with(ViatraModelQueryAdapter.builder() + .queries(query)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); var ageInterpretation = model.getInterpretation(age); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); personInterpretation.put(Tuple.of(0), true); @@ -306,13 +306,13 @@ class QueryTransactionTest { var store = ModelStore.builder() .symbols(person) - .with(ViatraModelQuery.ADAPTER) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); @@ -360,13 +360,13 @@ class QueryTransactionTest { var store = ModelStore.builder() .symbols(person) - .with(ViatraModelQuery.ADAPTER) - .queries(predicate) + .with(ViatraModelQueryAdapter.builder() + .queries(predicate)) .build(); var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var queryEngine = model.getAdapter(ModelQuery.ADAPTER); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); var predicateResultSet = queryEngine.getResultSet(predicate); personInterpretation.put(Tuple.of(0), true); -- cgit v1.2.3-70-g09d2