From 9bfb8248669dc260f59860fe7cf72665603023fb Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Wed, 15 Nov 2023 13:04:38 +0100 Subject: [PATCH 01/88] [maven-release-plugin] prepare for next development iteration --- algorithms/active/aaar/pom.xml | 2 +- algorithms/active/adt/pom.xml | 2 +- algorithms/active/dhc/pom.xml | 2 +- algorithms/active/kearns-vazirani/pom.xml | 2 +- algorithms/active/lstar/pom.xml | 2 +- algorithms/active/nlstar/pom.xml | 2 +- algorithms/active/observation-pack-vpa/pom.xml | 2 +- algorithms/active/observation-pack/pom.xml | 2 +- algorithms/active/oml/pom.xml | 2 +- algorithms/active/pom.xml | 2 +- algorithms/active/procedural/pom.xml | 2 +- algorithms/active/ttt-vpa/pom.xml | 2 +- algorithms/active/ttt/pom.xml | 2 +- algorithms/passive/ostia/pom.xml | 2 +- algorithms/passive/pom.xml | 2 +- algorithms/passive/rpni-edsm/pom.xml | 2 +- algorithms/passive/rpni-mdl/pom.xml | 2 +- algorithms/passive/rpni/pom.xml | 2 +- algorithms/pom.xml | 2 +- api/pom.xml | 2 +- archetypes/basic/pom.xml | 2 +- archetypes/complete/pom.xml | 2 +- archetypes/pom.xml | 2 +- build-parent/pom.xml | 2 +- build-tools/annotation-processor/pom.xml | 2 +- build-tools/build-config/pom.xml | 2 +- build-tools/pom.xml | 2 +- commons/counterexamples/pom.xml | 2 +- commons/pom.xml | 2 +- commons/settings/pom.xml | 2 +- commons/util/pom.xml | 2 +- datastructures/discrimination-tree/pom.xml | 2 +- datastructures/list/pom.xml | 2 +- datastructures/observation-table/pom.xml | 2 +- datastructures/pom.xml | 2 +- datastructures/pta/pom.xml | 2 +- distribution/pom.xml | 2 +- drivers/basic/pom.xml | 2 +- drivers/mapper/pom.xml | 2 +- drivers/pom.xml | 2 +- drivers/simulator/pom.xml | 2 +- examples/pom.xml | 2 +- filters/cache/pom.xml | 2 +- filters/pom.xml | 2 +- filters/reuse/pom.xml | 2 +- filters/statistics/pom.xml | 2 +- oracles/emptiness-oracles/pom.xml | 2 +- oracles/equivalence-oracles/pom.xml | 2 +- oracles/membership-oracles/pom.xml | 2 +- oracles/parallelism/pom.xml | 2 +- oracles/pom.xml | 2 +- oracles/property-oracles/pom.xml | 2 +- pom.xml | 4 ++-- test-support/learner-it-support/pom.xml | 2 +- test-support/learning-examples/pom.xml | 2 +- test-support/pom.xml | 2 +- test-support/test-support/pom.xml | 2 +- 57 files changed, 58 insertions(+), 58 deletions(-) diff --git a/algorithms/active/aaar/pom.xml b/algorithms/active/aaar/pom.xml index 24f0d78f65..ea3cd012d5 100644 --- a/algorithms/active/aaar/pom.xml +++ b/algorithms/active/aaar/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/adt/pom.xml b/algorithms/active/adt/pom.xml index 2423711603..383d728dc0 100644 --- a/algorithms/active/adt/pom.xml +++ b/algorithms/active/adt/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/dhc/pom.xml b/algorithms/active/dhc/pom.xml index f88d9df0b3..4ae4d40cd7 100644 --- a/algorithms/active/dhc/pom.xml +++ b/algorithms/active/dhc/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/kearns-vazirani/pom.xml b/algorithms/active/kearns-vazirani/pom.xml index 9595613fea..428798ea6e 100644 --- a/algorithms/active/kearns-vazirani/pom.xml +++ b/algorithms/active/kearns-vazirani/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/lstar/pom.xml b/algorithms/active/lstar/pom.xml index 63429cb93b..29008faf5c 100644 --- a/algorithms/active/lstar/pom.xml +++ b/algorithms/active/lstar/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/nlstar/pom.xml b/algorithms/active/nlstar/pom.xml index 520bb994c1..4563aed901 100644 --- a/algorithms/active/nlstar/pom.xml +++ b/algorithms/active/nlstar/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT learnlib-nlstar diff --git a/algorithms/active/observation-pack-vpa/pom.xml b/algorithms/active/observation-pack-vpa/pom.xml index 9df902e918..e1fd66ef63 100644 --- a/algorithms/active/observation-pack-vpa/pom.xml +++ b/algorithms/active/observation-pack-vpa/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/observation-pack/pom.xml b/algorithms/active/observation-pack/pom.xml index 8476b96425..d3c2e47c33 100644 --- a/algorithms/active/observation-pack/pom.xml +++ b/algorithms/active/observation-pack/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/oml/pom.xml b/algorithms/active/oml/pom.xml index d5964ae08b..35186c1be0 100644 --- a/algorithms/active/oml/pom.xml +++ b/algorithms/active/oml/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/pom.xml b/algorithms/active/pom.xml index 57462d88d8..700e661305 100644 --- a/algorithms/active/pom.xml +++ b/algorithms/active/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/procedural/pom.xml b/algorithms/active/procedural/pom.xml index fb72210b30..cffc246d12 100644 --- a/algorithms/active/procedural/pom.xml +++ b/algorithms/active/procedural/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/ttt-vpa/pom.xml b/algorithms/active/ttt-vpa/pom.xml index 7ea35512e6..bba8bc619a 100644 --- a/algorithms/active/ttt-vpa/pom.xml +++ b/algorithms/active/ttt-vpa/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/active/ttt/pom.xml b/algorithms/active/ttt/pom.xml index 01e330e93e..f3687451f7 100644 --- a/algorithms/active/ttt/pom.xml +++ b/algorithms/active/ttt/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/passive/ostia/pom.xml b/algorithms/passive/ostia/pom.xml index f41da1adef..f25ce4f77d 100644 --- a/algorithms/passive/ostia/pom.xml +++ b/algorithms/passive/ostia/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-passive-parent - 0.17.0 + 0.18.0-SNAPSHOT learnlib-ostia diff --git a/algorithms/passive/pom.xml b/algorithms/passive/pom.xml index d6fb348d46..f10006a437 100644 --- a/algorithms/passive/pom.xml +++ b/algorithms/passive/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/passive/rpni-edsm/pom.xml b/algorithms/passive/rpni-edsm/pom.xml index 63b3397d06..1967d145b6 100644 --- a/algorithms/passive/rpni-edsm/pom.xml +++ b/algorithms/passive/rpni-edsm/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-passive-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/passive/rpni-mdl/pom.xml b/algorithms/passive/rpni-mdl/pom.xml index 993c15540d..2b8f4417b0 100644 --- a/algorithms/passive/rpni-mdl/pom.xml +++ b/algorithms/passive/rpni-mdl/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-passive-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/passive/rpni/pom.xml b/algorithms/passive/rpni/pom.xml index ed5c73cb0c..868574f564 100644 --- a/algorithms/passive/rpni/pom.xml +++ b/algorithms/passive/rpni/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-algorithms-passive-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/algorithms/pom.xml b/algorithms/pom.xml index b4253dc3d7..f4b3a03ada 100644 --- a/algorithms/pom.xml +++ b/algorithms/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/api/pom.xml b/api/pom.xml index 41fa881401..b52f0c1c44 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/archetypes/basic/pom.xml b/archetypes/basic/pom.xml index 18dd5c4b3c..be484e32dd 100644 --- a/archetypes/basic/pom.xml +++ b/archetypes/basic/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib.archetypes learnlib-archetypes-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/archetypes/complete/pom.xml b/archetypes/complete/pom.xml index f40f83b132..6553140da5 100644 --- a/archetypes/complete/pom.xml +++ b/archetypes/complete/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib.archetypes learnlib-archetypes-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/archetypes/pom.xml b/archetypes/pom.xml index 254cf75b0c..c22453388b 100644 --- a/archetypes/pom.xml +++ b/archetypes/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/build-parent/pom.xml b/build-parent/pom.xml index a2d74b2d00..cc1cdb0bbc 100644 --- a/build-parent/pom.xml +++ b/build-parent/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/build-tools/annotation-processor/pom.xml b/build-tools/annotation-processor/pom.xml index 5b96f3112c..4d32a2176c 100644 --- a/build-tools/annotation-processor/pom.xml +++ b/build-tools/annotation-processor/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../../build-parent/pom.xml diff --git a/build-tools/build-config/pom.xml b/build-tools/build-config/pom.xml index 0be346fbcd..0165a0eb10 100644 --- a/build-tools/build-config/pom.xml +++ b/build-tools/build-config/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib.tooling learnlib-build-tools-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/build-tools/pom.xml b/build-tools/pom.xml index a9838e1c9a..4ae71fd717 100644 --- a/build-tools/pom.xml +++ b/build-tools/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/commons/counterexamples/pom.xml b/commons/counterexamples/pom.xml index 3e5a38b54e..a9eea8d07f 100644 --- a/commons/counterexamples/pom.xml +++ b/commons/counterexamples/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-commons-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/commons/pom.xml b/commons/pom.xml index d2d71c892f..52d8fbdf01 100644 --- a/commons/pom.xml +++ b/commons/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/commons/settings/pom.xml b/commons/settings/pom.xml index c080f8b898..b525920e04 100644 --- a/commons/settings/pom.xml +++ b/commons/settings/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-commons-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/commons/util/pom.xml b/commons/util/pom.xml index 757bb3ab78..abac3df9d3 100644 --- a/commons/util/pom.xml +++ b/commons/util/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-commons-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/datastructures/discrimination-tree/pom.xml b/datastructures/discrimination-tree/pom.xml index ca4e7dead0..72c5b14f5a 100644 --- a/datastructures/discrimination-tree/pom.xml +++ b/datastructures/discrimination-tree/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-datastructures-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/datastructures/list/pom.xml b/datastructures/list/pom.xml index 24298963bf..5086e894bd 100644 --- a/datastructures/list/pom.xml +++ b/datastructures/list/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-datastructures-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/datastructures/observation-table/pom.xml b/datastructures/observation-table/pom.xml index a24b23fab0..db7483043e 100644 --- a/datastructures/observation-table/pom.xml +++ b/datastructures/observation-table/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-datastructures-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/datastructures/pom.xml b/datastructures/pom.xml index 8361543aea..c7b85b2aec 100644 --- a/datastructures/pom.xml +++ b/datastructures/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/datastructures/pta/pom.xml b/datastructures/pta/pom.xml index b4094efc8a..f3e861284b 100644 --- a/datastructures/pta/pom.xml +++ b/datastructures/pta/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-datastructures-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/distribution/pom.xml b/distribution/pom.xml index a18149526f..7604bed249 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/drivers/basic/pom.xml b/drivers/basic/pom.xml index 52b67d169f..4bbb9fc659 100644 --- a/drivers/basic/pom.xml +++ b/drivers/basic/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-drivers-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/drivers/mapper/pom.xml b/drivers/mapper/pom.xml index 89cdc1d5b7..2aee3762f7 100644 --- a/drivers/mapper/pom.xml +++ b/drivers/mapper/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-drivers-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/drivers/pom.xml b/drivers/pom.xml index efab6f34bc..42fb633a5f 100644 --- a/drivers/pom.xml +++ b/drivers/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/drivers/simulator/pom.xml b/drivers/simulator/pom.xml index 6eb9d6296d..694fdab104 100644 --- a/drivers/simulator/pom.xml +++ b/drivers/simulator/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-drivers-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/examples/pom.xml b/examples/pom.xml index 82510ec428..35fc0926e5 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/filters/cache/pom.xml b/filters/cache/pom.xml index e09b7c529e..ea20a75338 100644 --- a/filters/cache/pom.xml +++ b/filters/cache/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-filters-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/filters/pom.xml b/filters/pom.xml index fe9a227afb..80c1cf4317 100644 --- a/filters/pom.xml +++ b/filters/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/filters/reuse/pom.xml b/filters/reuse/pom.xml index 8d705caedd..dbabc49a0e 100644 --- a/filters/reuse/pom.xml +++ b/filters/reuse/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-filters-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/filters/statistics/pom.xml b/filters/statistics/pom.xml index 84cb555fec..38d9c29139 100644 --- a/filters/statistics/pom.xml +++ b/filters/statistics/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-filters-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/oracles/emptiness-oracles/pom.xml b/oracles/emptiness-oracles/pom.xml index 7c57e50003..ea849447fd 100644 --- a/oracles/emptiness-oracles/pom.xml +++ b/oracles/emptiness-oracles/pom.xml @@ -5,7 +5,7 @@ de.learnlib learnlib-oracles-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/oracles/equivalence-oracles/pom.xml b/oracles/equivalence-oracles/pom.xml index d2d7a065e3..91351e1c16 100644 --- a/oracles/equivalence-oracles/pom.xml +++ b/oracles/equivalence-oracles/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-oracles-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/oracles/membership-oracles/pom.xml b/oracles/membership-oracles/pom.xml index 602120405f..6bb1d1e157 100644 --- a/oracles/membership-oracles/pom.xml +++ b/oracles/membership-oracles/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-oracles-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/oracles/parallelism/pom.xml b/oracles/parallelism/pom.xml index acb6f56ccc..1c2b813826 100644 --- a/oracles/parallelism/pom.xml +++ b/oracles/parallelism/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-oracles-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/oracles/pom.xml b/oracles/pom.xml index 9a5b08447b..507397f6d9 100644 --- a/oracles/pom.xml +++ b/oracles/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/oracles/property-oracles/pom.xml b/oracles/property-oracles/pom.xml index 33714b3b59..8d4237c876 100644 --- a/oracles/property-oracles/pom.xml +++ b/oracles/property-oracles/pom.xml @@ -5,7 +5,7 @@ de.learnlib learnlib-oracles-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 156dd028e5..82168e7cb1 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ limitations under the License. --> de.learnlib learnlib-parent - 0.17.0 + 0.18.0-SNAPSHOT pom LearnLib @@ -165,7 +165,7 @@ limitations under the License. scm:git:https://github.com:LearnLib/learnlib.git scm:git:git@github.com:LearnLib/learnlib.git https://github.com/LearnLib/learnlib/tree/develop - learnlib-0.17.0 + HEAD GitHub Issues diff --git a/test-support/learner-it-support/pom.xml b/test-support/learner-it-support/pom.xml index b42d62ff93..753ec1521c 100644 --- a/test-support/learner-it-support/pom.xml +++ b/test-support/learner-it-support/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib.testsupport learnlib-test-support-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/test-support/learning-examples/pom.xml b/test-support/learning-examples/pom.xml index c40f5aa161..22f76d2713 100644 --- a/test-support/learning-examples/pom.xml +++ b/test-support/learning-examples/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib.testsupport learnlib-test-support-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml diff --git a/test-support/pom.xml b/test-support/pom.xml index 9f66bd4ce8..459488395a 100644 --- a/test-support/pom.xml +++ b/test-support/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.17.0 + 0.18.0-SNAPSHOT ../build-parent/pom.xml diff --git a/test-support/test-support/pom.xml b/test-support/test-support/pom.xml index 7df35f1d0c..5069deb572 100644 --- a/test-support/test-support/pom.xml +++ b/test-support/test-support/pom.xml @@ -5,7 +5,7 @@ de.learnlib.testsupport learnlib-test-support-parent - 0.17.0 + 0.18.0-SNAPSHOT ../pom.xml From b06628fec18a4bd0e62324bd33469b2af299b452 Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Wed, 15 Nov 2023 13:46:04 +0100 Subject: [PATCH 02/88] fix public SCM connection --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 82168e7cb1..cea75adee3 100644 --- a/pom.xml +++ b/pom.xml @@ -162,7 +162,7 @@ limitations under the License. =============================== SCM ======================= --> - scm:git:https://github.com:LearnLib/learnlib.git + scm:git:https://github.com/LearnLib/learnlib.git scm:git:git@github.com:LearnLib/learnlib.git https://github.com/LearnLib/learnlib/tree/develop HEAD From 0c05c8ca1c09a3bb11241823139dbf0b0b581d95 Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Wed, 15 Nov 2023 13:49:17 +0100 Subject: [PATCH 03/88] use developerConnection in scm-publish plugin so that we can conveniently push docs after a release --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cea75adee3..04b051cdc5 100644 --- a/pom.xml +++ b/pom.xml @@ -1200,7 +1200,7 @@ limitations under the License. org.apache.maven.plugins maven-scm-publish-plugin - ${project.scm.connection} + ${project.scm.developerConnection} gh-pages true 32.1.2-jre 1.13.0 + 2.3.1 1.49 3.0.2 1.3.12 @@ -870,6 +871,13 @@ limitations under the License. ${basedir}/distribution/target/site/jacoco-aggregate/jacoco.xml + + + javax.xml.bind + jaxb-api + ${jaxb-api.version} + + org.apache.maven.plugins From 6a9cbd05d247253ecedd152df229130f59937b3b Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Fri, 1 Dec 2023 19:19:49 +0100 Subject: [PATCH 08/88] ci: use defaults in integration-tests --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8d8a2b3614..19532517b6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -86,7 +86,7 @@ jobs: mvn -B '-Dmaven.compiler.source=${{ matrix.jdk }}' '-Dmaven.compiler.target=${{ matrix.jdk }}' '-Dautomatalib.targetVersion=${{ matrix.jdk }}' install -DskipTests cd $GITHUB_WORKSPACE - name: Run Maven - run: mvn -B '-Dmaven.compiler.source=${{ matrix.jdk }}' '-Dmaven.compiler.target=${{ matrix.jdk }}' '-Dlearnlib.targetVersion=${{ matrix.jdk }}' install + run: mvn -B install coverage: name: "Coverage" needs: [ platform-integration ] From 666348cb1f784d059f42af5a38907d90a723b1d1 Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Fri, 1 Dec 2023 20:31:33 +0100 Subject: [PATCH 09/88] ci: use deaults also for AutomataLib builds --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19532517b6..d02bc4d2ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,7 +83,7 @@ jobs: run: | git clone -b ${AUTOMATALIB_BRANCH:-develop} --single-branch https://github.com/${AUTOMATALIB_FORK:-LearnLib}/automatalib.git ${HOME}/automatalib-git cd ${HOME}/automatalib-git - mvn -B '-Dmaven.compiler.source=${{ matrix.jdk }}' '-Dmaven.compiler.target=${{ matrix.jdk }}' '-Dautomatalib.targetVersion=${{ matrix.jdk }}' install -DskipTests + mvn -B install -DskipTests cd $GITHUB_WORKSPACE - name: Run Maven run: mvn -B install From ca5cbeb70142cd627735e24d082feede7e795a4f Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Sat, 23 Dec 2023 14:13:15 +0100 Subject: [PATCH 10/88] drop Java 8 configs --- README.md | 2 +- build-parent/pom.xml | 48 ++++++-------- .../de/learnlib/example/ExamplesTest.java | 6 +- pom.xml | 64 ++----------------- 4 files changed, 26 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index 690a48a8a5..14f48f1e36 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Contributions -- whether it is in the form of new features, better documentation For simply using LearnLib you may use the Maven artifacts which are available in the [Maven Central repository][maven-central]. It is also possible to download a bundled [distribution artifact][maven-central-distr] if you want to use LearnLib without Maven support. -Note that LearnLib requires Java 8 or newer. +Note that LearnLib requires Java 11 (or newer) to build but still supports Java 8 at runtime. #### Building development versions diff --git a/build-parent/pom.xml b/build-parent/pom.xml index cc1cdb0bbc..6ea041a4cf 100644 --- a/build-parent/pom.xml +++ b/build-parent/pom.xml @@ -179,34 +179,8 @@ limitations under the License. cf - - - - com.google.code.findbugs - jsr305 - ${jsr305.version} - provided - - - com.google.errorprone - javac - ${error-prone.version} - provided - - - - org.apache.maven.plugins - maven-dependency-plugin - - - - properties - - - - maven-compiler-plugin @@ -217,7 +191,6 @@ limitations under the License. compile - ${learnlib.java9OrNewer} true true ${project.build.directory}/checkerframework @@ -232,7 +205,15 @@ limitations under the License. org.checkerframework.checker.nullness.NullnessChecker - -J-Xbootclasspath/p:${com.google.errorprone:javac:jar} + -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED -AskipDefs=^de.learnlib.algorithm.adt.*|\ ^de.learnlib.algorithm.observationpack.*.vpa.*|\ ^de.learnlib.algorithm.ttt.*|\ @@ -258,7 +239,6 @@ limitations under the License. testCompile - ${learnlib.java9OrNewer} true true ${project.build.directory}/checkerframework @@ -273,7 +253,15 @@ limitations under the License. org.checkerframework.checker.nullness.NullnessChecker - -J-Xbootclasspath/p:${com.google.errorprone:javac:jar} + -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED -AonlyDefs=^de\.learnlib -AskipUses=.* -AsuppressWarnings=uninitialized diff --git a/examples/src/test/java/de/learnlib/example/ExamplesTest.java b/examples/src/test/java/de/learnlib/example/ExamplesTest.java index 94af049b09..845ac156bb 100644 --- a/examples/src/test/java/de/learnlib/example/ExamplesTest.java +++ b/examples/src/test/java/de/learnlib/example/ExamplesTest.java @@ -182,13 +182,11 @@ public void testExample3() throws InvocationTargetException, InterruptedExceptio private static boolean isJVMCompatible() { - final int canonicalSpecVersion = JVMUtil.getCanonicalSpecVersion(); - return canonicalSpecVersion <= 8 || canonicalSpecVersion == 11; + return JVMUtil.getCanonicalSpecVersion() == 11; } private static void requireJVMCompatibility() { - final int canonicalSpecVersion = JVMUtil.getCanonicalSpecVersion(); - if (!(canonicalSpecVersion <= 8 || canonicalSpecVersion == 11)) { + if (JVMUtil.getCanonicalSpecVersion() != 11) { throw new SkipException("The headless AWT environment currently only works with Java 11 or <=8"); } } diff --git a/pom.xml b/pom.xml index 3c36273c5a..3d5a1316b9 100644 --- a/pom.xml +++ b/pom.xml @@ -200,12 +200,9 @@ limitations under the License. UTF-8 1.8 1.8 + 8 - - false - 8 - 3.1.0 3.2.1 @@ -235,18 +232,16 @@ limitations under the License. 0.0.2 0.11.0 0.1 - 1.10 - 3.7.0 + 1.11.1 + 3.40.0 9.3 - 9+181-r4173-1 32.1.2-jre 1.13.0 2.3.1 1.49 - 3.0.2 1.3.12 1.8 - 4.11.0 + 5.6.0 2.0.9 7.5.1 1.4.20 @@ -847,7 +842,6 @@ limitations under the License. ${javadoc-plugin.version} true - ${maven.compiler.source} true false @@ -1222,61 +1216,13 @@ limitations under the License. - - jdk9+-compat - - [9,) - - - true - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - ${javadoc-plugin.version} - - ${learnlib.targetVersion} - - - - org.apache.maven.plugins - maven-compiler-plugin - - ${learnlib.targetVersion} - - - - - - - - jdk11-compat - - 11 - - - 1.11.1 - - jdk17-compat 17 - 1.17.2 - - - - jdk21-compat - - [21,) - - - 5.6.0 + 1.17.3 From a2e99040f1f0db0122c63f3ddcc6238d7ab211dd Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Tue, 26 Dec 2023 19:19:31 +0100 Subject: [PATCH 11/88] wording --- .../src/main/resources/automatalib-learnlib-checkstyle.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-tools/build-config/src/main/resources/automatalib-learnlib-checkstyle.xml b/build-tools/build-config/src/main/resources/automatalib-learnlib-checkstyle.xml index be84437a08..e39f837de9 100644 --- a/build-tools/build-config/src/main/resources/automatalib-learnlib-checkstyle.xml +++ b/build-tools/build-config/src/main/resources/automatalib-learnlib-checkstyle.xml @@ -37,7 +37,7 @@ limitations under the License. - + From 2986ab862178bd0b1602f92d0013bc5293183324 Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Sun, 31 Dec 2023 02:47:54 +0100 Subject: [PATCH 12/88] drop obsolete plugin definition many of our used plugins don't even support the excluded Maven version. Therefore, we build would fail anyway. --- pom.xml | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/pom.xml b/pom.xml index 3d5a1316b9..ea693c2157 100644 --- a/pom.xml +++ b/pom.xml @@ -1169,26 +1169,6 @@ limitations under the License. - - org.apache.maven.plugins - maven-enforcer-plugin - - - enforce-maven - - enforce - - - - - (,2.1.0),(2.1.0,2.2.0),(2.2.0,) - Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively. - - - - - - org.apache.maven.plugins maven-site-plugin From 0ed1dd992d1e3406ab09b0cbe1128a83e3bd8237 Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Thu, 4 Jan 2024 15:32:10 +0100 Subject: [PATCH 13/88] bump license header --- algorithms/active/aaar/pom.xml | 2 +- .../java/de/learnlib/algorithm/aaar/AbstractAAARLearner.java | 2 +- .../src/main/java/de/learnlib/algorithm/aaar/Abstraction.java | 2 +- .../de/learnlib/algorithm/aaar/ExplicitInitialAbstraction.java | 2 +- .../main/java/de/learnlib/algorithm/aaar/TranslatingDFA.java | 2 +- .../de/learnlib/algorithm/aaar/TranslatingMealyMachine.java | 2 +- .../de/learnlib/algorithm/aaar/TranslatingMooreMachine.java | 2 +- .../algorithm/aaar/abstraction/AbstractAbstractionTree.java | 2 +- .../algorithm/aaar/abstraction/ExplicitAbstractionTree.java | 2 +- .../algorithm/aaar/abstraction/GenericAbstractionTree.java | 2 +- .../main/java/de/learnlib/algorithm/aaar/abstraction/Node.java | 2 +- .../algorithm/aaar/explicit/AbstractExplicitAAARLearner.java | 2 +- .../algorithm/aaar/explicit/ExplicitAAARLearnerDFA.java | 2 +- .../algorithm/aaar/explicit/ExplicitAAARLearnerMealy.java | 2 +- .../algorithm/aaar/explicit/ExplicitAAARLearnerMoore.java | 2 +- .../algorithm/aaar/generic/AbstractGenericAAARLearner.java | 2 +- .../learnlib/algorithm/aaar/generic/GenericAAARLearnerDFA.java | 2 +- .../algorithm/aaar/generic/GenericAAARLearnerMealy.java | 2 +- .../algorithm/aaar/generic/GenericAAARLearnerMoore.java | 2 +- .../src/main/java/de/learnlib/algorithm/aaar/package-info.java | 2 +- .../src/test/java/de/learnlib/algorithm/aaar/AAARTestUtil.java | 2 +- .../test/java/de/learnlib/algorithm/aaar/AbstractAAARTest.java | 2 +- .../test/java/de/learnlib/algorithm/aaar/ComboConstructor.java | 2 +- .../de/learnlib/algorithm/aaar/TranslatingLearnerWrapper.java | 2 +- .../algorithm/aaar/explicit/ExplicitAAARLearnerDFATest.java | 2 +- .../algorithm/aaar/explicit/ExplicitAAARLearnerMealyTest.java | 2 +- .../algorithm/aaar/explicit/ExplicitAAARLearnerMooreTest.java | 2 +- .../algorithm/aaar/explicit/IdentityInitialAbstraction.java | 2 +- .../java/de/learnlib/algorithm/aaar/explicit/Incrementor.java | 2 +- .../algorithm/aaar/explicit/ModuloInitialAbstraction.java | 2 +- .../de/learnlib/algorithm/aaar/explicit/NoopIncrementor.java | 2 +- .../aaar/explicit/it/ExplicitAAARLearnerIdentityDFAIT.java | 2 +- .../aaar/explicit/it/ExplicitAAARLearnerIdentityMealyIT.java | 2 +- .../aaar/explicit/it/ExplicitAAARLearnerIdentityMooreIT.java | 2 +- .../aaar/explicit/it/ExplicitAAARLearnerModuloDFAIT.java | 2 +- .../aaar/explicit/it/ExplicitAAARLearnerModuloMealyIT.java | 2 +- .../aaar/explicit/it/ExplicitAAARLearnerModuloMooreIT.java | 2 +- .../algorithm/aaar/generic/GenericAAARLearnerDFATest.java | 2 +- .../algorithm/aaar/generic/GenericAAARLearnerMealyTest.java | 2 +- .../algorithm/aaar/generic/GenericAAARLearnerMooreTest.java | 2 +- .../algorithm/aaar/generic/it/GenericAAARLearnerDFAIT.java | 2 +- .../algorithm/aaar/generic/it/GenericAAARLearnerMealyIT.java | 2 +- .../algorithm/aaar/generic/it/GenericAAARLearnerMooreIT.java | 2 +- algorithms/active/adt/pom.xml | 2 +- .../main/java/de/learnlib/algorithm/adt/ads/DefensiveADS.java | 2 +- .../adt/src/main/java/de/learnlib/algorithm/adt/adt/ADT.java | 2 +- .../main/java/de/learnlib/algorithm/adt/adt/ADTLeafNode.java | 2 +- .../src/main/java/de/learnlib/algorithm/adt/adt/ADTNode.java | 2 +- .../main/java/de/learnlib/algorithm/adt/adt/ADTResetNode.java | 2 +- .../main/java/de/learnlib/algorithm/adt/adt/ADTSymbolNode.java | 2 +- .../main/java/de/learnlib/algorithm/adt/api/ADTExtender.java | 2 +- .../main/java/de/learnlib/algorithm/adt/api/LeafSplitter.java | 2 +- .../learnlib/algorithm/adt/api/PartialTransitionAnalyzer.java | 2 +- .../java/de/learnlib/algorithm/adt/api/SubtreeReplacer.java | 2 +- .../java/de/learnlib/algorithm/adt/automaton/ADTHypothesis.java | 2 +- .../main/java/de/learnlib/algorithm/adt/automaton/ADTState.java | 2 +- .../java/de/learnlib/algorithm/adt/automaton/ADTTransition.java | 2 +- .../java/de/learnlib/algorithm/adt/config/ADTExtenders.java | 2 +- .../java/de/learnlib/algorithm/adt/config/LeafSplitters.java | 2 +- .../java/de/learnlib/algorithm/adt/config/SubtreeReplacers.java | 2 +- .../de/learnlib/algorithm/adt/config/model/ADSCalculator.java | 2 +- .../algorithm/adt/config/model/DefensiveADSCalculator.java | 2 +- .../adt/config/model/calculator/AbstractCalculator.java | 2 +- .../adt/config/model/calculator/BestEffortCalculator.java | 2 +- .../config/model/calculator/BestEffortDefensiveCalculator.java | 2 +- .../adt/config/model/calculator/MinLengthCalculator.java | 2 +- .../adt/config/model/calculator/MinSizeCalculator.java | 2 +- .../algorithm/adt/config/model/extender/DefaultExtender.java | 2 +- .../algorithm/adt/config/model/replacer/ExhaustiveReplacer.java | 2 +- .../algorithm/adt/config/model/replacer/LevelOrderReplacer.java | 2 +- .../algorithm/adt/config/model/replacer/SingleReplacer.java | 2 +- .../main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java | 2 +- .../java/de/learnlib/algorithm/adt/learner/ADTLearnerState.java | 2 +- .../java/de/learnlib/algorithm/adt/model/ExtensionResult.java | 2 +- .../java/de/learnlib/algorithm/adt/model/ObservationTree.java | 2 +- .../java/de/learnlib/algorithm/adt/model/ReplacementResult.java | 2 +- .../src/main/java/de/learnlib/algorithm/adt/package-info.java | 2 +- .../src/main/java/de/learnlib/algorithm/adt/util/ADTUtil.java | 2 +- .../main/java/de/learnlib/algorithm/adt/util/SQOOTBridge.java | 2 +- .../de/learnlib/algorithm/adt/automaton/ADTHypothesisTest.java | 2 +- .../adt/src/test/java/de/learnlib/algorithm/adt/it/ADTIT.java | 2 +- .../test/java/de/learnlib/algorithm/adt/it/MQ2SQWrapper.java | 2 +- .../learnlib/algorithm/adt/learner/ADTGrowingAlphabetTest.java | 2 +- .../learnlib/algorithm/adt/learner/ADTResumableLearnerTest.java | 2 +- .../de/learnlib/algorithm/adt/learner/ADTVisualizationTest.java | 2 +- algorithms/active/dhc/pom.xml | 2 +- .../src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java | 2 +- .../java/de/learnlib/algorithm/dhc/mealy/MealyDHCState.java | 2 +- .../src/main/java/de/learnlib/algorithm/dhc/package-info.java | 2 +- .../algorithm/dhc/mealy/MealyDHCGrowingAlphabetTest.java | 2 +- .../algorithm/dhc/mealy/MealyDHCResumableLearnerTest.java | 2 +- .../test/java/de/learnlib/algorithm/dhc/mealy/MealyDHCTest.java | 2 +- .../java/de/learnlib/algorithm/dhc/mealy/it/MealyDHCIT.java | 2 +- algorithms/active/kearns-vazirani/pom.xml | 2 +- .../src/main/java/de/learnlib/algorithm/kv/StateInfo.java | 2 +- .../java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java | 2 +- .../de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFAState.java | 2 +- .../de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java | 2 +- .../learnlib/algorithm/kv/mealy/KearnsVaziraniMealyState.java | 2 +- .../src/main/java/de/learnlib/algorithm/kv/package-info.java | 2 +- .../algorithm/kv/dfa/KearnsVaziraniDFAGrowingAlphabetTest.java | 2 +- .../java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFAIT.java | 2 +- .../algorithm/kv/dfa/KearnsVaziraniDFAResumableLearnerTest.java | 2 +- .../kv/mealy/KearnsVaziraniMealyGrowingAlphabetTest.java | 2 +- .../de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealyIT.java | 2 +- .../kv/mealy/KearnsVaziraniMealyResumableLearnerTest.java | 2 +- algorithms/active/lstar/pom.xml | 2 +- .../de/learnlib/algorithm/lstar/AbstractAutomatonLStar.java | 2 +- .../algorithm/lstar/AbstractExtensibleAutomatonLStar.java | 2 +- .../main/java/de/learnlib/algorithm/lstar/AbstractLStar.java | 2 +- .../java/de/learnlib/algorithm/lstar/AutomatonLStarState.java | 2 +- .../learnlib/algorithm/lstar/ce/ObservationTableCEXHandler.java | 2 +- .../algorithm/lstar/ce/ObservationTableCEXHandlers.java | 2 +- .../learnlib/algorithm/lstar/closing/CloseRandomStrategy.java | 2 +- .../de/learnlib/algorithm/lstar/closing/ClosingStrategies.java | 2 +- .../de/learnlib/algorithm/lstar/closing/ClosingStrategy.java | 2 +- .../java/de/learnlib/algorithm/lstar/dfa/ClassicLStarDFA.java | 2 +- .../de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java | 2 +- .../main/java/de/learnlib/algorithm/lstar/dfa/LStarDFAUtil.java | 2 +- .../de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java | 2 +- .../de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java | 2 +- .../java/de/learnlib/algorithm/lstar/mealy/LStarMealyUtil.java | 2 +- .../de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java | 2 +- .../de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java | 2 +- .../java/de/learnlib/algorithm/lstar/moore/LStarMooreUtil.java | 2 +- .../src/main/java/de/learnlib/algorithm/lstar/package-info.java | 2 +- .../java/de/learnlib/algorithm/malerpnueli/MalerPnueliDFA.java | 2 +- .../de/learnlib/algorithm/malerpnueli/MalerPnueliMealy.java | 2 +- .../de/learnlib/algorithm/malerpnueli/MalerPnueliMoore.java | 2 +- .../java/de/learnlib/algorithm/malerpnueli/package-info.java | 2 +- .../de/learnlib/algorithm/rivestschapire/RivestSchapireDFA.java | 2 +- .../learnlib/algorithm/rivestschapire/RivestSchapireMealy.java | 2 +- .../learnlib/algorithm/rivestschapire/RivestSchapireMoore.java | 2 +- .../java/de/learnlib/algorithm/rivestschapire/package-info.java | 2 +- .../algorithm/lstar/ClassicLStarMealyGrowingAlphabetTest.java | 2 +- .../algorithm/lstar/ExtensibleLStarDFAGrowingAlphabetTest.java | 2 +- .../algorithm/lstar/ExtensibleLStarDFAResumableLearnerTest.java | 2 +- .../lstar/ExtensibleLStarMealyGrowingAlphabetTest.java | 2 +- .../lstar/ExtensibleLStarMealyResumableLearnerTest.java | 2 +- .../lstar/ExtensibleLStarMooreGrowingAlphabetTest.java | 2 +- .../lstar/ExtensibleLStarMooreResumableLearnerTest.java | 2 +- .../src/test/java/de/learnlib/algorithm/lstar/LStarDFATest.java | 2 +- .../test/java/de/learnlib/algorithm/lstar/LStarMealyTest.java | 2 +- .../src/test/java/de/learnlib/algorithm/lstar/LearningTest.java | 2 +- .../de/learnlib/algorithm/lstar/it/ClassicLStarMealyIT.java | 2 +- .../de/learnlib/algorithm/lstar/it/ClassicLStarMooreIT.java | 2 +- .../de/learnlib/algorithm/lstar/it/ExtensibleLStarDFAIT.java | 2 +- .../de/learnlib/algorithm/lstar/it/ExtensibleLStarMealyIT.java | 2 +- .../de/learnlib/algorithm/lstar/it/ExtensibleLStarMooreIT.java | 2 +- .../malerpnueli/MalerPnueliDFAGrowingAlphabetTest.java | 2 +- .../malerpnueli/MalerPnueliDFAResumableLearnerTest.java | 2 +- .../malerpnueli/MalerPnueliMealyGrowingAlphabetTest.java | 2 +- .../malerpnueli/MalerPnueliMealyResumableLearnerTest.java | 2 +- .../malerpnueli/MalerPnueliMooreGrowingAlphabetTest.java | 2 +- .../malerpnueli/MalerPnueliMooreResumableLearnerTest.java | 2 +- .../rivestschapire/RivestSchapireDFAGrowingAlphabetTest.java | 2 +- .../rivestschapire/RivestSchapireDFAResumableLearnerTest.java | 2 +- .../rivestschapire/RivestSchapireMealyGrowingAlphabetTest.java | 2 +- .../rivestschapire/RivestSchapireMealyResumableLearnerTest.java | 2 +- .../rivestschapire/RivestSchapireMooreGrowingAlphabetTest.java | 2 +- .../rivestschapire/RivestSchapireMooreResumableLearnerTest.java | 2 +- algorithms/active/nlstar/pom.xml | 2 +- .../main/java/de/learnlib/algorithm/nlstar/Inconsistency.java | 2 +- .../main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java | 2 +- .../java/de/learnlib/algorithm/nlstar/ObservationTable.java | 2 +- .../nlstar/src/main/java/de/learnlib/algorithm/nlstar/Row.java | 2 +- .../main/java/de/learnlib/algorithm/nlstar/package-info.java | 2 +- .../src/test/java/de/learnlib/algorithm/nlstar/NLStarTest.java | 2 +- .../src/test/java/de/learnlib/algorithm/nlstar/it/NLStarIT.java | 2 +- algorithms/active/observation-pack-vpa/pom.xml | 2 +- .../algorithm/observationpack/vpa/AbstractVPALearner.java | 2 +- .../de/learnlib/algorithm/observationpack/vpa/OPLearnerVPA.java | 2 +- .../observationpack/vpa/hypothesis/AbstractHypTrans.java | 2 +- .../algorithm/observationpack/vpa/hypothesis/BlockList.java | 2 +- .../algorithm/observationpack/vpa/hypothesis/ContextPair.java | 2 +- .../algorithm/observationpack/vpa/hypothesis/DTNode.java | 2 +- .../algorithm/observationpack/vpa/hypothesis/DTree.java | 2 +- .../algorithm/observationpack/vpa/hypothesis/HypIntTrans.java | 2 +- .../algorithm/observationpack/vpa/hypothesis/HypLoc.java | 2 +- .../algorithm/observationpack/vpa/hypothesis/HypRetTrans.java | 2 +- .../observationpack/vpa/hypothesis/OneSEVPAHypothesis.java | 2 +- .../algorithm/observationpack/vpa/hypothesis/TransList.java | 2 +- .../de/learnlib/algorithm/observationpack/vpa/package-info.java | 2 +- .../algorithm/observationpack/vpa/DTVisualizationTest.java | 2 +- .../learnlib/algorithm/observationpack/vpa/OPLearnerVPAIT.java | 2 +- algorithms/active/observation-pack/pom.xml | 2 +- .../learnlib/algorithm/observationpack/AbstractOPLearner.java | 2 +- .../de/learnlib/algorithm/observationpack/OPLearnerState.java | 2 +- .../algorithm/observationpack/dfa/HypothesisWrapperDFA.java | 2 +- .../de/learnlib/algorithm/observationpack/dfa/OPLearnerDFA.java | 2 +- .../learnlib/algorithm/observationpack/hypothesis/HState.java | 2 +- .../algorithm/observationpack/hypothesis/HTransition.java | 2 +- .../observationpack/hypothesis/OPLearnerHypothesis.java | 2 +- .../algorithm/observationpack/mealy/HypothesisWrapperMealy.java | 2 +- .../algorithm/observationpack/mealy/OPLearnerMealy.java | 2 +- .../algorithm/observationpack/moore/HypothesisWrapperMoore.java | 2 +- .../algorithm/observationpack/moore/OPLearnerMoore.java | 2 +- .../de/learnlib/algorithm/observationpack/package-info.java | 2 +- .../learnlib/algorithm/observationpack/DTVisualizationTest.java | 2 +- .../observationpack/OPLearnerDFAGrowingAlphabetTest.java | 2 +- .../de/learnlib/algorithm/observationpack/OPLearnerDFAIT.java | 2 +- .../observationpack/OPLearnerDFAResumableLearnerTest.java | 2 +- .../observationpack/OPLearnerMealyGrowingAlphabetTest.java | 2 +- .../de/learnlib/algorithm/observationpack/OPLearnerMealyIT.java | 2 +- .../observationpack/OPLearnerMealyResumableLearnerTest.java | 2 +- .../observationpack/OPLearnerMooreGrowingAlphabetTest.java | 2 +- .../de/learnlib/algorithm/observationpack/OPLearnerMooreIT.java | 2 +- .../observationpack/OPLearnerMooreResumableLearnerTest.java | 2 +- algorithms/active/oml/pom.xml | 2 +- .../de/learnlib/algorithm/oml/lstar/AbstractOptimalLStar.java | 2 +- .../main/java/de/learnlib/algorithm/oml/lstar/Hypothesis.java | 2 +- .../java/de/learnlib/algorithm/oml/lstar/OptimalLStarDFA.java | 2 +- .../java/de/learnlib/algorithm/oml/lstar/OptimalLStarMealy.java | 2 +- .../java/de/learnlib/algorithm/oml/lstar/OptimalLStarState.java | 2 +- .../src/main/java/de/learnlib/algorithm/oml/package-info.java | 2 +- .../java/de/learnlib/algorithm/oml/ttt/AbstractOptimalTTT.java | 2 +- .../java/de/learnlib/algorithm/oml/ttt/dfa/ChildrenDFA.java | 2 +- .../java/de/learnlib/algorithm/oml/ttt/dfa/DecisionTreeDFA.java | 2 +- .../java/de/learnlib/algorithm/oml/ttt/dfa/HypothesisDFA.java | 2 +- .../java/de/learnlib/algorithm/oml/ttt/dfa/OptimalTTTDFA.java | 2 +- .../java/de/learnlib/algorithm/oml/ttt/dt/AbstractDTNode.java | 2 +- .../de/learnlib/algorithm/oml/ttt/dt/AbstractDecisionTree.java | 2 +- .../main/java/de/learnlib/algorithm/oml/ttt/dt/Children.java | 2 +- .../main/java/de/learnlib/algorithm/oml/ttt/dt/DTInnerNode.java | 2 +- .../src/main/java/de/learnlib/algorithm/oml/ttt/dt/DTLeaf.java | 2 +- .../java/de/learnlib/algorithm/oml/ttt/mealy/ChildrenMealy.java | 2 +- .../de/learnlib/algorithm/oml/ttt/mealy/DecisionTreeMealy.java | 2 +- .../de/learnlib/algorithm/oml/ttt/mealy/HypothesisMealy.java | 2 +- .../de/learnlib/algorithm/oml/ttt/mealy/MealyTransition.java | 2 +- .../de/learnlib/algorithm/oml/ttt/mealy/OptimalTTTMealy.java | 2 +- .../src/main/java/de/learnlib/algorithm/oml/ttt/pt/PTNode.java | 2 +- .../main/java/de/learnlib/algorithm/oml/ttt/pt/PTNodeImpl.java | 2 +- .../main/java/de/learnlib/algorithm/oml/ttt/pt/PrefixTree.java | 2 +- .../src/main/java/de/learnlib/algorithm/oml/ttt/st/STNode.java | 2 +- .../main/java/de/learnlib/algorithm/oml/ttt/st/STNodeImpl.java | 2 +- .../main/java/de/learnlib/algorithm/oml/ttt/st/SuffixTrie.java | 2 +- .../algorithm/oml/lstar/dfa/OptimalLStarDFAResumableTest.java | 2 +- .../learnlib/algorithm/oml/lstar/dfa/it/OptimalLStarDFAIT.java | 2 +- .../oml/lstar/mealy/OptimalLStarMealyResumableTest.java | 2 +- .../algorithm/oml/lstar/mealy/it/OptimalLStarMealyIT.java | 2 +- .../algorithm/oml/ttt/dfa/OptimalTTTDFAGrowingAlphabetTest.java | 2 +- .../de/learnlib/algorithm/oml/ttt/dfa/it/OptimalTTTDFAIT.java | 2 +- .../oml/ttt/mealy/OptimalTTTMealyGrowingAlphabetTest.java | 2 +- .../learnlib/algorithm/oml/ttt/mealy/it/OptimalTTTMealyIT.java | 2 +- algorithms/active/pom.xml | 2 +- algorithms/active/procedural/pom.xml | 2 +- .../java/de/learnlib/algorithm/procedural/SymbolWrapper.java | 2 +- .../procedural/adapter/dfa/KearnsVaziraniAdapterDFA.java | 2 +- .../algorithm/procedural/adapter/dfa/LStarBaseAdapterDFA.java | 2 +- .../procedural/adapter/dfa/ObservationPackAdapterDFA.java | 2 +- .../algorithm/procedural/adapter/dfa/OptimalTTTAdapterDFA.java | 2 +- .../procedural/adapter/dfa/RivestSchapireAdapterDFA.java | 2 +- .../algorithm/procedural/adapter/dfa/TTTAdapterDFA.java | 2 +- .../procedural/adapter/mealy/KearnsVaziraniAdapterMealy.java | 2 +- .../procedural/adapter/mealy/LStarBaseAdapterMealy.java | 2 +- .../procedural/adapter/mealy/ObservationPackAdapterMealy.java | 2 +- .../procedural/adapter/mealy/OptimalTTTAdapterMealy.java | 2 +- .../procedural/adapter/mealy/RivestSchapireAdapterMealy.java | 2 +- .../algorithm/procedural/adapter/mealy/TTTAdapterMealy.java | 2 +- .../java/de/learnlib/algorithm/procedural/package-info.java | 2 +- .../java/de/learnlib/algorithm/procedural/sba/ATManager.java | 2 +- .../java/de/learnlib/algorithm/procedural/sba/MappingSBA.java | 2 +- .../algorithm/procedural/sba/ProceduralMembershipOracle.java | 2 +- .../java/de/learnlib/algorithm/procedural/sba/SBALearner.java | 2 +- .../algorithm/procedural/sba/manager/DefaultATManager.java | 2 +- .../algorithm/procedural/sba/manager/OptimizingATManager.java | 2 +- .../java/de/learnlib/algorithm/procedural/spa/ATRManager.java | 2 +- .../algorithm/procedural/spa/ProceduralMembershipOracle.java | 2 +- .../java/de/learnlib/algorithm/procedural/spa/SPALearner.java | 2 +- .../algorithm/procedural/spa/manager/DefaultATRManager.java | 2 +- .../algorithm/procedural/spa/manager/OptimizingATRManager.java | 2 +- .../java/de/learnlib/algorithm/procedural/spmm/ATManager.java | 2 +- .../java/de/learnlib/algorithm/procedural/spmm/MappingSPMM.java | 2 +- .../algorithm/procedural/spmm/ProceduralMembershipOracle.java | 2 +- .../java/de/learnlib/algorithm/procedural/spmm/SPMMLearner.java | 2 +- .../algorithm/procedural/spmm/manager/DefaultATManager.java | 2 +- .../algorithm/procedural/spmm/manager/OptimizingATManager.java | 2 +- .../de/learnlib/algorithm/procedural/sba/ATManagerTest.java | 2 +- .../de/learnlib/algorithm/procedural/sba/OptimizationsTest.java | 2 +- .../java/de/learnlib/algorithm/procedural/sba/it/SBAIT.java | 2 +- .../de/learnlib/algorithm/procedural/spa/ATRManagerTest.java | 2 +- .../java/de/learnlib/algorithm/procedural/spa/it/SPAIT.java | 2 +- .../de/learnlib/algorithm/procedural/spmm/ATManagerTest.java | 2 +- .../learnlib/algorithm/procedural/spmm/OptimizationsTest.java | 2 +- .../java/de/learnlib/algorithm/procedural/spmm/it/SPMMIT.java | 2 +- algorithms/active/ttt-vpa/pom.xml | 2 +- .../main/java/de/learnlib/algorithm/ttt/vpa/ExtractRecord.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/vpa/GlobalSplitter.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/vpa/NonDetState.java | 2 +- .../java/de/learnlib/algorithm/ttt/vpa/NondetStackContents.java | 2 +- .../java/de/learnlib/algorithm/ttt/vpa/OutputInconsistency.java | 2 +- .../src/main/java/de/learnlib/algorithm/ttt/vpa/Splitter.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/vpa/TTTLearnerVPA.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/vpa/package-info.java | 2 +- .../java/de/learnlib/algorithm/ttt/dfa/it/TTTLearnerVPAIT.java | 2 +- algorithms/active/ttt/pom.xml | 2 +- .../java/de/learnlib/algorithm/ttt/base/AbstractBaseDTNode.java | 2 +- .../de/learnlib/algorithm/ttt/base/AbstractTTTHypothesis.java | 2 +- .../java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java | 2 +- .../learnlib/algorithm/ttt/base/BaseTTTDiscriminationTree.java | 2 +- .../src/main/java/de/learnlib/algorithm/ttt/base/BlockList.java | 2 +- .../learnlib/algorithm/ttt/base/HypothesisChangedException.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/base/IncomingList.java | 2 +- .../de/learnlib/algorithm/ttt/base/OutputInconsistency.java | 2 +- .../java/de/learnlib/algorithm/ttt/base/TTTLearnerState.java | 2 +- .../src/main/java/de/learnlib/algorithm/ttt/base/TTTState.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/base/TTTTransition.java | 2 +- .../java/de/learnlib/algorithm/ttt/dfa/PrefixTTTLearnerDFA.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/dfa/TTTDTNodeDFA.java | 2 +- .../java/de/learnlib/algorithm/ttt/dfa/TTTHypothesisDFA.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/dfa/TTTLearnerDFA.java | 2 +- .../main/java/de/learnlib/algorithm/ttt/dfa/TTTStateDFA.java | 2 +- .../java/de/learnlib/algorithm/ttt/mealy/TTTDTNodeMealy.java | 2 +- .../de/learnlib/algorithm/ttt/mealy/TTTHypothesisMealy.java | 2 +- .../java/de/learnlib/algorithm/ttt/mealy/TTTLearnerMealy.java | 2 +- .../de/learnlib/algorithm/ttt/mealy/TTTTransitionMealy.java | 2 +- .../java/de/learnlib/algorithm/ttt/moore/TTTDTNodeMoore.java | 2 +- .../de/learnlib/algorithm/ttt/moore/TTTHypothesisMoore.java | 2 +- .../java/de/learnlib/algorithm/ttt/moore/TTTLearnerMoore.java | 2 +- .../java/de/learnlib/algorithm/ttt/moore/TTTStateMoore.java | 2 +- .../src/main/java/de/learnlib/algorithm/ttt/package-info.java | 2 +- .../de/learnlib/algorithm/ttt/TTTDFAGrowingAlphabetTest.java | 2 +- .../algorithm/ttt/TTTLearnerDFAResumableLearnerTest.java | 2 +- .../algorithm/ttt/TTTLearnerMealyGrowingAlphabetTest.java | 2 +- .../algorithm/ttt/TTTLearnerMealyResumableLearnerTest.java | 2 +- .../algorithm/ttt/TTTLearnerMooreGrowingAlphabetTest.java | 2 +- .../algorithm/ttt/TTTLearnerMooreResumableLearnerTest.java | 2 +- .../java/de/learnlib/algorithm/ttt/TTTVisualizationTest.java | 2 +- .../de/learnlib/algorithm/ttt/dfa/it/PrefixTTTLearnerDFAIT.java | 2 +- .../java/de/learnlib/algorithm/ttt/dfa/it/TTTLearnerDFAIT.java | 2 +- .../de/learnlib/algorithm/ttt/mealy/it/TTTLearnerMealyIT.java | 2 +- .../de/learnlib/algorithm/ttt/moore/it/TTTLearnerMooreIT.java | 2 +- algorithms/passive/ostia/pom.xml | 2 +- .../ostia/src/main/java/de/learnlib/algorithm/ostia/Blue.java | 2 +- .../ostia/src/main/java/de/learnlib/algorithm/ostia/Edge.java | 2 +- .../src/main/java/de/learnlib/algorithm/ostia/IntQueue.java | 2 +- .../src/main/java/de/learnlib/algorithm/ostia/OSSTWrapper.java | 2 +- .../ostia/src/main/java/de/learnlib/algorithm/ostia/OSTIA.java | 2 +- .../ostia/src/main/java/de/learnlib/algorithm/ostia/Out.java | 2 +- .../ostia/src/main/java/de/learnlib/algorithm/ostia/State.java | 2 +- .../src/main/java/de/learnlib/algorithm/ostia/StateCopy.java | 2 +- .../src/main/java/de/learnlib/algorithm/ostia/StateParent.java | 2 +- .../src/main/java/de/learnlib/algorithm/ostia/package-info.java | 2 +- .../src/test/java/de/learnlib/algorithm/ostia/OSTIAIT.java | 2 +- .../src/test/java/de/learnlib/algorithm/ostia/OSTIATest.java | 2 +- algorithms/passive/pom.xml | 2 +- algorithms/passive/rpni-edsm/pom.xml | 2 +- .../main/java/de/learnlib/algorithm/rpni/BlueFringeEDSMDFA.java | 2 +- .../src/main/java/de/learnlib/algorithm/rpni/EDSMUtil.java | 2 +- .../src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java | 2 +- .../src/test/java/de/learnlib/algorithm/rpni/it/EdsmDfaIT.java | 2 +- algorithms/passive/rpni-mdl/pom.xml | 2 +- .../main/java/de/learnlib/algorithm/rpni/BlueFringeMDLDFA.java | 2 +- .../src/main/java/de/learnlib/algorithm/rpni/MDLUtil.java | 2 +- .../src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java | 2 +- .../src/test/java/de/learnlib/algorithm/rpni/it/MdlDfaIT.java | 2 +- algorithms/passive/rpni/pom.xml | 2 +- .../java/de/learnlib/algorithm/rpni/AbstractBlueFringeRPNI.java | 2 +- .../main/java/de/learnlib/algorithm/rpni/BlueFringeRPNIDFA.java | 2 +- .../java/de/learnlib/algorithm/rpni/BlueFringeRPNIMealy.java | 2 +- .../java/de/learnlib/algorithm/rpni/BlueFringeRPNIMoore.java | 2 +- .../src/main/java/de/learnlib/algorithm/rpni/package-info.java | 2 +- .../src/test/java/de/learnlib/algorithm/rpni/it/RpniDfaIT.java | 2 +- .../test/java/de/learnlib/algorithm/rpni/it/RpniMealyIT.java | 2 +- .../test/java/de/learnlib/algorithm/rpni/it/RpniMooreIT.java | 2 +- algorithms/pom.xml | 2 +- api/pom.xml | 2 +- api/src/main/java/de/learnlib/AccessSequenceProvider.java | 2 +- api/src/main/java/de/learnlib/AccessSequenceTransformer.java | 2 +- api/src/main/java/de/learnlib/Mapper.java | 2 +- api/src/main/java/de/learnlib/Resumable.java | 2 +- .../main/java/de/learnlib/algorithm/GlobalSuffixLearner.java | 2 +- api/src/main/java/de/learnlib/algorithm/LearnerConstructor.java | 2 +- api/src/main/java/de/learnlib/algorithm/LearningAlgorithm.java | 2 +- .../java/de/learnlib/algorithm/PassiveLearningAlgorithm.java | 2 +- api/src/main/java/de/learnlib/algorithm/package-info.java | 2 +- api/src/main/java/de/learnlib/exception/MappedException.java | 2 +- api/src/main/java/de/learnlib/exception/SULException.java | 2 +- api/src/main/java/de/learnlib/logging/Category.java | 2 +- api/src/main/java/de/learnlib/oracle/AutomatonOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/BlackBoxOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/EmptinessOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/EquivalenceOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/InclusionOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/LassoEmptinessOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/LassoOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/MembershipOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/OmegaMembershipOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/OmegaQueryAnswerer.java | 2 +- api/src/main/java/de/learnlib/oracle/PropertyOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/QueryAnswerer.java | 2 +- .../main/java/de/learnlib/oracle/SingleQueryOmegaOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/SingleQueryOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/SymbolQueryOracle.java | 2 +- api/src/main/java/de/learnlib/oracle/package-info.java | 2 +- .../learnlib/oracle/parallelism/BatchInterruptedException.java | 2 +- .../java/de/learnlib/oracle/parallelism/BatchProcessor.java | 2 +- .../de/learnlib/oracle/parallelism/ParallelOmegaOracle.java | 2 +- .../java/de/learnlib/oracle/parallelism/ParallelOracle.java | 2 +- .../main/java/de/learnlib/oracle/parallelism/ThreadPool.java | 2 +- api/src/main/java/de/learnlib/query/AbstractQuery.java | 2 +- api/src/main/java/de/learnlib/query/DefaultQuery.java | 2 +- api/src/main/java/de/learnlib/query/OmegaQuery.java | 2 +- api/src/main/java/de/learnlib/query/Query.java | 2 +- api/src/main/java/de/learnlib/statistic/StatisticCollector.java | 2 +- api/src/main/java/de/learnlib/statistic/StatisticData.java | 2 +- api/src/main/java/de/learnlib/statistic/StatisticLearner.java | 2 +- api/src/main/java/de/learnlib/statistic/StatisticOracle.java | 2 +- api/src/main/java/de/learnlib/statistic/StatisticSUL.java | 2 +- api/src/main/java/de/learnlib/sul/ContextExecutableInput.java | 2 +- api/src/main/java/de/learnlib/sul/ContextHandler.java | 2 +- api/src/main/java/de/learnlib/sul/ExecutableInput.java | 2 +- api/src/main/java/de/learnlib/sul/ObservableSUL.java | 2 +- api/src/main/java/de/learnlib/sul/SUL.java | 2 +- api/src/main/java/de/learnlib/sul/SULMapper.java | 2 +- api/src/main/java/de/learnlib/sul/StateLocalInputSUL.java | 2 +- api/src/main/java/de/learnlib/sul/package-info.java | 2 +- archetypes/basic/pom.xml | 2 +- .../resources-template/META-INF/maven/archetype-metadata.xml | 2 +- archetypes/complete/pom.xml | 2 +- .../resources-template/META-INF/maven/archetype-metadata.xml | 2 +- archetypes/pom.xml | 2 +- build-parent/pom.xml | 2 +- build-tools/annotation-processor/pom.xml | 2 +- .../src/main/java/de/learnlib/buildtool/package-info.java | 2 +- .../buildtool/refinement/annotation/GenerateRefinement.java | 2 +- .../buildtool/refinement/annotation/GenerateRefinements.java | 2 +- .../de/learnlib/buildtool/refinement/annotation/Generic.java | 2 +- .../de/learnlib/buildtool/refinement/annotation/Interface.java | 2 +- .../java/de/learnlib/buildtool/refinement/annotation/Map.java | 2 +- .../buildtool/refinement/processor/RefinementProcessor.java | 2 +- .../META-INF/services/javax.annotation.processing.Processor | 2 +- build-tools/build-config/pom.xml | 2 +- .../src/main/resources/automatalib-learnlib-checkstyle.xml | 2 +- .../src/main/resources/learnlib-checkstyle-suppressions.xml | 2 +- .../build-config/src/main/resources/learnlib-pmd-ruleset.xml | 2 +- .../src/main/resources/learnlib-spotbugs-exclusions.xml | 2 +- .../build-config/src/main/resources/license-header-java.txt | 2 +- .../build-config/src/main/resources/license-header-xml.txt | 2 +- build-tools/pom.xml | 2 +- commons/counterexamples/pom.xml | 2 +- .../main/java/de/learnlib/acex/AbstractBaseCounterexample.java | 2 +- .../src/main/java/de/learnlib/acex/AbstractCounterexample.java | 2 +- .../main/java/de/learnlib/acex/AbstractNamedAcexAnalyzer.java | 2 +- .../src/main/java/de/learnlib/acex/AcexAnalysisAlgorithms.java | 2 +- .../src/main/java/de/learnlib/acex/AcexAnalyzer.java | 2 +- .../src/main/java/de/learnlib/acex/AcexAnalyzers.java | 2 +- .../main/java/de/learnlib/acex/ClassicPrefixTransformAcex.java | 2 +- .../de/learnlib/acex/MealyOutInconsPrefixTransformAcex.java | 2 +- .../de/learnlib/acex/MooreOutInconsPrefixTransformAcex.java | 2 +- .../java/de/learnlib/acex/OutInconsPrefixTransformAcex.java | 2 +- .../src/main/java/de/learnlib/acex/package-info.java | 2 +- .../java/de/learnlib/counterexample/AcexLocalSuffixFinder.java | 2 +- .../java/de/learnlib/counterexample/GlobalSuffixFinder.java | 2 +- .../java/de/learnlib/counterexample/GlobalSuffixFinders.java | 2 +- .../main/java/de/learnlib/counterexample/LocalSuffixFinder.java | 2 +- .../java/de/learnlib/counterexample/LocalSuffixFinders.java | 2 +- .../src/main/java/de/learnlib/counterexample/package-info.java | 2 +- .../java/de/learnlib/counterexample/acex/AnalyzersTest.java | 2 +- .../test/java/de/learnlib/counterexample/acex/DummyAcex.java | 2 +- commons/pom.xml | 2 +- commons/settings/pom.xml | 2 +- .../src/main/java/de/learnlib/setting/LearnLibProperty.java | 2 +- .../src/main/java/de/learnlib/setting/LearnLibSettings.java | 2 +- .../main/java/de/learnlib/setting/LearnLibSettingsSource.java | 2 +- .../LearnLibLocalPropertiesAutomataLibSettingsSource.java | 2 +- .../learnlib/setting/sources/LearnLibLocalPropertiesSource.java | 2 +- .../sources/LearnLibPropertiesAutomataLibSettingsSource.java | 2 +- .../de/learnlib/setting/sources/LearnLibPropertiesSource.java | 2 +- .../LearnLibSystemPropertiesAutomataLibSettingsSource.java | 2 +- .../setting/sources/LearnLibSystemPropertiesSource.java | 2 +- .../src/test/java/de/learnlib/setting/LearnLibSettingsTest.java | 2 +- commons/util/pom.xml | 2 +- .../util/src/main/java/de/learnlib/util/AbstractBFOracle.java | 2 +- commons/util/src/main/java/de/learnlib/util/Experiment.java | 2 +- commons/util/src/main/java/de/learnlib/util/MQUtil.java | 2 +- .../main/java/de/learnlib/util/mealy/MealyLearnerWrapper.java | 2 +- .../util/src/main/java/de/learnlib/util/mealy/MealyUtil.java | 2 +- .../main/java/de/learnlib/util/mealy/SymbolOracleWrapper.java | 2 +- .../main/java/de/learnlib/util/moore/MooreLearnerWrapper.java | 2 +- .../util/src/main/java/de/learnlib/util/moore/MooreUtil.java | 2 +- .../main/java/de/learnlib/util/moore/SymbolOracleWrapper.java | 2 +- .../src/main/java/de/learnlib/util/nfa/NFALearnerWrapper.java | 2 +- commons/util/src/main/java/de/learnlib/util/package-info.java | 2 +- .../main/java/de/learnlib/util/statistic/SimpleProfiler.java | 2 +- commons/util/src/test/java/de/learnlib/util/ExperimentTest.java | 2 +- datastructures/discrimination-tree/pom.xml | 2 +- .../learnlib/datastructure/discriminationtree/BinaryDTNode.java | 2 +- .../learnlib/datastructure/discriminationtree/BinaryDTree.java | 2 +- .../learnlib/datastructure/discriminationtree/MultiDTNode.java | 2 +- .../learnlib/datastructure/discriminationtree/MultiDTree.java | 2 +- .../de/learnlib/datastructure/discriminationtree/SplitData.java | 2 +- .../iterators/DiscriminationTreeIterators.java | 2 +- .../discriminationtree/iterators/NodeIterator.java | 2 +- .../datastructure/discriminationtree/model/AbstractDTNode.java | 2 +- .../discriminationtree/model/AbstractDiscriminationTree.java | 2 +- .../model/AbstractTemporaryIntrusiveDTNode.java | 2 +- .../discriminationtree/model/AbstractWordBasedDTNode.java | 2 +- .../model/AbstractWordBasedDiscriminationTree.java | 2 +- .../datastructure/discriminationtree/model/BooleanMap.java | 2 +- .../datastructure/discriminationtree/model/LCAInfo.java | 2 +- .../de/learnlib/datastructure/discriminationtree/DummyDT.java | 2 +- .../datastructure/discriminationtree/IteratorsTest.java | 2 +- .../de/learnlib/datastructure/discriminationtree/LCATest.java | 2 +- .../datastructure/discriminationtree/VisualizationTest.java | 2 +- datastructures/list/pom.xml | 2 +- .../main/java/de/learnlib/datastructure/list/IntrusiveList.java | 2 +- .../java/de/learnlib/datastructure/list/IntrusiveListElem.java | 2 +- .../de/learnlib/datastructure/list/IntrusiveListElemImpl.java | 2 +- datastructures/observation-table/pom.xml | 2 +- .../datastructure/observationtable/GenericObservationTable.java | 2 +- .../learnlib/datastructure/observationtable/Inconsistency.java | 2 +- .../datastructure/observationtable/MutableObservationTable.java | 2 +- .../de/learnlib/datastructure/observationtable/OTLearner.java | 2 +- .../de/learnlib/datastructure/observationtable/OTUtils.java | 2 +- .../datastructure/observationtable/ObservationTable.java | 2 +- .../datastructure/observationtable/ObservationTableFeature.java | 2 +- .../java/de/learnlib/datastructure/observationtable/Row.java | 2 +- .../de/learnlib/datastructure/observationtable/RowImpl.java | 2 +- .../observationtable/reader/ObservationTableReader.java | 2 +- .../observationtable/reader/SimpleObservationTable.java | 2 +- .../observationtable/reader/SuffixASCIIReader.java | 2 +- .../observationtable/writer/AbstractObservationTableWriter.java | 2 +- .../observationtable/writer/ObservationTableASCIIWriter.java | 2 +- .../observationtable/writer/ObservationTableHTMLWriter.java | 2 +- .../observationtable/writer/ObservationTableWriter.java | 2 +- .../observationtable/writer/SuffixASCIIWriter.java | 2 +- .../datastructure/observationtable/MockedObservationTable.java | 2 +- .../datastructure/observationtable/ObservationTableSource.java | 2 +- .../observationtable/writer/ObservationTableWriterTest.java | 2 +- .../observationtable/writer/SuffixASCIIWriterTest.java | 2 +- datastructures/pom.xml | 2 +- datastructures/pta/pom.xml | 2 +- .../de/learnlib/datastructure/pta/AbstractBasePTAState.java | 2 +- .../de/learnlib/datastructure/pta/AbstractBlueFringePTA.java | 2 +- .../learnlib/datastructure/pta/AbstractBlueFringePTAState.java | 2 +- .../src/main/java/de/learnlib/datastructure/pta/BasePTA.java | 2 +- .../main/java/de/learnlib/datastructure/pta/BlueFringePTA.java | 2 +- .../java/de/learnlib/datastructure/pta/BlueFringePTAState.java | 2 +- .../main/java/de/learnlib/datastructure/pta/PTATransition.java | 2 +- .../main/java/de/learnlib/datastructure/pta/RedBlueMerge.java | 2 +- .../datastructure/pta/config/DefaultProcessingOrders.java | 2 +- .../de/learnlib/datastructure/pta/config/ProcessingOrder.java | 2 +- .../java/de/learnlib/datastructure/pta/wrapper/DFAWrapper.java | 2 +- .../de/learnlib/datastructure/pta/wrapper/MealyWrapper.java | 2 +- .../de/learnlib/datastructure/pta/wrapper/MooreWrapper.java | 2 +- .../java/de/learnlib/datastructure/pta/MergedAutomatonTest.java | 2 +- .../de/learnlib/datastructure/pta/PTAVisualizationTest.java | 2 +- distribution/pom.xml | 2 +- distribution/src/main/assembly/learnlib-bundle.xml | 2 +- distribution/src/main/assembly/learnlib-dependencies-bundle.xml | 2 +- distribution/src/main/assembly/learnlib-sources-jar.xml | 2 +- drivers/basic/pom.xml | 2 +- .../de/learnlib/driver/AbstractContextExecutableInputSUL.java | 2 +- .../main/java/de/learnlib/driver/ContextExecutableInputSUL.java | 2 +- .../src/main/java/de/learnlib/driver/ExecutableInputSUL.java | 2 +- .../basic/src/main/java/de/learnlib/driver/reflect/Error.java | 2 +- .../java/de/learnlib/driver/reflect/InstanceConstructor.java | 2 +- .../src/main/java/de/learnlib/driver/reflect/MethodInput.java | 2 +- .../src/main/java/de/learnlib/driver/reflect/MethodOutput.java | 2 +- .../src/main/java/de/learnlib/driver/reflect/ReturnValue.java | 2 +- .../de/learnlib/driver/reflect/SimplePOJOExceptionMapper.java | 2 +- .../java/de/learnlib/driver/reflect/SimplePOJOTestDriver.java | 2 +- .../src/main/java/de/learnlib/driver/reflect/Unobserved.java | 2 +- .../src/main/java/de/learnlib/driver/reflect/VoidOutput.java | 2 +- .../de/learnlib/driver/reflect/SimplePOJOTestDriverTest.java | 2 +- drivers/mapper/pom.xml | 2 +- drivers/mapper/src/main/java/de/learnlib/mapper/MappedSUL.java | 2 +- .../src/main/java/de/learnlib/mapper/MapperComposition.java | 2 +- drivers/mapper/src/main/java/de/learnlib/mapper/Mappers.java | 2 +- .../src/main/java/de/learnlib/mapper/SULMapperComposition.java | 2 +- drivers/mapper/src/main/java/de/learnlib/mapper/SULMappers.java | 2 +- .../mapper/src/main/java/de/learnlib/mapper/StringMapper.java | 2 +- .../mapper/src/test/java/de/learnlib/mapper/MappedSULTest.java | 2 +- .../src/test/java/de/learnlib/mapper/MapperCompositionTest.java | 2 +- .../test/java/de/learnlib/mapper/SULMapperCompositionTest.java | 2 +- drivers/pom.xml | 2 +- drivers/simulator/pom.xml | 2 +- .../java/de/learnlib/driver/simulator/MealySimulatorSUL.java | 2 +- .../learnlib/driver/simulator/ObservableMealySimulatorSUL.java | 2 +- .../driver/simulator/StateLocalInputMealySimulatorSUL.java | 2 +- examples/pom.xml | 2 +- examples/src/main/java/de/learnlib/example/Example1.java | 2 +- examples/src/main/java/de/learnlib/example/Example2.java | 2 +- examples/src/main/java/de/learnlib/example/Example3.java | 2 +- .../de/learnlib/example/aaar/AlternatingBitExampleExplicit.java | 2 +- .../de/learnlib/example/aaar/AlternatingBitExampleGeneric.java | 2 +- examples/src/main/java/de/learnlib/example/aaar/Event.java | 2 +- examples/src/main/java/de/learnlib/example/aaar/Protocol.java | 2 +- examples/src/main/java/de/learnlib/example/bbc/Example1.java | 2 +- examples/src/main/java/de/learnlib/example/bbc/Example2.java | 2 +- examples/src/main/java/de/learnlib/example/bbc/Example3.java | 2 +- examples/src/main/java/de/learnlib/example/bbc/Example4.java | 2 +- .../de/learnlib/example/parallelism/ParallelismExample1.java | 2 +- .../de/learnlib/example/parallelism/ParallelismExample2.java | 2 +- .../src/main/java/de/learnlib/example/passive/Example1.java | 2 +- .../java/de/learnlib/example/resumable/ResumableExample.java | 2 +- examples/src/main/java/de/learnlib/example/sli/Example1.java | 2 +- examples/src/main/java/de/learnlib/example/sli/Example2.java | 2 +- examples/src/test/java/de/learnlib/example/ExamplesTest.java | 2 +- filters/cache/pom.xml | 2 +- .../java/de/learnlib/filter/cache/DynamicSymbolComparator.java | 2 +- .../src/main/java/de/learnlib/filter/cache/LearningCache.java | 2 +- .../main/java/de/learnlib/filter/cache/LearningCacheOracle.java | 2 +- .../src/main/java/de/learnlib/filter/cache/ReverseLexCmp.java | 2 +- .../de/learnlib/filter/cache/dfa/DFACacheConsistencyTest.java | 2 +- .../main/java/de/learnlib/filter/cache/dfa/DFACacheOracle.java | 2 +- .../src/main/java/de/learnlib/filter/cache/dfa/DFACaches.java | 2 +- .../learnlib/filter/cache/dfa/DFAHashCacheConsistencyTest.java | 2 +- .../java/de/learnlib/filter/cache/dfa/DFAHashCacheOracle.java | 2 +- .../src/main/java/de/learnlib/filter/cache/dfa/ProxyQuery.java | 2 +- .../main/java/de/learnlib/filter/cache/mealy/MasterQuery.java | 2 +- .../learnlib/filter/cache/mealy/MealyCacheConsistencyTest.java | 2 +- .../java/de/learnlib/filter/cache/mealy/MealyCacheOracle.java | 2 +- .../main/java/de/learnlib/filter/cache/mealy/MealyCaches.java | 2 +- .../java/de/learnlib/filter/cache/mealy/SymbolQueryCache.java | 2 +- .../main/java/de/learnlib/filter/cache/moore/MasterQuery.java | 2 +- .../learnlib/filter/cache/moore/MooreCacheConsistencyTest.java | 2 +- .../java/de/learnlib/filter/cache/moore/MooreCacheOracle.java | 2 +- .../main/java/de/learnlib/filter/cache/moore/MooreCaches.java | 2 +- .../java/de/learnlib/filter/cache/sul/AbstractSULCache.java | 2 +- .../src/main/java/de/learnlib/filter/cache/sul/SULCache.java | 2 +- .../src/main/java/de/learnlib/filter/cache/sul/SULCaches.java | 2 +- .../de/learnlib/filter/cache/sul/StateLocalInputSULCache.java | 2 +- .../test/java/de/learnlib/filter/cache/AbstractCacheTest.java | 2 +- .../src/test/java/de/learnlib/filter/cache/CacheTestUtils.java | 2 +- .../java/de/learnlib/filter/cache/SULLearningCacheOracle.java | 2 +- .../java/de/learnlib/filter/cache/dfa/AbstractDFACacheTest.java | 2 +- .../test/java/de/learnlib/filter/cache/dfa/DFADAGCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/dfa/DFAHashCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/dfa/DFATreeCacheTest.java | 2 +- .../de/learnlib/filter/cache/mealy/AbstractMealyCacheTest.java | 2 +- .../learnlib/filter/cache/mealy/DynamicMealyTreeCacheTest.java | 2 +- .../filter/cache/mealy/DynamicMealyTreeMapperCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/mealy/MealyDAGCacheTest.java | 2 +- .../de/learnlib/filter/cache/mealy/MealyDAGMapperCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/mealy/MealyTreeCacheTest.java | 2 +- .../learnlib/filter/cache/mealy/MealyTreeMapperCacheTest.java | 2 +- .../de/learnlib/filter/cache/mealy/SymbolQueryCacheTest.java | 2 +- .../de/learnlib/filter/cache/moore/AbstractMooreCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/moore/MooreDAGCacheTest.java | 2 +- .../de/learnlib/filter/cache/moore/MooreDAGMapperCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/moore/MooreTreeCacheTest.java | 2 +- .../learnlib/filter/cache/moore/MooreTreeMapperCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/sul/AbstractSULCacheTest.java | 2 +- .../test/java/de/learnlib/filter/cache/sul/SULDAGCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/sul/SULTreeCacheTest.java | 2 +- .../filter/cache/sul/StateLocalInputSULTreeCacheTest.java | 2 +- filters/pom.xml | 2 +- filters/reuse/pom.xml | 2 +- .../main/java/de/learnlib/filter/reuse/ReuseCapableOracle.java | 2 +- .../src/main/java/de/learnlib/filter/reuse/ReuseException.java | 2 +- .../src/main/java/de/learnlib/filter/reuse/ReuseOracle.java | 2 +- .../main/java/de/learnlib/filter/reuse/tree/BoundedDeque.java | 2 +- .../src/main/java/de/learnlib/filter/reuse/tree/ReuseEdge.java | 2 +- .../src/main/java/de/learnlib/filter/reuse/tree/ReuseNode.java | 2 +- .../src/main/java/de/learnlib/filter/reuse/tree/ReuseTree.java | 2 +- .../java/de/learnlib/filter/reuse/tree/ReuseTreeDotHelper.java | 2 +- .../java/de/learnlib/filter/reuse/tree/SystemStateHandler.java | 2 +- .../java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java | 2 +- .../test/java/de/learnlib/filter/reuse/test/LearningTest.java | 2 +- .../test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java | 2 +- .../java/de/learnlib/filter/reuse/test/ReuseOracleTest.java | 2 +- filters/statistics/pom.xml | 2 +- .../de/learnlib/filter/statistic/AbstractStatisticData.java | 2 +- .../src/main/java/de/learnlib/filter/statistic/Counter.java | 2 +- .../java/de/learnlib/filter/statistic/CounterCollection.java | 2 +- .../java/de/learnlib/filter/statistic/HistogramDataSet.java | 2 +- .../filter/statistic/learner/RefinementCounterLearner.java | 2 +- .../java/de/learnlib/filter/statistic/oracle/CounterOracle.java | 2 +- .../filter/statistic/oracle/CounterSymbolQueryOracle.java | 2 +- .../de/learnlib/filter/statistic/oracle/HistogramOracle.java | 2 +- .../filter/statistic/sul/ResetCounterObservableSUL.java | 2 +- .../java/de/learnlib/filter/statistic/sul/ResetCounterSUL.java | 2 +- .../filter/statistic/sul/ResetCounterStateLocalInputSUL.java | 2 +- .../filter/statistic/sul/SLICounterStateLocalInputSUL.java | 2 +- .../filter/statistic/sul/SymbolCounterObservableSUL.java | 2 +- .../java/de/learnlib/filter/statistic/sul/SymbolCounterSUL.java | 2 +- .../filter/statistic/sul/SymbolCounterStateLocalInputSUL.java | 2 +- .../src/test/java/de/learnlib/filter/statistic/NoopQuery.java | 2 +- .../src/test/java/de/learnlib/filter/statistic/TestQueries.java | 2 +- .../de/learnlib/filter/statistic/oracle/CounterOracleTest.java | 2 +- .../learnlib/filter/statistic/oracle/HistogramOracleTest.java | 2 +- .../learnlib/filter/statistic/sul/AbstractCounterSULTest.java | 2 +- .../filter/statistic/sul/AbstractResetCounterSULTest.java | 2 +- .../filter/statistic/sul/AbstractSymbolCounterSULTest.java | 2 +- .../filter/statistic/sul/ResetCounterObservableSULTest.java | 2 +- .../de/learnlib/filter/statistic/sul/ResetCounterSULTest.java | 2 +- .../statistic/sul/ResetCounterStateLocalInputSULTest.java | 2 +- .../filter/statistic/sul/SymbolCounterObservableSULTest.java | 2 +- .../de/learnlib/filter/statistic/sul/SymbolCounterSULTest.java | 2 +- .../statistic/sul/SymbolCounterStateLocalInputSULTest.java | 2 +- .../de/learnlib/oracle/emptiness/AbstractBFEmptinessOracle.java | 2 +- .../de/learnlib/oracle/emptiness/LassoEmptinessOracleImpl.java | 2 +- .../oracle/emptiness/AbstractBFEmptinessOracleTest.java | 2 +- .../oracle/emptiness/AbstractLassoEmptinessOracleImplTest.java | 2 +- .../de/learnlib/oracle/emptiness/DFABFEmptinessOracleTest.java | 2 +- .../oracle/emptiness/DFALassoEmptinessOracleImplTest.java | 2 +- .../learnlib/oracle/emptiness/MealyBFEmptinessOracleTest.java | 2 +- .../oracle/emptiness/MealyLassoEmptinessOracleImplTest.java | 2 +- oracles/equivalence-oracles/pom.xml | 2 +- .../learnlib/oracle/equivalence/AbstractBFInclusionOracle.java | 2 +- .../learnlib/oracle/equivalence/AbstractTestWordEQOracle.java | 2 +- .../java/de/learnlib/oracle/equivalence/CExFirstOracle.java | 2 +- .../oracle/equivalence/CompleteExplorationEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/DisproveFirstOracle.java | 2 +- .../main/java/de/learnlib/oracle/equivalence/EQOracleChain.java | 2 +- .../learnlib/oracle/equivalence/IncrementalWMethodEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/RandomWordsEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/RandomWpMethodEQOracle.java | 2 +- .../java/de/learnlib/oracle/equivalence/SampleSetEQOracle.java | 2 +- .../java/de/learnlib/oracle/equivalence/SimulatorEQOracle.java | 2 +- .../java/de/learnlib/oracle/equivalence/WMethodEQOracle.java | 2 +- .../java/de/learnlib/oracle/equivalence/WpMethodEQOracle.java | 2 +- .../learnlib/oracle/equivalence/mealy/RandomWalkEQOracle.java | 2 +- .../mealy/StateLocalInputMealySimulatorEQOracle.java | 2 +- .../oracle/equivalence/mealy/SymbolEQOracleWrapper.java | 2 +- .../de/learnlib/oracle/equivalence/sba/SimulatorEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/sba/WMethodEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/spa/SimulatorEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/spa/WMethodEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/spa/WpMethodEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/spmm/SimulatorEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/spmm/WMethodEQOracle.java | 2 +- .../oracle/equivalence/vpa/RandomWellMatchedWordsEQOracle.java | 2 +- .../de/learnlib/oracle/equivalence/vpa/SimulatorEQOracle.java | 2 +- .../oracle/equivalence/AbstractBFInclusionOracleTest.java | 2 +- .../de/learnlib/oracle/equivalence/AbstractEQOracleTest.java | 2 +- .../java/de/learnlib/oracle/equivalence/CExFirstOracleTest.java | 2 +- .../learnlib/oracle/equivalence/DFABFInclusionOracleTest.java | 2 +- .../de/learnlib/oracle/equivalence/DisproveFirstOracleTest.java | 2 +- .../learnlib/oracle/equivalence/EmptyAutomatonOracleTest.java | 2 +- .../oracle/equivalence/IncrementalWMethodEQOracleTest.java | 2 +- .../learnlib/oracle/equivalence/MealyBFInclusionOracleTest.java | 2 +- .../learnlib/oracle/equivalence/RandomWMethodEQOracleTest.java | 2 +- .../de/learnlib/oracle/equivalence/RandomWordsEQOracleTest.java | 2 +- .../learnlib/oracle/equivalence/RandomWpMethodEQOracleTest.java | 2 +- .../de/learnlib/oracle/equivalence/SampleSetEQOracleTest.java | 2 +- .../learnlib/oracle/equivalence/TestWordEQOracleBatchTest.java | 2 +- .../oracle/equivalence/mealy/RandomWalkEQOracleTest.java | 2 +- .../de/learnlib/oracle/equivalence/sba/WMethodEQOracleTest.java | 2 +- .../de/learnlib/oracle/equivalence/spa/WMethodEQOracleTest.java | 2 +- .../learnlib/oracle/equivalence/spa/WpMethodEQOracleTest.java | 2 +- .../learnlib/oracle/equivalence/spmm/WMethodEQOracleTest.java | 2 +- .../equivalence/vpa/RandomWellMatchedWordsEQOracleTest.java | 2 +- oracles/membership-oracles/pom.xml | 2 +- .../de/learnlib/oracle/membership/AbstractSULOmegaOracle.java | 2 +- .../main/java/de/learnlib/oracle/membership/MappedOracle.java | 2 +- .../src/main/java/de/learnlib/oracle/membership/SULOracle.java | 2 +- .../de/learnlib/oracle/membership/SULSymbolQueryOracle.java | 2 +- .../de/learnlib/oracle/membership/SimulatorOmegaOracle.java | 2 +- .../java/de/learnlib/oracle/membership/SimulatorOracle.java | 2 +- .../de/learnlib/oracle/membership/StateLocalInputSULOracle.java | 2 +- .../oracle/membership/StateLocalInputSULSymbolQueryOracle.java | 2 +- .../java/de/learnlib/oracle/membership/SULOmegaOracleTest.java | 2 +- .../de/learnlib/oracle/membership/SULSymbolQueryOracleTest.java | 2 +- .../de/learnlib/oracle/membership/SimulatorOmegaOracleTest.java | 2 +- .../java/de/learnlib/oracle/membership/SimulatorOracleTest.java | 2 +- .../membership/StateLocalInputSULSymbolQueryOracleTest.java | 2 +- oracles/parallelism/pom.xml | 2 +- .../filter/cache/dfa/ThreadSafeDFACacheConsistencyTest.java | 2 +- .../de/learnlib/filter/cache/dfa/ThreadSafeDFACacheOracle.java | 2 +- .../java/de/learnlib/filter/cache/dfa/ThreadSafeDFACaches.java | 2 +- .../filter/cache/mealy/ThreadSafeMealyCacheConsistencyTest.java | 2 +- .../learnlib/filter/cache/mealy/ThreadSafeMealyCacheOracle.java | 2 +- .../de/learnlib/filter/cache/mealy/ThreadSafeMealyCaches.java | 2 +- .../filter/cache/moore/ThreadSafeMooreCacheConsistencyTest.java | 2 +- .../learnlib/filter/cache/moore/ThreadSafeMooreCacheOracle.java | 2 +- .../de/learnlib/filter/cache/moore/ThreadSafeMooreCaches.java | 2 +- .../java/de/learnlib/filter/cache/sul/ThreadSafeSULCache.java | 2 +- .../java/de/learnlib/filter/cache/sul/ThreadSafeSULCaches.java | 2 +- .../filter/cache/sul/ThreadSafeStateLocalInputSULCache.java | 2 +- .../oracle/parallelism/AbstractDynamicBatchProcessor.java | 2 +- .../parallelism/AbstractDynamicBatchProcessorBuilder.java | 2 +- .../java/de/learnlib/oracle/parallelism/AbstractQueriesJob.java | 2 +- .../oracle/parallelism/AbstractStaticBatchProcessor.java | 2 +- .../oracle/parallelism/AbstractStaticBatchProcessorBuilder.java | 2 +- .../learnlib/oracle/parallelism/DynamicParallelOmegaOracle.java | 2 +- .../oracle/parallelism/DynamicParallelOmegaOracleBuilder.java | 2 +- .../de/learnlib/oracle/parallelism/DynamicParallelOracle.java | 2 +- .../oracle/parallelism/DynamicParallelOracleBuilder.java | 2 +- .../java/de/learnlib/oracle/parallelism/DynamicQueriesJob.java | 2 +- .../de/learnlib/oracle/parallelism/ParallelOracleBuilders.java | 2 +- .../learnlib/oracle/parallelism/StaticParallelOmegaOracle.java | 2 +- .../oracle/parallelism/StaticParallelOmegaOracleBuilder.java | 2 +- .../de/learnlib/oracle/parallelism/StaticParallelOracle.java | 2 +- .../oracle/parallelism/StaticParallelOracleBuilder.java | 2 +- .../java/de/learnlib/oracle/parallelism/StaticQueriesJob.java | 2 +- .../de/learnlib/filter/cache/AbstractParallelCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/DFAParallelCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/MealyParallelCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/MooreParallelCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/SLISULParallelCacheTest.java | 2 +- .../java/de/learnlib/filter/cache/SULParallelCacheTest.java | 2 +- .../de/learnlib/filter/cache/configuration/CacheConfig.java | 2 +- .../de/learnlib/filter/cache/configuration/CacheCreator.java | 2 +- .../java/de/learnlib/filter/cache/configuration/Config.java | 2 +- .../parallelism/AbstractDynamicParallelOmegaOracleTest.java | 2 +- .../oracle/parallelism/AbstractDynamicParallelOracleTest.java | 2 +- .../parallelism/AbstractStaticParallelOmegaOracleTest.java | 2 +- .../oracle/parallelism/AbstractStaticParallelOracleTest.java | 2 +- .../oracle/parallelism/DynamicParallelObservableSULTest.java | 2 +- .../oracle/parallelism/DynamicParallelOmegaOracleTest.java | 2 +- .../oracle/parallelism/DynamicParallelOmegaSupplierTest.java | 2 +- .../learnlib/oracle/parallelism/DynamicParallelOracleTest.java | 2 +- .../learnlib/oracle/parallelism/DynamicParallelSLISULTest.java | 2 +- .../de/learnlib/oracle/parallelism/DynamicParallelSULTest.java | 2 +- .../oracle/parallelism/DynamicParallelSupplierTest.java | 2 +- .../java/de/learnlib/oracle/parallelism/OmegaException.java | 2 +- .../oracle/parallelism/StaticParallelObservableSULTest.java | 2 +- .../oracle/parallelism/StaticParallelOmegaOracleTest.java | 2 +- .../oracle/parallelism/StaticParallelOmegaSupplierTest.java | 2 +- .../learnlib/oracle/parallelism/StaticParallelOracleTest.java | 2 +- .../learnlib/oracle/parallelism/StaticParallelSLISULTest.java | 2 +- .../de/learnlib/oracle/parallelism/StaticParallelSULTest.java | 2 +- .../learnlib/oracle/parallelism/StaticParallelSupplierTest.java | 2 +- .../src/test/java/de/learnlib/oracle/parallelism/Utils.java | 2 +- oracles/pom.xml | 2 +- .../de/learnlib/oracle/property/AbstractPropertyOracle.java | 2 +- .../de/learnlib/oracle/property/DFAFinitePropertyOracle.java | 2 +- .../de/learnlib/oracle/property/DFALassoPropertyOracle.java | 2 +- .../java/de/learnlib/oracle/property/LoggingPropertyOracle.java | 2 +- .../de/learnlib/oracle/property/MealyFinitePropertyOracle.java | 2 +- .../de/learnlib/oracle/property/MealyLassoPropertyOracle.java | 2 +- .../java/de/learnlib/oracle/property/PropertyOracleChain.java | 2 +- .../de/learnlib/oracle/property/MealyPropertyOracleTest.java | 2 +- pom.xml | 2 +- test-support/learner-it-support/pom.xml | 2 +- .../de/learnlib/testsupport/AbstractGrowingAlphabetDFATest.java | 2 +- .../learnlib/testsupport/AbstractGrowingAlphabetMealyTest.java | 2 +- .../learnlib/testsupport/AbstractGrowingAlphabetMooreTest.java | 2 +- .../de/learnlib/testsupport/AbstractGrowingAlphabetTest.java | 2 +- .../learnlib/testsupport/AbstractResumableLearnerDFATest.java | 2 +- .../learnlib/testsupport/AbstractResumableLearnerMealyTest.java | 2 +- .../learnlib/testsupport/AbstractResumableLearnerMooreTest.java | 2 +- .../de/learnlib/testsupport/AbstractResumableLearnerTest.java | 2 +- .../java/de/learnlib/testsupport/AbstractVisualizationTest.java | 2 +- .../learnlib/testsupport/it/learner/AbstractDFALearnerIT.java | 2 +- .../testsupport/it/learner/AbstractDFAPassiveLearnerIT.java | 2 +- .../testsupport/it/learner/AbstractLearnerVariantITCase.java | 2 +- .../learnlib/testsupport/it/learner/AbstractMealyLearnerIT.java | 2 +- .../testsupport/it/learner/AbstractMealyPassiveLearnerIT.java | 2 +- .../testsupport/it/learner/AbstractMealySymLearnerIT.java | 2 +- .../learnlib/testsupport/it/learner/AbstractMooreLearnerIT.java | 2 +- .../testsupport/it/learner/AbstractMoorePassiveLearnerIT.java | 2 +- .../testsupport/it/learner/AbstractMooreSymLearnerIT.java | 2 +- .../testsupport/it/learner/AbstractOneSEVPALearnerIT.java | 2 +- .../learnlib/testsupport/it/learner/AbstractSBALearnerIT.java | 2 +- .../learnlib/testsupport/it/learner/AbstractSPALearnerIT.java | 2 +- .../learnlib/testsupport/it/learner/AbstractSPMMLearnerIT.java | 2 +- .../testsupport/it/learner/AbstractSSTPassiveLearnerIT.java | 2 +- .../java/de/learnlib/testsupport/it/learner/LearnerITUtil.java | 2 +- .../java/de/learnlib/testsupport/it/learner/LearnerVariant.java | 2 +- .../de/learnlib/testsupport/it/learner/LearnerVariantList.java | 2 +- .../learnlib/testsupport/it/learner/LearnerVariantListImpl.java | 2 +- .../learnlib/testsupport/it/learner/OneSEVPALearnerITCase.java | 2 +- .../learnlib/testsupport/it/learner/PassiveLearnerVariant.java | 2 +- .../testsupport/it/learner/PassiveLearnerVariantITCase.java | 2 +- .../testsupport/it/learner/PassiveLearnerVariantList.java | 2 +- .../testsupport/it/learner/PassiveLearnerVariantListImpl.java | 2 +- .../de/learnlib/testsupport/it/learner/SBALearnerITCase.java | 2 +- .../de/learnlib/testsupport/it/learner/SPALearnerITCase.java | 2 +- .../de/learnlib/testsupport/it/learner/SPMMLearnerITCase.java | 2 +- .../it/learner/UniversalDeterministicLearnerITCase.java | 2 +- .../src/main/java/de/learnlib/testsupport/package-info.java | 2 +- test-support/learning-examples/pom.xml | 2 +- .../main/java/de/learnlib/example/DefaultLearningExample.java | 2 +- .../java/de/learnlib/example/DefaultPassiveLearningExample.java | 2 +- .../src/main/java/de/learnlib/example/LearningExample.java | 2 +- .../src/main/java/de/learnlib/example/LearningExamples.java | 2 +- .../main/java/de/learnlib/example/PassiveLearningExample.java | 2 +- .../src/main/java/de/learnlib/example/dfa/DFABenchmarks.java | 2 +- .../src/main/java/de/learnlib/example/dfa/ExampleAngluin.java | 2 +- .../src/main/java/de/learnlib/example/dfa/ExampleKeylock.java | 2 +- .../main/java/de/learnlib/example/dfa/ExamplePaulAndMary.java | 2 +- .../src/main/java/de/learnlib/example/dfa/ExampleRandomDFA.java | 2 +- .../src/main/java/de/learnlib/example/dfa/ExampleTinyDFA.java | 2 +- .../java/de/learnlib/example/mealy/ExampleCoffeeMachine.java | 2 +- .../src/main/java/de/learnlib/example/mealy/ExampleGrid.java | 2 +- .../main/java/de/learnlib/example/mealy/ExampleRandomMealy.java | 2 +- .../example/mealy/ExampleRandomStateLocalInputMealy.java | 2 +- .../main/java/de/learnlib/example/mealy/ExampleShahbazGroz.java | 2 +- .../src/main/java/de/learnlib/example/mealy/ExampleStack.java | 2 +- .../main/java/de/learnlib/example/mealy/ExampleTinyMealy.java | 2 +- .../main/java/de/learnlib/example/moore/ExampleRandomMoore.java | 2 +- .../src/main/java/de/learnlib/example/package-info.java | 2 +- .../main/java/de/learnlib/example/sba/ExamplePalindrome.java | 2 +- .../src/main/java/de/learnlib/example/sba/ExampleRandomSBA.java | 2 +- .../main/java/de/learnlib/example/spa/ExamplePalindrome.java | 2 +- .../src/main/java/de/learnlib/example/spa/ExampleRandomSPA.java | 2 +- .../main/java/de/learnlib/example/spmm/ExamplePalindrome.java | 2 +- .../main/java/de/learnlib/example/spmm/ExampleRandomSPMM.java | 2 +- .../src/main/java/de/learnlib/example/sst/ExampleRandomSST.java | 2 +- .../java/de/learnlib/example/vpa/ExampleRandomOneSEVPA.java | 2 +- .../src/test/java/de/learnlib/example/dfa/DFAExamplesTest.java | 2 +- test-support/pom.xml | 2 +- .../main/java/de/learnlib/testsupport/AbstractBFOracleTest.java | 2 +- .../src/main/java/de/learnlib/testsupport/ResumeUtils.java | 2 +- 899 files changed, 899 insertions(+), 899 deletions(-) diff --git a/algorithms/active/aaar/pom.xml b/algorithms/active/aaar/pom.xml index ea3cd012d5..d17520d8da 100644 --- a/algorithms/active/aaar/pom.xml +++ b/algorithms/active/aaar/pom.xml @@ -1,6 +1,6 @@ - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java index 958e9de229..f880b7c943 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java +++ b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java @@ -28,7 +28,6 @@ import java.util.Set; import java.util.stream.Collectors; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.Resumable; import de.learnlib.algorithm.LearningAlgorithm; import de.learnlib.algorithm.adt.adt.ADT; @@ -55,6 +54,7 @@ import de.learnlib.logging.Category; import de.learnlib.oracle.SymbolQueryOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import de.learnlib.util.MQUtil; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; @@ -70,9 +70,9 @@ * The main learning algorithm. * * @param - * input alphabet type + * input symbol type * @param - * output alphabet type + * output symbol type */ public class ADTLearner implements LearningAlgorithm.MealyLearner, PartialTransitionAnalyzer, I>, diff --git a/algorithms/active/dhc/pom.xml b/algorithms/active/dhc/pom.xml index c735af9730..4df062f8e2 100644 --- a/algorithms/active/dhc/pom.xml +++ b/algorithms/active/dhc/pom.xml @@ -71,8 +71,8 @@ limitations under the License. - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java b/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java index 0cf84f49be..e3766f2759 100644 --- a/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java +++ b/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java @@ -27,7 +27,6 @@ import java.util.Queue; import java.util.Set; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import com.google.common.collect.Interner; import com.google.common.collect.Interners; import com.google.common.collect.Sets; @@ -39,6 +38,7 @@ import de.learnlib.counterexample.GlobalSuffixFinders; import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; @@ -49,6 +49,14 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; +/** + * The DHC learner. + * + * @param + * input symbol type + * @param + * output symbol type + */ public class MealyDHC implements MealyLearner, AccessSequenceTransformer, GlobalSuffixLearnerMealy, @@ -87,7 +95,7 @@ public MealyDHC(Alphabet alphabet, MembershipOracle> oracle) { * the initial set of splitters, {@code null} or an empty collection will result in the set of splitters * being initialized as the set of alphabet symbols (interpreted as {@link Word}s) */ - @GenerateBuilder(defaults = BuilderDefaults.class, builderFinal = false) + @GenerateBuilder(defaults = BuilderDefaults.class) public MealyDHC(Alphabet alphabet, MembershipOracle> oracle, GlobalSuffixFinder> suffixFinder, diff --git a/algorithms/active/kearns-vazirani/pom.xml b/algorithms/active/kearns-vazirani/pom.xml index 06e8854234..7f12d36783 100644 --- a/algorithms/active/kearns-vazirani/pom.xml +++ b/algorithms/active/kearns-vazirani/pom.xml @@ -78,8 +78,8 @@ limitations under the License. - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java index 7177593522..366e3ef342 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.function.BooleanSupplier; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.Resumable; import de.learnlib.acex.AbstractBaseCounterexample; import de.learnlib.acex.AcexAnalyzer; @@ -36,6 +35,7 @@ import de.learnlib.logging.Category; import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; @@ -74,7 +74,7 @@ public class KearnsVaziraniDFA * @param oracle * the membership oracle */ - @GenerateBuilder + @GenerateBuilder(defaults = BuilderDefaults.class) public KearnsVaziraniDFA(Alphabet alphabet, MembershipOracle oracle, boolean repeatedCounterexampleEvaluation, diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java index c473dd7916..8438675afc 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.Objects; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.Resumable; import de.learnlib.acex.AbstractBaseCounterexample; import de.learnlib.acex.AcexAnalyzer; @@ -36,6 +35,7 @@ import de.learnlib.logging.Category; import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import de.learnlib.util.mealy.MealyUtil; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; @@ -69,7 +69,7 @@ public class KearnsVaziraniMealy protected List>> stateInfos = new ArrayList<>(); private CompactMealy hypothesis; - @GenerateBuilder + @GenerateBuilder(defaults = BuilderDefaults.class) public KearnsVaziraniMealy(Alphabet alphabet, MembershipOracle> oracle, boolean repeatedCounterexampleEvaluation, diff --git a/algorithms/active/lstar/pom.xml b/algorithms/active/lstar/pom.xml index 1e3a09db43..5d35ba727d 100644 --- a/algorithms/active/lstar/pom.xml +++ b/algorithms/active/lstar/pom.xml @@ -81,8 +81,8 @@ limitations under the License. - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ClassicLStarDFA.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ClassicLStarDFA.java index 05a22cbeaa..2b0e225d27 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ClassicLStarDFA.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ClassicLStarDFA.java @@ -17,10 +17,10 @@ import java.util.Collections; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandlers; import de.learnlib.algorithm.lstar.closing.ClosingStrategies; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.word.Word; @@ -28,7 +28,7 @@ * Implementation of the L* algorithm by Dana Angluin. * * @param - * input symbol class. + * input symbol type. */ public class ClassicLStarDFA extends ExtensibleLStarDFA { diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java index 0cfb142b8a..0cbdc3b51a 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java @@ -18,7 +18,6 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.GlobalSuffixLearner.GlobalSuffixLearnerDFA; import de.learnlib.algorithm.lstar.AbstractExtensibleAutomatonLStar; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandler; @@ -27,6 +26,7 @@ import de.learnlib.datastructure.observationtable.ObservationTable; import de.learnlib.datastructure.observationtable.Row; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.automaton.fsa.CompactDFA; diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java index 2c7a650f12..b246e6d0b8 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java @@ -18,7 +18,6 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.AbstractExtensibleAutomatonLStar; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandler; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandlers; @@ -27,6 +26,7 @@ import de.learnlib.datastructure.observationtable.ObservationTable; import de.learnlib.datastructure.observationtable.Row; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.CompactTransition; import net.automatalib.automaton.concept.SuffixOutput; @@ -39,9 +39,9 @@ * thesis. * * @param - * input symbol class + * input symbol type * @param - * output symbol class + * output symbol type */ public class ClassicLStarMealy extends AbstractExtensibleAutomatonLStar, I, O, Integer, CompactTransition, Void, O, CompactMealy> { diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java index 602798c47f..0b2af26e37 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java @@ -19,7 +19,6 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.GlobalSuffixLearner.GlobalSuffixLearnerMealy; import de.learnlib.algorithm.lstar.AbstractExtensibleAutomatonLStar; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandler; @@ -29,6 +28,7 @@ import de.learnlib.datastructure.observationtable.Row; import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.CompactTransition; import net.automatalib.automaton.concept.SuffixOutput; @@ -36,6 +36,14 @@ import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; +/** + * A {@link MealyMachine}-based specialization of the extensible L* learner. + * + * @param + * input symbol type + * @param + * output symbol type + */ public class ExtensibleLStarMealy extends AbstractExtensibleAutomatonLStar, I, Word, Integer, CompactTransition, Void, O, CompactMealy> implements OTLearnerMealy, GlobalSuffixLearnerMealy { diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java index 4d87847506..09ceee0d79 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java @@ -17,13 +17,13 @@ import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.AbstractExtensibleAutomatonLStar; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandler; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.datastructure.observationtable.ObservationTable; import de.learnlib.datastructure.observationtable.Row; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.automaton.transducer.CompactMoore; diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java index 04b7897dbe..df8422c0c4 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java @@ -18,7 +18,6 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.AbstractExtensibleAutomatonLStar; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandler; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; @@ -26,6 +25,7 @@ import de.learnlib.datastructure.observationtable.ObservationTable; import de.learnlib.datastructure.observationtable.Row; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.automaton.transducer.CompactMoore; diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliDFA.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliDFA.java index b8cca9e987..f5f50f1540 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliDFA.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliDFA.java @@ -18,16 +18,24 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.AbstractExtensibleAutomatonLStar; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandlers; import de.learnlib.algorithm.lstar.closing.ClosingStrategies; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.algorithm.lstar.dfa.ExtensibleLStarDFA; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; +import net.automatalib.automaton.fsa.DFA; import net.automatalib.word.Word; +/** + * A {@link DFA}-based specialization of the L* learner which uses the counterexample analysis strategy proposed by + * Maler & Pnueli. + * + * @param + * input symbol type + */ public class MalerPnueliDFA extends ExtensibleLStarDFA { public MalerPnueliDFA(Alphabet alphabet, MembershipOracle oracle) { diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliMealy.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliMealy.java index eb278e2c23..460fdf8c8c 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliMealy.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliMealy.java @@ -18,16 +18,26 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.AbstractExtensibleAutomatonLStar; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandlers; import de.learnlib.algorithm.lstar.closing.ClosingStrategies; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.algorithm.lstar.mealy.ExtensibleLStarMealy; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; +import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; +/** + * A {@link MealyMachine}-based specialization of the L* learner which uses the counterexample analysis strategy + * proposed by Maler & Pnueli. + * + * @param + * input symbol type + * @param + * output symbol type + */ public class MalerPnueliMealy extends ExtensibleLStarMealy { public MalerPnueliMealy(Alphabet alphabet, MembershipOracle> oracle) { diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliMoore.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliMoore.java index 85783bd2a7..0c5113552a 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliMoore.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/MalerPnueliMoore.java @@ -18,15 +18,25 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandlers; import de.learnlib.algorithm.lstar.closing.ClosingStrategies; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.algorithm.lstar.moore.ExtensibleLStarMoore; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; +import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.word.Word; +/** + * A {@link MooreMachine}-based specialization of the L* learner which uses the counterexample analysis strategy + * proposed by Maler & Pnueli. + * + * @param + * input symbol type + * @param + * output symbol type + */ public class MalerPnueliMoore extends ExtensibleLStarMoore { public MalerPnueliMoore(Alphabet alphabet, MembershipOracle> oracle) { diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireDFA.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireDFA.java index 2fbf33d01f..3f9ab4f8b1 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireDFA.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireDFA.java @@ -18,15 +18,23 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandlers; import de.learnlib.algorithm.lstar.closing.ClosingStrategies; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.algorithm.lstar.dfa.ExtensibleLStarDFA; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; +import net.automatalib.automaton.fsa.DFA; import net.automatalib.word.Word; +/** + * A {@link DFA}-based specialization of the L* learner which uses the counterexample analysis strategy proposed by + * Rivest & Schapire. + * + * @param + * input symbol type + */ public class RivestSchapireDFA extends ExtensibleLStarDFA { public RivestSchapireDFA(Alphabet alphabet, MembershipOracle oracle) { diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireMealy.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireMealy.java index c71a7a1f7f..0ae726331b 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireMealy.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireMealy.java @@ -18,15 +18,25 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandlers; import de.learnlib.algorithm.lstar.closing.ClosingStrategies; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.algorithm.lstar.mealy.ExtensibleLStarMealy; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; +import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; +/** + * A {@link MealyMachine}-based specialization of the L* learner which uses the counterexample analysis strategy + * proposed by Rivest & Schapire. + * + * @param + * input symbol type + * @param + * output symbol type + */ public class RivestSchapireMealy extends ExtensibleLStarMealy { public RivestSchapireMealy(Alphabet alphabet, MembershipOracle> oracle) { diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireMoore.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireMoore.java index cd2c9cc586..9d9b198455 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireMoore.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/RivestSchapireMoore.java @@ -18,15 +18,25 @@ import java.util.Collections; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandlers; import de.learnlib.algorithm.lstar.closing.ClosingStrategies; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.algorithm.lstar.moore.ExtensibleLStarMoore; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; +import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.word.Word; +/** + * A {@link MooreMachine}-based specialization of the L* learner which uses the counterexample analysis strategy + * proposed by Rivest & Schapire. + * + * @param + * input symbol type + * @param + * output symbol type + */ public class RivestSchapireMoore extends ExtensibleLStarMoore { public RivestSchapireMoore(Alphabet alphabet, MembershipOracle> oracle) { diff --git a/algorithms/active/nlstar/pom.xml b/algorithms/active/nlstar/pom.xml index 86fe616838..3261ffb2ae 100644 --- a/algorithms/active/nlstar/pom.xml +++ b/algorithms/active/nlstar/pom.xml @@ -65,8 +65,8 @@ limitations under the License. - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java b/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java index efea95b0a2..b96d39af87 100644 --- a/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java +++ b/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java @@ -19,10 +19,10 @@ import java.util.Arrays; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.LearningAlgorithm.NFALearner; import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import de.learnlib.util.MQUtil; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.CompactDFA; diff --git a/algorithms/active/observation-pack-vpa/pom.xml b/algorithms/active/observation-pack-vpa/pom.xml index ea09318dff..5afa33fb2c 100644 --- a/algorithms/active/observation-pack-vpa/pom.xml +++ b/algorithms/active/observation-pack-vpa/pom.xml @@ -83,8 +83,8 @@ limitations under the License. - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/AbstractVPALearner.java b/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/AbstractVPALearner.java index 621c880b58..00590e6d80 100644 --- a/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/AbstractVPALearner.java +++ b/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/AbstractVPALearner.java @@ -21,6 +21,8 @@ import java.util.List; import de.learnlib.AccessSequenceProvider; +import de.learnlib.acex.AcexAnalyzer; +import de.learnlib.acex.AcexAnalyzers; import de.learnlib.algorithm.LearningAlgorithm; import de.learnlib.algorithm.observationpack.vpa.hypothesis.AbstractHypTrans; import de.learnlib.algorithm.observationpack.vpa.hypothesis.ContextPair; @@ -39,10 +41,6 @@ import net.automatalib.common.smartcollection.UnorderedCollection; import net.automatalib.word.Word; -/** - * @param - * input alphabet type - */ public abstract class AbstractVPALearner implements LearningAlgorithm, I, Boolean> { protected final VPAlphabet alphabet; @@ -266,6 +264,17 @@ protected HypLoc createLocation(AbstractHypTrans trans) { protected Boolean query(AccessSequenceProvider asp, ContextPair context) { return oracle.answerQuery(context.getPrefix().concat(asp.getAccessSequence()), context.getSuffix()); } + + public static final class BuilderDefaults { + + private BuilderDefaults() { + // prevent instantiation + } + + public static AcexAnalyzer analyzer() { + return AcexAnalyzers.BINARY_SEARCH_BWD; + } + } } diff --git a/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/OPLearnerVPA.java b/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/OPLearnerVPA.java index 6a8c9a6045..2739399e5a 100644 --- a/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/OPLearnerVPA.java +++ b/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/OPLearnerVPA.java @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.List; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import com.google.common.collect.Iterables; import de.learnlib.acex.AbstractBaseCounterexample; import de.learnlib.acex.AcexAnalyzer; @@ -28,7 +27,9 @@ import de.learnlib.algorithm.observationpack.vpa.hypothesis.HypLoc; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.VPAlphabet; +import net.automatalib.automaton.vpa.SEVPA; import net.automatalib.automaton.vpa.StackContents; import net.automatalib.automaton.vpa.State; import net.automatalib.word.Word; @@ -36,14 +37,16 @@ import org.checkerframework.checker.nullness.qual.Nullable; /** + * A {@link SEVPA}-based adoption of the "observation pack" algorithm. + * * @param - * input alphabet type + * input symbol type */ public class OPLearnerVPA extends AbstractVPALearner { protected final AcexAnalyzer analyzer; - @GenerateBuilder + @GenerateBuilder(defaults = BuilderDefaults.class) public OPLearnerVPA(VPAlphabet alphabet, DFAMembershipOracle oracle, AcexAnalyzer analyzer) { super(alphabet, oracle); this.analyzer = analyzer; @@ -155,7 +158,5 @@ protected Boolean computeEffect(int index) { return oracle.answerQuery(transformAccessSequence(state), suffSuff); } - } - } diff --git a/algorithms/active/observation-pack/pom.xml b/algorithms/active/observation-pack/pom.xml index 954e6f69a9..562ba255cf 100644 --- a/algorithms/active/observation-pack/pom.xml +++ b/algorithms/active/observation-pack/pom.xml @@ -73,8 +73,8 @@ limitations under the License. - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/dfa/OPLearnerDFA.java b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/dfa/OPLearnerDFA.java index d977d47098..24a8eb43dd 100644 --- a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/dfa/OPLearnerDFA.java +++ b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/dfa/OPLearnerDFA.java @@ -15,7 +15,6 @@ */ package de.learnlib.algorithm.observationpack.dfa; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.LearningAlgorithm.DFALearner; import de.learnlib.algorithm.observationpack.AbstractOPLearner; import de.learnlib.algorithm.observationpack.hypothesis.HState; @@ -26,16 +25,17 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.AbstractQuery; import de.learnlib.query.Query; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; /** - * Algorithm for learning DFA using the Discrimination Tree algorithm. + * A {@link DFA}-based specialization of the {@link AbstractOPLearner}. * * @param - * input symbol class + * input symbol type */ public class OPLearnerDFA extends AbstractOPLearner, I, Boolean, Boolean, Void> implements DFALearner { @@ -51,7 +51,7 @@ public class OPLearnerDFA extends AbstractOPLearner, I, Boolean, Bo * @param epsilonRoot * whether to ensure the root of the discrimination tree is always labeled using the empty word. */ - @GenerateBuilder + @GenerateBuilder(defaults = AbstractOPLearner.BuilderDefaults.class) public OPLearnerDFA(Alphabet alphabet, MembershipOracle oracle, LocalSuffixFinder suffixFinder, diff --git a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/mealy/OPLearnerMealy.java b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/mealy/OPLearnerMealy.java index e20ded43b9..5ad99f17c0 100644 --- a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/mealy/OPLearnerMealy.java +++ b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/mealy/OPLearnerMealy.java @@ -15,7 +15,6 @@ */ package de.learnlib.algorithm.observationpack.mealy; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.LearningAlgorithm.MealyLearner; import de.learnlib.algorithm.observationpack.AbstractOPLearner; import de.learnlib.algorithm.observationpack.hypothesis.HState; @@ -25,12 +24,15 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.AbstractQuery; import de.learnlib.query.Query; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; /** + * A {@link MealyMachine}-based specialization of the {@link AbstractOPLearner}. + * * @param * input symbol type * @param diff --git a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/moore/OPLearnerMoore.java b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/moore/OPLearnerMoore.java index 10e8000d03..a34fbf5ed8 100644 --- a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/moore/OPLearnerMoore.java +++ b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/moore/OPLearnerMoore.java @@ -15,7 +15,6 @@ */ package de.learnlib.algorithm.observationpack.moore; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.algorithm.LearningAlgorithm.MooreLearner; import de.learnlib.algorithm.observationpack.AbstractOPLearner; import de.learnlib.algorithm.observationpack.hypothesis.HState; @@ -25,13 +24,14 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.AbstractQuery; import de.learnlib.query.Query; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; /** - * A {@link MooreMachine}-based specialization of the DT learner. + * A {@link MooreMachine}-based specialization of the {@link AbstractOPLearner}. * * @param * input symbol type diff --git a/algorithms/active/oml/pom.xml b/algorithms/active/oml/pom.xml index c2f2c9c30c..bbfe28e09b 100644 --- a/algorithms/active/oml/pom.xml +++ b/algorithms/active/oml/pom.xml @@ -60,12 +60,6 @@ limitations under the License. checker-qual - - - com.github.misberner.buildergen - buildergen - - de.learnlib.testsupport diff --git a/algorithms/active/procedural/pom.xml b/algorithms/active/procedural/pom.xml index 4b400f1095..813616fb0b 100644 --- a/algorithms/active/procedural/pom.xml +++ b/algorithms/active/procedural/pom.xml @@ -96,13 +96,6 @@ limitations under the License. net.automatalib automata-util - - - - com.github.misberner.buildergen - buildergen - - org.checkerframework checker-qual diff --git a/algorithms/active/ttt-vpa/pom.xml b/algorithms/active/ttt-vpa/pom.xml index 3e45a77a9e..be13b0d7d0 100644 --- a/algorithms/active/ttt-vpa/pom.xml +++ b/algorithms/active/ttt-vpa/pom.xml @@ -75,8 +75,8 @@ limitations under the License. - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/ttt-vpa/src/main/java/de/learnlib/algorithm/ttt/vpa/TTTLearnerVPA.java b/algorithms/active/ttt-vpa/src/main/java/de/learnlib/algorithm/ttt/vpa/TTTLearnerVPA.java index 9271e4604a..b326385b1e 100644 --- a/algorithms/active/ttt-vpa/src/main/java/de/learnlib/algorithm/ttt/vpa/TTTLearnerVPA.java +++ b/algorithms/active/ttt-vpa/src/main/java/de/learnlib/algorithm/ttt/vpa/TTTLearnerVPA.java @@ -26,7 +26,6 @@ import java.util.Objects; import java.util.Set; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import com.google.common.collect.Iterables; import de.learnlib.acex.AcexAnalyzer; import de.learnlib.algorithm.observationpack.vpa.OPLearnerVPA; @@ -39,13 +38,17 @@ import de.learnlib.datastructure.discriminationtree.SplitData; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.VPAlphabet; +import net.automatalib.automaton.vpa.SEVPA; import net.automatalib.automaton.vpa.StackContents; import net.automatalib.automaton.vpa.State; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; /** + * A {@link SEVPA}-based adoption of the "TTT" algorithm. + * * @param * input symbol type */ @@ -53,7 +56,7 @@ public class TTTLearnerVPA extends OPLearnerVPA { private final BlockList blockList = new BlockList<>(); - @GenerateBuilder + @GenerateBuilder(defaults = BuilderDefaults.class) public TTTLearnerVPA(VPAlphabet alphabet, DFAMembershipOracle oracle, AcexAnalyzer analyzer) { super(alphabet, oracle, analyzer); } diff --git a/algorithms/active/ttt/pom.xml b/algorithms/active/ttt/pom.xml index 244d5cde96..63a023953c 100644 --- a/algorithms/active/ttt/pom.xml +++ b/algorithms/active/ttt/pom.xml @@ -87,8 +87,8 @@ limitations under the License. - com.github.misberner.buildergen - buildergen + de.learnlib.tooling + annotations diff --git a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java index adabdc9e8f..09eaace879 100644 --- a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java +++ b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java @@ -42,7 +42,6 @@ import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.fsa.DFA; import net.automatalib.common.smartcollection.ElementReference; import net.automatalib.common.smartcollection.UnorderedCollection; import net.automatalib.word.Word; @@ -51,7 +50,7 @@ import org.slf4j.LoggerFactory; /** - * The TTT learning algorithm for {@link DFA}. + * The TTT learning algorithm for generic automata. * * @param * input symbol type diff --git a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/dfa/TTTLearnerDFA.java b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/dfa/TTTLearnerDFA.java index 539f8a23cb..11508238d4 100644 --- a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/dfa/TTTLearnerDFA.java +++ b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/dfa/TTTLearnerDFA.java @@ -17,7 +17,6 @@ import java.util.function.Supplier; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.acex.AcexAnalyzer; import de.learnlib.acex.OutInconsPrefixTransformAcex; import de.learnlib.algorithm.LearningAlgorithm.DFALearner; @@ -28,10 +27,17 @@ import de.learnlib.algorithm.ttt.base.TTTState; import de.learnlib.algorithm.ttt.base.TTTTransition; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; import net.automatalib.word.Word; +/** + * A {@link DFA}-based specialization of {@link AbstractTTTLearner}. + * + * @param + * input symbol type + */ public class TTTLearnerDFA extends AbstractTTTLearner, I, Boolean> implements DFALearner { @GenerateBuilder(defaults = AbstractTTTLearner.BuilderDefaults.class) diff --git a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/mealy/TTTLearnerMealy.java b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/mealy/TTTLearnerMealy.java index 379c490152..89cba1dd7d 100644 --- a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/mealy/TTTLearnerMealy.java +++ b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/mealy/TTTLearnerMealy.java @@ -15,7 +15,6 @@ */ package de.learnlib.algorithm.ttt.mealy; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.acex.AcexAnalyzer; import de.learnlib.acex.MealyOutInconsPrefixTransformAcex; import de.learnlib.acex.OutInconsPrefixTransformAcex; @@ -28,12 +27,21 @@ import de.learnlib.algorithm.ttt.base.TTTTransition; import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import de.learnlib.util.mealy.MealyUtil; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; import net.automatalib.word.WordBuilder; +/** + * A {@link MealyMachine}-based specialization of {@link AbstractTTTLearner}. + * + * @param + * input symbol type + * @param + * output symbols type + */ public class TTTLearnerMealy extends AbstractTTTLearner, I, Word> implements LearningAlgorithm.MealyLearner { diff --git a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/moore/TTTLearnerMoore.java b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/moore/TTTLearnerMoore.java index 1cc230687b..786e1b37df 100644 --- a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/moore/TTTLearnerMoore.java +++ b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/moore/TTTLearnerMoore.java @@ -15,7 +15,6 @@ */ package de.learnlib.algorithm.ttt.moore; -import com.github.misberner.buildergen.annotations.GenerateBuilder; import de.learnlib.acex.AcexAnalyzer; import de.learnlib.acex.MooreOutInconsPrefixTransformAcex; import de.learnlib.acex.OutInconsPrefixTransformAcex; @@ -28,6 +27,7 @@ import de.learnlib.algorithm.ttt.base.TTTTransition; import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; import de.learnlib.util.moore.MooreUtil; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MooreMachine; @@ -35,7 +35,7 @@ import net.automatalib.word.WordBuilder; /** - * A {@link MooreMachine}-based specialization of the TTT learner. + * A {@link MooreMachine}-based specialization of {@link AbstractTTTLearner}. * * @param * input symbol type diff --git a/algorithms/passive/rpni-edsm/pom.xml b/algorithms/passive/rpni-edsm/pom.xml index 548e848ce4..b534037b9f 100644 --- a/algorithms/passive/rpni-edsm/pom.xml +++ b/algorithms/passive/rpni-edsm/pom.xml @@ -76,12 +76,6 @@ limitations under the License. automata-core - - - com.github.misberner.buildergen - buildergen - - de.learnlib.testsupport diff --git a/algorithms/passive/rpni-mdl/pom.xml b/algorithms/passive/rpni-mdl/pom.xml index 882795ca8b..ef720d3413 100644 --- a/algorithms/passive/rpni-mdl/pom.xml +++ b/algorithms/passive/rpni-mdl/pom.xml @@ -71,12 +71,6 @@ limitations under the License. automata-core - - - com.github.misberner.buildergen - buildergen - - de.learnlib.testsupport diff --git a/algorithms/passive/rpni/pom.xml b/algorithms/passive/rpni/pom.xml index 1ab6168f73..9e2786dcc6 100644 --- a/algorithms/passive/rpni/pom.xml +++ b/algorithms/passive/rpni/pom.xml @@ -63,12 +63,6 @@ limitations under the License. checker-qual - - - com.github.misberner.buildergen - buildergen - - de.learnlib.testsupport diff --git a/build-tools/.gitignore b/build-config/.gitignore similarity index 100% rename from build-tools/.gitignore rename to build-config/.gitignore diff --git a/build-tools/automatalib-learnlib-intellij-format.xml b/build-config/automatalib-learnlib-intellij-format.xml similarity index 100% rename from build-tools/automatalib-learnlib-intellij-format.xml rename to build-config/automatalib-learnlib-intellij-format.xml diff --git a/build-tools/generate-module-overview.py b/build-config/generate-module-overview.py similarity index 100% rename from build-tools/generate-module-overview.py rename to build-config/generate-module-overview.py diff --git a/build-tools/build-config/pom.xml b/build-config/pom.xml similarity index 88% rename from build-tools/build-config/pom.xml rename to build-config/pom.xml index ca776dee22..479ea2b601 100644 --- a/build-tools/build-config/pom.xml +++ b/build-config/pom.xml @@ -19,14 +19,14 @@ limitations under the License. 4.0.0 - de.learnlib.tooling - learnlib-build-tools-parent + de.learnlib + learnlib-parent 0.18.0-SNAPSHOT ../pom.xml learnlib-build-config - LearnLib :: Build Configs + LearnLib :: Build Config Configs and other resources required for building LearnLib diff --git a/build-tools/build-config/src/main/resources/automatalib-learnlib-checkstyle.xml b/build-config/src/main/resources/automatalib-learnlib-checkstyle.xml similarity index 100% rename from build-tools/build-config/src/main/resources/automatalib-learnlib-checkstyle.xml rename to build-config/src/main/resources/automatalib-learnlib-checkstyle.xml diff --git a/build-tools/build-config/src/main/resources/learnlib-checkstyle-suppressions.xml b/build-config/src/main/resources/learnlib-checkstyle-suppressions.xml similarity index 100% rename from build-tools/build-config/src/main/resources/learnlib-checkstyle-suppressions.xml rename to build-config/src/main/resources/learnlib-checkstyle-suppressions.xml diff --git a/build-tools/build-config/src/main/resources/learnlib-pmd-ruleset.xml b/build-config/src/main/resources/learnlib-pmd-ruleset.xml similarity index 100% rename from build-tools/build-config/src/main/resources/learnlib-pmd-ruleset.xml rename to build-config/src/main/resources/learnlib-pmd-ruleset.xml diff --git a/build-tools/build-config/src/main/resources/learnlib-spotbugs-exclusions.xml b/build-config/src/main/resources/learnlib-spotbugs-exclusions.xml similarity index 100% rename from build-tools/build-config/src/main/resources/learnlib-spotbugs-exclusions.xml rename to build-config/src/main/resources/learnlib-spotbugs-exclusions.xml diff --git a/build-tools/build-config/src/main/resources/license-header-java.txt b/build-config/src/main/resources/license-header-java.txt similarity index 100% rename from build-tools/build-config/src/main/resources/license-header-java.txt rename to build-config/src/main/resources/license-header-java.txt diff --git a/build-tools/build-config/src/main/resources/license-header-xml.txt b/build-config/src/main/resources/license-header-xml.txt similarity index 100% rename from build-tools/build-config/src/main/resources/license-header-xml.txt rename to build-config/src/main/resources/license-header-xml.txt diff --git a/build-parent/pom.xml b/build-parent/pom.xml index 16e3ca4ef4..8e231fafdf 100644 --- a/build-parent/pom.xml +++ b/build-parent/pom.xml @@ -37,11 +37,15 @@ limitations under the License. - org.jacoco jacoco-maven-plugin + **/ADTLearnerBuilder.class @@ -55,6 +59,9 @@ limitations under the License. **/RivestSchapire*Builder.class **/TTTLearner*Builder.class + + de/learnlib/filter/reuse/**/Reuse*Builder.class + de/learnlib/filter/statistic/**/DFA*.class de/learnlib/filter/statistic/**/Mealy*.class @@ -89,7 +96,7 @@ limitations under the License. - de.learnlib.tooling + de.learnlib learnlib-build-config ${project.version} @@ -105,7 +112,7 @@ limitations under the License. - de.learnlib.tooling + de.learnlib learnlib-build-config ${project.version} @@ -128,7 +135,7 @@ limitations under the License. ${checkstyle.version} - de.learnlib.tooling + de.learnlib learnlib-build-config ${project.version} diff --git a/build-tools/annotation-processor/pom.xml b/build-tools/annotation-processor/pom.xml deleted file mode 100644 index a2aa686aad..0000000000 --- a/build-tools/annotation-processor/pom.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - 4.0.0 - - - de.learnlib - learnlib-build-parent - 0.18.0-SNAPSHOT - ../../build-parent/pom.xml - - - de.learnlib.tooling - learnlib-annotation-processor - - LearnLib :: Annotation Processor - Annotations and processors for the LearnLib build process - - - - - com.github.misberner.ap-commons - ap-commons - - - - com.squareup - javapoet - - - - - - - - org.jacoco - jacoco-maven-plugin - - true - - - - org.apache.maven.plugins - maven-compiler-plugin - - - default-compile - compile - - compile - - - none - - - - - - - - - - - cf - - - org.checkerframework - checker-qual - - - - - diff --git a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/package-info.java b/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/package-info.java deleted file mode 100644 index 8ff3fd3da8..0000000000 --- a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (including sub-packages) contains utility code for the build process of LearnLib. - */ -package de.learnlib.buildtool; diff --git a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/GenerateRefinement.java b/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/GenerateRefinement.java deleted file mode 100644 index 1ae770859b..0000000000 --- a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/GenerateRefinement.java +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package de.learnlib.buildtool.refinement.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Repeatable; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Annotation to indicate that a subclass with the specified configuration should be generated. Currently only supports - * narrowing type parameters/constructor parameters/interfaces. Delegates to super constructors. - */ -@Repeatable(GenerateRefinements.class) -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.TYPE) -public @interface GenerateRefinement { - - /** - * The name of the to-be-generated refinement. - * - * @return the name of the to-be-generated refinement - */ - String name(); - - /** - * The type variables the refinement should have. - * - * @return the type variables the refinement should have - */ - String[] generics() default {}; - - /** - * The values for the generics of the parent (i.e. the class annotated by {@code this} annotation) class. - * - * @return the values for the generics of the parent class - */ - Generic[] parentGenerics() default {}; - - /** - * A mapping of specializations of parameter types for the refinement's constructor parameters. - * - * @return a mapping of specializations of parameter types for the refinement's constructor parameters - */ - Map[] parameterMapping() default {}; - - /** - * An array of additional interfaces the refinement should implement. - * - * @return an array of additional interfaces the refinement should implement - */ - Interface[] interfaces() default {}; - -} diff --git a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/GenerateRefinements.java b/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/GenerateRefinements.java deleted file mode 100644 index 6075eafe4a..0000000000 --- a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/GenerateRefinements.java +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package de.learnlib.buildtool.refinement.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Repeatable; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Container annotation used in {@link GenerateRefinement}s {@link Repeatable} configuration. - */ -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.TYPE) -public @interface GenerateRefinements { - - GenerateRefinement[] value() default {}; - -} diff --git a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Generic.java b/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Generic.java deleted file mode 100644 index 1287272010..0000000000 --- a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Generic.java +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package de.learnlib.buildtool.refinement.annotation; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Definition of a generic parameter. - */ -@Retention(RetentionPolicy.SOURCE) -@Target({}) -public @interface Generic { - - /** - * A literal representation of a type parameter (e.g. defined in {@link GenerateRefinement#generics()}). - * - * @return a literal representation of a type parameter - */ - String value() default ""; - - /** - * A referential representation of a type parameter. - * - * @return a referential representation of a type parameter - */ - Class clazz() default Void.class; - - /** - * Potential nested type parameters of the referenced (cf. {@link #clazz()}) referential type parameter. - * - * @return potential nested type parameters of the referenced referential type parameter - */ - String[] generics() default {}; - -} diff --git a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Interface.java b/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Interface.java deleted file mode 100644 index 186b24a7a4..0000000000 --- a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Interface.java +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package de.learnlib.buildtool.refinement.annotation; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Definition of an additional inferface. - */ -@Retention(RetentionPolicy.SOURCE) -@Target({}) -public @interface Interface { - - /** - * A reference to the interface. - * - * @return a reference to the interface - */ - Class clazz(); - - /** - * Potential nested type parameters of the referenced (cf. {@link #clazz()}) interface. - * - * @return potential nested type parameters of the referenced interface - */ - String[] generics() default {}; - -} diff --git a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Map.java b/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Map.java deleted file mode 100644 index e13457983a..0000000000 --- a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/annotation/Map.java +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package de.learnlib.buildtool.refinement.annotation; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * A refinement mapping of (constructor) parameters for the to-be-generated refinement. - */ -@Retention(RetentionPolicy.SOURCE) -@Target({}) -public @interface Map { - - /** - * The type of input parameter that if matched (equality) should be replaced. - * - * @return the type of input parameter that if matched should be replaced - */ - Class from(); - - /** - * The replacement type for matched parameters. - * - * @return the replacement type for matched parameters - */ - Class to(); - - /** - * Potential nested type parameters of the replacement (cf. {@link #to()}) type. If the replacement type has inner - * type variables use {@link #withComplexGenerics()}. - * - * @return potential nested type parameters of the replacement type - */ - String[] withGenerics() default {}; - - /** - * Potential nested type parameters of the replacement (cf. {@link #to()}) type that may contain inner type - * variables themselves. - * - * @return potential nested type parameters of the replacement type - */ - Generic[] withComplexGenerics() default {}; - -} diff --git a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/processor/RefinementProcessor.java b/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/processor/RefinementProcessor.java deleted file mode 100644 index 06e9384c6d..0000000000 --- a/build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/processor/RefinementProcessor.java +++ /dev/null @@ -1,359 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package de.learnlib.buildtool.refinement.processor; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.StringJoiner; -import java.util.function.Function; - -import javax.annotation.processing.AbstractProcessor; -import javax.annotation.processing.RoundEnvironment; -import javax.annotation.processing.SupportedSourceVersion; -import javax.lang.model.SourceVersion; -import javax.lang.model.element.AnnotationMirror; -import javax.lang.model.element.AnnotationValue; -import javax.lang.model.element.Element; -import javax.lang.model.element.ElementKind; -import javax.lang.model.element.ExecutableElement; -import javax.lang.model.element.Modifier; -import javax.lang.model.element.TypeElement; -import javax.lang.model.type.ArrayType; -import javax.lang.model.type.DeclaredType; -import javax.lang.model.type.MirroredTypeException; -import javax.lang.model.type.TypeKind; -import javax.lang.model.type.TypeMirror; -import javax.lang.model.type.WildcardType; -import javax.tools.Diagnostic.Kind; - -import com.github.misberner.apcommons.util.ElementUtils; -import com.github.misberner.apcommons.util.annotations.AnnotationUtils; -import com.github.misberner.apcommons.util.methods.MethodUtils; -import com.github.misberner.apcommons.util.methods.ParameterInfo; -import com.github.misberner.apcommons.util.types.TypeUtils; -import com.squareup.javapoet.ArrayTypeName; -import com.squareup.javapoet.ClassName; -import com.squareup.javapoet.CodeBlock; -import com.squareup.javapoet.JavaFile; -import com.squareup.javapoet.MethodSpec; -import com.squareup.javapoet.ParameterizedTypeName; -import com.squareup.javapoet.TypeName; -import com.squareup.javapoet.TypeSpec; -import com.squareup.javapoet.TypeVariableName; -import com.squareup.javapoet.WildcardTypeName; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinements; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; - -@SupportedSourceVersion(SourceVersion.RELEASE_8) -@SuppressWarnings("nullness") -public class RefinementProcessor extends AbstractProcessor { - - @Override - public Set getSupportedAnnotationTypes() { - return new HashSet<>(Arrays.asList(GenerateRefinement.class.getName(), GenerateRefinements.class.getName())); - } - - @Override - public boolean process(Set annotations, RoundEnvironment roundEnv) { - - final Set elements = new HashSet<>(); - elements.addAll(roundEnv.getElementsAnnotatedWith(GenerateRefinements.class)); - elements.addAll(roundEnv.getElementsAnnotatedWith(GenerateRefinement.class)); - - for (Element elem : elements) { - - validateAnnotation(elem); - - final GenerateRefinement[] refinements; - final GenerateRefinements generateRefinements = elem.getAnnotation(GenerateRefinements.class); - - if (generateRefinements != null) { - refinements = generateRefinements.value(); - } else { - refinements = new GenerateRefinement[] {elem.getAnnotation(GenerateRefinement.class)}; - } - - int idx = 0; - - for (GenerateRefinement annotation : refinements) { - - final TypeElement annotatedClass = (TypeElement) elem; - - final TypeSpec.Builder builder = createClass(annotatedClass, annotation); - addGenerics(builder, annotation); - addSuperClass(builder, annotatedClass, annotation); - addInterfaces(builder, annotation); - addConstructors(builder, annotatedClass, annotation, idx); - - try { - JavaFile.builder(ElementUtils.getPackageName(elem), builder.build()) - .addFileComment("This class has been generated by $L.\n" + - "Do not edit this class, changes will be overridden.", getClass().getName()) - .build() - .writeTo(super.processingEnv.getFiler()); - } catch (IOException e) { - error("Could not writer source: " + e.getMessage()); - } - - idx++; - } - } - return true; - } - - private void validateAnnotation(Element element) { - if (element.getKind() != ElementKind.CLASS) { - error("Annotation " + GenerateRefinement.class + " is only supported on class level"); - throw new IllegalArgumentException(); - } - } - - private TypeSpec.Builder createClass(TypeElement annotatedClass, GenerateRefinement annotation) { - return TypeSpec.classBuilder(annotation.name()) - .addModifiers(Modifier.PUBLIC) - .addJavadoc("This is an auto-generated refinement. See the {@link $T original class}.\n", - processingEnv.getTypeUtils().erasure(annotatedClass.asType())); - } - - private void addGenerics(TypeSpec.Builder builder, GenerateRefinement annotation) { - for (String typeParameter : annotation.generics()) { - builder.addTypeVariable(TypeVariableName.get(typeParameter)); - } - } - - private void addSuperClass(TypeSpec.Builder builder, TypeElement annotatedClass, GenerateRefinement annotation) { - - final List generics = new ArrayList<>(annotation.parentGenerics().length); - for (Generic generic : annotation.parentGenerics()) { - generics.add(extractGeneric(generic)); - } - - builder.superclass(ParameterizedTypeName.get(ClassName.get(annotatedClass), generics.toArray(new TypeName[0]))); - } - - private void addInterfaces(TypeSpec.Builder builder, GenerateRefinement annotation) { - - for (Interface inter : annotation.interfaces()) { - - final ClassName className = extractClass(inter, Interface::clazz); - - final List generics = new ArrayList<>(annotation.interfaces().length); - for (String generic : inter.generics()) { - generics.add(TypeVariableName.get(generic)); - } - - builder.addSuperinterface(ParameterizedTypeName.get(className, generics.toArray(new TypeName[0]))); - } - } - - private void addConstructors(TypeSpec.Builder builder, - TypeElement annotatedClass, - GenerateRefinement annotation, - int idx) { - - final AnnotationMirror mirror; - final AnnotationMirror generateRefinementsMirror = - AnnotationUtils.findAnnotationMirror(annotatedClass, GenerateRefinements.class); - - if (generateRefinementsMirror != null) { - final List values = find(generateRefinementsMirror, "value"); - mirror = (AnnotationMirror) values.get(idx).getValue(); - } else { - mirror = AnnotationUtils.findAnnotationMirror(annotatedClass, GenerateRefinement.class); - } - - final List parameterMapping = find(mirror, "parameterMapping"); - - for (ExecutableElement constructor : TypeUtils.getConstructors(annotatedClass)) { - - final MethodSpec.Builder mBuilder = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC); - - final StringJoiner javadocJoiner = new StringJoiner(", ", - "This is an auto-generated constructor. See the {@link $T#$T(", - ") original constructor}.\n"); - - final int numOfConstructorParams = constructor.getParameters().size(); - final List parameterNames = new ArrayList<>(numOfConstructorParams); - final List javadocTypes = new ArrayList<>(numOfConstructorParams + 2); - - // references to # - javadocTypes.add(processingEnv.getTypeUtils().erasure(annotatedClass.asType())); - javadocTypes.add(processingEnv.getTypeUtils().erasure(annotatedClass.asType())); - - for (ParameterInfo info : MethodUtils.getParameterInfos(constructor)) { - javadocJoiner.add("$T"); - javadocTypes.add(processingEnv.getTypeUtils().erasure(info.getType())); - parameterNames.add(info.getName()); - - if (info.isVarArgs()) { - mBuilder.varargs(true); - mBuilder.addAnnotation(SafeVarargs.class); - } - - final TypeName typeName = buildTypeName(annotation, info.getType(), parameterMapping, info.isVarArgs()); - - mBuilder.addParameter(typeName, info.getName()); - } - - final StringJoiner sj = new StringJoiner(", ", "super(", ")"); - parameterNames.forEach(sj::add); - - mBuilder.addStatement(CodeBlock.of(sj.toString(), parameterNames.toArray())); - mBuilder.addJavadoc(javadocJoiner.toString(), javadocTypes.toArray()); - builder.addMethod(mBuilder.build()); - } - } - - private TypeName buildTypeName(GenerateRefinement annotation, - TypeMirror typeMirror, - List parameterMapping, - boolean isVarArgs) { - - final Map[] parametersAnn = annotation.parameterMapping(); - final boolean isWildcard = typeMirror.getKind() == TypeKind.WILDCARD; - final TypeMirror typeToCompare; - - if (isVarArgs && typeMirror.getKind() == TypeKind.ARRAY) { - typeToCompare = ((ArrayType) typeMirror).getComponentType(); - } else { - typeToCompare = typeMirror; - } - - ClassName replacementClass = null; - int i = 0; - for (AnnotationValue parameter : parameterMapping) { - AnnotationMirror parameterMirror = (AnnotationMirror) parameter.getValue(); - TypeMirror fromAttribute = find(parameterMirror, "from"); - if (processingEnv.getTypeUtils() - .isSameType(processingEnv.getTypeUtils().erasure(typeToCompare), fromAttribute)) { - final TypeMirror toAttribute = find(parameterMirror, "to"); - replacementClass = - ClassName.get(this.processingEnv.getElementUtils().getTypeElement(toAttribute.toString())); - break; - } - i++; - } - - if (replacementClass != null) { - final Map map = parametersAnn[i]; - final String[] gens = map.withGenerics(); - final Generic[] cgens = map.withComplexGenerics(); - - final List generics = new ArrayList<>(gens.length + cgens.length); - - for (String generic : gens) { - generics.add(TypeVariableName.get(generic)); - } - for (Generic generic : cgens) { - generics.add(extractGeneric(generic)); - } - - final ParameterizedTypeName parameterizedTypeName = - ParameterizedTypeName.get(replacementClass, generics.toArray(new TypeName[0])); - final TypeName typeName; - - if (isWildcard) { - if (((WildcardType) typeMirror).getExtendsBound() != null) { - typeName = WildcardTypeName.subtypeOf(parameterizedTypeName); - } else { - typeName = WildcardTypeName.supertypeOf(parameterizedTypeName); - } - } else { - typeName = parameterizedTypeName; - } - - if (isVarArgs) { - return ArrayTypeName.of(typeName); - } - - return typeName; - } else { // no replacement - - if (typeMirror.getKind() == TypeKind.DECLARED) { - final DeclaredType declaredType = (DeclaredType) typeMirror; - - if (declaredType.getTypeArguments().isEmpty()) { - return TypeName.get(typeMirror); - } - - final List genericTypeNames = new ArrayList<>(declaredType.getTypeArguments().size()); - - for (TypeMirror t : declaredType.getTypeArguments()) { - genericTypeNames.add(buildTypeName(annotation, t, parameterMapping, false)); - } - - return ParameterizedTypeName.get(ClassName.get(this.processingEnv.getElementUtils() - .getTypeElement(declaredType.asElement() - .toString())), - genericTypeNames.toArray(new TypeName[0])); - } - - return TypeName.get(typeMirror); - } - } - - private TypeName extractGeneric(Generic annotation) { - - final ClassName className = extractClass(annotation, Generic::clazz); - - if (!ClassName.get(Void.class).equals(className)) { // no default value - - if (annotation.generics().length > 0) { - final List genericModels = new ArrayList<>(annotation.generics().length); - - for (String generic : annotation.generics()) { - genericModels.add(TypeVariableName.get(generic)); - } - - return ParameterizedTypeName.get(className, genericModels.toArray(new TypeName[0])); - } - - return className; - } else if (!annotation.value().isEmpty()) { - return TypeVariableName.get(annotation.value()); - } else { - throw new IllegalArgumentException(); - } - } - - private ClassName extractClass(T obj, Function> extractor) { - try { - final Class clazz = extractor.apply(obj); - return ClassName.get(clazz); - } catch (MirroredTypeException mte) { - DeclaredType classTypeMirror = (DeclaredType) mte.getTypeMirror(); - TypeElement classTypeElement = (TypeElement) classTypeMirror.asElement(); - return ClassName.get(classTypeElement); - } - } - - private void error(String msg) { - processingEnv.getMessager().printMessage(Kind.ERROR, msg); - } - - @SuppressWarnings("unchecked") - private T find(AnnotationMirror mirror, String name) { - return (T) AnnotationUtils.findAnnotationValue(mirror, name).getValue(); - } - -} diff --git a/build-tools/annotation-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/build-tools/annotation-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor deleted file mode 100644 index 25d35d4b34..0000000000 --- a/build-tools/annotation-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (C) 2013-2024 TU Dortmund University -# This file is part of LearnLib, http://www.learnlib.de/. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -de.learnlib.buildtool.refinement.processor.RefinementProcessor diff --git a/build-tools/pom.xml b/build-tools/pom.xml deleted file mode 100644 index a46334b28e..0000000000 --- a/build-tools/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - 4.0.0 - - - de.learnlib - learnlib-parent - 0.18.0-SNAPSHOT - ../pom.xml - - - de.learnlib.tooling - learnlib-build-tools-parent - pom - - LearnLib :: Build Tool Parent - Tools and resources required for building LearnLib - - - annotation-processor - build-config - - diff --git a/distribution/pom.xml b/distribution/pom.xml index b2eb6940c9..2b77f4f3fc 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -582,15 +582,10 @@ limitations under the License. de.learnlib:* - - com.github.misberner.buildergen - buildergen - ${buildergen.version} - de.learnlib.tooling - learnlib-annotation-processor - ${project.version} + annotations + ${build-tools.version} org.kohsuke.metainf-services diff --git a/examples/src/main/java/de/learnlib/example/Example3.java b/examples/src/main/java/de/learnlib/example/Example3.java index 4f18393ac7..4b49fbc826 100644 --- a/examples/src/main/java/de/learnlib/example/Example3.java +++ b/examples/src/main/java/de/learnlib/example/Example3.java @@ -25,7 +25,7 @@ import de.learnlib.example.Example2.BoundedStringQueue; import de.learnlib.filter.reuse.ReuseCapableOracle; import de.learnlib.filter.reuse.ReuseOracle; -import de.learnlib.filter.reuse.ReuseOracle.ReuseOracleBuilder; +import de.learnlib.filter.reuse.ReuseOracleBuilder; import de.learnlib.filter.reuse.tree.SystemStateHandler; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.query.Query; diff --git a/filters/reuse/pom.xml b/filters/reuse/pom.xml index becca774e2..de995490c9 100644 --- a/filters/reuse/pom.xml +++ b/filters/reuse/pom.xml @@ -48,6 +48,12 @@ limitations under the License. checker-qual + + + de.learnlib.tooling + annotations + + de.learnlib diff --git a/filters/reuse/src/main/java/de/learnlib/filter/reuse/BuilderDefaults.java b/filters/reuse/src/main/java/de/learnlib/filter/reuse/BuilderDefaults.java new file mode 100644 index 0000000000..7b7ec517df --- /dev/null +++ b/filters/reuse/src/main/java/de/learnlib/filter/reuse/BuilderDefaults.java @@ -0,0 +1,62 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package de.learnlib.filter.reuse; + +import java.util.Collections; +import java.util.Set; + +import de.learnlib.filter.reuse.tree.BoundedDeque.AccessPolicy; +import de.learnlib.filter.reuse.tree.BoundedDeque.EvictPolicy; +import de.learnlib.filter.reuse.tree.ReuseTreeBuilder; +import de.learnlib.filter.reuse.tree.SystemStateHandler; + +/** + * Default values for {@link ReuseTreeBuilder} and {@link ReuseOracleBuilder}. + */ +public final class BuilderDefaults { + + private BuilderDefaults() { + // prevent instantiation + } + + public static boolean enabledSystemStateInvalidation() { + return true; + } + + public static SystemStateHandler systemStateHandler() { + return state -> {}; + } + + public static Set invariantInputs() { + return Collections.emptySet(); + } + + public static Set failureOutputs() { + return Collections.emptySet(); + } + + public static int maxSystemStates() { + return -1; + } + + public static AccessPolicy accessPolicy() { + return AccessPolicy.LIFO; + } + + public static EvictPolicy evictPolicy() { + return EvictPolicy.EVICT_OLDEST; + } +} diff --git a/filters/reuse/src/main/java/de/learnlib/filter/reuse/ReuseOracle.java b/filters/reuse/src/main/java/de/learnlib/filter/reuse/ReuseOracle.java index 00cdb467ba..c1130d13c8 100644 --- a/filters/reuse/src/main/java/de/learnlib/filter/reuse/ReuseOracle.java +++ b/filters/reuse/src/main/java/de/learnlib/filter/reuse/ReuseOracle.java @@ -27,9 +27,10 @@ import de.learnlib.filter.reuse.tree.ReuseNode; import de.learnlib.filter.reuse.tree.ReuseNode.NodeResult; import de.learnlib.filter.reuse.tree.ReuseTree; -import de.learnlib.filter.reuse.tree.ReuseTree.ReuseTreeBuilder; import de.learnlib.filter.reuse.tree.SystemStateHandler; import de.learnlib.oracle.SingleQueryOracle.SingleQueryOracleMealy; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; +import de.learnlib.tooling.annotation.builder.Param; import net.automatalib.alphabet.Alphabet; import net.automatalib.word.Word; import net.automatalib.word.WordBuilder; @@ -51,11 +52,11 @@ * ReuseOracleBuilder#withInvariantInputs(Set)}). * * @param - * system state class + * system state type * @param - * input symbol class + * input symbol type * @param - * output symbol class + * output symbol type */ public final class ReuseOracle implements SingleQueryOracleMealy { @@ -66,16 +67,28 @@ public final class ReuseOracle implements SingleQueryOracleMealy /** * Default constructor. */ - ReuseOracle(ReuseOracleBuilder builder) { - this.executableOracles = ThreadLocal.withInitial(builder.oracleSupplier); - this.tree = new ReuseTreeBuilder(builder.alphabet).withSystemStateHandler(builder.systemStateHandler) - .withFailureOutputs(builder.failureOutputSymbols) - .withInvariantInputs(builder.invariantInputSymbols) - .withEnabledSystemstateInvalidation(builder.invalidateSystemStates) - .withMaxSystemStates(builder.maxSystemStates) - .withAccessPolicy(builder.accessPolicy) - .withEvictPolicy(builder.evictPolicy) - .build(); + @GenerateBuilder(defaults = BuilderDefaults.class, + getterPrefix = GenerateBuilder.SUPPRESS, + setterPrefix = GenerateBuilder.SUPPRESS, + createName = "build") + public ReuseOracle(@Param(requiredOnInstantiation = true) Alphabet alphabet, + @Param(requiredOnInstantiation = true) Supplier> oracleSupplier, + boolean enabledSystemStateInvalidation, + SystemStateHandler systemStateHandler, + Set invariantInputs, + Set failureOutputs, + int maxSystemStates, + AccessPolicy accessPolicy, + EvictPolicy evictPolicy) { + this.executableOracles = ThreadLocal.withInitial(oracleSupplier); + this.tree = new ReuseTree<>(alphabet, + enabledSystemStateInvalidation, + systemStateHandler, + invariantInputs, + failureOutputs, + maxSystemStates, + accessPolicy, + evictPolicy); } @Override @@ -200,64 +213,4 @@ private QueryResult filterAndProcessQuery(Word query, public ReuseTree getReuseTree() { return this.tree; } - - public static class ReuseOracleBuilder { - - private final Alphabet alphabet; - private final Supplier> oracleSupplier; - - private boolean invalidateSystemStates = true; - private SystemStateHandler systemStateHandler; - private Set invariantInputSymbols; - private Set failureOutputSymbols; - private int maxSystemStates = -1; - private AccessPolicy accessPolicy = AccessPolicy.LIFO; - private EvictPolicy evictPolicy = EvictPolicy.EVICT_OLDEST; - - public ReuseOracleBuilder(Alphabet alphabet, - Supplier> oracleSupplier) { - this.alphabet = alphabet; - this.oracleSupplier = oracleSupplier; - } - - public ReuseOracleBuilder withSystemStateHandler(SystemStateHandler systemStateHandler) { - this.systemStateHandler = systemStateHandler; - return this; - } - - public ReuseOracleBuilder withEnabledSystemStateInvalidation(boolean invalidate) { - this.invalidateSystemStates = invalidate; - return this; - } - - public ReuseOracleBuilder withInvariantInputs(Set inputs) { - this.invariantInputSymbols = inputs; - return this; - } - - public ReuseOracleBuilder withFailureOutputs(Set outputs) { - this.failureOutputSymbols = outputs; - return this; - } - - public ReuseOracleBuilder withMaxSystemStates(int maxSystemStates) { - this.maxSystemStates = maxSystemStates; - return this; - } - - public ReuseOracleBuilder withAccessPolicy(AccessPolicy accessPolicy) { - this.accessPolicy = accessPolicy; - return this; - } - - public ReuseOracleBuilder withEvictPolicy(EvictPolicy evictPolicy) { - this.evictPolicy = evictPolicy; - return this; - } - - public ReuseOracle build() { - return new ReuseOracle<>(this); - } - } - } diff --git a/filters/reuse/src/main/java/de/learnlib/filter/reuse/tree/ReuseTree.java b/filters/reuse/src/main/java/de/learnlib/filter/reuse/tree/ReuseTree.java index b9330fdce8..a2f3c5fa7e 100644 --- a/filters/reuse/src/main/java/de/learnlib/filter/reuse/tree/ReuseTree.java +++ b/filters/reuse/src/main/java/de/learnlib/filter/reuse/tree/ReuseTree.java @@ -24,11 +24,14 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import de.learnlib.filter.reuse.BuilderDefaults; import de.learnlib.filter.reuse.ReuseCapableOracle; import de.learnlib.filter.reuse.ReuseException; import de.learnlib.filter.reuse.ReuseOracle; import de.learnlib.filter.reuse.tree.BoundedDeque.AccessPolicy; import de.learnlib.filter.reuse.tree.BoundedDeque.EvictPolicy; +import de.learnlib.tooling.annotation.builder.GenerateBuilder; +import de.learnlib.tooling.annotation.builder.Param; import net.automatalib.alphabet.Alphabet; import net.automatalib.graph.Graph; import net.automatalib.visualization.VisualizationHelper; @@ -47,11 +50,11 @@ * ReuseTreeBuilder#withInvariantInputs(Set)} is set). * * @param - * system state class + * system state type * @param - * input symbol class + * input symbol type * @param - * output symbol class + * output symbol type */ public final class ReuseTree implements Graph<@Nullable ReuseNode, @Nullable ReuseEdge> { @@ -64,29 +67,31 @@ public final class ReuseTree implements Graph<@Nullable ReuseNode root; private final ReadWriteLock lock; - ReuseTree(ReuseTreeBuilder builder) { - this.alphabet = builder.alphabet; - this.invalidateSystemstates = builder.invalidateSystemstates; - SystemStateHandler handler = builder.systemStateHandler; - // If the specified handler is null, no action is required - if (handler == null) { - handler = state -> {}; - } - this.systemStateHandler = handler; - this.invariantInputSymbols = - (builder.invariantInputSymbols != null) ? builder.invariantInputSymbols : Collections.emptySet(); - this.failureOutputSymbols = - (builder.failureOutputSymbols != null) ? builder.failureOutputSymbols : Collections.emptySet(); - - this.maxSystemStates = builder.maxSystemStates; - this.accessPolicy = builder.accessPolicy; - this.evictPolicy = builder.evictPolicy; + @GenerateBuilder(defaults = BuilderDefaults.class, + getterPrefix = GenerateBuilder.SUPPRESS, + setterPrefix = GenerateBuilder.SUPPRESS, + createName = "build") + public ReuseTree(@Param(requiredOnInstantiation = true) Alphabet alphabet, + boolean enabledSystemStateInvalidation, + SystemStateHandler systemStateHandler, + Set invariantInputs, + Set failureOutputs, + int maxSystemStates, + AccessPolicy accessPolicy, + EvictPolicy evictPolicy) { + this.alphabet = alphabet; + this.invalidateSystemstates = enabledSystemStateInvalidation; + this.systemStateHandler = systemStateHandler; + this.invariantInputSymbols = invariantInputs; + this.failureOutputSymbols = failureOutputs; + + this.maxSystemStates = maxSystemStates; + this.accessPolicy = accessPolicy; + this.evictPolicy = evictPolicy; // local and not configurable this.alphabetSize = alphabet.size(); @@ -415,65 +420,4 @@ private void appendNodesRecursively(Collection> nodes, ReuseN public VisualizationHelper<@Nullable ReuseNode, @Nullable ReuseEdge> getVisualizationHelper() { return new ReuseTreeDotHelper<>(); } - - public static class ReuseTreeBuilder { - - // mandatory - private final Alphabet alphabet; - - // optional - private boolean invalidateSystemstates = true; - private @Nullable SystemStateHandler systemStateHandler; - private Set invariantInputSymbols; - private Set failureOutputSymbols; - private int maxSystemStates = -1; - private AccessPolicy accessPolicy = AccessPolicy.LIFO; - private EvictPolicy evictPolicy = EvictPolicy.EVICT_OLDEST; - - public ReuseTreeBuilder(Alphabet alphabet) { - this.alphabet = alphabet; - this.systemStateHandler = null; - this.invariantInputSymbols = Collections.emptySet(); - this.failureOutputSymbols = Collections.emptySet(); - } - - public ReuseTreeBuilder withSystemStateHandler(SystemStateHandler systemStateHandler) { - this.systemStateHandler = systemStateHandler; - return this; - } - - public ReuseTreeBuilder withEnabledSystemstateInvalidation(boolean invalidate) { - this.invalidateSystemstates = invalidate; - return this; - } - - public ReuseTreeBuilder withInvariantInputs(Set inputs) { - this.invariantInputSymbols = inputs; - return this; - } - - public ReuseTreeBuilder withFailureOutputs(Set outputs) { - this.failureOutputSymbols = outputs; - return this; - } - - public ReuseTreeBuilder withMaxSystemStates(int maxSystemStates) { - this.maxSystemStates = maxSystemStates; - return this; - } - - public ReuseTreeBuilder withAccessPolicy(AccessPolicy accessPolicy) { - this.accessPolicy = accessPolicy; - return this; - } - - public ReuseTreeBuilder withEvictPolicy(EvictPolicy evictPolicy) { - this.evictPolicy = evictPolicy; - return this; - } - - public ReuseTree build() { - return new ReuseTree<>(this); - } - } } diff --git a/filters/reuse/src/main/java/de/learnlib/filter/reuse/tree/SystemStateHandler.java b/filters/reuse/src/main/java/de/learnlib/filter/reuse/tree/SystemStateHandler.java index bcedd26189..535f8fcf02 100644 --- a/filters/reuse/src/main/java/de/learnlib/filter/reuse/tree/SystemStateHandler.java +++ b/filters/reuse/src/main/java/de/learnlib/filter/reuse/tree/SystemStateHandler.java @@ -15,10 +15,12 @@ */ package de.learnlib.filter.reuse.tree; +import de.learnlib.filter.reuse.ReuseOracleBuilder; + /** - * AN implementation of this interface that is set to the {@link ReuseTree} (see {@link - * de.learnlib.filter.reuse.ReuseOracle.ReuseOracleBuilder#withSystemStateHandler(SystemStateHandler)}) will be informed - * about all removed system states whenever {@link ReuseTree#disposeSystemStates()} gets called. + * An implementation of this interface that is set to the {@link ReuseTree} (see + * {@link ReuseOracleBuilder#withSystemStateHandler(SystemStateHandler)}) will be informed about all removed system + * states whenever {@link ReuseTree#disposeSystemStates()} gets called. *

* The objective of this handler is that clearing system states from the reuse tree may also be resulting in cleaning up * the SUL by e.g. perform tasks like removing persisted entities from a database. diff --git a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java index 3af0d106e3..49af1bb770 100644 --- a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java +++ b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java @@ -21,6 +21,7 @@ import de.learnlib.filter.reuse.ReuseCapableOracle; import de.learnlib.filter.reuse.ReuseCapableOracle.QueryResult; import de.learnlib.filter.reuse.ReuseOracle; +import de.learnlib.filter.reuse.ReuseOracleBuilder; import de.learnlib.filter.reuse.tree.ReuseNode.NodeResult; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; @@ -41,7 +42,7 @@ protected void setUp() { // We don't use this oracle, we directly test against the reuse tree! Alphabet alphabet = Alphabets.integers(0, 10); - reuseOracle = new ReuseOracle.ReuseOracleBuilder<>(alphabet, new NullReuseCapableFactory()).withInvariantInputs( + reuseOracle = new ReuseOracleBuilder<>(alphabet, new NullReuseCapableFactory()).withInvariantInputs( Collections.singleton(0)).build(); } diff --git a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/LearningTest.java b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/LearningTest.java index befc49496c..a6c12dccdf 100644 --- a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/LearningTest.java +++ b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/LearningTest.java @@ -23,6 +23,7 @@ import de.learnlib.algorithm.lstar.mealy.ExtensibleLStarMealyBuilder; import de.learnlib.filter.reuse.ReuseCapableOracle; import de.learnlib.filter.reuse.ReuseOracle; +import de.learnlib.filter.reuse.ReuseOracleBuilder; import de.learnlib.filter.reuse.tree.ReuseTree; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; @@ -45,8 +46,8 @@ public class LearningTest { protected void setUp() { sigma = Alphabets.integers(0, 3); - reuseOracle = new ReuseOracle.ReuseOracleBuilder<>(sigma, - new TestOracleFactory()).withFailureOutputs(Collections.singleton( + reuseOracle = new ReuseOracleBuilder<>(sigma, + new TestOracleFactory()).withFailureOutputs(Collections.singleton( "error")).withInvariantInputs(Collections.singleton(0)).build(); } diff --git a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java index 61efa2e70f..d9f94e9371 100644 --- a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java +++ b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java @@ -21,6 +21,7 @@ import de.learnlib.algorithm.lstar.mealy.ExtensibleLStarMealyBuilder; import de.learnlib.filter.reuse.ReuseCapableOracle; import de.learnlib.filter.reuse.ReuseOracle; +import de.learnlib.filter.reuse.ReuseOracleBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; import net.automatalib.word.Word; @@ -40,7 +41,7 @@ public class QuiescenceTest { @BeforeClass protected void setUp() { sigma = Alphabets.integers(0, 3); - reuseOracle = new ReuseOracle.ReuseOracleBuilder<>(sigma, new TestOracleFactory()).build(); + reuseOracle = new ReuseOracleBuilder<>(sigma, new TestOracleFactory()).build(); } @Test diff --git a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/ReuseOracleTest.java b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/ReuseOracleTest.java index 00598c4a10..4b6d08de81 100644 --- a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/ReuseOracleTest.java +++ b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/ReuseOracleTest.java @@ -20,6 +20,7 @@ import de.learnlib.filter.reuse.ReuseCapableOracle; import de.learnlib.filter.reuse.ReuseException; import de.learnlib.filter.reuse.ReuseOracle; +import de.learnlib.filter.reuse.ReuseOracleBuilder; import de.learnlib.filter.reuse.tree.ReuseNode.NodeResult; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.Alphabets; @@ -56,7 +57,7 @@ public QueryResult processQuery(Word trace) { Alphabet alphabet = Alphabets.integers(0, 10); - reuseOracle = new ReuseOracle.ReuseOracleBuilder<>(alphabet, oracleSupplier).build(); + reuseOracle = new ReuseOracleBuilder<>(alphabet, oracleSupplier).build(); } @Test diff --git a/filters/statistics/pom.xml b/filters/statistics/pom.xml index 0aea981319..62bc8426e7 100644 --- a/filters/statistics/pom.xml +++ b/filters/statistics/pom.xml @@ -37,11 +37,6 @@ limitations under the License. learnlib-api - - de.learnlib.tooling - learnlib-annotation-processor - - net.automatalib @@ -52,6 +47,12 @@ limitations under the License. automata-commons-util + + + de.learnlib.tooling + annotations + + com.google.guava diff --git a/filters/statistics/src/main/java/de/learnlib/filter/statistic/learner/RefinementCounterLearner.java b/filters/statistics/src/main/java/de/learnlib/filter/statistic/learner/RefinementCounterLearner.java index 7b58b46717..2fda6ece4b 100644 --- a/filters/statistics/src/main/java/de/learnlib/filter/statistic/learner/RefinementCounterLearner.java +++ b/filters/statistics/src/main/java/de/learnlib/filter/statistic/learner/RefinementCounterLearner.java @@ -19,16 +19,16 @@ import de.learnlib.algorithm.LearningAlgorithm.DFALearner; import de.learnlib.algorithm.LearningAlgorithm.MealyLearner; import de.learnlib.algorithm.LearningAlgorithm.MooreLearner; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.filter.statistic.Counter; import de.learnlib.query.DefaultQuery; import de.learnlib.statistic.StatisticLearner; import de.learnlib.statistic.StatisticLearner.DFAStatisticLearner; import de.learnlib.statistic.StatisticLearner.MealyStatisticLearner; import de.learnlib.statistic.StatisticLearner.MooreStatisticLearner; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.fsa.DFA; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.automaton.transducer.MooreMachine; @@ -41,37 +41,43 @@ * Experiment.getRounds(). * * @param - * the automaton type. + * automaton type * @param - * the input type. + * input symbol type * @param - * the output type. + * output domain type */ @GenerateRefinement(name = "DFARefinementCounterLearner", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = LearningAlgorithm.class, to = DFALearner.class, withGenerics = "I"), - interfaces = @Interface(clazz = DFAStatisticLearner.class, generics = "I")) + typeMappings = @Mapping(from = LearningAlgorithm.class, + to = DFALearner.class, + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAStatisticLearner.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyRefinementCounterLearner", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = LearningAlgorithm.class, + typeMappings = @Mapping(from = LearningAlgorithm.class, to = MealyLearner.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyStatisticLearner.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyStatisticLearner.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreRefinementCounterLearner", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = LearningAlgorithm.class, + typeMappings = @Mapping(from = LearningAlgorithm.class, to = MooreLearner.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreStatisticLearner.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreStatisticLearner.class, + generics = {@Generic("I"), @Generic("O")})) public class RefinementCounterLearner implements StatisticLearner { private final LearningAlgorithm learningAlgorithm; diff --git a/filters/statistics/src/main/java/de/learnlib/filter/statistic/oracle/CounterOracle.java b/filters/statistics/src/main/java/de/learnlib/filter/statistic/oracle/CounterOracle.java index 61d64a4aeb..2ba108ff79 100644 --- a/filters/statistics/src/main/java/de/learnlib/filter/statistic/oracle/CounterOracle.java +++ b/filters/statistics/src/main/java/de/learnlib/filter/statistic/oracle/CounterOracle.java @@ -18,10 +18,6 @@ import java.util.Arrays; import java.util.Collection; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.filter.statistic.Counter; import de.learnlib.filter.statistic.CounterCollection; import de.learnlib.oracle.MembershipOracle; @@ -31,6 +27,10 @@ import de.learnlib.query.Query; import de.learnlib.statistic.StatisticData; import de.learnlib.statistic.StatisticOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.word.Word; /** @@ -43,26 +43,30 @@ * output domain type */ @GenerateRefinement(name = "DFACounterOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAMembershipOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAMembershipOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyCounterOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyMembershipOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyMembershipOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreCounterOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreMembershipOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreMembershipOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class CounterOracle implements StatisticOracle { private final MembershipOracle delegate; diff --git a/filters/statistics/src/main/java/de/learnlib/filter/statistic/oracle/HistogramOracle.java b/filters/statistics/src/main/java/de/learnlib/filter/statistic/oracle/HistogramOracle.java index 3fc3050868..678423167a 100644 --- a/filters/statistics/src/main/java/de/learnlib/filter/statistic/oracle/HistogramOracle.java +++ b/filters/statistics/src/main/java/de/learnlib/filter/statistic/oracle/HistogramOracle.java @@ -17,10 +17,6 @@ import java.util.Collection; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.filter.statistic.HistogramDataSet; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; @@ -28,37 +24,45 @@ import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; import de.learnlib.query.Query; import de.learnlib.statistic.StatisticOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.word.Word; /** * Collects a histogram of passed query lengths. * * @param - * input symbol class + * input symbol type * @param - * output symbol class + * output symbol type */ @GenerateRefinement(name = "DFAHistogramOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAMembershipOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAMembershipOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyHistogramOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyMembershipOracle.class, generics = {"I", "O"})) -@GenerateRefinement(name = "MooreOutputHistogramOracle", - generics = {"I", "O"}, + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyMembershipOracle.class, + generics = {@Generic("I"), @Generic("O")})) +@GenerateRefinement(name = "MooreHistogramOracle", + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreMembershipOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreMembershipOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class HistogramOracle implements StatisticOracle { /** diff --git a/oracles/emptiness-oracles/pom.xml b/oracles/emptiness-oracles/pom.xml index ea849447fd..b7e11fad6f 100644 --- a/oracles/emptiness-oracles/pom.xml +++ b/oracles/emptiness-oracles/pom.xml @@ -25,11 +25,6 @@ learnlib-util - - de.learnlib.tooling - learnlib-annotation-processor - - org.checkerframework @@ -41,6 +36,12 @@ automata-api + + + de.learnlib.tooling + annotations + + de.learnlib.testsupport diff --git a/oracles/emptiness-oracles/src/main/java/de/learnlib/oracle/emptiness/AbstractBFEmptinessOracle.java b/oracles/emptiness-oracles/src/main/java/de/learnlib/oracle/emptiness/AbstractBFEmptinessOracle.java index 26c8c866ae..2253f7fc25 100644 --- a/oracles/emptiness-oracles/src/main/java/de/learnlib/oracle/emptiness/AbstractBFEmptinessOracle.java +++ b/oracles/emptiness-oracles/src/main/java/de/learnlib/oracle/emptiness/AbstractBFEmptinessOracle.java @@ -17,10 +17,6 @@ import java.util.Collection; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.AutomatonOracle.DFAOracle; import de.learnlib.oracle.AutomatonOracle.MealyOracle; import de.learnlib.oracle.EmptinessOracle; @@ -30,6 +26,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import de.learnlib.util.AbstractBFOracle; import net.automatalib.automaton.concept.DetOutputAutomaton; import net.automatalib.automaton.fsa.DFA; @@ -41,33 +41,35 @@ * An {@link EmptinessOracle} that tries words in a breadth-first manner. * * @param - * the automaton type + * automaton type * @param - * the input type + * input symbol type * @param - * the output type + * output domain type */ @GenerateRefinement(name = "DFABFEmptinessOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = {@Interface(clazz = DFAEmptinessOracle.class, generics = "I"), - @Interface(clazz = DFAOracle.class, generics = "I")}) + generics = @Generic("I")), + interfaces = {@Interface(clazz = DFAEmptinessOracle.class, generics = @Generic("I")), + @Interface(clazz = DFAOracle.class, generics = @Generic("I"))}) @GenerateRefinement(name = "MealyBFEmptinessOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = {@Interface(clazz = MealyEmptinessOracle.class, generics = {"I", "O"}), - @Interface(clazz = MealyOracle.class, generics = {"I", "O"})}) -abstract class AbstractBFEmptinessOracle, I, D> + generics = {@Generic("I"), @Generic("O")}), + interfaces = {@Interface(clazz = MealyEmptinessOracle.class, + generics = {@Generic("I"), @Generic("O")}), + @Interface(clazz = MealyOracle.class, generics = {@Generic("I"), @Generic("O")})}) +public abstract class AbstractBFEmptinessOracle, I, D> extends AbstractBFOracle implements EmptinessOracle { protected AbstractBFEmptinessOracle(MembershipOracle membershipOracle, double multiplier) { diff --git a/oracles/emptiness-oracles/src/main/java/de/learnlib/oracle/emptiness/LassoEmptinessOracleImpl.java b/oracles/emptiness-oracles/src/main/java/de/learnlib/oracle/emptiness/LassoEmptinessOracleImpl.java index e835046fee..a840ffa8c4 100644 --- a/oracles/emptiness-oracles/src/main/java/de/learnlib/oracle/emptiness/LassoEmptinessOracleImpl.java +++ b/oracles/emptiness-oracles/src/main/java/de/learnlib/oracle/emptiness/LassoEmptinessOracleImpl.java @@ -17,10 +17,6 @@ import java.util.Collection; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.LassoEmptinessOracle; import de.learnlib.oracle.LassoEmptinessOracle.DFALassoEmptinessOracle; import de.learnlib.oracle.LassoEmptinessOracle.MealyLassoEmptinessOracle; @@ -32,6 +28,10 @@ import de.learnlib.oracle.OmegaMembershipOracle.MealyOmegaMembershipOracle; import de.learnlib.query.DefaultQuery; import de.learnlib.query.OmegaQuery; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.concept.Output; import net.automatalib.modelchecking.Lasso; import net.automatalib.modelchecking.Lasso.DFALasso; @@ -40,33 +40,35 @@ import org.checkerframework.checker.nullness.qual.Nullable; @GenerateRefinement(name = "DFALassoEmptinessOracleImpl", - generics = {"S", "I"}, + generics = {@Generic(value = "S", desc = "state type"), + @Generic(value = "I", desc = "input symbol type")}, parentGenerics = {@Generic(clazz = DFALasso.class, generics = "I"), @Generic("S"), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = OmegaMembershipOracle.class, + typeMappings = @Mapping(from = OmegaMembershipOracle.class, to = DFAOmegaMembershipOracle.class, - withGenerics = {"S", "I"}), - interfaces = {@Interface(clazz = DFALassoEmptinessOracle.class, generics = "I"), - @Interface(clazz = DFALassoOracle.class, generics = "I")}) + generics = {@Generic("S"), @Generic("I")}), + interfaces = {@Interface(clazz = DFALassoEmptinessOracle.class, generics = @Generic("I")), + @Interface(clazz = DFALassoOracle.class, generics = @Generic("I"))}) @GenerateRefinement(name = "MealyLassoEmptinessOracleImpl", - generics = {"S", "I", "O"}, + generics = {@Generic(value = "S", desc = "state type"), + @Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyLasso.class, generics = {"I", "O"}), @Generic("S"), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = OmegaMembershipOracle.class, + typeMappings = @Mapping(from = OmegaMembershipOracle.class, to = MealyOmegaMembershipOracle.class, - withGenerics = {"S", "I", "O"}), - interfaces = {@Interface(clazz = MealyLassoEmptinessOracle.class, generics = {"I", "O"}), - @Interface(clazz = MealyLassoOracle.class, generics = {"I", "O"})}) + generics = {@Generic("S"), @Generic("I"), @Generic("O")}), + interfaces = {@Interface(clazz = MealyLassoEmptinessOracle.class, + generics = {@Generic("I"), @Generic("O")}), + @Interface(clazz = MealyLassoOracle.class, + generics = {@Generic("I"), @Generic("O")})}) public class LassoEmptinessOracleImpl, S, I, D> implements LassoEmptinessOracle, LassoOracle { - /** - * The {@link OmegaMembershipOracle} used to answer {@link OmegaQuery}s. - */ private final OmegaMembershipOracle omegaMembershipOracle; public LassoEmptinessOracleImpl(OmegaMembershipOracle omegaMembershipOracle) { diff --git a/oracles/equivalence-oracles/pom.xml b/oracles/equivalence-oracles/pom.xml index b08f75b3d3..c24767ec9a 100644 --- a/oracles/equivalence-oracles/pom.xml +++ b/oracles/equivalence-oracles/pom.xml @@ -77,7 +77,7 @@ limitations under the License. de.learnlib.tooling - learnlib-annotation-processor + annotations diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/AbstractBFInclusionOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/AbstractBFInclusionOracle.java index fbd330c8fe..73f93ecf98 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/AbstractBFInclusionOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/AbstractBFInclusionOracle.java @@ -17,10 +17,6 @@ import java.util.Collection; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.AutomatonOracle.DFAOracle; import de.learnlib.oracle.AutomatonOracle.MealyOracle; import de.learnlib.oracle.InclusionOracle; @@ -30,6 +26,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import de.learnlib.util.AbstractBFOracle; import net.automatalib.automaton.concept.DetOutputAutomaton; import net.automatalib.automaton.fsa.DFA; @@ -40,29 +40,38 @@ /** * An {@link InclusionOracle} that generates words in a breadth-first manner. * + * @param + * automaton type + * @param + * input symbol type + * @param + * output domain type + * * @see InclusionOracle * @see AbstractBFOracle */ @GenerateRefinement(name = "DFABFInclusionOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = {@Interface(clazz = DFAInclusionOracle.class, generics = "I"), - @Interface(clazz = DFAOracle.class, generics = "I")}) + generics = @Generic("I")), + interfaces = {@Interface(clazz = DFAInclusionOracle.class, generics = @Generic("I")), + @Interface(clazz = DFAOracle.class, generics = @Generic("I"))}) @GenerateRefinement(name = "MealyBFInclusionOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = {@Interface(clazz = MealyInclusionOracle.class, generics = {"I", "O"}), - @Interface(clazz = MealyOracle.class, generics = {"I", "O"})}) + generics = {@Generic("I"), @Generic("O")}), + interfaces = {@Interface(clazz = MealyInclusionOracle.class, + generics = {@Generic("I"), @Generic("O")}), + @Interface(clazz = MealyOracle.class, generics = {@Generic("I"), @Generic("O")})}) public abstract class AbstractBFInclusionOracle, I, D> extends AbstractBFOracle implements InclusionOracle { diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/CExFirstOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/CExFirstOracle.java index 493ec26ec2..1d2b21fb9b 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/CExFirstOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/CExFirstOracle.java @@ -20,10 +20,6 @@ import java.util.Collections; import java.util.List; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.BlackBoxOracle; import de.learnlib.oracle.BlackBoxOracle.DFABlackBoxOracle; import de.learnlib.oracle.BlackBoxOracle.MealyBlackBoxOracle; @@ -33,6 +29,10 @@ import de.learnlib.oracle.PropertyOracle.DFAPropertyOracle; import de.learnlib.oracle.PropertyOracle.MealyPropertyOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; import net.automatalib.automaton.transducer.MealyMachine; @@ -47,34 +47,37 @@ * This implementation may be used when refining a hypothesis is inexpensive compared to disproving propertyOracles. * * @param - * the automaton type + * automaton type * @param - * the input type + * input symbol type * @param - * the output type + * output domain type * * @see DisproveFirstOracle */ @GenerateRefinement(name = "DFACExFirstOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = PropertyOracle.class, + typeMappings = @Mapping(from = PropertyOracle.class, to = DFAPropertyOracle.class, - withGenerics = {"I", "?"}), - interfaces = {@Interface(clazz = DFABlackBoxOracle.class, generics = "I"), - @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")}) + generics = {@Generic("I"), @Generic("?")}), + interfaces = {@Interface(clazz = DFABlackBoxOracle.class, generics = @Generic("I")), + @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))}) @GenerateRefinement(name = "MealyCExFirstOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = PropertyOracle.class, + typeMappings = @Mapping(from = PropertyOracle.class, to = MealyPropertyOracle.class, - withGenerics = {"I", "O", "?"}), - interfaces = {@Interface(clazz = MealyBlackBoxOracle.class, generics = {"I", "O"}), - @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})}) + generics = {@Generic("I"), @Generic("O"), @Generic("?")}), + interfaces = {@Interface(clazz = MealyBlackBoxOracle.class, + generics = {@Generic("I"), @Generic("O")}), + @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})}) public class CExFirstOracle, I, D> implements BlackBoxOracle { private final List> propertyOracles; diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/CompleteExplorationEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/CompleteExplorationEQOracle.java index 42a64c4ad8..270531a952 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/CompleteExplorationEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/CompleteExplorationEQOracle.java @@ -19,10 +19,6 @@ import java.util.stream.Stream; import com.google.common.collect.Streams; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; @@ -30,6 +26,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; import net.automatalib.automaton.transducer.MealyMachine; @@ -47,32 +47,36 @@ * output domain type */ @GenerateRefinement(name = "DFACompleteExplorationEQOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyCompleteExplorationEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreCompleteExplorationEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class CompleteExplorationEQOracle, I, D> extends AbstractTestWordEQOracle { private final int minDepth; diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/DisproveFirstOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/DisproveFirstOracle.java index 1df11eb325..2b40636d6c 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/DisproveFirstOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/DisproveFirstOracle.java @@ -20,10 +20,6 @@ import java.util.Collections; import java.util.List; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.BlackBoxOracle; import de.learnlib.oracle.BlackBoxOracle.DFABlackBoxOracle; import de.learnlib.oracle.BlackBoxOracle.MealyBlackBoxOracle; @@ -31,6 +27,10 @@ import de.learnlib.oracle.PropertyOracle.DFAPropertyOracle; import de.learnlib.oracle.PropertyOracle.MealyPropertyOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; import net.automatalib.automaton.transducer.MealyMachine; @@ -44,32 +44,34 @@ * One may favor this implementation if refining a hypothesis is expensive compared to trying to disprove properties. * * @param - * the automaton type + * automaton type * @param - * the input type + * input symbol type * @param - * the output type + * output domain type * * @see CExFirstOracle */ @GenerateRefinement(name = "DFADisproveFirstOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = PropertyOracle.class, + typeMappings = @Mapping(from = PropertyOracle.class, to = DFAPropertyOracle.class, - withGenerics = {"I", "?"}), - interfaces = @Interface(clazz = DFABlackBoxOracle.class, generics = "I")) + generics = {@Generic("I"), @Generic("?")}), + interfaces = @Interface(clazz = DFABlackBoxOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyDisproveFirstOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = PropertyOracle.class, + typeMappings = @Mapping(from = PropertyOracle.class, to = MealyPropertyOracle.class, - withGenerics = {"I", "O", "?"}), - interfaces = @Interface(clazz = MealyBlackBoxOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O"), @Generic("?")}), + interfaces = @Interface(clazz = MealyBlackBoxOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class DisproveFirstOracle, I, D> implements BlackBoxOracle { private final List> propertyOracles; diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/EQOracleChain.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/EQOracleChain.java index bb432181bc..bb2f3d5d4a 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/EQOracleChain.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/EQOracleChain.java @@ -20,15 +20,15 @@ import java.util.Collection; import java.util.List; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.fsa.DFA; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.automaton.transducer.MooreMachine; @@ -36,32 +36,36 @@ import org.checkerframework.checker.nullness.qual.Nullable; @GenerateRefinement(name = "DFAEQOracleChain", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = EquivalenceOracle.class, + typeMappings = @Mapping(from = EquivalenceOracle.class, to = DFAEquivalenceOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyEQOracleChain", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = EquivalenceOracle.class, + typeMappings = @Mapping(from = EquivalenceOracle.class, to = MealyEquivalenceOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreEQOracleChain", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = EquivalenceOracle.class, + typeMappings = @Mapping(from = EquivalenceOracle.class, to = MooreEquivalenceOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class EQOracleChain implements EquivalenceOracle { private final List> oracles; diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracle.java index 0f26c05899..614ec3337a 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracle.java @@ -19,10 +19,6 @@ import java.util.stream.Stream; import com.google.common.collect.Streams; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; @@ -30,6 +26,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.Output; @@ -40,32 +40,36 @@ import net.automatalib.word.Word; @GenerateRefinement(name = "DFAIncrementalWMethodEQOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyIncrementalWMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreIncrementalWMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class IncrementalWMethodEQOracle & Output, I, D> extends AbstractTestWordEQOracle { diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java index 5d126671de..9fe0c16390 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java @@ -21,10 +21,6 @@ import java.util.Random; import java.util.stream.Stream; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; @@ -32,6 +28,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; @@ -64,32 +64,36 @@ * output domain type */ @GenerateRefinement(name = "DFARandomWMethodEQOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyRandomWMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreRandomWMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class RandomWMethodEQOracle & Output, I, D> extends AbstractTestWordEQOracle { diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWordsEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWordsEQOracle.java index 212de1e4cb..8e21833d8c 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWordsEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWordsEQOracle.java @@ -20,10 +20,6 @@ import java.util.Random; import java.util.stream.Stream; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; @@ -31,6 +27,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; import net.automatalib.automaton.transducer.MealyMachine; @@ -40,32 +40,36 @@ import net.automatalib.word.WordBuilder; @GenerateRefinement(name = "DFARandomWordsEQOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyRandomWordsEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreRandomWordsEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class RandomWordsEQOracle, I, D> extends AbstractTestWordEQOracle { private final Random random; diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracle.java index dea5d2da61..e57dd2c547 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracle.java @@ -21,10 +21,6 @@ import java.util.Random; import java.util.stream.Stream; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; @@ -32,6 +28,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; @@ -65,32 +65,36 @@ * output domain type */ @GenerateRefinement(name = "DFARandomWpMethodEQOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyRandomWpMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreRandomWpMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class RandomWpMethodEQOracle & Output, I, D> extends AbstractTestWordEQOracle { diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/SimulatorEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/SimulatorEQOracle.java index eb2e51469e..518b59e96d 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/SimulatorEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/SimulatorEQOracle.java @@ -17,15 +17,15 @@ import java.util.Collection; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; @@ -36,41 +36,43 @@ import org.checkerframework.checker.nullness.qual.Nullable; @GenerateRefinement(name = "DFASimulatorEQOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = UniversalDeterministicAutomaton.class, + typeMappings = @Mapping(from = UniversalDeterministicAutomaton.class, to = DFA.class, - withGenerics = {"?", "I"}), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = {@Generic("?"), @Generic("I")}), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealySimulatorEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = UniversalDeterministicAutomaton.class, + typeMappings = @Mapping(from = UniversalDeterministicAutomaton.class, to = MealyMachine.class, - withGenerics = {"?", "I", "?", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("?"), @Generic("I"), @Generic("?"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreSimulatorEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = UniversalDeterministicAutomaton.class, + typeMappings = @Mapping(from = UniversalDeterministicAutomaton.class, to = MooreMachine.class, - withGenerics = {"?", "I", "?", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) -public class SimulatorEQOracle, I, D> + generics = {@Generic("?"), @Generic("I"), @Generic("?"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) +public class SimulatorEQOracle & Output, I, D> implements EquivalenceOracle { - private final UniversalDeterministicAutomaton reference; - private final Output output; + private final A reference; - public & Output> SimulatorEQOracle(R reference) { + public SimulatorEQOracle(A reference) { this.reference = reference; - this.output = reference; } @Override @@ -81,6 +83,6 @@ public class SimulatorEQOracle(sep, output.computeOutput(sep)); + return new DefaultQuery<>(sep, reference.computeOutput(sep)); } } diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/WMethodEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/WMethodEQOracle.java index 0248542dcb..396db17987 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/WMethodEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/WMethodEQOracle.java @@ -19,10 +19,6 @@ import java.util.stream.Stream; import com.google.common.collect.Streams; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; @@ -30,6 +26,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; @@ -50,32 +50,36 @@ * output domain type */ @GenerateRefinement(name = "DFAWMethodEQOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyWMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreWMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class WMethodEQOracle & Output, I, D> extends AbstractTestWordEQOracle { diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/WpMethodEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/WpMethodEQOracle.java index 277a619312..5682e2ca90 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/WpMethodEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/WpMethodEQOracle.java @@ -19,10 +19,6 @@ import java.util.stream.Stream; import com.google.common.collect.Streams; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; @@ -30,6 +26,10 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; @@ -50,32 +50,36 @@ * output domain type */ @GenerateRefinement(name = "DFAWpMethodEQOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = DFAMembershipOracle.class, - withGenerics = "I"), - interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = "I")) + generics = @Generic("I")), + interfaces = @Interface(clazz = DFAEquivalenceOracle.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealyWpMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MealyMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MealyEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MealyEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreWpMethodEQOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic(clazz = MooreMachine.class, generics = {"?", "I", "?", "O"}), @Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = MembershipOracle.class, + typeMappings = @Mapping(from = MembershipOracle.class, to = MooreMembershipOracle.class, - withGenerics = {"I", "O"}), - interfaces = @Interface(clazz = MooreEquivalenceOracle.class, generics = {"I", "O"})) + generics = {@Generic("I"), @Generic("O")}), + interfaces = @Interface(clazz = MooreEquivalenceOracle.class, + generics = {@Generic("I"), @Generic("O")})) public class WpMethodEQOracle & Output, I, D> extends AbstractTestWordEQOracle { diff --git a/oracles/membership-oracles/pom.xml b/oracles/membership-oracles/pom.xml index d310b61878..075eda777b 100644 --- a/oracles/membership-oracles/pom.xml +++ b/oracles/membership-oracles/pom.xml @@ -41,11 +41,6 @@ limitations under the License. learnlib-util - - de.learnlib.tooling - learnlib-annotation-processor - - net.automatalib @@ -61,6 +56,12 @@ limitations under the License. checker-qual + + + de.learnlib.tooling + annotations + + de.learnlib diff --git a/oracles/membership-oracles/src/main/java/de/learnlib/oracle/membership/SimulatorOracle.java b/oracles/membership-oracles/src/main/java/de/learnlib/oracle/membership/SimulatorOracle.java index 7577d551db..e432c3c443 100644 --- a/oracles/membership-oracles/src/main/java/de/learnlib/oracle/membership/SimulatorOracle.java +++ b/oracles/membership-oracles/src/main/java/de/learnlib/oracle/membership/SimulatorOracle.java @@ -15,14 +15,14 @@ */ package de.learnlib.oracle.membership; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.SingleQueryOracle; import de.learnlib.oracle.SingleQueryOracle.SingleQueryOracleDFA; import de.learnlib.oracle.SingleQueryOracle.SingleQueryOracleMealy; import de.learnlib.oracle.SingleQueryOracle.SingleQueryOracleMoore; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.automaton.fsa.DFA; import net.automatalib.automaton.fsa.NFA; @@ -47,51 +47,67 @@ * (suffix) output domain type */ @GenerateRefinement(name = "DFASimulatorOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = SuffixOutput.class, to = DFA.class, withGenerics = {"?", "I"}), - interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = "I")) + typeMappings = @Mapping(from = SuffixOutput.class, + to = DFA.class, + generics = {@Generic("?"), @Generic("I")}), + interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = @Generic("I"))) @GenerateRefinement(name = "MealySimulatorOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = SuffixOutput.class, + typeMappings = @Mapping(from = SuffixOutput.class, to = MealyMachine.class, - withGenerics = {"?", "I", "?", "O"}), - interfaces = @Interface(clazz = SingleQueryOracleMealy.class, generics = {"I", "O"})) + generics = {@Generic("?"), @Generic("I"), @Generic("?"), @Generic("O")}), + interfaces = @Interface(clazz = SingleQueryOracleMealy.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "MooreSimulatorOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = SuffixOutput.class, + typeMappings = @Mapping(from = SuffixOutput.class, to = MooreMachine.class, - withGenerics = {"?", "I", "?", "O"}), - interfaces = @Interface(clazz = SingleQueryOracleMoore.class, generics = {"I", "O"})) + generics = {@Generic("?"), @Generic("I"), @Generic("?"), @Generic("O")}), + interfaces = @Interface(clazz = SingleQueryOracleMoore.class, + generics = {@Generic("I"), @Generic("O")})) @GenerateRefinement(name = "NFASimulatorOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = SuffixOutput.class, to = NFA.class, withGenerics = {"?", "I"}), - interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = "I")) + typeMappings = @Mapping(from = SuffixOutput.class, + to = NFA.class, + generics = {@Generic("?"), @Generic("I")}), + interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = @Generic("I"))) @GenerateRefinement(name = "SBASimulatorOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = SuffixOutput.class, to = SBA.class, withGenerics = {"?", "I"}), - interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = "I")) + typeMappings = @Mapping(from = SuffixOutput.class, + to = SBA.class, + generics = {@Generic("?"), @Generic("I")}), + interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = @Generic("I"))) @GenerateRefinement(name = "SEVPASimulatorOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = SuffixOutput.class, to = SEVPA.class, withGenerics = {"?", "I"}), - interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = "I")) + typeMappings = @Mapping(from = SuffixOutput.class, + to = SEVPA.class, + generics = {@Generic("?"), @Generic("I")}), + interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = @Generic("I"))) @GenerateRefinement(name = "SPASimulatorOracle", - generics = "I", + generics = @Generic(value = "I", desc = "input symbol type"), parentGenerics = {@Generic("I"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = SuffixOutput.class, to = SPA.class, withGenerics = {"?", "I"}), - interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = "I")) + typeMappings = @Mapping(from = SuffixOutput.class, + to = SPA.class, + generics = {@Generic("?"), @Generic("I")}), + interfaces = @Interface(clazz = SingleQueryOracleDFA.class, generics = @Generic("I"))) @GenerateRefinement(name = "SPMMSimulatorOracle", - generics = {"I", "O"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type")}, parentGenerics = {@Generic("I"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = SuffixOutput.class, + typeMappings = @Mapping(from = SuffixOutput.class, to = SPMM.class, - withGenerics = {"?", "I", "?", "O"}), - interfaces = @Interface(clazz = SingleQueryOracleMealy.class, generics = {"I", "O"})) + generics = {@Generic("?"), @Generic("I"), @Generic("?"), @Generic("O")}), + interfaces = @Interface(clazz = SingleQueryOracleMealy.class, + generics = {@Generic("I"), @Generic("O")})) public class SimulatorOracle implements SingleQueryOracle { private final SuffixOutput automaton; diff --git a/oracles/property-oracles/pom.xml b/oracles/property-oracles/pom.xml index 8d4237c876..ae3b135f21 100644 --- a/oracles/property-oracles/pom.xml +++ b/oracles/property-oracles/pom.xml @@ -21,11 +21,6 @@ learnlib-api - - de.learnlib.tooling - learnlib-annotation-processor - - net.automatalib @@ -42,6 +37,12 @@ slf4j-api + + + de.learnlib.tooling + annotations + + de.learnlib diff --git a/oracles/property-oracles/src/main/java/de/learnlib/oracle/property/PropertyOracleChain.java b/oracles/property-oracles/src/main/java/de/learnlib/oracle/property/PropertyOracleChain.java index e262d7c729..46d191258e 100644 --- a/oracles/property-oracles/src/main/java/de/learnlib/oracle/property/PropertyOracleChain.java +++ b/oracles/property-oracles/src/main/java/de/learnlib/oracle/property/PropertyOracleChain.java @@ -20,14 +20,14 @@ import java.util.Collection; import java.util.List; -import de.learnlib.buildtool.refinement.annotation.GenerateRefinement; -import de.learnlib.buildtool.refinement.annotation.Generic; -import de.learnlib.buildtool.refinement.annotation.Interface; -import de.learnlib.buildtool.refinement.annotation.Map; import de.learnlib.oracle.PropertyOracle; import de.learnlib.oracle.PropertyOracle.DFAPropertyOracle; import de.learnlib.oracle.PropertyOracle.MealyPropertyOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.tooling.annotation.refinement.GenerateRefinement; +import de.learnlib.tooling.annotation.refinement.Generic; +import de.learnlib.tooling.annotation.refinement.Interface; +import de.learnlib.tooling.annotation.refinement.Mapping; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.fsa.DFA; import net.automatalib.automaton.transducer.MealyMachine; @@ -43,34 +43,38 @@ * examples can be found more quickly (as in smaller hypothesis size and less learning queries). * * @param - * the input type. + * input symbol type * @param - * the automaton type. + * automaton type * @param

- * the property type. + * property type * @param - * the output type. + * output domain type */ @GenerateRefinement(name = "DFAPropertyOracleChain", - generics = {"I", "P"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "P", desc = "property type")}, parentGenerics = {@Generic("I"), @Generic(clazz = DFA.class, generics = {"?", "I"}), @Generic("P"), @Generic(clazz = Boolean.class)}, - parameterMapping = @Map(from = PropertyOracle.class, + typeMappings = @Mapping(from = PropertyOracle.class, to = DFAPropertyOracle.class, - withGenerics = {"I", "P"}), - interfaces = @Interface(clazz = DFAPropertyOracle.class, generics = {"I", "P"})) + generics = {@Generic("I"), @Generic("P")}), + interfaces = @Interface(clazz = DFAPropertyOracle.class, generics = {@Generic("I"), @Generic("P")})) @GenerateRefinement(name = "MealyPropertyOracleChain", - generics = {"I", "O", "P"}, + generics = {@Generic(value = "I", desc = "input symbol type"), + @Generic(value = "O", desc = "output symbol type"), + @Generic(value = "P", desc = "property type")}, parentGenerics = {@Generic("I"), @Generic(clazz = MealyMachine.class, generics = {"?", "I", "?", "O"}), @Generic("P"), @Generic(clazz = Word.class, generics = "O")}, - parameterMapping = @Map(from = PropertyOracle.class, + typeMappings = @Mapping(from = PropertyOracle.class, to = MealyPropertyOracle.class, - withGenerics = {"I", "O", "P"}), - interfaces = @Interface(clazz = MealyPropertyOracle.class, generics = {"I", "O", "P"})) + generics = {@Generic("I"), @Generic("O"), @Generic("P")}), + interfaces = @Interface(clazz = MealyPropertyOracle.class, + generics = {@Generic("I"), @Generic("O"), @Generic("P")})) public class PropertyOracleChain, @Nullable P, D> implements PropertyOracle { private P property; diff --git a/pom.xml b/pom.xml index d6180259a2..894baa0ea7 100644 --- a/pom.xml +++ b/pom.xml @@ -146,8 +146,8 @@ limitations under the License. algorithms api archetypes + build-config build-parent - build-tools commons datastructures distribution @@ -229,9 +229,8 @@ limitations under the License. 1.2.0 - 0.0.2 0.11.0 - 0.1 + 0.1 1.11.1 3.40.0 9.3 @@ -386,33 +385,20 @@ limitations under the License. ${project.version} - + de.learnlib - learnlib-build-parent + learnlib-build-config ${project.version} - pom - + - de.learnlib.tooling - learnlib-build-tools-parent + de.learnlib + learnlib-build-parent ${project.version} pom - - de.learnlib.tooling - learnlib-build-config - ${project.version} - provided - - - de.learnlib.tooling - learnlib-annotation-processor - ${project.version} - provided - @@ -653,21 +639,13 @@ limitations under the License. ${checkerframework.version} - - com.github.misberner.buildergen - buildergen - ${buildergen.version} - + de.learnlib.tooling + annotations + ${build-tools.version} provided - - com.github.misberner.ap-commons - ap-commons - ${ap-commons.version} - - com.thoughtworks.xstream xstream @@ -902,6 +880,20 @@ limitations under the License. org.apache.maven.plugins maven-compiler-plugin ${compiler-plugin.version} + + + + de.learnlib.tooling + processors + ${build-tools.version} + + + org.kohsuke.metainf-services + metainf-services + ${metainf-services.version} + + + org.codehaus.mojo From c11d5def6491166d18d9daf08098a6bac49afe36 Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Thu, 4 Jan 2024 21:21:26 +0100 Subject: [PATCH 15/88] Merge RPNI implementations (#114) --- CHANGELOG.md | 4 + README.md | 25 +++-- algorithms/passive/pom.xml | 2 - algorithms/passive/rpni-edsm/pom.xml | 101 ------------------ algorithms/passive/rpni-mdl/pom.xml | 90 ---------------- algorithms/passive/rpni/pom.xml | 25 ++++- .../algorithm/rpni/BlueFringeEDSMDFA.java | 0 .../algorithm/rpni/BlueFringeMDLDFA.java | 0 .../de/learnlib/algorithm/rpni/EDSMUtil.java | 0 .../de/learnlib/algorithm/rpni/MDLUtil.java | 0 .../learnlib/algorithm/rpni/package-info.java | 10 +- .../algorithm/rpni/EDSMScoreTest.java | 0 .../learnlib/algorithm/rpni/MDLScoreTest.java | 0 .../learnlib/algorithm/rpni/it/EdsmDfaIT.java | 0 .../learnlib/algorithm/rpni/it/MdlDfaIT.java | 0 distribution/pom.xml | 24 ----- pom.xml | 10 -- 17 files changed, 44 insertions(+), 247 deletions(-) delete mode 100644 algorithms/passive/rpni-edsm/pom.xml delete mode 100644 algorithms/passive/rpni-mdl/pom.xml rename algorithms/passive/{rpni-edsm => rpni}/src/main/java/de/learnlib/algorithm/rpni/BlueFringeEDSMDFA.java (100%) rename algorithms/passive/{rpni-mdl => rpni}/src/main/java/de/learnlib/algorithm/rpni/BlueFringeMDLDFA.java (100%) rename algorithms/passive/{rpni-edsm => rpni}/src/main/java/de/learnlib/algorithm/rpni/EDSMUtil.java (100%) rename algorithms/passive/{rpni-mdl => rpni}/src/main/java/de/learnlib/algorithm/rpni/MDLUtil.java (100%) rename algorithms/passive/{rpni-edsm => rpni}/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java (100%) rename algorithms/passive/{rpni-mdl => rpni}/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java (100%) rename algorithms/passive/{rpni-edsm => rpni}/src/test/java/de/learnlib/algorithm/rpni/it/EdsmDfaIT.java (100%) rename algorithms/passive/{rpni-mdl => rpni}/src/test/java/de/learnlib/algorithm/rpni/it/MdlDfaIT.java (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49f45e0805..0caae9ecfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). * The `de.learnlib.tooling:learnlib-annotation-processor` module has been outsourced to a [standalone project](https://github.com/LearnLib/build-tools). As a result, the `learnlib-build-config` module is now part of the `de.learnlib` group again. * The `ReuseOracleBuilder` and `ReuseTreeBuilder` classes are now auto-generated and therefore reside in the respective packages of their previously enclosing classes. +### Removed + +* Remove the `de.learnlib:learnlib-rpni-edsm` and `de.learnlib:learnlib-rpni-mdl` artifacts. The code has been merged with the `de.learnlib:learnlib-rpni` artifact. + ## [0.17.0] - 2023-11-15 diff --git a/README.md b/README.md index 14f48f1e36..692c579582 100644 --- a/README.md +++ b/README.md @@ -17,19 +17,18 @@ While certain features have been stripped for improved modularity, development h Currently, the following learning algorithms with respective target models are supported: -Algorithm (active) | Target models || Algorithm (passive) | Models ---- | --- | --- | --- | --- -AAAR | `DFA` `Mealy` `Moore` || OSTIA | `SST` -ADT | `Mealy` || RPNI | `DFA` `Mealy` `Moore` -DHC | `Mealy` || RPNI (EDSM) | `DFA` -Kearns & Vazirani | `DFA` `Mealy` || RPNI (MDL) | `DFA` -L* (incl. variants) | `DFA` `Mealy` `Moore` -NL* | `NFA` -Observation Pack | `DFA` `Mealy` `Moore` `VPA` -OML | `DFA` `Mealy` -Procedural | `SPA` `SBA` `SPMM` -TTT | `DFA` `Mealy` `Moore` `VPA` - +| Algorithm (active) | Target models | | Algorithm (passive) | Models | +|---------------------|-----------------------------|-----|-----------------------|-----------------------| +| AAAR | `DFA` `Mealy` `Moore` | | OSTIA | `SST` | +| ADT | `Mealy` | | RPNI (incl. variants) | `DFA` `Mealy` `Moore` | +| DHC | `Mealy` | | | | +| Kearns & Vazirani | `DFA` `Mealy` | | | | +| L* (incl. variants) | `DFA` `Mealy` `Moore` | | | | +| NL* | `NFA` | | | | +| Observation Pack | `DFA` `Mealy` `Moore` `VPA` | | | | +| OML | `DFA` `Mealy` | | | | +| Procedural | `SPA` `SBA` `SPMM` | | | | +| TTT | `DFA` `Mealy` `Moore` `VPA` | | | | Additionally, LearnLib offers a variety of tools to ease the practical application of automata learning on real-world systems. This includes drivers and mappers for interfacing software systems with the LearnLib API as well as caches and parallelization for improving the overall performance of the learning setup. diff --git a/algorithms/passive/pom.xml b/algorithms/passive/pom.xml index 3a56eab42f..9951d9bfca 100644 --- a/algorithms/passive/pom.xml +++ b/algorithms/passive/pom.xml @@ -34,7 +34,5 @@ limitations under the License. ostia rpni - rpni-edsm - rpni-mdl diff --git a/algorithms/passive/rpni-edsm/pom.xml b/algorithms/passive/rpni-edsm/pom.xml deleted file mode 100644 index b534037b9f..0000000000 --- a/algorithms/passive/rpni-edsm/pom.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - 4.0.0 - - - de.learnlib - learnlib-algorithms-passive-parent - 0.18.0-SNAPSHOT - ../pom.xml - - - learnlib-rpni-edsm - - LearnLib :: Algorithms :: RPNI (EDSM) - - This artifact provides the implementation of (a blue-fringe version of) the "regular positive negative - inference" (RPNI) learning algorithm as presented in the paper "Inferring regular languages in polynomial update - time" (https://dx.doi.org/10.1142/9789812797902_0004) by Jose Oncina and Pedro García using the "evidence-driven - state merging" (EDSM) heuristic. - - More details on this algorithm can be found in the book "Grammatical Inference" - (https://doi.org/10.1017/CBO9781139194655) by Colin de la Higuera. - - - - - - de.learnlib - learnlib-api - - - de.learnlib - learnlib-datastructure-pta - - - de.learnlib - learnlib-rpni - - - - - com.google.guava - guava - - - - net.automatalib - automata-api - - - net.automatalib - automata-commons-smartcollections - - - net.automatalib - automata-commons-util - - - net.automatalib - automata-core - - - - - de.learnlib.testsupport - learnlib-learner-it-support - - - de.learnlib - learnlib-membership-oracles - test - - - - net.automatalib - automata-util - test - - - - org.testng - testng - - - diff --git a/algorithms/passive/rpni-mdl/pom.xml b/algorithms/passive/rpni-mdl/pom.xml deleted file mode 100644 index ef720d3413..0000000000 --- a/algorithms/passive/rpni-mdl/pom.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - 4.0.0 - - - de.learnlib - learnlib-algorithms-passive-parent - 0.18.0-SNAPSHOT - ../pom.xml - - - learnlib-rpni-mdl - - LearnLib :: Algorithms :: RPNI (MDL) - - This artifact provides the implementation of (a blue-fringe version of) the "regular positive negative - inference" (RPNI) learning algorithm as presented in the paper "Inferring regular languages in polynomial update - time" (https://dx.doi.org/10.1142/9789812797902_0004) by Jose Oncina and Pedro García using the "minimum - description length" (MDL) heuristic. - - More details on this algorithm can be found in the book "Grammatical Inference" - (https://doi.org/10.1017/CBO9781139194655) by Colin de la Higuera. - - - - - - de.learnlib - learnlib-api - - - de.learnlib - learnlib-datastructure-pta - - - de.learnlib - learnlib-rpni - - - - - net.automatalib - automata-api - - - net.automatalib - automata-commons-smartcollections - - - net.automatalib - automata-commons-util - - - net.automatalib - automata-core - - - - - de.learnlib.testsupport - learnlib-learner-it-support - - - de.learnlib - learnlib-membership-oracles - test - - - - org.testng - testng - - - diff --git a/algorithms/passive/rpni/pom.xml b/algorithms/passive/rpni/pom.xml index 9e2786dcc6..82d5768f3b 100644 --- a/algorithms/passive/rpni/pom.xml +++ b/algorithms/passive/rpni/pom.xml @@ -31,9 +31,10 @@ limitations under the License. This artifact provides the implementation of (a blue-fringe version of) the "regular positive negative inference" (RPNI) learning algorithm as presented in the paper "Inferring regular languages in polynomial update - time" (https://dx.doi.org/10.1142/9789812797902_0004) by Jose Oncina and Pedro García. + time" (https://dx.doi.org/10.1142/9789812797902_0004) by Jose Oncina and Pedro García, including merging + heuristics such as the "evidence-driven state merging" (EDSM) and "minimum description length" (MDL) strategies. - More details on the blue-fringe version of this algorithm can be found in the book "Grammatical Inference" + More details on these implementations can be found in the book "Grammatical Inference" (https://doi.org/10.1017/CBO9781139194655) by Colin de la Higuera. @@ -49,6 +50,11 @@ limitations under the License. + + com.google.guava + guava + + net.automatalib automata-api @@ -57,6 +63,10 @@ limitations under the License. net.automatalib automata-commons-smartcollections + + net.automatalib + automata-commons-util + org.checkerframework @@ -74,6 +84,17 @@ limitations under the License. test + + net.automatalib + automata-core + test + + + net.automatalib + automata-util + test + + org.testng testng diff --git a/algorithms/passive/rpni-edsm/src/main/java/de/learnlib/algorithm/rpni/BlueFringeEDSMDFA.java b/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/BlueFringeEDSMDFA.java similarity index 100% rename from algorithms/passive/rpni-edsm/src/main/java/de/learnlib/algorithm/rpni/BlueFringeEDSMDFA.java rename to algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/BlueFringeEDSMDFA.java diff --git a/algorithms/passive/rpni-mdl/src/main/java/de/learnlib/algorithm/rpni/BlueFringeMDLDFA.java b/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/BlueFringeMDLDFA.java similarity index 100% rename from algorithms/passive/rpni-mdl/src/main/java/de/learnlib/algorithm/rpni/BlueFringeMDLDFA.java rename to algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/BlueFringeMDLDFA.java diff --git a/algorithms/passive/rpni-edsm/src/main/java/de/learnlib/algorithm/rpni/EDSMUtil.java b/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/EDSMUtil.java similarity index 100% rename from algorithms/passive/rpni-edsm/src/main/java/de/learnlib/algorithm/rpni/EDSMUtil.java rename to algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/EDSMUtil.java diff --git a/algorithms/passive/rpni-mdl/src/main/java/de/learnlib/algorithm/rpni/MDLUtil.java b/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/MDLUtil.java similarity index 100% rename from algorithms/passive/rpni-mdl/src/main/java/de/learnlib/algorithm/rpni/MDLUtil.java rename to algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/MDLUtil.java diff --git a/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/package-info.java b/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/package-info.java index 097f6d7d06..dbab8194bf 100644 --- a/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/package-info.java +++ b/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/package-info.java @@ -15,12 +15,12 @@ */ /** - * This package (and sub-packages) provides the implementation of (a blue-fringe version of) the "regular positive - * negative inference" (RPNI) learning algorithm as presented in the paper Inferring regular languages in polynomial update time by - * Jose Oncina and Pedro García. + * This package provides the implementation of (a blue-fringe version of) the "regular positive negative inference" + * (RPNI) learning algorithm as presented in the paper Inferring + * regular languages in polynomial update time by Jose Oncina and Pedro García, including merging heuristics such as + * the "evidence-driven state merging" (EDSM) and "minimum description length" (MDL) strategies. *

- * More details on the blue-fringe version of this algorithm can be found in the book Grammatical Inference by Colin de la Higuera. */ package de.learnlib.algorithm.rpni; diff --git a/algorithms/passive/rpni-edsm/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java b/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java similarity index 100% rename from algorithms/passive/rpni-edsm/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java rename to algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java diff --git a/algorithms/passive/rpni-mdl/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java b/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java similarity index 100% rename from algorithms/passive/rpni-mdl/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java rename to algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java diff --git a/algorithms/passive/rpni-edsm/src/test/java/de/learnlib/algorithm/rpni/it/EdsmDfaIT.java b/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/it/EdsmDfaIT.java similarity index 100% rename from algorithms/passive/rpni-edsm/src/test/java/de/learnlib/algorithm/rpni/it/EdsmDfaIT.java rename to algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/it/EdsmDfaIT.java diff --git a/algorithms/passive/rpni-mdl/src/test/java/de/learnlib/algorithm/rpni/it/MdlDfaIT.java b/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/it/MdlDfaIT.java similarity index 100% rename from algorithms/passive/rpni-mdl/src/test/java/de/learnlib/algorithm/rpni/it/MdlDfaIT.java rename to algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/it/MdlDfaIT.java diff --git a/distribution/pom.xml b/distribution/pom.xml index 2b77f4f3fc..3bfbb4753b 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -117,16 +117,6 @@ limitations under the License. learnlib-rpni - - de.learnlib - learnlib-rpni-edsm - - - - de.learnlib - learnlib-rpni-mdl - - de.learnlib @@ -366,20 +356,6 @@ limitations under the License. sources - - de.learnlib - learnlib-rpni-edsm - ${project.version} - sources - - - - de.learnlib - learnlib-rpni-mdl - ${project.version} - sources - - de.learnlib diff --git a/pom.xml b/pom.xml index 894baa0ea7..3b7cd89ad7 100644 --- a/pom.xml +++ b/pom.xml @@ -349,16 +349,6 @@ limitations under the License. learnlib-rpni ${project.version} - - de.learnlib - learnlib-rpni-edsm - ${project.version} - - - de.learnlib - learnlib-rpni-mdl - ${project.version} - From 65660daba5c4966ee010ae60eeac002ae29fbd1e Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Thu, 4 Jan 2024 21:33:56 +0100 Subject: [PATCH 16/88] cleanup changelog [skip ci] --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0caae9ecfa..9ac87275f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,12 +8,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed -* The `de.learnlib.tooling:learnlib-annotation-processor` module has been outsourced to a [standalone project](https://github.com/LearnLib/build-tools). As a result, the `learnlib-build-config` module is now part of the `de.learnlib` group again. +* With the removal of the `learnlib-annotation-processor` artifact (see below), the `learnlib-build-config` artifact is now part of the `de.learnlib` group again. * The `ReuseOracleBuilder` and `ReuseTreeBuilder` classes are now auto-generated and therefore reside in the respective packages of their previously enclosing classes. ### Removed -* Remove the `de.learnlib:learnlib-rpni-edsm` and `de.learnlib:learnlib-rpni-mdl` artifacts. The code has been merged with the `de.learnlib:learnlib-rpni` artifact. +* The `de.learnlib.tooling:learnlib-annotation-processor` artifact has been dropped. The functionality has been moved to a [standalone project](https://github.com/LearnLib/build-tools). +* The the `de.learnlib:learnlib-rpni-edsm` and `de.learnlib:learnlib-rpni-mdl` artifacts have been dropped. The code has been merged with the `de.learnlib:learnlib-rpni` artifact. ## [0.17.0] - 2023-11-15 From 6c94b3d7c09763a27500f72b7750985b07a5b5a7 Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Thu, 4 Jan 2024 21:49:47 +0100 Subject: [PATCH 17/88] pin additional plugin versions --- pom.xml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pom.xml b/pom.xml index 3b7cd89ad7..c747f23452 100644 --- a/pom.xml +++ b/pom.xml @@ -208,6 +208,7 @@ limitations under the License. 3.2.1 3.6.0 3.3.0 + 3.3.2 3.10.1 4.3.0 3.6.0 @@ -216,11 +217,14 @@ limitations under the License. 3.1.2 3.1.0 3.4.5 + 3.1.1 0.8.8 + 3.3.0 3.6.0 1.0.0 3.14.0 3.0.1 + 3.3.1 3.2.1 3.12.1 3.3.0 @@ -717,6 +721,11 @@ limitations under the License. spotbugs-maven-plugin ${spotbugs-plugin.version} + + org.apache.maven.plugins + maven-clean-plugin + ${clean-plugin.version} + org.apache.maven.plugins maven-site-plugin @@ -866,6 +875,11 @@ limitations under the License. maven-scm-publish-plugin ${scm-publish-plugin.version} + + org.apache.maven.plugins + maven-resources-plugin + ${resources-plugin.version} + org.apache.maven.plugins maven-compiler-plugin @@ -885,6 +899,16 @@ limitations under the License. + + org.apache.maven.plugins + maven-jar-plugin + ${jar-plugin.version} + + + org.apache.maven.plugins + maven-install-plugin + ${install-plugin.version} + org.codehaus.mojo tidy-maven-plugin From 448bbc76cefd4515979921e43d57e99d345bfc5e Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Mon, 8 Jan 2024 21:30:01 +0100 Subject: [PATCH 18/88] Add support for JPMS modules (#118) * switch to SNAPSHOT version of AutomataLib * initial module-infos * fix xstreams workarounds * workaround missing docs for now * cleanup module-info.javas * cleanups * drop unnecessary java.desktop dependencies * typo * replace jmockit call with mockito call * fix doc --- CHANGELOG.md | 15 ++- .../algorithm/aaar/AbstractAAARLearner.java | 2 +- .../explicit/AbstractExplicitAAARLearner.java | 2 +- .../aaar/explicit/ExplicitAAARLearnerDFA.java | 2 +- .../explicit/ExplicitAAARLearnerMealy.java | 2 +- .../explicit/ExplicitAAARLearnerMoore.java | 2 +- .../generic/AbstractGenericAAARLearner.java | 2 +- .../aaar/generic/GenericAAARLearnerDFA.java | 2 +- .../aaar/generic/GenericAAARLearnerMealy.java | 2 +- .../aaar/generic/GenericAAARLearnerMoore.java | 2 +- .../aaar/src/main/java/module-info.java | 44 +++++++ .../algorithm/aaar/AbstractAAARTest.java | 2 +- .../explicit/ExplicitAAARLearnerDFATest.java | 2 +- .../ExplicitAAARLearnerMealyTest.java | 4 +- .../ExplicitAAARLearnerMooreTest.java | 4 +- .../generic/GenericAAARLearnerDFATest.java | 2 +- .../generic/GenericAAARLearnerMealyTest.java | 2 +- .../generic/GenericAAARLearnerMooreTest.java | 4 +- algorithms/active/adt/pom.xml | 4 + .../algorithm/adt/adt/ADTLeafNode.java | 2 +- .../algorithm/adt/adt/ADTSymbolNode.java | 2 +- .../algorithm/adt/learner/ADTLearner.java | 2 +- .../algorithm/adt/model/ObservationTree.java | 4 +- .../algorithm/adt/util/SQOOTBridge.java | 4 +- .../active/adt/src/main/java/module-info.java | 55 +++++++++ .../adt/automaton/ADTHypothesisTest.java | 2 +- .../adt/learner/ADTGrowingAlphabetTest.java | 13 +- .../adt/learner/ADTResumableLearnerTest.java | 16 +-- .../adt/learner/ADTVisualizationTest.java | 2 +- algorithms/active/dhc/pom.xml | 4 + .../algorithm/dhc/mealy/MealyDHC.java | 4 +- .../algorithm/dhc/mealy/MealyDHCState.java | 2 +- .../package-info.java => module-info.java} | 26 +++- .../algorithm/dhc/mealy/MealyDHCTest.java | 12 +- algorithms/active/kearns-vazirani/pom.xml | 4 + .../algorithm/kv/dfa/KearnsVaziraniDFA.java | 4 +- .../kv/dfa/KearnsVaziraniDFAState.java | 2 +- .../kv/mealy/KearnsVaziraniMealy.java | 6 +- .../kv/mealy/KearnsVaziraniMealyState.java | 2 +- .../src/main/java/module-info.java | 47 ++++++++ algorithms/active/lstar/pom.xml | 45 +++++++ .../algorithm/lstar/AbstractLStar.java | 2 +- .../lstar/dfa/ExtensibleLStarDFA.java | 2 +- .../lstar/mealy/ClassicLStarMealy.java | 4 +- .../lstar/mealy/ExtensibleLStarMealy.java | 4 +- .../lstar/moore/ClassicLStarMoore.java | 2 +- .../lstar/moore/ExtensibleLStarMoore.java | 2 +- .../algorithm/lstar/package-info.java | 22 ---- .../algorithm/malerpnueli/package-info.java | 22 ---- .../rivestschapire/package-info.java | 22 ---- .../lstar/src/main/java/module-info.java | 56 +++++++++ .../ClassicLStarMealyGrowingAlphabetTest.java | 6 +- ...xtensibleLStarDFAResumableLearnerTest.java | 2 +- ...ensibleLStarMealyResumableLearnerTest.java | 4 +- ...ensibleLStarMooreResumableLearnerTest.java | 4 +- .../algorithm/lstar/LStarDFATest.java | 2 +- .../algorithm/lstar/LStarMealyTest.java | 6 +- .../algorithm/nlstar/NLStarLearner.java | 4 +- .../package-info.java => module-info.java} | 25 +++- .../learnlib/algorithm/nlstar/NLStarTest.java | 4 +- .../active/observation-pack-vpa/pom.xml | 15 +++ .../vpa/hypothesis/OneSEVPAHypothesis.java | 2 +- .../observationpack/vpa/package-info.java | 22 ---- .../src/main/java/module-info.java | 48 ++++++++ .../vpa/DTVisualizationTest.java | 6 +- algorithms/active/observation-pack/pom.xml | 4 + .../observationpack/AbstractOPLearner.java | 2 +- .../hypothesis/OPLearnerHypothesis.java | 2 +- .../observationpack/package-info.java | 22 ---- .../src/main/java/module-info.java | 48 ++++++++ .../observationpack/DTVisualizationTest.java | 2 +- algorithms/active/oml/pom.xml | 4 + .../algorithm/oml/lstar/OptimalLStarDFA.java | 2 +- .../oml/lstar/OptimalLStarMealy.java | 2 +- .../learnlib/algorithm/oml/package-info.java | 22 ---- .../algorithm/oml/ttt/AbstractOptimalTTT.java | 2 +- .../active/oml/src/main/java/module-info.java | 46 +++++++ .../adapter/dfa/KearnsVaziraniAdapterDFA.java | 2 +- .../algorithm/procedural/package-info.java | 24 ---- .../algorithm/procedural/sba/SBALearner.java | 8 +- .../algorithm/procedural/spa/SPALearner.java | 6 +- .../procedural/spmm/SPMMLearner.java | 8 +- .../procedural/src/main/java/module-info.java | 59 +++++++++ .../procedural/sba/ATManagerTest.java | 4 +- .../procedural/sba/OptimizationsTest.java | 2 +- .../procedural/spa/ATRManagerTest.java | 4 +- .../procedural/spmm/ATManagerTest.java | 4 +- .../procedural/spmm/OptimizationsTest.java | 2 +- .../package-info.java => module-info.java} | 26 +++- algorithms/active/ttt/pom.xml | 4 + .../ttt/base/AbstractTTTHypothesis.java | 2 +- .../ttt/base/AbstractTTTLearner.java | 2 +- .../learnlib/algorithm/ttt/package-info.java | 22 ---- .../active/ttt/src/main/java/module-info.java | 51 ++++++++ .../algorithm/ttt/TTTVisualizationTest.java | 2 +- .../de/learnlib/algorithm/ostia/OSTIA.java | 2 +- .../algorithm/ostia/package-info.java | 23 ---- .../ostia/src/main/java/module-info.java | 41 +++++++ .../learnlib/algorithm/ostia/OSTIATest.java | 4 +- algorithms/passive/rpni/pom.xml | 15 +++ .../package-info.java => module-info.java} | 24 +++- .../algorithm/rpni/EDSMScoreTest.java | 4 +- .../learnlib/algorithm/rpni/MDLScoreTest.java | 2 +- .../de/learnlib/algorithm/package-info.java | 2 +- .../BatchInterruptedException.java | 4 +- .../{parallelism => }/BatchProcessor.java | 4 +- .../de/learnlib/oracle/MembershipOracle.java | 1 - .../oracle/OmegaMembershipOracle.java | 1 - .../ParallelOmegaOracle.java | 4 +- .../{parallelism => }/ParallelOracle.java | 4 +- .../oracle/{parallelism => }/ThreadPool.java | 2 +- .../java/de/learnlib/oracle/package-info.java | 4 +- api/src/main/java/module-info.java | 44 +++++++ .../src/main/java/Example.java | 4 +- .../src/main/java/Example.java | 4 +- build-parent/pom.xml | 2 + .../src/main/java/module-info.java | 38 ++++++ commons/settings/pom.xml | 24 ++++ .../de/learnlib/setting/LearnLibProperty.java | 6 +- .../de/learnlib/setting/LearnLibSettings.java | 2 +- ...alPropertiesAutomataLibSettingsSource.java | 3 +- .../LearnLibLocalPropertiesSource.java | 3 +- ...ibPropertiesAutomataLibSettingsSource.java | 3 +- .../sources/LearnLibPropertiesSource.java | 3 +- ...emPropertiesAutomataLibSettingsSource.java | 3 +- .../LearnLibSystemPropertiesSource.java | 3 +- .../settings/src/main/java/module-info.java | 51 ++++++++ .../learnlib/util/nfa/NFALearnerWrapper.java | 2 +- commons/util/src/main/java/module-info.java | 45 +++++++ .../java/de/learnlib/util/ExperimentTest.java | 4 +- datastructures/discrimination-tree/pom.xml | 2 +- .../src/main/java/module-info.java | 43 +++++++ datastructures/list/pom.xml | 2 +- .../list/src/main/java/module-info.java | 21 +++- datastructures/observation-table/pom.xml | 4 +- .../GenericObservationTable.java | 2 +- .../observationtable/OTUtils.java | 113 +++++++++--------- .../reader/SimpleObservationTable.java | 2 +- .../src/main/java/module-info.java | 42 +++++++ .../writer/SuffixASCIIWriterTest.java | 2 +- datastructures/pta/pom.xml | 2 +- .../pta/AbstractBlueFringePTA.java | 1 - .../pta/AbstractBlueFringePTAState.java | 2 - .../learnlib/datastructure/pta/BasePTA.java | 2 +- .../de/learnlib/datastructure/pta/Color.java | 18 ++- .../datastructure/pta/RedBlueMerge.java | 1 - .../pta/src/main/java/module-info.java | 41 +++++++ .../pta/MergedAutomatonTest.java | 2 +- .../pta/PTAVisualizationTest.java | 4 +- distribution/pom.xml | 5 + .../src/main/assembly/learnlib-bundle.xml | 5 + .../assembly/learnlib-dependencies-bundle.xml | 5 + drivers/basic/pom.xml | 2 +- .../driver/reflect/SimplePOJOTestDriver.java | 2 +- drivers/basic/src/main/java/module-info.java | 39 ++++++ .../java/de/learnlib/mapper/StringMapper.java | 2 +- drivers/mapper/src/main/java/module-info.java | 39 ++++++ .../mapper/MapperCompositionTest.java | 2 +- .../simulator/src/main/java/module-info.java | 24 +++- examples/pom.xml | 45 +------ .../java/de/learnlib/example/Example1.java | 7 +- .../java/de/learnlib/example/Example3.java | 2 +- .../de/learnlib/example/bbc/Example1.java | 4 +- .../de/learnlib/example/bbc/Example2.java | 4 +- .../de/learnlib/example/bbc/Example3.java | 4 +- .../de/learnlib/example/bbc/Example4.java | 4 +- .../parallelism/ParallelismExample1.java | 6 +- .../parallelism/ParallelismExample2.java | 6 +- .../de/learnlib/example/passive/Example1.java | 2 +- .../example/resumable/ResumableExample.java | 6 +- .../de/learnlib/example/sli/Example1.java | 4 +- .../de/learnlib/example/sli/Example2.java | 4 +- examples/src/main/java/module-info.java | 62 ++++++++++ .../de/learnlib/example/ExamplesTest.java | 30 ++--- filters/cache/pom.xml | 35 +++++- .../filter/cache/DynamicSymbolComparator.java | 2 +- .../filter/cache/dfa/DFAHashCacheOracle.java | 3 +- .../ThreadSafeDFACacheConsistencyTest.java | 0 .../cache/dfa/ThreadSafeDFACacheOracle.java | 0 .../filter/cache/dfa/ThreadSafeDFACaches.java | 0 .../filter/cache/mealy/SymbolQueryCache.java | 10 +- .../ThreadSafeMealyCacheConsistencyTest.java | 0 .../mealy/ThreadSafeMealyCacheOracle.java | 0 .../cache/mealy/ThreadSafeMealyCaches.java | 0 .../ThreadSafeMooreCacheConsistencyTest.java | 0 .../moore/ThreadSafeMooreCacheOracle.java | 0 .../cache/moore/ThreadSafeMooreCaches.java | 0 .../cache/sul/StateLocalInputSULCache.java | 1 - .../filter/cache/sul/ThreadSafeSULCache.java | 0 .../filter/cache/sul/ThreadSafeSULCaches.java | 0 .../ThreadSafeStateLocalInputSULCache.java | 0 filters/cache/src/main/java/module-info.java | 48 ++++++++ .../filter/cache/AbstractCacheTest.java | 44 +++++++ .../cache/AbstractParallelCacheTest.java | 2 +- .../learnlib/filter/cache}/CacheConfig.java | 16 ++- .../learnlib/filter/cache}/CacheCreator.java | 19 ++- .../learnlib/filter/cache/CacheTestUtils.java | 62 ++++++++-- .../filter/cache/SULLearningCacheOracle.java | 10 +- .../cache/dfa/AbstractDFACacheTest.java | 13 +- .../filter/cache/dfa/DFAHashCacheTest.java | 10 ++ .../cache/dfa}/DFAParallelCacheTest.java | 21 ++-- .../cache/mealy/AbstractMealyCacheTest.java | 13 +- .../cache/mealy}/MealyParallelCacheTest.java | 39 +++--- .../cache/mealy/SymbolQueryCacheTest.java | 13 +- .../cache/moore/AbstractMooreCacheTest.java | 13 +- .../cache/moore}/MooreParallelCacheTest.java | 39 +++--- .../cache/sul/AbstractSULCacheTest.java | 13 +- .../cache/sul}/SLISULParallelCacheTest.java | 39 +++--- .../cache/sul}/SULParallelCacheTest.java | 39 +++--- .../sul/StateLocalInputSULTreeCacheTest.java | 12 +- filters/reuse/src/main/java/module-info.java | 39 ++++++ .../reuse/test/DomainKnowledgeTest.java | 2 +- .../filter/reuse/test/LearningTest.java | 2 +- .../filter/reuse/test/QuiescenceTest.java | 2 +- .../filter/reuse/test/ReuseOracleTest.java | 2 +- .../statistics/src/main/java/module-info.java | 41 +++++++ .../filter/statistic/TestQueries.java | 4 +- oracles/emptiness-oracles/pom.xml | 19 +++ .../src/main/java/module-info.java | 39 ++++++ .../AbstractLassoEmptinessOracleImplTest.java | 2 +- .../emptiness/DFABFEmptinessOracleTest.java | 2 +- .../DFALassoEmptinessOracleImplTest.java | 4 +- .../emptiness/MealyBFEmptinessOracleTest.java | 2 +- .../MealyLassoEmptinessOracleImplTest.java | 4 +- .../src/main/java/module-info.java | 49 ++++++++ .../equivalence/DFABFInclusionOracleTest.java | 2 +- .../equivalence/EmptyAutomatonOracleTest.java | 10 +- .../IncrementalWMethodEQOracleTest.java | 2 +- .../MealyBFInclusionOracleTest.java | 2 +- .../RandomWMethodEQOracleTest.java | 2 +- .../equivalence/RandomWordsEQOracleTest.java | 2 +- .../RandomWpMethodEQOracleTest.java | 2 +- .../equivalence/SampleSetEQOracleTest.java | 2 +- .../mealy/RandomWalkEQOracleTest.java | 4 +- .../equivalence/sba/WMethodEQOracleTest.java | 4 +- .../equivalence/spa/WMethodEQOracleTest.java | 4 +- .../equivalence/spa/WpMethodEQOracleTest.java | 4 +- .../equivalence/spmm/WMethodEQOracleTest.java | 6 +- .../RandomWellMatchedWordsEQOracleTest.java | 4 +- oracles/membership-oracles/pom.xml | 15 +++ .../src/main/java/module-info.java | 40 +++++++ .../oracle/membership/SULOmegaOracleTest.java | 6 +- .../membership/SULSymbolQueryOracleTest.java | 4 +- .../membership/SimulatorOmegaOracleTest.java | 2 +- .../membership/SimulatorOracleTest.java | 2 +- ...ateLocalInputSULSymbolQueryOracleTest.java | 4 +- oracles/parallelism/pom.xml | 10 +- .../AbstractDynamicBatchProcessor.java | 3 + .../AbstractDynamicBatchProcessorBuilder.java | 3 +- .../parallelism/AbstractQueriesJob.java | 2 + .../AbstractStaticBatchProcessor.java | 3 + .../AbstractStaticBatchProcessorBuilder.java | 3 +- .../DynamicParallelOmegaOracle.java | 1 + .../parallelism/DynamicParallelOracle.java | 1 + .../oracle/parallelism/DynamicQueriesJob.java | 2 + .../parallelism/ParallelOracleBuilders.java | 2 +- .../StaticParallelOmegaOracle.java | 1 + .../StaticParallelOmegaOracleBuilder.java | 2 +- .../parallelism/StaticParallelOracle.java | 1 + .../StaticParallelOracleBuilder.java | 2 +- .../oracle/parallelism/StaticQueriesJob.java | 2 + .../src/main/java/module-info.java | 41 +++++++ .../filter/cache/configuration/Config.java | 87 -------------- ...bstractDynamicParallelOmegaOracleTest.java | 3 +- .../AbstractDynamicParallelOracleTest.java | 3 +- ...AbstractStaticParallelOmegaOracleTest.java | 2 +- .../AbstractStaticParallelOracleTest.java | 2 +- .../DynamicParallelOmegaOracleTest.java | 3 +- .../DynamicParallelOracleTest.java | 3 +- .../StaticParallelOmegaOracleTest.java | 1 + .../de/learnlib/oracle/parallelism/Utils.java | 2 +- .../src/main/java/module-info.java | 24 +++- .../property/MealyPropertyOracleTest.java | 6 +- pom.xml | 61 +++++++--- test-support/learner-it-support/pom.xml | 24 ---- .../it/learner/AbstractDFALearnerIT.java | 4 +- .../learner/AbstractDFAPassiveLearnerIT.java | 8 +- .../learner/AbstractLearnerVariantITCase.java | 2 +- .../it/learner/AbstractMealyLearnerIT.java | 9 +- .../AbstractMealyPassiveLearnerIT.java | 8 +- .../it/learner/AbstractMealySymLearnerIT.java | 4 +- .../it/learner/AbstractMooreLearnerIT.java | 4 +- .../AbstractMoorePassiveLearnerIT.java | 8 +- .../it/learner/AbstractMooreSymLearnerIT.java | 4 +- .../it/learner/AbstractOneSEVPALearnerIT.java | 4 +- .../it/learner/AbstractSBALearnerIT.java | 4 +- .../it/learner/AbstractSPALearnerIT.java | 4 +- .../it/learner/AbstractSPMMLearnerIT.java | 4 +- .../learner/AbstractSSTPassiveLearnerIT.java | 12 +- .../testsupport/it/learner/LearnerITUtil.java | 14 +-- .../it/learner/OneSEVPALearnerITCase.java | 2 +- .../learner/PassiveLearnerVariantITCase.java | 2 +- .../it/learner/SBALearnerITCase.java | 2 +- .../it/learner/SPALearnerITCase.java | 2 +- .../it/learner/SPMMLearnerITCase.java | 2 +- .../UniversalDeterministicLearnerITCase.java | 2 +- .../de/learnlib/testsupport/package-info.java | 20 ---- .../src/main/java/module-info.java | 46 +++++++ test-support/learning-examples/pom.xml | 2 +- .../de/learnlib/example/package-info.java | 20 ---- .../example/DefaultLearningExample.java | 2 +- .../DefaultPassiveLearningExample.java | 2 +- .../example/LearningExample.java | 2 +- .../example/LearningExamples.java | 68 +++++------ .../example/PassiveLearningExample.java | 2 +- .../example/dfa/DFABenchmarks.java | 8 +- .../example/dfa/ExampleAngluin.java | 8 +- .../example/dfa/ExampleKeylock.java | 8 +- .../example/dfa/ExamplePaulAndMary.java | 8 +- .../example/dfa/ExampleRandomDFA.java | 6 +- .../example/dfa/ExampleTinyDFA.java | 8 +- .../example/mealy/ExampleCoffeeMachine.java | 10 +- .../example/mealy/ExampleGrid.java | 8 +- .../example/mealy/ExampleRandomMealy.java | 6 +- .../ExampleRandomStateLocalInputMealy.java | 6 +- .../example/mealy/ExampleShahbazGroz.java | 8 +- .../example/mealy/ExampleStack.java | 12 +- .../example/mealy/ExampleTinyMealy.java | 8 +- .../example/moore/ExampleRandomMoore.java | 6 +- .../example/sba/ExamplePalindrome.java | 14 +-- .../example/sba/ExampleRandomSBA.java | 4 +- .../example/spa/ExamplePalindrome.java | 14 +-- .../example/spa/ExampleRandomSPA.java | 4 +- .../example/spmm/ExamplePalindrome.java | 14 +-- .../example/spmm/ExampleRandomSPMM.java | 4 +- .../example/sst/ExampleRandomSST.java | 6 +- .../example/vpa/ExampleRandomOneSEVPA.java | 4 +- .../src/main/java/module-info.java | 51 ++++++++ .../learnlib/example/dfa/DFAExamplesTest.java | 1 + test-support/test-support/pom.xml | 33 +++++ .../testsupport/AbstractBFOracleTest.java | 2 +- .../AbstractGrowingAlphabetDFATest.java | 16 +-- .../AbstractGrowingAlphabetMealyTest.java | 15 +-- .../AbstractGrowingAlphabetMooreTest.java | 15 +-- .../AbstractGrowingAlphabetTest.java | 29 ++--- .../AbstractResumableLearnerDFATest.java | 10 +- .../AbstractResumableLearnerMealyTest.java | 9 +- .../AbstractResumableLearnerMooreTest.java | 9 +- .../AbstractResumableLearnerTest.java | 17 ++- .../AbstractVisualizationTest.java | 20 ++-- .../src/main/java/module-info.java | 49 ++++++++ 341 files changed, 2703 insertions(+), 1213 deletions(-) create mode 100644 algorithms/active/aaar/src/main/java/module-info.java create mode 100644 algorithms/active/adt/src/main/java/module-info.java rename algorithms/active/dhc/src/main/java/{de/learnlib/algorithm/dhc/package-info.java => module-info.java} (52%) create mode 100644 algorithms/active/kearns-vazirani/src/main/java/module-info.java delete mode 100644 algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/package-info.java delete mode 100644 algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/package-info.java delete mode 100644 algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/package-info.java create mode 100644 algorithms/active/lstar/src/main/java/module-info.java rename algorithms/active/nlstar/src/main/java/{de/learnlib/algorithm/nlstar/package-info.java => module-info.java} (53%) delete mode 100644 algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/package-info.java create mode 100644 algorithms/active/observation-pack-vpa/src/main/java/module-info.java delete mode 100644 algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/package-info.java create mode 100644 algorithms/active/observation-pack/src/main/java/module-info.java delete mode 100644 algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/package-info.java create mode 100644 algorithms/active/oml/src/main/java/module-info.java delete mode 100644 algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/package-info.java create mode 100644 algorithms/active/procedural/src/main/java/module-info.java rename algorithms/active/ttt-vpa/src/main/java/{de/learnlib/algorithm/ttt/vpa/package-info.java => module-info.java} (50%) delete mode 100644 algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/package-info.java create mode 100644 algorithms/active/ttt/src/main/java/module-info.java delete mode 100644 algorithms/passive/ostia/src/main/java/de/learnlib/algorithm/ostia/package-info.java create mode 100644 algorithms/passive/ostia/src/main/java/module-info.java rename algorithms/passive/rpni/src/main/java/{de/learnlib/algorithm/rpni/package-info.java => module-info.java} (60%) rename api/src/main/java/de/learnlib/{oracle/parallelism => exception}/BatchInterruptedException.java (93%) rename api/src/main/java/de/learnlib/oracle/{parallelism => }/BatchProcessor.java (93%) rename api/src/main/java/de/learnlib/oracle/{parallelism => }/ParallelOmegaOracle.java (91%) rename api/src/main/java/de/learnlib/oracle/{parallelism => }/ParallelOracle.java (93%) rename api/src/main/java/de/learnlib/oracle/{parallelism => }/ThreadPool.java (98%) create mode 100644 api/src/main/java/module-info.java create mode 100644 commons/counterexamples/src/main/java/module-info.java create mode 100644 commons/settings/src/main/java/module-info.java create mode 100644 commons/util/src/main/java/module-info.java create mode 100644 datastructures/discrimination-tree/src/main/java/module-info.java rename algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/package-info.java => datastructures/list/src/main/java/module-info.java (56%) create mode 100644 datastructures/observation-table/src/main/java/module-info.java rename commons/util/src/main/java/de/learnlib/util/package-info.java => datastructures/pta/src/main/java/de/learnlib/datastructure/pta/Color.java (68%) create mode 100644 datastructures/pta/src/main/java/module-info.java create mode 100644 drivers/basic/src/main/java/module-info.java create mode 100644 drivers/mapper/src/main/java/module-info.java rename algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/package-info.java => drivers/simulator/src/main/java/module-info.java (53%) create mode 100644 examples/src/main/java/module-info.java rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheConsistencyTest.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheOracle.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACaches.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheConsistencyTest.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheOracle.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCaches.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheConsistencyTest.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheOracle.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCaches.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCache.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCaches.java (100%) rename {oracles/parallelism => filters/cache}/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeStateLocalInputSULCache.java (100%) create mode 100644 filters/cache/src/main/java/module-info.java rename {oracles/parallelism => filters/cache}/src/test/java/de/learnlib/filter/cache/AbstractParallelCacheTest.java (99%) rename {oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration => filters/cache/src/test/java/de/learnlib/filter/cache}/CacheConfig.java (93%) rename {oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration => filters/cache/src/test/java/de/learnlib/filter/cache}/CacheCreator.java (87%) rename {oracles/parallelism/src/test/java/de/learnlib/filter/cache => filters/cache/src/test/java/de/learnlib/filter/cache/dfa}/DFAParallelCacheTest.java (83%) rename {oracles/parallelism/src/test/java/de/learnlib/filter/cache => filters/cache/src/test/java/de/learnlib/filter/cache/mealy}/MealyParallelCacheTest.java (67%) rename {oracles/parallelism/src/test/java/de/learnlib/filter/cache => filters/cache/src/test/java/de/learnlib/filter/cache/moore}/MooreParallelCacheTest.java (60%) rename {oracles/parallelism/src/test/java/de/learnlib/filter/cache => filters/cache/src/test/java/de/learnlib/filter/cache/sul}/SLISULParallelCacheTest.java (59%) rename {oracles/parallelism/src/test/java/de/learnlib/filter/cache => filters/cache/src/test/java/de/learnlib/filter/cache/sul}/SULParallelCacheTest.java (60%) create mode 100644 filters/reuse/src/main/java/module-info.java create mode 100644 filters/statistics/src/main/java/module-info.java create mode 100644 oracles/emptiness-oracles/src/main/java/module-info.java create mode 100644 oracles/equivalence-oracles/src/main/java/module-info.java create mode 100644 oracles/membership-oracles/src/main/java/module-info.java create mode 100644 oracles/parallelism/src/main/java/module-info.java delete mode 100644 oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/Config.java rename algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/package-info.java => oracles/property-oracles/src/main/java/module-info.java (51%) delete mode 100644 test-support/learner-it-support/src/main/java/de/learnlib/testsupport/package-info.java create mode 100644 test-support/learner-it-support/src/main/java/module-info.java delete mode 100644 test-support/learning-examples/src/main/java/de/learnlib/example/package-info.java rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/DefaultLearningExample.java (99%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/DefaultPassiveLearningExample.java (98%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/LearningExample.java (98%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/LearningExamples.java (75%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/PassiveLearningExample.java (96%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/dfa/DFABenchmarks.java (91%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/dfa/ExampleAngluin.java (90%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/dfa/ExampleKeylock.java (92%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/dfa/ExamplePaulAndMary.java (91%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/dfa/ExampleRandomDFA.java (86%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/dfa/ExampleTinyDFA.java (88%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/mealy/ExampleCoffeeMachine.java (91%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/mealy/ExampleGrid.java (92%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/mealy/ExampleRandomMealy.java (90%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/mealy/ExampleRandomStateLocalInputMealy.java (96%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/mealy/ExampleShahbazGroz.java (91%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/mealy/ExampleStack.java (87%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/mealy/ExampleTinyMealy.java (87%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/moore/ExampleRandomMoore.java (90%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/sba/ExamplePalindrome.java (90%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/sba/ExampleRandomSBA.java (90%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/spa/ExamplePalindrome.java (89%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/spa/ExampleRandomSPA.java (90%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/spmm/ExamplePalindrome.java (91%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/spmm/ExampleRandomSPMM.java (91%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/sst/ExampleRandomSST.java (91%) rename test-support/learning-examples/src/main/java/de/learnlib/{ => testsupport}/example/vpa/ExampleRandomOneSEVPA.java (92%) create mode 100644 test-support/learning-examples/src/main/java/module-info.java rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetDFATest.java (74%) rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMealyTest.java (75%) rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMooreTest.java (75%) rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetTest.java (82%) rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerDFATest.java (84%) rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMealyTest.java (85%) rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMooreTest.java (85%) rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerTest.java (86%) rename test-support/{learner-it-support => test-support}/src/main/java/de/learnlib/testsupport/AbstractVisualizationTest.java (77%) create mode 100644 test-support/test-support/src/main/java/module-info.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ac87275f5..6c7fbdc9a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,15 +6,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [Full changelog](https://github.com/LearnLib/learnlib/compare/learnlib-0.17.0...HEAD) +### Added + +* LearnLib now supports JPMS modules. All artifacts now provide a `module-info` descriptor except of the distribution artifacts (for Maven-less environments) which only provide an `Automatic-Module-Name` due to non-modular dependencies. Note that while this is a Java 9+ feature, LearnLib still supports Java 8 byte code for the remaining class files. + ### Changed +* The JPMS support introduces several changes: + * You now require at least a JDK 11 to build LearnLib. + * We use modules to better structure the aggregated JavaDoc. Since there exist breaking changes between Java 8 and Java 9 regarding documentation (see package-list vs. element-list), you can no longer link against the LearnLib documentation on JDK 8 builds. + * Split packages had to be refactored. + * The `de.learnlib.oracle.parallelism` interfaces in the `learnlib-api` artifact have been moved to the `de.learnlib.oracle` package. + * The `ThreadSafe` caches have been moved from the `learnlib-parallelism` artifact to the `learnlib-cache` artifact. + * The `GrowingAlphabet` and `Resumable` tests from the `learnlib-learner-it-support` artifact been moved to the `learnlib-test-support` artifact. + * The `OTUtils` class no longer provides the `displayHTMLInBrowser` methods in order to not depend on `java.desktop`. If you relied on this functionality, use the `writeHTMLToFile` methods instead and call `Desktop.getDesktop().open(file.toURI())` yourself. + * The classes in the `learnlib-learning-examples` artifact have their package renamed to `de.learnlib.testsupport.example`. * With the removal of the `learnlib-annotation-processor` artifact (see below), the `learnlib-build-config` artifact is now part of the `de.learnlib` group again. * The `ReuseOracleBuilder` and `ReuseTreeBuilder` classes are now auto-generated and therefore reside in the respective packages of their previously enclosing classes. ### Removed * The `de.learnlib.tooling:learnlib-annotation-processor` artifact has been dropped. The functionality has been moved to a [standalone project](https://github.com/LearnLib/build-tools). -* The the `de.learnlib:learnlib-rpni-edsm` and `de.learnlib:learnlib-rpni-mdl` artifacts have been dropped. The code has been merged with the `de.learnlib:learnlib-rpni` artifact. +* The `de.learnlib:learnlib-rpni-edsm` and `de.learnlib:learnlib-rpni-mdl` artifacts have been dropped. The code has been merged with the `de.learnlib:learnlib-rpni` artifact. ## [0.17.0] - 2023-11-15 diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/AbstractAAARLearner.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/AbstractAAARLearner.java index 55923f2c7b..064624050e 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/AbstractAAARLearner.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/AbstractAAARLearner.java @@ -28,8 +28,8 @@ import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.GrowingAlphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.MutableDeterministic; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.word.Word; diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/AbstractExplicitAAARLearner.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/AbstractExplicitAAARLearner.java index ce075733b4..6fc06c6a31 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/AbstractExplicitAAARLearner.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/AbstractExplicitAAARLearner.java @@ -32,8 +32,8 @@ import de.learnlib.algorithm.aaar.generic.AbstractGenericAAARLearner; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; /** * An "explicit" refinement of the {@link AbstractAAARLearner}. This implementation requires a prior partition of (all) diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerDFA.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerDFA.java index 27d7afc537..64dc314efd 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerDFA.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerDFA.java @@ -23,8 +23,8 @@ import de.learnlib.algorithm.aaar.TranslatingDFA; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.fsa.CompactDFA; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; /** * A {@link DFA}-specific refinement of {@link AbstractExplicitAAARLearner}. diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMealy.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMealy.java index 47f86ce525..74a553714e 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMealy.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMealy.java @@ -23,8 +23,8 @@ import de.learnlib.algorithm.aaar.TranslatingMealyMachine; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.word.Word; /** diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMoore.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMoore.java index f267f90682..14f35f5ef9 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMoore.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMoore.java @@ -23,8 +23,8 @@ import de.learnlib.algorithm.aaar.TranslatingMooreMachine; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.transducer.CompactMoore; import net.automatalib.automaton.transducer.MooreMachine; +import net.automatalib.automaton.transducer.impl.CompactMoore; import net.automatalib.word.Word; /** diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/AbstractGenericAAARLearner.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/AbstractGenericAAARLearner.java index a35f41d6e2..3ef2ba9f41 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/AbstractGenericAAARLearner.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/AbstractGenericAAARLearner.java @@ -27,8 +27,8 @@ import de.learnlib.algorithm.aaar.explicit.AbstractExplicitAAARLearner; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; /** * A "generic" refinement of the {@link AbstractAAARLearner}. This implementation uses a single diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerDFA.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerDFA.java index 37ddd52dab..43c7d64bb8 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerDFA.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerDFA.java @@ -22,8 +22,8 @@ import de.learnlib.algorithm.aaar.TranslatingDFA; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.fsa.CompactDFA; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; /** * A {@link DFA}-specific refinement of {@link AbstractGenericAAARLearner}. diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMealy.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMealy.java index 9d2a37d65b..aee3706d67 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMealy.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMealy.java @@ -22,8 +22,8 @@ import de.learnlib.algorithm.aaar.TranslatingMealyMachine; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.word.Word; /** diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMoore.java b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMoore.java index f97e0a7482..ba5dab73cd 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMoore.java +++ b/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMoore.java @@ -22,8 +22,8 @@ import de.learnlib.algorithm.aaar.TranslatingMooreMachine; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.transducer.CompactMoore; import net.automatalib.automaton.transducer.MooreMachine; +import net.automatalib.automaton.transducer.impl.CompactMoore; import net.automatalib.word.Word; /** diff --git a/algorithms/active/aaar/src/main/java/module-info.java b/algorithms/active/aaar/src/main/java/module-info.java new file mode 100644 index 0000000000..1995b07f62 --- /dev/null +++ b/algorithms/active/aaar/src/main/java/module-info.java @@ -0,0 +1,44 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementation of the AAAR learning algorithm as described in the paper + * Automata Learning with Automated Alphabet Abstraction + * Refinement by Falk Howar, Bernhard Steffen, and Maik Merten. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-aaar</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.aaar { + + requires com.google.common; + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + exports de.learnlib.algorithm.aaar; + exports de.learnlib.algorithm.aaar.abstraction; + exports de.learnlib.algorithm.aaar.explicit; + exports de.learnlib.algorithm.aaar.generic; +} diff --git a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/AbstractAAARTest.java b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/AbstractAAARTest.java index 593f6d493a..66a78eb28d 100644 --- a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/AbstractAAARTest.java +++ b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/AbstractAAARTest.java @@ -20,10 +20,10 @@ import com.google.common.collect.Lists; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.example.LearningExample; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.equivalence.SampleSetEQOracle; import de.learnlib.oracle.membership.SimulatorOracle; +import de.learnlib.testsupport.example.LearningExample; import de.learnlib.util.Experiment; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.UniversalDeterministicAutomaton; diff --git a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerDFATest.java b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerDFATest.java index 930558adad..3e7b69a772 100644 --- a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerDFATest.java +++ b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerDFATest.java @@ -17,8 +17,8 @@ import de.learnlib.algorithm.aaar.AAARTestUtil; import de.learnlib.algorithm.aaar.AbstractAAARTest; -import de.learnlib.example.dfa.ExamplePaulAndMary; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; diff --git a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMealyTest.java b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMealyTest.java index 7fb43b9108..097fa25e58 100644 --- a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMealyTest.java +++ b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMealyTest.java @@ -17,9 +17,9 @@ import de.learnlib.algorithm.aaar.AAARTestUtil; import de.learnlib.algorithm.aaar.AbstractAAARTest; -import de.learnlib.example.mealy.ExampleCoffeeMachine; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; diff --git a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMooreTest.java b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMooreTest.java index 139508b49a..9537b9f6b9 100644 --- a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMooreTest.java +++ b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/explicit/ExplicitAAARLearnerMooreTest.java @@ -21,10 +21,10 @@ import de.learnlib.algorithm.aaar.AAARTestUtil; import de.learnlib.algorithm.aaar.AbstractAAARTest; import de.learnlib.algorithm.aaar.ComboConstructor; -import de.learnlib.example.moore.ExampleRandomMoore; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.moore.ExampleRandomMoore; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.common.util.Pair; import net.automatalib.word.Word; diff --git a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerDFATest.java b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerDFATest.java index 905943113c..b8c9a37581 100644 --- a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerDFATest.java +++ b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerDFATest.java @@ -25,8 +25,8 @@ import de.learnlib.algorithm.aaar.AAARTestUtil; import de.learnlib.algorithm.aaar.AbstractAAARTest; import de.learnlib.algorithm.aaar.abstraction.AbstractAbstractionTree; -import de.learnlib.example.dfa.ExamplePaulAndMary; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; import net.automatalib.common.util.IOUtil; diff --git a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMealyTest.java b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMealyTest.java index bdbefb9829..20cf8106be 100644 --- a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMealyTest.java +++ b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMealyTest.java @@ -25,8 +25,8 @@ import de.learnlib.algorithm.aaar.AAARTestUtil; import de.learnlib.algorithm.aaar.AbstractAAARTest; import de.learnlib.algorithm.aaar.abstraction.AbstractAbstractionTree; -import de.learnlib.example.mealy.ExampleGrid; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.mealy.ExampleGrid; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.common.util.IOUtil; diff --git a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMooreTest.java b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMooreTest.java index 71fbdfcc36..e63d0b6f23 100644 --- a/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMooreTest.java +++ b/algorithms/active/aaar/src/test/java/de/learnlib/algorithm/aaar/generic/GenericAAARLearnerMooreTest.java @@ -28,10 +28,10 @@ import de.learnlib.algorithm.aaar.AbstractAAARTest; import de.learnlib.algorithm.aaar.ComboConstructor; import de.learnlib.algorithm.aaar.abstraction.AbstractAbstractionTree; -import de.learnlib.example.moore.ExampleRandomMoore; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.moore.ExampleRandomMoore; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.common.util.IOUtil; import net.automatalib.common.util.Pair; diff --git a/algorithms/active/adt/pom.xml b/algorithms/active/adt/pom.xml index d4cba7bf22..c514e0ca4b 100644 --- a/algorithms/active/adt/pom.xml +++ b/algorithms/active/adt/pom.xml @@ -111,6 +111,10 @@ limitations under the License. learnlib-membership-oracles test
+ + de.learnlib.testsupport + learnlib-test-support + net.automatalib diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/adt/ADTLeafNode.java b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/adt/ADTLeafNode.java index 26cc596dc3..b855da8978 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/adt/ADTLeafNode.java +++ b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/adt/ADTLeafNode.java @@ -16,7 +16,7 @@ package de.learnlib.algorithm.adt.adt; import de.learnlib.oracle.SymbolQueryOracle; -import net.automatalib.graph.ads.AbstractRecursiveADSLeafNode; +import net.automatalib.graph.ads.impl.AbstractRecursiveADSLeafNode; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/adt/ADTSymbolNode.java b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/adt/ADTSymbolNode.java index f157e5a6ea..ba89a47cee 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/adt/ADTSymbolNode.java +++ b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/adt/ADTSymbolNode.java @@ -16,7 +16,7 @@ package de.learnlib.algorithm.adt.adt; import de.learnlib.oracle.SymbolQueryOracle; -import net.automatalib.graph.ads.AbstractRecursiveADSSymbolNode; +import net.automatalib.graph.ads.impl.AbstractRecursiveADSSymbolNode; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java index f880b7c943..5b8c105956 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java +++ b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/learner/ADTLearner.java @@ -57,8 +57,8 @@ import de.learnlib.tooling.annotation.builder.GenerateBuilder; import de.learnlib.util.MQUtil; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.common.util.Pair; import net.automatalib.word.Word; diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/model/ObservationTree.java b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/model/ObservationTree.java index 814f239757..1005672e1e 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/model/ObservationTree.java +++ b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/model/ObservationTree.java @@ -27,8 +27,8 @@ import de.learnlib.algorithm.adt.adt.ADTNode; import de.learnlib.algorithm.adt.util.ADTUtil; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.FastMealy; -import net.automatalib.automaton.transducer.FastMealyState; +import net.automatalib.automaton.transducer.impl.FastMealy; +import net.automatalib.automaton.transducer.impl.FastMealyState; import net.automatalib.common.util.Pair; import net.automatalib.util.automaton.equivalence.NearLinearEquivalenceTest; import net.automatalib.word.Word; diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/util/SQOOTBridge.java b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/util/SQOOTBridge.java index 901da5ecbf..bfbe2a3488 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/util/SQOOTBridge.java +++ b/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/util/SQOOTBridge.java @@ -22,8 +22,8 @@ import de.learnlib.algorithm.adt.model.ObservationTree; import de.learnlib.oracle.SymbolQueryOracle; -import net.automatalib.automaton.transducer.FastMealy; -import net.automatalib.automaton.transducer.FastMealyState; +import net.automatalib.automaton.transducer.impl.FastMealy; +import net.automatalib.automaton.transducer.impl.FastMealyState; /** * A utility class that links an observation tree with a symbol query oracle, meaning that all queries to the symbol diff --git a/algorithms/active/adt/src/main/java/module-info.java b/algorithms/active/adt/src/main/java/module-info.java new file mode 100644 index 0000000000..6a594c8686 --- /dev/null +++ b/algorithms/active/adt/src/main/java/module-info.java @@ -0,0 +1,55 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementation of the ADT learning algorithm as described in the Master thesis Active Automata Learning with Adaptive Distinguishing Sequences by Markus + * Frohme. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-adt</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.adt { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.common.counterexample; + requires de.learnlib.common.util; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.adt.ads; + exports de.learnlib.algorithm.adt.adt; + exports de.learnlib.algorithm.adt.api; + exports de.learnlib.algorithm.adt.automaton; + exports de.learnlib.algorithm.adt.config; + exports de.learnlib.algorithm.adt.learner; + exports de.learnlib.algorithm.adt.model; + exports de.learnlib.algorithm.adt.util; +} diff --git a/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/automaton/ADTHypothesisTest.java b/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/automaton/ADTHypothesisTest.java index 7f410b3e53..ad7b15b8e4 100644 --- a/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/automaton/ADTHypothesisTest.java +++ b/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/automaton/ADTHypothesisTest.java @@ -16,7 +16,7 @@ package de.learnlib.algorithm.adt.automaton; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.concept.StateIDs; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTGrowingAlphabetTest.java b/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTGrowingAlphabetTest.java index 312acdf911..ecabff514b 100644 --- a/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTGrowingAlphabetTest.java +++ b/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTGrowingAlphabetTest.java @@ -16,9 +16,7 @@ package de.learnlib.algorithm.adt.learner; import java.util.Collection; -import java.util.List; import java.util.Random; -import java.util.function.Consumer; import de.learnlib.algorithm.adt.config.ADTExtenders; import de.learnlib.algorithm.adt.config.LeafSplitters; @@ -28,7 +26,7 @@ import de.learnlib.oracle.membership.SULSymbolQueryOracle; import de.learnlib.testsupport.AbstractGrowingAlphabetTest; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; @@ -65,13 +63,4 @@ protected ADTLearner getLearner(SymbolQueryOracle getCachedOracle(Alphabet alphabet, - SymbolQueryOracle original, - List> symbolListener) { - // ADT learner already uses a cache internally. - return original; - } - } diff --git a/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTResumableLearnerTest.java b/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTResumableLearnerTest.java index 130d8ee29f..ec7e283cd0 100644 --- a/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTResumableLearnerTest.java +++ b/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTResumableLearnerTest.java @@ -19,15 +19,12 @@ import de.learnlib.algorithm.adt.automaton.ADTState; import de.learnlib.driver.simulator.MealySimulatorSUL; -import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.SymbolQueryOracle; import de.learnlib.oracle.membership.SULSymbolQueryOracle; -import de.learnlib.query.DefaultQuery; import de.learnlib.testsupport.AbstractResumableLearnerTest; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; -import net.automatalib.util.automaton.Automata; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; @@ -49,17 +46,6 @@ protected SymbolQueryOracle getOracle(MealyMachine(new MealySimulatorSUL<>(target)); } - @Override - protected MealyEquivalenceOracle getEquivalenceOracle(MealyMachine target) { - return (mealy, inputs) -> { - final Word separatingWord = Automata.findSeparatingWord(target, mealy, inputs); - if (separatingWord == null) { - return null; - } - return new DefaultQuery<>(Word.epsilon(), separatingWord, target.computeOutput(separatingWord)); - }; - } - @Override protected ADTLearner getLearner(SymbolQueryOracle oracle, Alphabet alphabet) { diff --git a/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTVisualizationTest.java b/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTVisualizationTest.java index 151b38c10e..7dff9348a0 100644 --- a/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTVisualizationTest.java +++ b/algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/learner/ADTVisualizationTest.java @@ -18,10 +18,10 @@ import java.io.IOException; import java.io.StringWriter; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; import de.learnlib.oracle.membership.SULSymbolQueryOracle; import de.learnlib.sul.SUL; import de.learnlib.testsupport.AbstractVisualizationTest; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; import net.automatalib.alphabet.Alphabet; import net.automatalib.serialization.dot.GraphDOT; import org.checkerframework.checker.initialization.qual.UnderInitialization; diff --git a/algorithms/active/dhc/pom.xml b/algorithms/active/dhc/pom.xml index 4df062f8e2..a990fe1169 100644 --- a/algorithms/active/dhc/pom.xml +++ b/algorithms/active/dhc/pom.xml @@ -94,6 +94,10 @@ limitations under the License. learnlib-membership-oracles test
+ + de.learnlib.testsupport + learnlib-test-support + net.automatalib diff --git a/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java b/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java index e3766f2759..6553eea243 100644 --- a/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java +++ b/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHC.java @@ -40,9 +40,9 @@ import de.learnlib.query.DefaultQuery; import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.common.util.mapping.MapMapping; import net.automatalib.common.util.mapping.MutableMapping; import net.automatalib.word.Word; diff --git a/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHCState.java b/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHCState.java index c3f6bd4c0c..f3ced0f6f9 100644 --- a/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHCState.java +++ b/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/mealy/MealyDHCState.java @@ -19,7 +19,7 @@ import java.util.Set; import com.google.common.collect.Maps; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.common.util.mapping.MutableMapping; import net.automatalib.word.Word; diff --git a/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/package-info.java b/algorithms/active/dhc/src/main/java/module-info.java similarity index 52% rename from algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/package-info.java rename to algorithms/active/dhc/src/main/java/module-info.java index e1e683ead6..b7eea4d3a6 100644 --- a/algorithms/active/dhc/src/main/java/de/learnlib/algorithm/dhc/package-info.java +++ b/algorithms/active/dhc/src/main/java/module-info.java @@ -15,8 +15,30 @@ */ /** - * This package (and sub-packages) provides the implementation of the DHC learning algorithm as described in the paper + * This module provides the implementation of the DHC learning algorithm as described in the paper * Automata Learning with on-the-Fly Direct Hypothesis * Construction by Maik Merten, Falk Howar, Bernhard Steffen, and Tiziana Margaria. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-dhc</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
*/ -package de.learnlib.algorithm.dhc; +open module de.learnlib.algorithm.dhc { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.common.counterexample; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.dhc.mealy; +} diff --git a/algorithms/active/dhc/src/test/java/de/learnlib/algorithm/dhc/mealy/MealyDHCTest.java b/algorithms/active/dhc/src/test/java/de/learnlib/algorithm/dhc/mealy/MealyDHCTest.java index 2a6e80fa90..99423003cc 100644 --- a/algorithms/active/dhc/src/test/java/de/learnlib/algorithm/dhc/mealy/MealyDHCTest.java +++ b/algorithms/active/dhc/src/test/java/de/learnlib/algorithm/dhc/mealy/MealyDHCTest.java @@ -20,18 +20,18 @@ import java.util.List; import java.util.Random; -import de.learnlib.example.mealy.ExampleCoffeeMachine; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; -import de.learnlib.example.mealy.ExampleGrid; -import de.learnlib.example.mealy.ExampleStack; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.equivalence.MealySimulatorEQOracle; import de.learnlib.oracle.membership.MealySimulatorOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; +import de.learnlib.testsupport.example.mealy.ExampleGrid; +import de.learnlib.testsupport.example.mealy.ExampleStack; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; import org.testng.Assert; diff --git a/algorithms/active/kearns-vazirani/pom.xml b/algorithms/active/kearns-vazirani/pom.xml index 7f12d36783..5c998b498d 100644 --- a/algorithms/active/kearns-vazirani/pom.xml +++ b/algorithms/active/kearns-vazirani/pom.xml @@ -87,6 +87,10 @@ limitations under the License. de.learnlib.testsupport learnlib-learner-it-support
+ + de.learnlib.testsupport + learnlib-test-support + org.testng diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java index 366e3ef342..b9a15a6f56 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFA.java @@ -37,10 +37,10 @@ import de.learnlib.query.DefaultQuery; import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.common.smartcollection.ArrayStorage; import net.automatalib.word.Word; import org.slf4j.Logger; diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFAState.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFAState.java index a9374644eb..792efea10e 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFAState.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/dfa/KearnsVaziraniDFAState.java @@ -19,7 +19,7 @@ import de.learnlib.algorithm.kv.StateInfo; import de.learnlib.datastructure.discriminationtree.BinaryDTree; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; /** * Class that contains all data that represent the internal state of the {@link KearnsVaziraniDFA} learner. diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java index 8438675afc..dbf2a257eb 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealy.java @@ -38,11 +38,11 @@ import de.learnlib.tooling.annotation.builder.GenerateBuilder; import de.learnlib.util.mealy.MealyUtil; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.CompactTransition; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.impl.CompactTransition; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealyState.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealyState.java index abc107b35d..3b1ff43ffa 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealyState.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/mealy/KearnsVaziraniMealyState.java @@ -19,7 +19,7 @@ import de.learnlib.algorithm.kv.StateInfo; import de.learnlib.datastructure.discriminationtree.MultiDTree; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.word.Word; /** diff --git a/algorithms/active/kearns-vazirani/src/main/java/module-info.java b/algorithms/active/kearns-vazirani/src/main/java/module-info.java new file mode 100644 index 0000000000..621bd817b6 --- /dev/null +++ b/algorithms/active/kearns-vazirani/src/main/java/module-info.java @@ -0,0 +1,47 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementation of the learning algorithm described in the book "An + * Introduction to Computational Learning Theory" by Michael Kearns and Umesh Vazirani. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-kearns-vazirani</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.kv { + + requires de.learnlib.api; + requires de.learnlib.common.counterexample; + requires de.learnlib.common.util; + requires de.learnlib.datastructure.discriminationtree; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.kv; + exports de.learnlib.algorithm.kv.dfa; + exports de.learnlib.algorithm.kv.mealy; +} diff --git a/algorithms/active/lstar/pom.xml b/algorithms/active/lstar/pom.xml index 5d35ba727d..8abc9c786b 100644 --- a/algorithms/active/lstar/pom.xml +++ b/algorithms/active/lstar/pom.xml @@ -109,6 +109,10 @@ limitations under the License. learnlib-membership-oracles test
+ + de.learnlib.testsupport + learnlib-test-support + net.automatalib @@ -121,4 +125,45 @@ limitations under the License. testng + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + @{argLine} --add-reads=de.learnlib.algorithm.lstar=net.automatalib.util + + + + + + + + + fix-xstream + + [16,) + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + @{argLine} + --add-reads=de.learnlib.algorithm.lstar=net.automatalib.util + --add-opens=java.base/java.util=ALL-UNNAMED + + + + + + + + diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/AbstractLStar.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/AbstractLStar.java index 60cd8864fd..c0439c67f8 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/AbstractLStar.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/AbstractLStar.java @@ -32,8 +32,8 @@ import de.learnlib.query.DefaultQuery; import de.learnlib.util.MQUtil; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.word.Word; diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java index 0cbdc3b51a..6bb5b85f78 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/dfa/ExtensibleLStarDFA.java @@ -29,8 +29,8 @@ import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.concept.SuffixOutput; -import net.automatalib.automaton.fsa.CompactDFA; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.word.Word; /** diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java index b246e6d0b8..7d16f8e982 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ClassicLStarMealy.java @@ -28,10 +28,10 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.CompactTransition; import net.automatalib.automaton.concept.SuffixOutput; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.automaton.impl.CompactTransition; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.word.Word; /** diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java index 0b2af26e37..7178af5cae 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/mealy/ExtensibleLStarMealy.java @@ -30,10 +30,10 @@ import de.learnlib.query.DefaultQuery; import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.CompactTransition; import net.automatalib.automaton.concept.SuffixOutput; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.automaton.impl.CompactTransition; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.word.Word; /** diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java index 09ceee0d79..44161dcf4d 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ClassicLStarMoore.java @@ -26,8 +26,8 @@ import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.concept.SuffixOutput; -import net.automatalib.automaton.transducer.CompactMoore; import net.automatalib.automaton.transducer.MooreMachine; +import net.automatalib.automaton.transducer.impl.CompactMoore; import net.automatalib.word.Word; /** diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java index df8422c0c4..8985ca1409 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/moore/ExtensibleLStarMoore.java @@ -28,8 +28,8 @@ import de.learnlib.tooling.annotation.builder.GenerateBuilder; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.concept.SuffixOutput; -import net.automatalib.automaton.transducer.CompactMoore; import net.automatalib.automaton.transducer.MooreMachine; +import net.automatalib.automaton.transducer.impl.CompactMoore; import net.automatalib.word.Word; /** diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/package-info.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/package-info.java deleted file mode 100644 index 007f6ebde6..0000000000 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/lstar/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementation of the L* learning algorithm described in the paper - * Learning Regular Sets from Queries and Counterexamples by - * Dana Angluin as well as multiple variations thereof. - */ -package de.learnlib.algorithm.lstar; diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/package-info.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/package-info.java deleted file mode 100644 index 1b21c05f8c..0000000000 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/malerpnueli/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementation of the {@link de.learnlib.algorithm.lstar L* variation} - * based on the paper On the Learnability of Infinitary Regular - * Sets by Oded Maler and Amir Pnueli. - */ -package de.learnlib.algorithm.malerpnueli; diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/package-info.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/package-info.java deleted file mode 100644 index c24a3feff2..0000000000 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithm/rivestschapire/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementation of the {@link de.learnlib.algorithm.lstar L* variation} - * based on the paper Inference of finite automata using homing - * sequences by Ronald L. Rivest and Robert E. Schapire. - */ -package de.learnlib.algorithm.rivestschapire; diff --git a/algorithms/active/lstar/src/main/java/module-info.java b/algorithms/active/lstar/src/main/java/module-info.java new file mode 100644 index 0000000000..b088dd4773 --- /dev/null +++ b/algorithms/active/lstar/src/main/java/module-info.java @@ -0,0 +1,56 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementation of the L* learning algorithm described in the paper + * Learning Regular Sets from Queries and Counterexamples by + * Dana Angluin including variations and optimizations thereof such as the versions based on "On the Learnability of Infinitary Regular Sets by Oded Maler + * and Amir Pnueli or Inference of finite automata using homing + * sequences) by Ronald L. Rivest and Robert E. Schapire. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-lstar</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.lstar { + + requires de.learnlib.api; + requires de.learnlib.common.counterexample; + requires de.learnlib.common.util; + requires de.learnlib.datastructure.observationtable; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.lstar; + exports de.learnlib.algorithm.lstar.ce; + exports de.learnlib.algorithm.lstar.closing; + exports de.learnlib.algorithm.lstar.dfa; + exports de.learnlib.algorithm.lstar.mealy; + exports de.learnlib.algorithm.lstar.moore; + exports de.learnlib.algorithm.malerpnueli; + exports de.learnlib.algorithm.rivestschapire; +} diff --git a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ClassicLStarMealyGrowingAlphabetTest.java b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ClassicLStarMealyGrowingAlphabetTest.java index ad7d0f836b..ba0579099f 100644 --- a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ClassicLStarMealyGrowingAlphabetTest.java +++ b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ClassicLStarMealyGrowingAlphabetTest.java @@ -21,14 +21,14 @@ import de.learnlib.algorithm.lstar.closing.ClosingStrategies; import de.learnlib.algorithm.lstar.mealy.ClassicLStarMealy; import de.learnlib.algorithm.lstar.mealy.ExtensibleLStarMealy; -import de.learnlib.example.mealy.ExampleCoffeeMachine; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.membership.MealySimulatorOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; import de.learnlib.util.mealy.MealyUtil; -import net.automatalib.alphabet.GrowingMapAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; import org.testng.Assert; diff --git a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarDFAResumableLearnerTest.java b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarDFAResumableLearnerTest.java index 18abe550f8..0e45514ba9 100644 --- a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarDFAResumableLearnerTest.java +++ b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarDFAResumableLearnerTest.java @@ -20,7 +20,7 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.testsupport.AbstractResumableLearnerDFATest; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; public class ExtensibleLStarDFAResumableLearnerTest extends AbstractResumableLearnerDFATest, AutomatonLStarState, Integer>> { diff --git a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarMealyResumableLearnerTest.java b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarMealyResumableLearnerTest.java index 6c69a68315..558dbdaeed 100644 --- a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarMealyResumableLearnerTest.java +++ b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarMealyResumableLearnerTest.java @@ -22,9 +22,9 @@ import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.testsupport.AbstractResumableLearnerMealyTest; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; diff --git a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarMooreResumableLearnerTest.java b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarMooreResumableLearnerTest.java index 9ae975edc1..e522f60203 100644 --- a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarMooreResumableLearnerTest.java +++ b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/ExtensibleLStarMooreResumableLearnerTest.java @@ -22,9 +22,9 @@ import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; import de.learnlib.testsupport.AbstractResumableLearnerMooreTest; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMoore; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MooreMachine; +import net.automatalib.automaton.transducer.impl.CompactMoore; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; diff --git a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/LStarDFATest.java b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/LStarDFATest.java index f0be51ba46..49da2e953d 100644 --- a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/LStarDFATest.java +++ b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/LStarDFATest.java @@ -23,13 +23,13 @@ import de.learnlib.algorithm.lstar.ce.ObservationTableCEXHandler; import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.algorithm.lstar.dfa.ExtensibleLStarDFA; -import de.learnlib.example.dfa.ExamplePaulAndMary; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.equivalence.SimulatorEQOracle; import de.learnlib.oracle.equivalence.WMethodEQOracle; import de.learnlib.oracle.equivalence.WpMethodEQOracle; import de.learnlib.oracle.membership.DFASimulatorOracle; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; import net.automatalib.word.Word; diff --git a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/LStarMealyTest.java b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/LStarMealyTest.java index 119092db30..9f04369010 100644 --- a/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/LStarMealyTest.java +++ b/algorithms/active/lstar/src/test/java/de/learnlib/algorithm/lstar/LStarMealyTest.java @@ -23,15 +23,15 @@ import de.learnlib.algorithm.lstar.closing.ClosingStrategy; import de.learnlib.algorithm.lstar.mealy.ClassicLStarMealy; import de.learnlib.algorithm.lstar.mealy.ExtensibleLStarMealy; -import de.learnlib.example.mealy.ExampleStack; -import de.learnlib.example.mealy.ExampleStack.Input; -import de.learnlib.example.mealy.ExampleStack.Output; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.equivalence.SimulatorEQOracle; import de.learnlib.oracle.equivalence.mealy.SymbolEQOracleWrapper; import de.learnlib.oracle.membership.MealySimulatorOracle; +import de.learnlib.testsupport.example.mealy.ExampleStack; +import de.learnlib.testsupport.example.mealy.ExampleStack.Input; +import de.learnlib.testsupport.example.mealy.ExampleStack.Output; import de.learnlib.util.mealy.MealyUtil; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; diff --git a/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java b/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java index b96d39af87..3796e96b46 100644 --- a/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java +++ b/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/NLStarLearner.java @@ -25,8 +25,8 @@ import de.learnlib.tooling.annotation.builder.GenerateBuilder; import de.learnlib.util.MQUtil; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.fsa.CompactDFA; -import net.automatalib.automaton.fsa.CompactNFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; +import net.automatalib.automaton.fsa.impl.CompactNFA; import net.automatalib.util.automaton.fsa.NFAs; import net.automatalib.word.Word; diff --git a/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/package-info.java b/algorithms/active/nlstar/src/main/java/module-info.java similarity index 53% rename from algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/package-info.java rename to algorithms/active/nlstar/src/main/java/module-info.java index 57e12ce55a..eb22ac1388 100644 --- a/algorithms/active/nlstar/src/main/java/de/learnlib/algorithm/nlstar/package-info.java +++ b/algorithms/active/nlstar/src/main/java/module-info.java @@ -15,8 +15,29 @@ */ /** - * This package (and sub-packages) provides the implementation of the NL* learning algorithm as described in the paper + * This module provides the implementation of the NL* learning algorithm as described in the paper * Angluin-Style Learning of NFA by Benedikt Bollig, Peter * Habermehl, Carsten Kern, and Martin Leucker. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-nlstar</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
*/ -package de.learnlib.algorithm.nlstar; +open module de.learnlib.algorithm.nlstar { + + requires de.learnlib.api; + requires de.learnlib.common.util; + requires net.automatalib.api; + requires net.automatalib.core; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.nlstar; +} diff --git a/algorithms/active/nlstar/src/test/java/de/learnlib/algorithm/nlstar/NLStarTest.java b/algorithms/active/nlstar/src/test/java/de/learnlib/algorithm/nlstar/NLStarTest.java index 2ee76f8f6d..d5a7ea5716 100644 --- a/algorithms/active/nlstar/src/test/java/de/learnlib/algorithm/nlstar/NLStarTest.java +++ b/algorithms/active/nlstar/src/test/java/de/learnlib/algorithm/nlstar/NLStarTest.java @@ -20,9 +20,9 @@ import de.learnlib.oracle.membership.NFASimulatorOracle; import de.learnlib.util.Experiment; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactNFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.NFA; +import net.automatalib.automaton.fsa.impl.CompactNFA; import net.automatalib.util.automaton.Automata; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.util.automaton.fsa.NFAs; diff --git a/algorithms/active/observation-pack-vpa/pom.xml b/algorithms/active/observation-pack-vpa/pom.xml index 5afa33fb2c..8b5ca0bffc 100644 --- a/algorithms/active/observation-pack-vpa/pom.xml +++ b/algorithms/active/observation-pack-vpa/pom.xml @@ -124,4 +124,19 @@ limitations under the License. testng + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + @{argLine} --add-reads=de.learnlib.algorithm.observationpack.vpa=net.automatalib.util + + + + + diff --git a/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/hypothesis/OneSEVPAHypothesis.java b/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/hypothesis/OneSEVPAHypothesis.java index 2ca46f202d..49120d9ece 100644 --- a/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/hypothesis/OneSEVPAHypothesis.java +++ b/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/hypothesis/OneSEVPAHypothesis.java @@ -19,10 +19,10 @@ import java.util.List; import net.automatalib.alphabet.VPAlphabet; -import net.automatalib.automaton.vpa.AbstractSEVPA; import net.automatalib.automaton.vpa.OneSEVPA; import net.automatalib.automaton.vpa.StackContents; import net.automatalib.automaton.vpa.State; +import net.automatalib.automaton.vpa.impl.AbstractSEVPA; import org.checkerframework.checker.nullness.qual.Nullable; /** diff --git a/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/package-info.java b/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/package-info.java deleted file mode 100644 index 11e3a509a3..0000000000 --- a/algorithms/active/observation-pack-vpa/src/main/java/de/learnlib/algorithm/observationpack/vpa/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementation of the VPA adaption of the Observation-Pack learning - * algorithm as discussed in the PhD thesis Foundations of Active - * Automata Learning: An Algorithmic Perspective by Malte Isberner. - */ -package de.learnlib.algorithm.observationpack.vpa; diff --git a/algorithms/active/observation-pack-vpa/src/main/java/module-info.java b/algorithms/active/observation-pack-vpa/src/main/java/module-info.java new file mode 100644 index 0000000000..ca68f5d5eb --- /dev/null +++ b/algorithms/active/observation-pack-vpa/src/main/java/module-info.java @@ -0,0 +1,48 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementation of the VPA adaption of the Observation-Pack learning algorithm as discussed + * in the PhD thesis Foundations of Active Automata Learning: An + * Algorithmic Perspective by Malte Isberner. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-observation-pack-vpa</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.observationpack.vpa { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.common.counterexample; + requires de.learnlib.datastructure.discriminationtree; + requires de.learnlib.datastructure.list; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.observationpack.vpa; + exports de.learnlib.algorithm.observationpack.vpa.hypothesis; +} diff --git a/algorithms/active/observation-pack-vpa/src/test/java/de/learnlib/algorithm/observationpack/vpa/DTVisualizationTest.java b/algorithms/active/observation-pack-vpa/src/test/java/de/learnlib/algorithm/observationpack/vpa/DTVisualizationTest.java index 74ed5cd8ae..714ca03777 100644 --- a/algorithms/active/observation-pack-vpa/src/test/java/de/learnlib/algorithm/observationpack/vpa/DTVisualizationTest.java +++ b/algorithms/active/observation-pack-vpa/src/test/java/de/learnlib/algorithm/observationpack/vpa/DTVisualizationTest.java @@ -26,10 +26,10 @@ import de.learnlib.oracle.equivalence.vpa.SimulatorEQOracle; import de.learnlib.oracle.membership.SEVPASimulatorOracle; import de.learnlib.util.Experiment; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultVPAlphabet; -import net.automatalib.automaton.vpa.DefaultOneSEVPA; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultVPAlphabet; import net.automatalib.automaton.vpa.OneSEVPA; +import net.automatalib.automaton.vpa.impl.DefaultOneSEVPA; import net.automatalib.common.util.IOUtil; import net.automatalib.serialization.dot.GraphDOT; import net.automatalib.util.automaton.random.RandomAutomata; diff --git a/algorithms/active/observation-pack/pom.xml b/algorithms/active/observation-pack/pom.xml index 562ba255cf..c093c4e8be 100644 --- a/algorithms/active/observation-pack/pom.xml +++ b/algorithms/active/observation-pack/pom.xml @@ -96,6 +96,10 @@ limitations under the License. learnlib-membership-oracles test + + de.learnlib.testsupport + learnlib-test-support + net.automatalib diff --git a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/AbstractOPLearner.java b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/AbstractOPLearner.java index eb0da13828..69a0503b88 100644 --- a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/AbstractOPLearner.java +++ b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/AbstractOPLearner.java @@ -34,8 +34,8 @@ import de.learnlib.query.Query; import de.learnlib.util.MQUtil; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/hypothesis/OPLearnerHypothesis.java b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/hypothesis/OPLearnerHypothesis.java index f79320e082..a8bd01934b 100644 --- a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/hypothesis/OPLearnerHypothesis.java +++ b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/hypothesis/OPLearnerHypothesis.java @@ -23,8 +23,8 @@ import de.learnlib.AccessSequenceTransformer; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.StateIDs; import net.automatalib.graph.Graph; diff --git a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/package-info.java b/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/package-info.java deleted file mode 100644 index 245091449a..0000000000 --- a/algorithms/active/observation-pack/src/main/java/de/learnlib/algorithm/observationpack/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementation of the Observation-Pack learning algorithm as described - * in the PhD thesis Active learning of interface programs by Falk - * Howar. - */ -package de.learnlib.algorithm.observationpack; diff --git a/algorithms/active/observation-pack/src/main/java/module-info.java b/algorithms/active/observation-pack/src/main/java/module-info.java new file mode 100644 index 0000000000..8c28422b08 --- /dev/null +++ b/algorithms/active/observation-pack/src/main/java/module-info.java @@ -0,0 +1,48 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementation of the Observation-Pack learning algorithm as described in the PhD thesis Active learning of interface programs by Falk Howar. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-observation-pack</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.observationpack { + + requires de.learnlib.api; + requires de.learnlib.common.counterexample; + requires de.learnlib.common.util; + requires de.learnlib.datastructure.discriminationtree; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.observationpack; + exports de.learnlib.algorithm.observationpack.dfa; + exports de.learnlib.algorithm.observationpack.hypothesis; + exports de.learnlib.algorithm.observationpack.mealy; + exports de.learnlib.algorithm.observationpack.moore; +} diff --git a/algorithms/active/observation-pack/src/test/java/de/learnlib/algorithm/observationpack/DTVisualizationTest.java b/algorithms/active/observation-pack/src/test/java/de/learnlib/algorithm/observationpack/DTVisualizationTest.java index c336a11da4..9273eedf37 100644 --- a/algorithms/active/observation-pack/src/test/java/de/learnlib/algorithm/observationpack/DTVisualizationTest.java +++ b/algorithms/active/observation-pack/src/test/java/de/learnlib/algorithm/observationpack/DTVisualizationTest.java @@ -20,10 +20,10 @@ import de.learnlib.algorithm.observationpack.mealy.OPLearnerMealy; import de.learnlib.algorithm.observationpack.mealy.OPLearnerMealyBuilder; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; import de.learnlib.oracle.membership.SULOracle; import de.learnlib.sul.SUL; import de.learnlib.testsupport.AbstractVisualizationTest; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; import net.automatalib.alphabet.Alphabet; import net.automatalib.serialization.dot.GraphDOT; import org.checkerframework.checker.initialization.qual.UnderInitialization; diff --git a/algorithms/active/oml/pom.xml b/algorithms/active/oml/pom.xml index bbfe28e09b..cfd14add0e 100644 --- a/algorithms/active/oml/pom.xml +++ b/algorithms/active/oml/pom.xml @@ -69,6 +69,10 @@ limitations under the License. de.learnlib.testsupport learnlib-learning-examples
+ + de.learnlib.testsupport + learnlib-test-support + net.automatalib diff --git a/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/lstar/OptimalLStarDFA.java b/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/lstar/OptimalLStarDFA.java index 750b72b1f8..7cc92afb44 100644 --- a/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/lstar/OptimalLStarDFA.java +++ b/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/lstar/OptimalLStarDFA.java @@ -23,8 +23,8 @@ import de.learnlib.algorithm.LearningAlgorithm.DFALearner; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.fsa.CompactDFA; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.common.util.mapping.MutableMapping; import net.automatalib.word.Word; diff --git a/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/lstar/OptimalLStarMealy.java b/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/lstar/OptimalLStarMealy.java index b96dac0beb..849f7db624 100644 --- a/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/lstar/OptimalLStarMealy.java +++ b/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/lstar/OptimalLStarMealy.java @@ -24,8 +24,8 @@ import de.learnlib.algorithm.LearningAlgorithm.MealyLearner; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.common.util.mapping.MutableMapping; import net.automatalib.word.Word; diff --git a/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/package-info.java b/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/package-info.java deleted file mode 100644 index a37b0ff712..0000000000 --- a/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementations of various learning algorithms based on the "optimal MAT - * learning" concept as described in the paper Active Automata - * Learning as Black-Box Search and Lazy Partition Refinement by Falk Howar and Bernhard Steffen. - */ -package de.learnlib.algorithm.oml; diff --git a/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/ttt/AbstractOptimalTTT.java b/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/ttt/AbstractOptimalTTT.java index 63460b75c0..f2e87f45a8 100644 --- a/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/ttt/AbstractOptimalTTT.java +++ b/algorithms/active/oml/src/main/java/de/learnlib/algorithm/oml/ttt/AbstractOptimalTTT.java @@ -29,8 +29,8 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.concept.InputAlphabetHolder; import net.automatalib.word.Word; diff --git a/algorithms/active/oml/src/main/java/module-info.java b/algorithms/active/oml/src/main/java/module-info.java new file mode 100644 index 0000000000..7ae26c6e98 --- /dev/null +++ b/algorithms/active/oml/src/main/java/module-info.java @@ -0,0 +1,46 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementations of various learning algorithms based on the "optimal MAT learning" concept + * as described in the paper Active Automata Learning as + * Black-Box Search and Lazy Partition Refinement by Falk Howar and Bernhard Steffen. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-oml</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.oml { + + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + exports de.learnlib.algorithm.oml.lstar; + exports de.learnlib.algorithm.oml.ttt; + exports de.learnlib.algorithm.oml.ttt.dfa; + exports de.learnlib.algorithm.oml.ttt.dt; + exports de.learnlib.algorithm.oml.ttt.mealy; + exports de.learnlib.algorithm.oml.ttt.pt; + exports de.learnlib.algorithm.oml.ttt.st; +} diff --git a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/adapter/dfa/KearnsVaziraniAdapterDFA.java b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/adapter/dfa/KearnsVaziraniAdapterDFA.java index 285d452675..ef1820ba78 100644 --- a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/adapter/dfa/KearnsVaziraniAdapterDFA.java +++ b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/adapter/dfa/KearnsVaziraniAdapterDFA.java @@ -20,7 +20,7 @@ import de.learnlib.algorithm.kv.dfa.KearnsVaziraniDFA; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.word.Word; /** diff --git a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/package-info.java b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/package-info.java deleted file mode 100644 index 4cac27fa96..0000000000 --- a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementations of various learning algorithms for systems of procedural - * automata such as the ones described in the papers Compositional - * learning of mutually recursive procedural systems and From Languages to Behaviors and Back by Markus Frohme and - * Bernhard Steffen. - */ -package de.learnlib.algorithm.procedural; diff --git a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/sba/SBALearner.java b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/sba/SBALearner.java index 62abf8012f..e42388b515 100644 --- a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/sba/SBALearner.java +++ b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/sba/SBALearner.java @@ -38,14 +38,14 @@ import de.learnlib.query.DefaultQuery; import de.learnlib.util.MQUtil; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.fsa.DFA; -import net.automatalib.automaton.procedural.EmptySBA; import net.automatalib.automaton.procedural.SBA; -import net.automatalib.automaton.procedural.StackSBA; +import net.automatalib.automaton.procedural.impl.EmptySBA; +import net.automatalib.automaton.procedural.impl.StackSBA; import net.automatalib.common.util.Pair; import net.automatalib.common.util.mapping.Mapping; import net.automatalib.util.automaton.Automata; diff --git a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/spa/SPALearner.java b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/spa/SPALearner.java index 7fbea07967..e6cafe869f 100644 --- a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/spa/SPALearner.java +++ b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/spa/SPALearner.java @@ -38,13 +38,13 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; import de.learnlib.util.MQUtil; -import net.automatalib.alphabet.GrowingMapAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.fsa.DFA; -import net.automatalib.automaton.procedural.EmptySPA; import net.automatalib.automaton.procedural.SPA; -import net.automatalib.automaton.procedural.StackSPA; +import net.automatalib.automaton.procedural.impl.EmptySPA; +import net.automatalib.automaton.procedural.impl.StackSPA; import net.automatalib.common.util.mapping.Mapping; import net.automatalib.word.Word; import net.automatalib.word.WordBuilder; diff --git a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/spmm/SPMMLearner.java b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/spmm/SPMMLearner.java index 41dd4ae43f..922a71a1c4 100644 --- a/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/spmm/SPMMLearner.java +++ b/algorithms/active/procedural/src/main/java/de/learnlib/algorithm/procedural/spmm/SPMMLearner.java @@ -35,13 +35,13 @@ import de.learnlib.query.DefaultQuery; import de.learnlib.util.MQUtil; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.alphabet.SupportsGrowingAlphabet; -import net.automatalib.automaton.procedural.EmptySPMM; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.procedural.SPMM; -import net.automatalib.automaton.procedural.StackSPMM; +import net.automatalib.automaton.procedural.impl.EmptySPMM; +import net.automatalib.automaton.procedural.impl.StackSPMM; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.common.util.Pair; import net.automatalib.common.util.mapping.Mapping; diff --git a/algorithms/active/procedural/src/main/java/module-info.java b/algorithms/active/procedural/src/main/java/module-info.java new file mode 100644 index 0000000000..37d0de9e03 --- /dev/null +++ b/algorithms/active/procedural/src/main/java/module-info.java @@ -0,0 +1,59 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementations of various learning algorithms for systems of procedural automata such as + * the ones described in the papers Compositional learning of + * mutually recursive procedural systems and From Languages + * to Behaviors and Back by Markus Frohme and Bernhard Steffen. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-procedural</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.procedural { + + requires com.google.common; + requires de.learnlib.algorithm.kv; + requires de.learnlib.algorithm.lstar; + requires de.learnlib.algorithm.observationpack; + requires de.learnlib.algorithm.oml; + requires de.learnlib.algorithm.ttt; + requires de.learnlib.api; + requires de.learnlib.common.util; + requires de.learnlib.common.counterexample; + requires de.learnlib.datastructure.observationtable; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + + exports de.learnlib.algorithm.procedural; + exports de.learnlib.algorithm.procedural.adapter.dfa; + exports de.learnlib.algorithm.procedural.adapter.mealy; + exports de.learnlib.algorithm.procedural.sba; + exports de.learnlib.algorithm.procedural.sba.manager; + exports de.learnlib.algorithm.procedural.spa; + exports de.learnlib.algorithm.procedural.spa.manager; + exports de.learnlib.algorithm.procedural.spmm; + exports de.learnlib.algorithm.procedural.spmm.manager; +} diff --git a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/ATManagerTest.java b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/ATManagerTest.java index 422d071aaf..4acf20b16a 100644 --- a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/ATManagerTest.java +++ b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/ATManagerTest.java @@ -18,9 +18,9 @@ import de.learnlib.algorithm.procedural.sba.manager.DefaultATManager; import de.learnlib.algorithm.procedural.sba.manager.OptimizingATManager; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.word.Word; import org.testng.Assert; import org.testng.annotations.DataProvider; diff --git a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/OptimizationsTest.java b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/OptimizationsTest.java index 33335873c7..951686c461 100644 --- a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/OptimizationsTest.java +++ b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/sba/OptimizationsTest.java @@ -21,11 +21,11 @@ import de.learnlib.algorithm.procedural.SymbolWrapper; import de.learnlib.algorithm.procedural.adapter.dfa.TTTAdapterDFA; import de.learnlib.algorithm.procedural.sba.manager.OptimizingATManager; -import de.learnlib.example.sba.ExamplePalindrome; import de.learnlib.oracle.equivalence.EQOracleChain; import de.learnlib.oracle.equivalence.SampleSetEQOracle; import de.learnlib.oracle.equivalence.sba.SimulatorEQOracle; import de.learnlib.oracle.membership.SimulatorOracle; +import de.learnlib.testsupport.example.sba.ExamplePalindrome; import de.learnlib.util.Experiment; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.automaton.procedural.SBA; diff --git a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spa/ATRManagerTest.java b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spa/ATRManagerTest.java index 56a8f1f7fe..60f8fbf84c 100644 --- a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spa/ATRManagerTest.java +++ b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spa/ATRManagerTest.java @@ -18,9 +18,9 @@ import de.learnlib.algorithm.procedural.spa.manager.DefaultATRManager; import de.learnlib.algorithm.procedural.spa.manager.OptimizingATRManager; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.word.Word; import org.testng.Assert; import org.testng.annotations.DataProvider; diff --git a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/ATManagerTest.java b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/ATManagerTest.java index aa486f1b6c..e466e90058 100644 --- a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/ATManagerTest.java +++ b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/ATManagerTest.java @@ -19,9 +19,9 @@ import de.learnlib.algorithm.procedural.spmm.manager.OptimizingATManager; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.word.Word; import org.testng.Assert; import org.testng.annotations.DataProvider; diff --git a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/OptimizationsTest.java b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/OptimizationsTest.java index a2e6eec38b..074f3640da 100644 --- a/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/OptimizationsTest.java +++ b/algorithms/active/procedural/src/test/java/de/learnlib/algorithm/procedural/spmm/OptimizationsTest.java @@ -21,11 +21,11 @@ import de.learnlib.algorithm.procedural.SymbolWrapper; import de.learnlib.algorithm.procedural.adapter.mealy.TTTAdapterMealy; import de.learnlib.algorithm.procedural.spmm.manager.OptimizingATManager; -import de.learnlib.example.spmm.ExamplePalindrome; import de.learnlib.oracle.equivalence.EQOracleChain; import de.learnlib.oracle.equivalence.SampleSetEQOracle; import de.learnlib.oracle.equivalence.spmm.SimulatorEQOracle; import de.learnlib.oracle.membership.SimulatorOracle; +import de.learnlib.testsupport.example.spmm.ExamplePalindrome; import de.learnlib.util.Experiment; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.automaton.procedural.SPMM; diff --git a/algorithms/active/ttt-vpa/src/main/java/de/learnlib/algorithm/ttt/vpa/package-info.java b/algorithms/active/ttt-vpa/src/main/java/module-info.java similarity index 50% rename from algorithms/active/ttt-vpa/src/main/java/de/learnlib/algorithm/ttt/vpa/package-info.java rename to algorithms/active/ttt-vpa/src/main/java/module-info.java index dc648c68cb..0c713c44b5 100644 --- a/algorithms/active/ttt-vpa/src/main/java/de/learnlib/algorithm/ttt/vpa/package-info.java +++ b/algorithms/active/ttt-vpa/src/main/java/module-info.java @@ -15,8 +15,30 @@ */ /** - * This package (and sub-packages) provides the implementation of the VPA adaption of the TTT learning algorithm as + * This module provides the implementation of the VPA adaption of the TTT learning algorithm as * presented in the PhD thesis Foundations of Active Automata * Learning: An Algorithmic Perspective by Malte Isberner. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-ttt-vpa</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
*/ -package de.learnlib.algorithm.ttt.vpa; +open module de.learnlib.algorithm.ttt.vpa { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.algorithm.observationpack.vpa; + requires de.learnlib.common.counterexample; + requires de.learnlib.datastructure.discriminationtree; + requires net.automatalib.api; + requires org.checkerframework.checker.qual; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.ttt.vpa; +} diff --git a/algorithms/active/ttt/pom.xml b/algorithms/active/ttt/pom.xml index 63a023953c..8ad7a84b3e 100644 --- a/algorithms/active/ttt/pom.xml +++ b/algorithms/active/ttt/pom.xml @@ -105,6 +105,10 @@ limitations under the License. learnlib-membership-oracles test
+ + de.learnlib.testsupport + learnlib-test-support + net.automatalib diff --git a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTHypothesis.java b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTHypothesis.java index a309f64bcd..989df42270 100644 --- a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTHypothesis.java +++ b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTHypothesis.java @@ -22,9 +22,9 @@ import java.util.Map; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.GrowingAlphabet; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.DeterministicAutomaton; import net.automatalib.automaton.FiniteAlphabetAutomaton; import net.automatalib.automaton.fsa.DFA; diff --git a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java index 09eaace879..fddc6a401f 100644 --- a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java +++ b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/base/AbstractTTTLearner.java @@ -40,8 +40,8 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.common.smartcollection.ElementReference; import net.automatalib.common.smartcollection.UnorderedCollection; import net.automatalib.word.Word; diff --git a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/package-info.java b/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/package-info.java deleted file mode 100644 index 6a170409db..0000000000 --- a/algorithms/active/ttt/src/main/java/de/learnlib/algorithm/ttt/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementation of the TTT algorithm as described in the paper The TTT Algorithm: A Redundancy-Free Approach to Active Automata - * Learning by Malte Isberner, Falk Howar, and Bernhard Steffen. - */ -package de.learnlib.algorithm.ttt; diff --git a/algorithms/active/ttt/src/main/java/module-info.java b/algorithms/active/ttt/src/main/java/module-info.java new file mode 100644 index 0000000000..68b2a91863 --- /dev/null +++ b/algorithms/active/ttt/src/main/java/module-info.java @@ -0,0 +1,51 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementation of the TTT algorithm as described in the paper The TTT Algorithm: A Redundancy-Free Approach to Active Automata + * Learning by Malte Isberner, Falk Howar, and Bernhard Steffen. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-ttt</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.ttt { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.common.counterexample; + requires de.learnlib.common.util; + requires de.learnlib.datastructure.discriminationtree; + requires de.learnlib.datastructure.list; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.algorithm.ttt.base; + exports de.learnlib.algorithm.ttt.dfa; + exports de.learnlib.algorithm.ttt.mealy; + exports de.learnlib.algorithm.ttt.moore; +} diff --git a/algorithms/active/ttt/src/test/java/de/learnlib/algorithm/ttt/TTTVisualizationTest.java b/algorithms/active/ttt/src/test/java/de/learnlib/algorithm/ttt/TTTVisualizationTest.java index 53cd4c0169..e14b0e7a37 100644 --- a/algorithms/active/ttt/src/test/java/de/learnlib/algorithm/ttt/TTTVisualizationTest.java +++ b/algorithms/active/ttt/src/test/java/de/learnlib/algorithm/ttt/TTTVisualizationTest.java @@ -20,10 +20,10 @@ import de.learnlib.algorithm.ttt.mealy.TTTLearnerMealy; import de.learnlib.algorithm.ttt.mealy.TTTLearnerMealyBuilder; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; import de.learnlib.oracle.membership.SULOracle; import de.learnlib.sul.SUL; import de.learnlib.testsupport.AbstractVisualizationTest; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; import net.automatalib.alphabet.Alphabet; import net.automatalib.serialization.dot.GraphDOT; import org.testng.Assert; diff --git a/algorithms/passive/ostia/src/main/java/de/learnlib/algorithm/ostia/OSTIA.java b/algorithms/passive/ostia/src/main/java/de/learnlib/algorithm/ostia/OSTIA.java index a49378cb21..10c9217c86 100644 --- a/algorithms/passive/ostia/src/main/java/de/learnlib/algorithm/ostia/OSTIA.java +++ b/algorithms/passive/ostia/src/main/java/de/learnlib/algorithm/ostia/OSTIA.java @@ -34,7 +34,7 @@ import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.GrowingAlphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.transducer.SubsequentialTransducer; import net.automatalib.common.smartcollection.IntSeq; import net.automatalib.common.util.Pair; diff --git a/algorithms/passive/ostia/src/main/java/de/learnlib/algorithm/ostia/package-info.java b/algorithms/passive/ostia/src/main/java/de/learnlib/algorithm/ostia/package-info.java deleted file mode 100644 index d8d2b923f0..0000000000 --- a/algorithms/passive/ostia/src/main/java/de/learnlib/algorithm/ostia/package-info.java +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (and sub-packages) provides the implementation of the "onward subsequential transducer inference - * algorithm" (OSTIA) learning algorithm as presented in the paper Learning - * Subsequential Transducers for Pattern Recognition Interpretation Tasks by Jose Oncina, Pedro García, and Enrique - * Vidal. - */ -package de.learnlib.algorithm.ostia; diff --git a/algorithms/passive/ostia/src/main/java/module-info.java b/algorithms/passive/ostia/src/main/java/module-info.java new file mode 100644 index 0000000000..7b250402e7 --- /dev/null +++ b/algorithms/passive/ostia/src/main/java/module-info.java @@ -0,0 +1,41 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the implementation of the "onward subsequential transducer inference algorithm" (OSTIA) learning + * algorithm as presented in the paper Learning Subsequential Transducers + * for Pattern Recognition Interpretation Tasks by Jose Oncina, Pedro García, and Enrique Vidal. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-ostia</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.algorithm.ostia { + + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + exports de.learnlib.algorithm.ostia; +} diff --git a/algorithms/passive/ostia/src/test/java/de/learnlib/algorithm/ostia/OSTIATest.java b/algorithms/passive/ostia/src/test/java/de/learnlib/algorithm/ostia/OSTIATest.java index 02ebaba2cf..b2369ae77c 100644 --- a/algorithms/passive/ostia/src/test/java/de/learnlib/algorithm/ostia/OSTIATest.java +++ b/algorithms/passive/ostia/src/test/java/de/learnlib/algorithm/ostia/OSTIATest.java @@ -29,9 +29,9 @@ import com.google.common.collect.Iterables; import com.google.common.io.CharStreams; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactSST; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.SubsequentialTransducer; +import net.automatalib.automaton.transducer.impl.CompactSST; import net.automatalib.common.smartcollection.IntSeq; import net.automatalib.common.util.IOUtil; import net.automatalib.common.util.Pair; diff --git a/algorithms/passive/rpni/pom.xml b/algorithms/passive/rpni/pom.xml index 82d5768f3b..c7dca4acbb 100644 --- a/algorithms/passive/rpni/pom.xml +++ b/algorithms/passive/rpni/pom.xml @@ -100,4 +100,19 @@ limitations under the License. testng
+ + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + @{argLine} --add-reads=de.learnlib.algorithm.rpni=net.automatalib.core + + + + + diff --git a/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/package-info.java b/algorithms/passive/rpni/src/main/java/module-info.java similarity index 60% rename from algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/package-info.java rename to algorithms/passive/rpni/src/main/java/module-info.java index dbab8194bf..cf1419b7bc 100644 --- a/algorithms/passive/rpni/src/main/java/de/learnlib/algorithm/rpni/package-info.java +++ b/algorithms/passive/rpni/src/main/java/module-info.java @@ -15,12 +15,32 @@ */ /** - * This package provides the implementation of (a blue-fringe version of) the "regular positive negative inference" + * This module provides the implementation of (a blue-fringe version of) the "regular positive negative inference" * (RPNI) learning algorithm as presented in the paper Inferring * regular languages in polynomial update time by Jose Oncina and Pedro García, including merging heuristics such as * the "evidence-driven state merging" (EDSM) and "minimum description length" (MDL) strategies. *

* More details on these implementations can be found in the book Grammatical Inference by Colin de la Higuera. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-rpni</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
*/ -package de.learnlib.algorithm.rpni; +open module de.learnlib.algorithm.rpni { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.datastructure.pta; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.common.util; + requires org.checkerframework.checker.qual; + + exports de.learnlib.algorithm.rpni; +} diff --git a/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java b/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java index 20173e61ab..655f8ac483 100644 --- a/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java +++ b/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/EDSMScoreTest.java @@ -24,9 +24,9 @@ import de.learnlib.datastructure.pta.BlueFringePTAState; import de.learnlib.datastructure.pta.RedBlueMerge; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.common.smartcollection.IntSeq; import net.automatalib.util.automaton.Automata; import net.automatalib.util.automaton.builder.AutomatonBuilders; diff --git a/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java b/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java index 42c0d61913..29981ca254 100644 --- a/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java +++ b/algorithms/passive/rpni/src/test/java/de/learnlib/algorithm/rpni/MDLScoreTest.java @@ -21,7 +21,7 @@ import de.learnlib.datastructure.pta.BlueFringePTA; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; import net.automatalib.common.smartcollection.IntSeq; import net.automatalib.word.Word; diff --git a/api/src/main/java/de/learnlib/algorithm/package-info.java b/api/src/main/java/de/learnlib/algorithm/package-info.java index e010aaaff2..639e1ac4e1 100644 --- a/api/src/main/java/de/learnlib/algorithm/package-info.java +++ b/api/src/main/java/de/learnlib/algorithm/package-info.java @@ -15,6 +15,6 @@ */ /** - * This package (including sub-packages) contains the basic interfaces and classes of learning algorithms of LearnLib. + * This package contains the basic interfaces and classes of learning algorithms of LearnLib. */ package de.learnlib.algorithm; diff --git a/api/src/main/java/de/learnlib/oracle/parallelism/BatchInterruptedException.java b/api/src/main/java/de/learnlib/exception/BatchInterruptedException.java similarity index 93% rename from api/src/main/java/de/learnlib/oracle/parallelism/BatchInterruptedException.java rename to api/src/main/java/de/learnlib/exception/BatchInterruptedException.java index dd7dad2b3c..70ee1e07b7 100644 --- a/api/src/main/java/de/learnlib/oracle/parallelism/BatchInterruptedException.java +++ b/api/src/main/java/de/learnlib/exception/BatchInterruptedException.java @@ -13,10 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.oracle.parallelism; +package de.learnlib.exception; import java.util.Collection; +import de.learnlib.oracle.BatchProcessor; + /** * Exception that is thrown if a parallel batch is interrupted during processing. Note that we cannot rethrow the {@link * InterruptedException} since the {@code throws} specification of {@link BatchProcessor#processBatch(Collection)} does diff --git a/api/src/main/java/de/learnlib/oracle/parallelism/BatchProcessor.java b/api/src/main/java/de/learnlib/oracle/BatchProcessor.java similarity index 93% rename from api/src/main/java/de/learnlib/oracle/parallelism/BatchProcessor.java rename to api/src/main/java/de/learnlib/oracle/BatchProcessor.java index 576e043474..f6f64f1969 100644 --- a/api/src/main/java/de/learnlib/oracle/parallelism/BatchProcessor.java +++ b/api/src/main/java/de/learnlib/oracle/BatchProcessor.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.oracle.parallelism; +package de.learnlib.oracle; import java.util.Collection; -import de.learnlib.oracle.MembershipOracle; +import de.learnlib.exception.BatchInterruptedException; /** * A markup interface for classes that can process a batch of work in a parallel environment (e.g. a {@link diff --git a/api/src/main/java/de/learnlib/oracle/MembershipOracle.java b/api/src/main/java/de/learnlib/oracle/MembershipOracle.java index ce54f25154..85777158e2 100644 --- a/api/src/main/java/de/learnlib/oracle/MembershipOracle.java +++ b/api/src/main/java/de/learnlib/oracle/MembershipOracle.java @@ -18,7 +18,6 @@ import java.util.Collection; import java.util.Collections; -import de.learnlib.oracle.parallelism.BatchProcessor; import de.learnlib.query.DefaultQuery; import de.learnlib.query.Query; import net.automatalib.automaton.fsa.DFA; diff --git a/api/src/main/java/de/learnlib/oracle/OmegaMembershipOracle.java b/api/src/main/java/de/learnlib/oracle/OmegaMembershipOracle.java index a3dcae13db..0c23010fe0 100644 --- a/api/src/main/java/de/learnlib/oracle/OmegaMembershipOracle.java +++ b/api/src/main/java/de/learnlib/oracle/OmegaMembershipOracle.java @@ -20,7 +20,6 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; -import de.learnlib.oracle.parallelism.BatchProcessor; import de.learnlib.query.OmegaQuery; import de.learnlib.sul.ObservableSUL; import net.automatalib.common.util.Pair; diff --git a/api/src/main/java/de/learnlib/oracle/parallelism/ParallelOmegaOracle.java b/api/src/main/java/de/learnlib/oracle/ParallelOmegaOracle.java similarity index 91% rename from api/src/main/java/de/learnlib/oracle/parallelism/ParallelOmegaOracle.java rename to api/src/main/java/de/learnlib/oracle/ParallelOmegaOracle.java index 182698dbe9..baa01c806c 100644 --- a/api/src/main/java/de/learnlib/oracle/parallelism/ParallelOmegaOracle.java +++ b/api/src/main/java/de/learnlib/oracle/ParallelOmegaOracle.java @@ -13,9 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.oracle.parallelism; - -import de.learnlib.oracle.OmegaMembershipOracle; +package de.learnlib.oracle; /** * {@link ParallelOracle} equivalent for {@link OmegaMembershipOracle}. diff --git a/api/src/main/java/de/learnlib/oracle/parallelism/ParallelOracle.java b/api/src/main/java/de/learnlib/oracle/ParallelOracle.java similarity index 93% rename from api/src/main/java/de/learnlib/oracle/parallelism/ParallelOracle.java rename to api/src/main/java/de/learnlib/oracle/ParallelOracle.java index b28f2c5bf6..785c0314db 100644 --- a/api/src/main/java/de/learnlib/oracle/parallelism/ParallelOracle.java +++ b/api/src/main/java/de/learnlib/oracle/ParallelOracle.java @@ -13,9 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.oracle.parallelism; - -import de.learnlib.oracle.MembershipOracle; +package de.learnlib.oracle; /** * Basic interface for {@link MembershipOracle}s that can process queries in parallel. diff --git a/api/src/main/java/de/learnlib/oracle/parallelism/ThreadPool.java b/api/src/main/java/de/learnlib/oracle/ThreadPool.java similarity index 98% rename from api/src/main/java/de/learnlib/oracle/parallelism/ThreadPool.java rename to api/src/main/java/de/learnlib/oracle/ThreadPool.java index eeec1ba219..a25cb9da1b 100644 --- a/api/src/main/java/de/learnlib/oracle/parallelism/ThreadPool.java +++ b/api/src/main/java/de/learnlib/oracle/ThreadPool.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.oracle.parallelism; +package de.learnlib.oracle; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; diff --git a/api/src/main/java/de/learnlib/oracle/package-info.java b/api/src/main/java/de/learnlib/oracle/package-info.java index 5ad8aaeedf..e329a1e920 100644 --- a/api/src/main/java/de/learnlib/oracle/package-info.java +++ b/api/src/main/java/de/learnlib/oracle/package-info.java @@ -15,7 +15,7 @@ */ /** - * This package (including sub-packages) contains the basic interfaces and classes for describing and implementing - * various types of oracles used throughout LearnLib. + * This package contains the basic interfaces and classes for describing and implementing various types of oracles used + * throughout LearnLib. */ package de.learnlib.oracle; diff --git a/api/src/main/java/module-info.java b/api/src/main/java/module-info.java new file mode 100644 index 0000000000..be44554115 --- /dev/null +++ b/api/src/main/java/module-info.java @@ -0,0 +1,44 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides the core interfaces of LearnLib. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-api</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.api { + + requires net.automatalib.api; + requires net.automatalib.common.util; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + exports de.learnlib; + exports de.learnlib.algorithm; + exports de.learnlib.exception; + exports de.learnlib.logging; + exports de.learnlib.oracle; + exports de.learnlib.query; + exports de.learnlib.statistic; + exports de.learnlib.sul; +} diff --git a/archetypes/basic/src/main/resources/archetype-resources/src/main/java/Example.java b/archetypes/basic/src/main/resources/archetype-resources/src/main/java/Example.java index cc70c5005e..4b108515b3 100644 --- a/archetypes/basic/src/main/resources/archetype-resources/src/main/java/Example.java +++ b/archetypes/basic/src/main/resources/archetype-resources/src/main/java/Example.java @@ -12,9 +12,9 @@ import de.learnlib.util.Experiment.DFAExperiment; import de.learnlib.util.statistic.SimpleProfiler; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.visualization.Visualization; diff --git a/archetypes/complete/src/main/resources/archetype-resources/src/main/java/Example.java b/archetypes/complete/src/main/resources/archetype-resources/src/main/java/Example.java index cc70c5005e..4b108515b3 100644 --- a/archetypes/complete/src/main/resources/archetype-resources/src/main/java/Example.java +++ b/archetypes/complete/src/main/resources/archetype-resources/src/main/java/Example.java @@ -12,9 +12,9 @@ import de.learnlib.util.Experiment.DFAExperiment; import de.learnlib.util.statistic.SimpleProfiler; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.visualization.Visualization; diff --git a/build-parent/pom.xml b/build-parent/pom.xml index 8e231fafdf..6adae30f93 100644 --- a/build-parent/pom.xml +++ b/build-parent/pom.xml @@ -109,6 +109,7 @@ limitations under the License. /learnlib-pmd-ruleset.xml + **/module-info.java @@ -127,6 +128,7 @@ limitations under the License. /learnlib-checkstyle-suppressions.xml true false + **/module-info.java diff --git a/commons/counterexamples/src/main/java/module-info.java b/commons/counterexamples/src/main/java/module-info.java new file mode 100644 index 0000000000..1c075f4b39 --- /dev/null +++ b/commons/counterexamples/src/main/java/module-info.java @@ -0,0 +1,38 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides a collection of algorithms for handling counterexamples in automata learning. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-counterexamples</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.common.counterexample { + + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires org.checkerframework.checker.qual; + + exports de.learnlib.acex; + exports de.learnlib.counterexample; +} diff --git a/commons/settings/pom.xml b/commons/settings/pom.xml index a5118e6695..5cd4b9c17e 100644 --- a/commons/settings/pom.xml +++ b/commons/settings/pom.xml @@ -69,4 +69,28 @@ limitations under the License. testng
+ + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + classpath-test + test + + test + + + false + + + + + + + diff --git a/commons/settings/src/main/java/de/learnlib/setting/LearnLibProperty.java b/commons/settings/src/main/java/de/learnlib/setting/LearnLibProperty.java index 98fd7b462e..c67e9d9c6e 100644 --- a/commons/settings/src/main/java/de/learnlib/setting/LearnLibProperty.java +++ b/commons/settings/src/main/java/de/learnlib/setting/LearnLibProperty.java @@ -15,6 +15,8 @@ */ package de.learnlib.setting; +import de.learnlib.oracle.ThreadPool.PoolPolicy; + /** * An enum of all the system properties currently used by LearnLib. */ @@ -38,8 +40,8 @@ public enum LearnLibProperty { * {@code learnlib.parallel.pool_policy}. *

* Pool policy for threads of parallel oracles. - *

- * See de.learnlib.oracle.parallelism.ParallelOracle#PoolPolicy + * + * @see PoolPolicy */ PARALLEL_POOL_POLICY("parallel.pool_policy"), diff --git a/commons/settings/src/main/java/de/learnlib/setting/LearnLibSettings.java b/commons/settings/src/main/java/de/learnlib/setting/LearnLibSettings.java index 6cead93953..6b12f6eaf4 100644 --- a/commons/settings/src/main/java/de/learnlib/setting/LearnLibSettings.java +++ b/commons/settings/src/main/java/de/learnlib/setting/LearnLibSettings.java @@ -34,7 +34,7 @@ public final class LearnLibSettings { private final Properties properties; private LearnLibSettings() { - properties = SettingsSource.readSettings(LearnLibSettingsSource.class); + properties = SettingsSource.readSettings(SettingsSource.class); } public static LearnLibSettings getInstance() { diff --git a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibLocalPropertiesAutomataLibSettingsSource.java b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibLocalPropertiesAutomataLibSettingsSource.java index 12c23cc195..74325d6ac7 100644 --- a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibLocalPropertiesAutomataLibSettingsSource.java +++ b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibLocalPropertiesAutomataLibSettingsSource.java @@ -17,9 +17,10 @@ import net.automatalib.AutomataLibSettingsSource; import net.automatalib.common.util.setting.LocalFileSource; +import net.automatalib.common.util.setting.SettingsSource; import org.kohsuke.MetaInfServices; -@MetaInfServices(AutomataLibSettingsSource.class) +@MetaInfServices(SettingsSource.class) public class LearnLibLocalPropertiesAutomataLibSettingsSource extends LocalFileSource implements AutomataLibSettingsSource { diff --git a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibLocalPropertiesSource.java b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibLocalPropertiesSource.java index 9b0f13fa63..202864b6e3 100644 --- a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibLocalPropertiesSource.java +++ b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibLocalPropertiesSource.java @@ -17,9 +17,10 @@ import de.learnlib.setting.LearnLibSettingsSource; import net.automatalib.common.util.setting.LocalFileSource; +import net.automatalib.common.util.setting.SettingsSource; import org.kohsuke.MetaInfServices; -@MetaInfServices(LearnLibSettingsSource.class) +@MetaInfServices(SettingsSource.class) public class LearnLibLocalPropertiesSource extends LocalFileSource implements LearnLibSettingsSource { public LearnLibLocalPropertiesSource() { diff --git a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibPropertiesAutomataLibSettingsSource.java b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibPropertiesAutomataLibSettingsSource.java index a28d97e2bc..22f5e3b8bf 100644 --- a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibPropertiesAutomataLibSettingsSource.java +++ b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibPropertiesAutomataLibSettingsSource.java @@ -17,9 +17,10 @@ import net.automatalib.AutomataLibSettingsSource; import net.automatalib.common.util.setting.AbstractClassPathFileSource; +import net.automatalib.common.util.setting.SettingsSource; import org.kohsuke.MetaInfServices; -@MetaInfServices(AutomataLibSettingsSource.class) +@MetaInfServices(SettingsSource.class) public class LearnLibPropertiesAutomataLibSettingsSource extends AbstractClassPathFileSource implements AutomataLibSettingsSource { diff --git a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibPropertiesSource.java b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibPropertiesSource.java index 1e7e3db794..941eb06bcd 100644 --- a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibPropertiesSource.java +++ b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibPropertiesSource.java @@ -17,9 +17,10 @@ import de.learnlib.setting.LearnLibSettingsSource; import net.automatalib.common.util.setting.AbstractClassPathFileSource; +import net.automatalib.common.util.setting.SettingsSource; import org.kohsuke.MetaInfServices; -@MetaInfServices(LearnLibSettingsSource.class) +@MetaInfServices(SettingsSource.class) public class LearnLibPropertiesSource extends AbstractClassPathFileSource implements LearnLibSettingsSource { public LearnLibPropertiesSource() { diff --git a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibSystemPropertiesAutomataLibSettingsSource.java b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibSystemPropertiesAutomataLibSettingsSource.java index 9d72658a66..a618f5344e 100644 --- a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibSystemPropertiesAutomataLibSettingsSource.java +++ b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibSystemPropertiesAutomataLibSettingsSource.java @@ -17,8 +17,9 @@ import net.automatalib.AutomataLibSettingsSource; import net.automatalib.common.util.setting.AbstractSystemPropertiesSource; +import net.automatalib.common.util.setting.SettingsSource; import org.kohsuke.MetaInfServices; -@MetaInfServices(AutomataLibSettingsSource.class) +@MetaInfServices(SettingsSource.class) public class LearnLibSystemPropertiesAutomataLibSettingsSource extends AbstractSystemPropertiesSource implements AutomataLibSettingsSource {} diff --git a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibSystemPropertiesSource.java b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibSystemPropertiesSource.java index ed0990f899..09484947a0 100644 --- a/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibSystemPropertiesSource.java +++ b/commons/settings/src/main/java/de/learnlib/setting/sources/LearnLibSystemPropertiesSource.java @@ -17,7 +17,8 @@ import de.learnlib.setting.LearnLibSettingsSource; import net.automatalib.common.util.setting.AbstractSystemPropertiesSource; +import net.automatalib.common.util.setting.SettingsSource; import org.kohsuke.MetaInfServices; -@MetaInfServices(LearnLibSettingsSource.class) +@MetaInfServices(SettingsSource.class) public class LearnLibSystemPropertiesSource extends AbstractSystemPropertiesSource implements LearnLibSettingsSource {} diff --git a/commons/settings/src/main/java/module-info.java b/commons/settings/src/main/java/module-info.java new file mode 100644 index 0000000000..c647ee331f --- /dev/null +++ b/commons/settings/src/main/java/module-info.java @@ -0,0 +1,51 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import de.learnlib.setting.sources.LearnLibLocalPropertiesAutomataLibSettingsSource; +import de.learnlib.setting.sources.LearnLibLocalPropertiesSource; +import de.learnlib.setting.sources.LearnLibPropertiesAutomataLibSettingsSource; +import de.learnlib.setting.sources.LearnLibPropertiesSource; +import de.learnlib.setting.sources.LearnLibSystemPropertiesAutomataLibSettingsSource; +import de.learnlib.setting.sources.LearnLibSystemPropertiesSource; +import net.automatalib.common.util.setting.SettingsSource; + +/** + * This module provides a collection of utility methods to parse LearnLib specific settings. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-settings</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.setting { + + requires de.learnlib.api; + requires net.automatalib.common.util; + requires net.automatalib.api; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + requires static org.kohsuke.metainf_services; + + exports de.learnlib.setting; + exports de.learnlib.setting.sources; + + provides SettingsSource with LearnLibLocalPropertiesAutomataLibSettingsSource, LearnLibPropertiesAutomataLibSettingsSource, LearnLibSystemPropertiesAutomataLibSettingsSource, LearnLibLocalPropertiesSource, LearnLibPropertiesSource, LearnLibSystemPropertiesSource; +} diff --git a/commons/util/src/main/java/de/learnlib/util/nfa/NFALearnerWrapper.java b/commons/util/src/main/java/de/learnlib/util/nfa/NFALearnerWrapper.java index 7d78e9673b..6c7f3c6998 100644 --- a/commons/util/src/main/java/de/learnlib/util/nfa/NFALearnerWrapper.java +++ b/commons/util/src/main/java/de/learnlib/util/nfa/NFALearnerWrapper.java @@ -18,8 +18,8 @@ import de.learnlib.algorithm.LearningAlgorithm; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.fsa.CompactDFA; import net.automatalib.automaton.fsa.NFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.fsa.NFAs; public class NFALearnerWrapper implements LearningAlgorithm.DFALearner { diff --git a/commons/util/src/main/java/module-info.java b/commons/util/src/main/java/module-info.java new file mode 100644 index 0000000000..e48f7a5f71 --- /dev/null +++ b/commons/util/src/main/java/module-info.java @@ -0,0 +1,45 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides a collection of utility methods for learning setups (oracle wrappers, etc.). + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-util</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.common.util { + + requires de.learnlib.api; + requires de.learnlib.filter.statistic; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + exports de.learnlib.util; + exports de.learnlib.util.mealy; + exports de.learnlib.util.moore; + exports de.learnlib.util.nfa; + exports de.learnlib.util.statistic; +} diff --git a/commons/util/src/test/java/de/learnlib/util/ExperimentTest.java b/commons/util/src/test/java/de/learnlib/util/ExperimentTest.java index bbd27c5e84..ad052f7b1f 100644 --- a/commons/util/src/test/java/de/learnlib/util/ExperimentTest.java +++ b/commons/util/src/test/java/de/learnlib/util/ExperimentTest.java @@ -24,9 +24,9 @@ import de.learnlib.util.Experiment.DFAExperiment; import de.learnlib.util.statistic.SimpleProfiler; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/datastructures/discrimination-tree/pom.xml b/datastructures/discrimination-tree/pom.xml index 51801ecdaa..bea44bc030 100644 --- a/datastructures/discrimination-tree/pom.xml +++ b/datastructures/discrimination-tree/pom.xml @@ -28,7 +28,7 @@ limitations under the License. learnlib-datastructure-dt LearnLib :: Datastructures :: Discrimination Tree - Data- and utility classes for Discrimination Trees + Data and utility classes for discrimination trees diff --git a/datastructures/discrimination-tree/src/main/java/module-info.java b/datastructures/discrimination-tree/src/main/java/module-info.java new file mode 100644 index 0000000000..3bfb23f8bb --- /dev/null +++ b/datastructures/discrimination-tree/src/main/java/module-info.java @@ -0,0 +1,43 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides data and utility classes for discrimination trees. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-datastructure-dt</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.datastructure.discriminationtree { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.datastructure.list; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.common.util; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + + exports de.learnlib.datastructure.discriminationtree; + exports de.learnlib.datastructure.discriminationtree.iterators; + exports de.learnlib.datastructure.discriminationtree.model; +} diff --git a/datastructures/list/pom.xml b/datastructures/list/pom.xml index 410f4816c5..0d4cb64133 100644 --- a/datastructures/list/pom.xml +++ b/datastructures/list/pom.xml @@ -28,7 +28,7 @@ limitations under the License. learnlib-datastructure-list LearnLib :: Datastructures :: List - Data- and utility classes for Lists + Data and utility classes for lists diff --git a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/package-info.java b/datastructures/list/src/main/java/module-info.java similarity index 56% rename from algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/package-info.java rename to datastructures/list/src/main/java/module-info.java index 525abdc550..c7d09ea9cf 100644 --- a/algorithms/active/aaar/src/main/java/de/learnlib/algorithm/aaar/package-info.java +++ b/datastructures/list/src/main/java/module-info.java @@ -15,8 +15,21 @@ */ /** - * This package (and sub-packages) provides the implementation of the AAAR learning algorithm as described in the paper - * Automata Learning with Automated Alphabet Abstraction - * Refinement by Falk Howar, Bernhard Steffen, and Maik Merten. + * This module provides data and utility classes for lists. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-datastructure-list</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
*/ -package de.learnlib.algorithm.aaar; +open module de.learnlib.datastructure.list { + + requires com.google.common; + requires org.checkerframework.checker.qual; + + exports de.learnlib.datastructure.list; +} diff --git a/datastructures/observation-table/pom.xml b/datastructures/observation-table/pom.xml index b3aff6ab40..bcc69ade83 100644 --- a/datastructures/observation-table/pom.xml +++ b/datastructures/observation-table/pom.xml @@ -27,8 +27,8 @@ limitations under the License. learnlib-datastructure-ot - LearnLib :: Datastructures :: Observationtable - Data- and utility classes for Observation Tables + LearnLib :: Datastructures :: Observation Table + Data and utility classes for observation tables diff --git a/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/GenericObservationTable.java b/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/GenericObservationTable.java index 65aa9d4ff9..f1eaaad558 100644 --- a/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/GenericObservationTable.java +++ b/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/GenericObservationTable.java @@ -28,7 +28,7 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/OTUtils.java b/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/OTUtils.java index f9720adb97..f988c29bf2 100644 --- a/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/OTUtils.java +++ b/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/OTUtils.java @@ -15,8 +15,6 @@ */ package de.learnlib.datastructure.observationtable; -import java.awt.Desktop; -import java.awt.HeadlessException; import java.io.File; import java.io.IOException; import java.io.Writer; @@ -65,72 +63,79 @@ public static ObservationTable fromString(String source, return reader.read(source, alphabet); } - public static void writeHTMLToFile(ObservationTable table, File file) throws IOException { - writeHTMLToFile(table, file, Objects::toString, Objects::toString); - } - - public static void writeHTMLToFile(ObservationTable table, - File file, - Function, ? extends String> wordToString, - Function outputToString) throws IOException { - - try (Writer w = IOUtil.asBufferedUTF8Writer(file)) { - w.write(HTML_FILE_HEADER); - ObservationTableHTMLWriter otWriter = new ObservationTableHTMLWriter<>(wordToString, outputToString); - otWriter.write(table, w); - w.write(HTML_FILE_FOOTER); - } + /** + * Convenience method for {@link #writeHTMLToFile(ObservationTable, File)} that automatically creates (and returns) + * a temporary file to write to. Note that the file is {@link File#deleteOnExit() deleted} upon VM termination. + * + * @param table + * the observation table to write to the file + * @param + * input symbol type + * @param + * output domain type + * + * @return the temporary file with the observation table's contents written to + * + * @throws IOException + * when writing to the file fails + */ + public static File writeHTMLToFile(ObservationTable table) throws IOException { + final File file = File.createTempFile("learnlib-ot", ".html"); + file.deleteOnExit(); + writeHTMLToFile(table, file); + return file; } /** - * Convenience method for {@link #displayHTMLInBrowser(ObservationTable, Function, Function)} that uses {@link - * Object#toString()} to render words and outputs of the observation table. + * Convenience method for {@link #writeHTMLToFile(ObservationTable, File, Function, Function)} that uses + * {@link Object#toString()} to render words and outputs of the observation table. + * + * @param table + * the observation table to write to the file + * @param file + * the file to write to + * @param + * input symbol type + * @param + * output domain type + * + * @throws IOException + * when writing to the file fails */ - public static void displayHTMLInBrowser(ObservationTable table) throws IOException { - displayHTMLInBrowser(table, Objects::toString, Objects::toString); + public static void writeHTMLToFile(ObservationTable table, File file) throws IOException { + writeHTMLToFile(table, file, Objects::toString, Objects::toString); } /** - * Displays the observation table as an HTML document in the default browser. - *

- * This method internally relies on {@link Desktop#browse(java.net.URI)}, hence it will not work if {@link Desktop} - * is not supported, or if the application is running in headless mode. - *

- * IMPORTANT NOTE: Calling this method may delay the termination of the JVM by up to 5 seconds. This is due - * to the fact that the temporary file created in this method is marked for deletion upon JVM termination. If the - * JVM terminates too early, it might be deleted before it was loaded by the browser. + * Writes the contents of a given observation table into a file using HTML as a (markup) language and the given + * functions to display inputs and outputs. * * @param table - * the observation table to display + * the observation table to write to the file + * @param file + * the file to write to * @param wordToString - * the transformation from words to strings. This transformation is not required nor expected to - * escape HTML entities + * the input word renderer * @param outputToString - * the transformation from outputs to strings. This transformation is not required nor expected to - * escape HTML entities + * the output value renderer + * @param + * input symbol type + * @param + * output domain type * * @throws IOException - * if creating or writing to the temporary file fails - * @throws HeadlessException - * if the JVM is running in headless mode - * @throws UnsupportedOperationException - * if {@link Desktop#getDesktop()} is not supported by the system + * when writing to the file fails */ - public static void displayHTMLInBrowser(ObservationTable table, - Function, ? extends String> wordToString, - Function outputToString) - throws IOException { - File tempFile = File.createTempFile("learnlib-ot", ".html"); - - // Doing this might cause problems if the startup delay of the browser - // causes it to start only after the JVM has exited. - // Temp directory should be wiped regularly anyway. - // tempFile.deleteOnExit(); - writeHTMLToFile(table, tempFile, wordToString, outputToString); + public static void writeHTMLToFile(ObservationTable table, + File file, + Function, ? extends String> wordToString, + Function outputToString) throws IOException { - Desktop desktop = Desktop.getDesktop(); - // We use browse() instead of open() because, e.g., web developers may have - // an HTML editor set up as their default application to open HTML files - desktop.browse(tempFile.toURI()); + try (Writer w = IOUtil.asBufferedUTF8Writer(file)) { + w.write(HTML_FILE_HEADER); + ObservationTableHTMLWriter otWriter = new ObservationTableHTMLWriter<>(wordToString, outputToString); + otWriter.write(table, w); + w.write(HTML_FILE_FOOTER); + } } } diff --git a/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/reader/SimpleObservationTable.java b/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/reader/SimpleObservationTable.java index dc4c2f72bd..44bc142804 100644 --- a/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/reader/SimpleObservationTable.java +++ b/datastructures/observation-table/src/main/java/de/learnlib/datastructure/observationtable/reader/SimpleObservationTable.java @@ -23,7 +23,7 @@ import de.learnlib.datastructure.observationtable.ObservationTable; import de.learnlib.datastructure.observationtable.Row; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/datastructures/observation-table/src/main/java/module-info.java b/datastructures/observation-table/src/main/java/module-info.java new file mode 100644 index 0000000000..e9786f50ab --- /dev/null +++ b/datastructures/observation-table/src/main/java/module-info.java @@ -0,0 +1,42 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides data and utility classes for observation tables. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-datastructure-ot</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.datastructure.observationtable { + + requires com.google.common; + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + exports de.learnlib.datastructure.observationtable; + exports de.learnlib.datastructure.observationtable.reader; + exports de.learnlib.datastructure.observationtable.writer; +} diff --git a/datastructures/observation-table/src/test/java/de/learnlib/datastructure/observationtable/writer/SuffixASCIIWriterTest.java b/datastructures/observation-table/src/test/java/de/learnlib/datastructure/observationtable/writer/SuffixASCIIWriterTest.java index 615804cf3a..1db6ac1a3e 100644 --- a/datastructures/observation-table/src/test/java/de/learnlib/datastructure/observationtable/writer/SuffixASCIIWriterTest.java +++ b/datastructures/observation-table/src/test/java/de/learnlib/datastructure/observationtable/writer/SuffixASCIIWriterTest.java @@ -20,7 +20,7 @@ import de.learnlib.datastructure.observationtable.ObservationTableSource; import de.learnlib.datastructure.observationtable.reader.SuffixASCIIReader; import net.automatalib.alphabet.GrowingAlphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/datastructures/pta/pom.xml b/datastructures/pta/pom.xml index 939f851e72..8f840c8dce 100644 --- a/datastructures/pta/pom.xml +++ b/datastructures/pta/pom.xml @@ -28,7 +28,7 @@ limitations under the License. learnlib-datastructure-pta LearnLib :: Datastructures :: PTA - Data- and utility classes for Prefix-Tree-Acceptors + Data and utility classes for prefix tree acceptors diff --git a/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/AbstractBlueFringePTA.java b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/AbstractBlueFringePTA.java index 050ef5a5dd..e82b1e5798 100644 --- a/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/AbstractBlueFringePTA.java +++ b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/AbstractBlueFringePTA.java @@ -15,7 +15,6 @@ */ package de.learnlib.datastructure.pta; -import java.awt.Color; import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/AbstractBlueFringePTAState.java b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/AbstractBlueFringePTAState.java index 6810f76fda..0645a67c97 100644 --- a/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/AbstractBlueFringePTAState.java +++ b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/AbstractBlueFringePTAState.java @@ -15,8 +15,6 @@ */ package de.learnlib.datastructure.pta; -import java.awt.Color; - import net.automatalib.common.util.comparison.CmpUtil; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/BasePTA.java b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/BasePTA.java index efea0d619a..1bf52de8e8 100644 --- a/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/BasePTA.java +++ b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/BasePTA.java @@ -28,7 +28,7 @@ import com.google.common.collect.AbstractIterator; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.FiniteAlphabetAutomaton; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.graph.TransitionEdge; diff --git a/commons/util/src/main/java/de/learnlib/util/package-info.java b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/Color.java similarity index 68% rename from commons/util/src/main/java/de/learnlib/util/package-info.java rename to datastructures/pta/src/main/java/de/learnlib/datastructure/pta/Color.java index 9cbf362c06..eb93e263e4 100644 --- a/commons/util/src/main/java/de/learnlib/util/package-info.java +++ b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/Color.java @@ -13,8 +13,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package de.learnlib.datastructure.pta; /** - * This package (and sub-packages) provide general utilities used throughout LearnLib. + * Indicates the coloring of states of the prefix-tree acceptor during merging. */ -package de.learnlib.util; +public enum Color { + /** + * Indicates a blue state. + */ + BLUE, + /** + * Indicates a red state. + */ + RED, + /** + * Indicates a white state. + */ + WHITE +} diff --git a/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/RedBlueMerge.java b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/RedBlueMerge.java index 2923f0dbc5..685a831e90 100644 --- a/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/RedBlueMerge.java +++ b/datastructures/pta/src/main/java/de/learnlib/datastructure/pta/RedBlueMerge.java @@ -15,7 +15,6 @@ */ package de.learnlib.datastructure.pta; -import java.awt.Color; import java.util.ArrayDeque; import java.util.Collection; import java.util.Deque; diff --git a/datastructures/pta/src/main/java/module-info.java b/datastructures/pta/src/main/java/module-info.java new file mode 100644 index 0000000000..cd1514f243 --- /dev/null +++ b/datastructures/pta/src/main/java/module-info.java @@ -0,0 +1,41 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides data and utility classes for prefix tree acceptors. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-datastructure-pta</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.datastructure.pta { + + requires com.google.common; + requires net.automatalib.api; + requires net.automatalib.common.smartcollection; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + exports de.learnlib.datastructure.pta; + exports de.learnlib.datastructure.pta.config; + exports de.learnlib.datastructure.pta.wrapper; +} diff --git a/datastructures/pta/src/test/java/de/learnlib/datastructure/pta/MergedAutomatonTest.java b/datastructures/pta/src/test/java/de/learnlib/datastructure/pta/MergedAutomatonTest.java index d9724bfdaa..5a564c50c9 100644 --- a/datastructures/pta/src/test/java/de/learnlib/datastructure/pta/MergedAutomatonTest.java +++ b/datastructures/pta/src/test/java/de/learnlib/datastructure/pta/MergedAutomatonTest.java @@ -19,7 +19,7 @@ import java.util.List; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.word.Word; import org.testng.Assert; diff --git a/datastructures/pta/src/test/java/de/learnlib/datastructure/pta/PTAVisualizationTest.java b/datastructures/pta/src/test/java/de/learnlib/datastructure/pta/PTAVisualizationTest.java index 3df130ded9..edf9f4b5d9 100644 --- a/datastructures/pta/src/test/java/de/learnlib/datastructure/pta/PTAVisualizationTest.java +++ b/datastructures/pta/src/test/java/de/learnlib/datastructure/pta/PTAVisualizationTest.java @@ -22,8 +22,8 @@ import com.google.common.io.CharStreams; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMoore; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.transducer.impl.CompactMoore; import net.automatalib.common.util.IOUtil; import net.automatalib.serialization.dot.GraphDOT; import net.automatalib.util.automaton.builder.AutomatonBuilders; diff --git a/distribution/pom.xml b/distribution/pom.xml index 3bfbb4753b..86bf59ef24 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -505,6 +505,11 @@ limitations under the License. ${project.build.directory}/bundles true learnlib-${project.version} + + + de.learnlib.distribution + + diff --git a/distribution/src/main/assembly/learnlib-bundle.xml b/distribution/src/main/assembly/learnlib-bundle.xml index 64007ea6eb..e6f83a1316 100644 --- a/distribution/src/main/assembly/learnlib-bundle.xml +++ b/distribution/src/main/assembly/learnlib-bundle.xml @@ -53,6 +53,11 @@ limitations under the License. false true + + + **/module-info.class + + diff --git a/distribution/src/main/assembly/learnlib-dependencies-bundle.xml b/distribution/src/main/assembly/learnlib-dependencies-bundle.xml index 784b444392..e1134cef44 100644 --- a/distribution/src/main/assembly/learnlib-dependencies-bundle.xml +++ b/distribution/src/main/assembly/learnlib-dependencies-bundle.xml @@ -53,6 +53,11 @@ limitations under the License. false true + + + **/module-info.class + + diff --git a/drivers/basic/pom.xml b/drivers/basic/pom.xml index be4b7ed878..ff2cede404 100644 --- a/drivers/basic/pom.xml +++ b/drivers/basic/pom.xml @@ -28,7 +28,7 @@ limitations under the License. learnlib-drivers-basic LearnLib :: Drivers :: Basic - Basic Test Driver Generation Support + Basic support for test driver creation diff --git a/drivers/basic/src/main/java/de/learnlib/driver/reflect/SimplePOJOTestDriver.java b/drivers/basic/src/main/java/de/learnlib/driver/reflect/SimplePOJOTestDriver.java index 5ca1885f57..a89cb468cd 100644 --- a/drivers/basic/src/main/java/de/learnlib/driver/reflect/SimplePOJOTestDriver.java +++ b/drivers/basic/src/main/java/de/learnlib/driver/reflect/SimplePOJOTestDriver.java @@ -22,7 +22,7 @@ import de.learnlib.sul.SUL; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.GrowingAlphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.common.util.ReflectUtil; /** diff --git a/drivers/basic/src/main/java/module-info.java b/drivers/basic/src/main/java/module-info.java new file mode 100644 index 0000000000..2724c0d5b6 --- /dev/null +++ b/drivers/basic/src/main/java/module-info.java @@ -0,0 +1,39 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides basic support for test driver creation. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-drivers-basic</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.driver { + + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + exports de.learnlib.driver; + exports de.learnlib.driver.reflect; +} diff --git a/drivers/mapper/src/main/java/de/learnlib/mapper/StringMapper.java b/drivers/mapper/src/main/java/de/learnlib/mapper/StringMapper.java index f0a0ca4a5c..3e08c69198 100644 --- a/drivers/mapper/src/main/java/de/learnlib/mapper/StringMapper.java +++ b/drivers/mapper/src/main/java/de/learnlib/mapper/StringMapper.java @@ -20,7 +20,7 @@ import de.learnlib.sul.SULMapper; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; public class StringMapper implements SULMapper { diff --git a/drivers/mapper/src/main/java/module-info.java b/drivers/mapper/src/main/java/module-info.java new file mode 100644 index 0000000000..1af7eabdd9 --- /dev/null +++ b/drivers/mapper/src/main/java/module-info.java @@ -0,0 +1,39 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import de.learnlib.sul.SUL; + +/** + * This module provides translation utilities for mapping abstract hypothesis symbols to concrete {@link SUL} symbols. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-mapper</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.mapper { + + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.core; + requires org.checkerframework.checker.qual; + + exports de.learnlib.mapper; +} diff --git a/drivers/mapper/src/test/java/de/learnlib/mapper/MapperCompositionTest.java b/drivers/mapper/src/test/java/de/learnlib/mapper/MapperCompositionTest.java index b8de96f38d..dab8c508e8 100644 --- a/drivers/mapper/src/test/java/de/learnlib/mapper/MapperCompositionTest.java +++ b/drivers/mapper/src/test/java/de/learnlib/mapper/MapperCompositionTest.java @@ -16,7 +16,7 @@ package de.learnlib.mapper; import de.learnlib.Mapper; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/package-info.java b/drivers/simulator/src/main/java/module-info.java similarity index 53% rename from algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/package-info.java rename to drivers/simulator/src/main/java/module-info.java index d4ac611521..245fb92ff8 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithm/adt/package-info.java +++ b/drivers/simulator/src/main/java/module-info.java @@ -14,9 +14,25 @@ * limitations under the License. */ +import de.learnlib.sul.SUL; + /** - * This package (and sub-packages) provides the implementation of the ADT learning algorithm as described in the Master - * thesis Active Automata Learning with Adaptive Distinguishing Sequences - * by Markus Frohme. + * This module provides utilities for simulating {@link SUL}s. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-drivers-simulator</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
*/ -package de.learnlib.algorithm.adt; +open module de.learnlib.driver.simulator { + + requires de.learnlib.api; + requires net.automatalib.api; + requires org.checkerframework.checker.qual; + + exports de.learnlib.driver.simulator; +} diff --git a/examples/pom.xml b/examples/pom.xml index 582861b1b8..a04f707b26 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -176,8 +176,8 @@ limitations under the License. cacio-tta
- org.jmockit - jmockit + org.mockito + mockito-core
@@ -201,49 +201,10 @@ limitations under the License. false - @{argLine} -javaagent:${org.jmockit:jmockit:jar} + @{argLine} --add-opens=java.base/java.util=xstream
- - - - org.apache.maven.plugins - maven-dependency-plugin - - - - properties - - - - - - - - - fix-xstream - - [16,) - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - @{argLine} - -javaagent:${org.jmockit:jmockit:jar} - --add-opens=java.base/java.util=ALL-UNNAMED - - - - - - - diff --git a/examples/src/main/java/de/learnlib/example/Example1.java b/examples/src/main/java/de/learnlib/example/Example1.java index dd2f93631b..864779108f 100644 --- a/examples/src/main/java/de/learnlib/example/Example1.java +++ b/examples/src/main/java/de/learnlib/example/Example1.java @@ -15,6 +15,7 @@ */ package de.learnlib.example; +import java.awt.Desktop; import java.io.IOException; import de.learnlib.algorithm.lstar.dfa.ClassicLStarDFA; @@ -28,9 +29,9 @@ import de.learnlib.util.Experiment.DFAExperiment; import de.learnlib.util.statistic.SimpleProfiler; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.serialization.dot.GraphDOT; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.visualization.Visualization; @@ -116,7 +117,7 @@ public static void main(String[] args) throws IOException { System.out.println("Final observation table:"); new ObservationTableASCIIWriter<>().write(lstar.getObservationTable(), System.out); - OTUtils.displayHTMLInBrowser(lstar.getObservationTable()); + Desktop.getDesktop().browse(OTUtils.writeHTMLToFile(lstar.getObservationTable()).toURI()); } /** diff --git a/examples/src/main/java/de/learnlib/example/Example3.java b/examples/src/main/java/de/learnlib/example/Example3.java index 4b49fbc826..e693a3ec54 100644 --- a/examples/src/main/java/de/learnlib/example/Example3.java +++ b/examples/src/main/java/de/learnlib/example/Example3.java @@ -30,7 +30,7 @@ import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.query.Query; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.util.automaton.Automata; import net.automatalib.word.Word; diff --git a/examples/src/main/java/de/learnlib/example/bbc/Example1.java b/examples/src/main/java/de/learnlib/example/bbc/Example1.java index dfc1adf296..7fe35f06c3 100644 --- a/examples/src/main/java/de/learnlib/example/bbc/Example1.java +++ b/examples/src/main/java/de/learnlib/example/bbc/Example1.java @@ -20,8 +20,6 @@ import de.learnlib.acex.AcexAnalyzers; import de.learnlib.algorithm.LearningAlgorithm.DFALearner; import de.learnlib.algorithm.ttt.dfa.TTTLearnerDFA; -import de.learnlib.example.LearningExample.DFALearningExample; -import de.learnlib.example.dfa.ExampleTinyDFA; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.InclusionOracle.DFAInclusionOracle; import de.learnlib.oracle.LassoEmptinessOracle.DFALassoEmptinessOracle; @@ -36,6 +34,8 @@ import de.learnlib.oracle.membership.SimulatorOmegaOracle.DFASimulatorOmegaOracle; import de.learnlib.oracle.property.DFALassoPropertyOracle; import de.learnlib.oracle.property.LoggingPropertyOracle.DFALoggingPropertyOracle; +import de.learnlib.testsupport.example.LearningExample.DFALearningExample; +import de.learnlib.testsupport.example.dfa.ExampleTinyDFA; import de.learnlib.util.Experiment.DFAExperiment; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; diff --git a/examples/src/main/java/de/learnlib/example/bbc/Example2.java b/examples/src/main/java/de/learnlib/example/bbc/Example2.java index 115d18160f..ba021b3bf9 100644 --- a/examples/src/main/java/de/learnlib/example/bbc/Example2.java +++ b/examples/src/main/java/de/learnlib/example/bbc/Example2.java @@ -20,8 +20,6 @@ import de.learnlib.acex.AcexAnalyzers; import de.learnlib.algorithm.LearningAlgorithm.MealyLearner; import de.learnlib.algorithm.ttt.mealy.TTTLearnerMealy; -import de.learnlib.example.LearningExample.MealyLearningExample; -import de.learnlib.example.mealy.ExampleTinyMealy; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.InclusionOracle.MealyInclusionOracle; import de.learnlib.oracle.LassoEmptinessOracle.MealyLassoEmptinessOracle; @@ -36,6 +34,8 @@ import de.learnlib.oracle.membership.SimulatorOmegaOracle.MealySimulatorOmegaOracle; import de.learnlib.oracle.property.LoggingPropertyOracle.MealyLoggingPropertyOracle; import de.learnlib.oracle.property.MealyLassoPropertyOracle; +import de.learnlib.testsupport.example.LearningExample.MealyLearningExample; +import de.learnlib.testsupport.example.mealy.ExampleTinyMealy; import de.learnlib.util.Experiment.MealyExperiment; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; diff --git a/examples/src/main/java/de/learnlib/example/bbc/Example3.java b/examples/src/main/java/de/learnlib/example/bbc/Example3.java index 1bb372330f..71cec3435c 100644 --- a/examples/src/main/java/de/learnlib/example/bbc/Example3.java +++ b/examples/src/main/java/de/learnlib/example/bbc/Example3.java @@ -20,8 +20,6 @@ import de.learnlib.acex.AcexAnalyzers; import de.learnlib.algorithm.LearningAlgorithm.MealyLearner; import de.learnlib.algorithm.ttt.mealy.TTTLearnerMealy; -import de.learnlib.example.LearningExample.MealyLearningExample; -import de.learnlib.example.mealy.ExampleTinyMealy; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.InclusionOracle.MealyInclusionOracle; import de.learnlib.oracle.LassoEmptinessOracle.MealyLassoEmptinessOracle; @@ -36,6 +34,8 @@ import de.learnlib.oracle.membership.SimulatorOmegaOracle.MealySimulatorOmegaOracle; import de.learnlib.oracle.property.LoggingPropertyOracle.MealyLoggingPropertyOracle; import de.learnlib.oracle.property.MealyLassoPropertyOracle; +import de.learnlib.testsupport.example.LearningExample.MealyLearningExample; +import de.learnlib.testsupport.example.mealy.ExampleTinyMealy; import de.learnlib.util.Experiment.MealyExperiment; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; diff --git a/examples/src/main/java/de/learnlib/example/bbc/Example4.java b/examples/src/main/java/de/learnlib/example/bbc/Example4.java index 724c204e10..09cb23b294 100644 --- a/examples/src/main/java/de/learnlib/example/bbc/Example4.java +++ b/examples/src/main/java/de/learnlib/example/bbc/Example4.java @@ -20,8 +20,6 @@ import de.learnlib.acex.AcexAnalyzers; import de.learnlib.algorithm.LearningAlgorithm.DFALearner; import de.learnlib.algorithm.ttt.dfa.TTTLearnerDFA; -import de.learnlib.example.LearningExample.DFALearningExample; -import de.learnlib.example.dfa.ExampleTinyDFA; import de.learnlib.oracle.EmptinessOracle.DFAEmptinessOracle; import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.InclusionOracle.DFAInclusionOracle; @@ -40,6 +38,8 @@ import de.learnlib.oracle.property.DFALassoPropertyOracle; import de.learnlib.oracle.property.DFAPropertyOracleChain; import de.learnlib.oracle.property.LoggingPropertyOracle.DFALoggingPropertyOracle; +import de.learnlib.testsupport.example.LearningExample.DFALearningExample; +import de.learnlib.testsupport.example.dfa.ExampleTinyDFA; import de.learnlib.util.Experiment.DFAExperiment; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; diff --git a/examples/src/main/java/de/learnlib/example/parallelism/ParallelismExample1.java b/examples/src/main/java/de/learnlib/example/parallelism/ParallelismExample1.java index 68989d1941..fa2335b3f5 100644 --- a/examples/src/main/java/de/learnlib/example/parallelism/ParallelismExample1.java +++ b/examples/src/main/java/de/learnlib/example/parallelism/ParallelismExample1.java @@ -23,15 +23,15 @@ import de.learnlib.driver.simulator.MealySimulatorSUL; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; +import de.learnlib.oracle.ParallelOracle; import de.learnlib.oracle.membership.MealySimulatorOracle; import de.learnlib.oracle.membership.SULOracle; -import de.learnlib.oracle.parallelism.ParallelOracle; import de.learnlib.oracle.parallelism.ParallelOracleBuilders; import de.learnlib.query.DefaultQuery; import de.learnlib.sul.SUL; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.common.util.collection.CollectionsUtil; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; diff --git a/examples/src/main/java/de/learnlib/example/parallelism/ParallelismExample2.java b/examples/src/main/java/de/learnlib/example/parallelism/ParallelismExample2.java index dff8aaeea5..90df0a011c 100644 --- a/examples/src/main/java/de/learnlib/example/parallelism/ParallelismExample2.java +++ b/examples/src/main/java/de/learnlib/example/parallelism/ParallelismExample2.java @@ -27,13 +27,13 @@ import de.learnlib.filter.statistic.sul.ResetCounterSUL; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; -import de.learnlib.oracle.parallelism.ParallelOracle; +import de.learnlib.oracle.ParallelOracle; import de.learnlib.oracle.parallelism.ParallelOracleBuilders; import de.learnlib.query.DefaultQuery; import de.learnlib.sul.SUL; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.common.util.random.RandomUtil; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; diff --git a/examples/src/main/java/de/learnlib/example/passive/Example1.java b/examples/src/main/java/de/learnlib/example/passive/Example1.java index 2715eba565..df72fc0d28 100644 --- a/examples/src/main/java/de/learnlib/example/passive/Example1.java +++ b/examples/src/main/java/de/learnlib/example/passive/Example1.java @@ -22,7 +22,7 @@ import de.learnlib.algorithm.PassiveLearningAlgorithm.PassiveDFALearner; import de.learnlib.algorithm.rpni.BlueFringeRPNIDFA; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; import net.automatalib.visualization.Visualization; import net.automatalib.word.Word; diff --git a/examples/src/main/java/de/learnlib/example/resumable/ResumableExample.java b/examples/src/main/java/de/learnlib/example/resumable/ResumableExample.java index f2011c3839..0a5ffb8103 100644 --- a/examples/src/main/java/de/learnlib/example/resumable/ResumableExample.java +++ b/examples/src/main/java/de/learnlib/example/resumable/ResumableExample.java @@ -30,9 +30,9 @@ import de.learnlib.oracle.membership.DFASimulatorOracle; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.GrowingMapAlphabet; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.random.RandomAutomata; /** diff --git a/examples/src/main/java/de/learnlib/example/sli/Example1.java b/examples/src/main/java/de/learnlib/example/sli/Example1.java index e271e7713e..09ca37196a 100644 --- a/examples/src/main/java/de/learnlib/example/sli/Example1.java +++ b/examples/src/main/java/de/learnlib/example/sli/Example1.java @@ -26,9 +26,9 @@ import de.learnlib.sul.StateLocalInputSUL; import de.learnlib.util.Experiment.MealyExperiment; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.util.automaton.transducer.MealyFilter; import net.automatalib.visualization.Visualization; diff --git a/examples/src/main/java/de/learnlib/example/sli/Example2.java b/examples/src/main/java/de/learnlib/example/sli/Example2.java index 188086e717..04122735b4 100644 --- a/examples/src/main/java/de/learnlib/example/sli/Example2.java +++ b/examples/src/main/java/de/learnlib/example/sli/Example2.java @@ -23,7 +23,6 @@ import de.learnlib.algorithm.lstar.mealy.ExtensibleLStarMealyBuilder; import de.learnlib.driver.simulator.MealySimulatorSUL; import de.learnlib.driver.simulator.StateLocalInputMealySimulatorSUL; -import de.learnlib.example.mealy.ExampleRandomStateLocalInputMealy; import de.learnlib.filter.cache.sul.SULCache; import de.learnlib.filter.cache.sul.SULCaches; import de.learnlib.filter.cache.sul.StateLocalInputSULCache; @@ -40,9 +39,10 @@ import de.learnlib.oracle.membership.StateLocalInputSULOracle; import de.learnlib.sul.SUL; import de.learnlib.sul.StateLocalInputSUL; +import de.learnlib.testsupport.example.mealy.ExampleRandomStateLocalInputMealy; import de.learnlib.util.Experiment.MealyExperiment; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.StateLocalInputMealyMachine; /** diff --git a/examples/src/main/java/module-info.java b/examples/src/main/java/module-info.java new file mode 100644 index 0000000000..b61f79e2fb --- /dev/null +++ b/examples/src/main/java/module-info.java @@ -0,0 +1,62 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides a collection of various small example applications that illustrate several use cases of + * LearnLib. + * Note: This module is not intended as a library but only exists for educational purposes. No artifacts are + * deployed for this module. + */ +open module de.learnlib.example { + + requires java.desktop; + requires de.learnlib.algorithm.ttt; + requires de.learnlib.api; + requires de.learnlib.algorithm.aaar; + requires de.learnlib.algorithm.lstar; + requires de.learnlib.algorithm.rpni; + requires de.learnlib.common.counterexample; + requires de.learnlib.common.util; + requires de.learnlib.datastructure.observationtable; + requires de.learnlib.driver; + requires de.learnlib.driver.simulator; + requires de.learnlib.filter.cache; + requires de.learnlib.filter.reuse; + requires de.learnlib.filter.statistic; + requires de.learnlib.oracle.emptiness; + requires de.learnlib.oracle.equivalence; + requires de.learnlib.oracle.membership; + requires de.learnlib.oracle.parallelism; + requires de.learnlib.oracle.property; + requires de.learnlib.testsupport.example; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires net.automatalib.modelchecker.ltsmin; + requires net.automatalib.util; + requires net.automatalib.serialization.dot; + requires net.automatalib.visualization.dot; + requires org.checkerframework.checker.qual; + requires xstream; + + exports de.learnlib.example; + exports de.learnlib.example.aaar; + exports de.learnlib.example.bbc; + exports de.learnlib.example.parallelism; + exports de.learnlib.example.passive; + exports de.learnlib.example.resumable; + exports de.learnlib.example.sli; +} diff --git a/examples/src/test/java/de/learnlib/example/ExamplesTest.java b/examples/src/test/java/de/learnlib/example/ExamplesTest.java index 4e0aed151f..16da143f99 100644 --- a/examples/src/test/java/de/learnlib/example/ExamplesTest.java +++ b/examples/src/test/java/de/learnlib/example/ExamplesTest.java @@ -16,25 +16,22 @@ package de.learnlib.example; import java.awt.AWTEvent; +import java.awt.Desktop; import java.awt.Toolkit; import java.awt.Window; import java.awt.event.WindowEvent; import java.io.IOException; import java.lang.reflect.InvocationTargetException; -import java.util.function.Function; import javax.swing.SwingUtilities; -import de.learnlib.datastructure.observationtable.OTUtils; -import de.learnlib.datastructure.observationtable.ObservationTable; import de.learnlib.example.aaar.AlternatingBitExampleExplicit; import de.learnlib.example.aaar.AlternatingBitExampleGeneric; -import mockit.Mock; -import mockit.MockUp; import net.automatalib.common.util.system.JVMUtil; import net.automatalib.modelchecker.ltsmin.LTSminUtil; import net.automatalib.modelchecker.ltsmin.LTSminVersion; -import net.automatalib.word.Word; +import org.mockito.MockedStatic; +import org.mockito.Mockito; import org.testng.SkipException; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -142,20 +139,16 @@ public void testSLIExample2() { public void testExample1() throws Exception { requireJVMCompatibility(); - // Mock OTUtils class, so we don't actually open a browser during the test - new MockUp() { - - @Mock - public void displayHTMLInBrowser(ObservationTable table, - Function, ? extends String> wordToString, - Function outputToString) { - // do nothing - } - }; - SwingUtilities.invokeAndWait(() -> { try { - Example1.main(new String[0]); + final Desktop mock = Mockito.mock(Desktop.class); + Mockito.doNothing().when(mock).browse(Mockito.any()); + + try (MockedStatic desktop = Mockito.mockStatic(Desktop.class)) { + desktop.when(Desktop::getDesktop).thenReturn(mock); + + Example1.main(new String[0]); + } } catch (IOException e) { throw new RuntimeException(e); } @@ -180,7 +173,6 @@ public void testExample3() throws InvocationTargetException, InterruptedExceptio SwingUtilities.invokeAndWait(() -> Example3.main(new String[0])); } - private static boolean isJVMCompatible() { return JVMUtil.getCanonicalSpecVersion() == 11; } diff --git a/filters/cache/pom.xml b/filters/cache/pom.xml index 25515c1de6..1ca54ea773 100644 --- a/filters/cache/pom.xml +++ b/filters/cache/pom.xml @@ -69,6 +69,13 @@ limitations under the License. slf4j-api + + + de.learnlib + learnlib-parallelism + provided + + de.learnlib @@ -97,6 +104,26 @@ limitations under the License. + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + @{argLine} + --add-reads=de.learnlib.filter.cache=de.learnlib.filter.statistic + --add-reads=de.learnlib.filter.cache=de.learnlib.oracle.membership + --add-reads=de.learnlib.filter.cache=de.learnlib.oracle.parallelism + + + + + + + fix-xstream @@ -110,7 +137,13 @@ limitations under the License. org.apache.maven.plugins maven-surefire-plugin - @{argLine} --add-opens=java.base/java.util=ALL-UNNAMED + + @{argLine} + --add-opens=java.base/java.util=ALL-UNNAMED + --add-reads=de.learnlib.filter.cache=de.learnlib.filter.statistic + --add-reads=de.learnlib.filter.cache=de.learnlib.oracle.membership + --add-reads=de.learnlib.filter.cache=de.learnlib.oracle.parallelism + diff --git a/filters/cache/src/main/java/de/learnlib/filter/cache/DynamicSymbolComparator.java b/filters/cache/src/main/java/de/learnlib/filter/cache/DynamicSymbolComparator.java index 9879ab115d..a46b8da0a1 100644 --- a/filters/cache/src/main/java/de/learnlib/filter/cache/DynamicSymbolComparator.java +++ b/filters/cache/src/main/java/de/learnlib/filter/cache/DynamicSymbolComparator.java @@ -17,7 +17,7 @@ import java.util.Comparator; -import net.automatalib.alphabet.GrowingMapAlphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; public final class DynamicSymbolComparator implements Comparator { diff --git a/filters/cache/src/main/java/de/learnlib/filter/cache/dfa/DFAHashCacheOracle.java b/filters/cache/src/main/java/de/learnlib/filter/cache/dfa/DFAHashCacheOracle.java index e49ed824d0..025cb008e4 100644 --- a/filters/cache/src/main/java/de/learnlib/filter/cache/dfa/DFAHashCacheOracle.java +++ b/filters/cache/src/main/java/de/learnlib/filter/cache/dfa/DFAHashCacheOracle.java @@ -36,8 +36,7 @@ * A {@link DFALearningCacheOracle} that uses a {@link Map} for internal cache organization. *

* Note: this implementation is not thread-safe. If you require a cache that is usable in a parallel - * environment. consider using the alternatives offered by the {@code ThreadSafeDFACaches} factory from the {@code - * learnlib-parallelism} artifact. + * environment. consider using the alternatives offered by the {@link ThreadSafeDFACaches} factory. * * @param * input symbol type diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheConsistencyTest.java b/filters/cache/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheConsistencyTest.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheConsistencyTest.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheConsistencyTest.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheOracle.java b/filters/cache/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheOracle.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheOracle.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACacheOracle.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACaches.java b/filters/cache/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACaches.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACaches.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/dfa/ThreadSafeDFACaches.java diff --git a/filters/cache/src/main/java/de/learnlib/filter/cache/mealy/SymbolQueryCache.java b/filters/cache/src/main/java/de/learnlib/filter/cache/mealy/SymbolQueryCache.java index cca361c6be..66808f99f3 100644 --- a/filters/cache/src/main/java/de/learnlib/filter/cache/mealy/SymbolQueryCache.java +++ b/filters/cache/src/main/java/de/learnlib/filter/cache/mealy/SymbolQueryCache.java @@ -27,8 +27,9 @@ import de.learnlib.oracle.SymbolQueryOracle; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.SupportsGrowingAlphabet; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.equivalence.NearLinearEquivalenceTest; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; @@ -46,7 +47,7 @@ * output alphabet type */ public class SymbolQueryCache - implements SymbolQueryOracle, MealyLearningCacheOracle, Resumable> { + implements SymbolQueryOracle, MealyLearningCacheOracle, SupportsGrowingAlphabet, Resumable> { private CompactMealy cache; private final SymbolQueryOracle delegate; @@ -142,6 +143,11 @@ public void resume(SymbolQueryCacheState state) { this.cache = state.getCache(); } + @Override + public void addAlphabetSymbol(I symbol) { + this.cache.addAlphabetSymbol(symbol); + } + public static class SymbolQueryCacheState { private final CompactMealy cache; diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheConsistencyTest.java b/filters/cache/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheConsistencyTest.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheConsistencyTest.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheConsistencyTest.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheOracle.java b/filters/cache/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheOracle.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheOracle.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCacheOracle.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCaches.java b/filters/cache/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCaches.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCaches.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/mealy/ThreadSafeMealyCaches.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheConsistencyTest.java b/filters/cache/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheConsistencyTest.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheConsistencyTest.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheConsistencyTest.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheOracle.java b/filters/cache/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheOracle.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheOracle.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCacheOracle.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCaches.java b/filters/cache/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCaches.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCaches.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/moore/ThreadSafeMooreCaches.java diff --git a/filters/cache/src/main/java/de/learnlib/filter/cache/sul/StateLocalInputSULCache.java b/filters/cache/src/main/java/de/learnlib/filter/cache/sul/StateLocalInputSULCache.java index 7587e6031e..ddda6dc79f 100644 --- a/filters/cache/src/main/java/de/learnlib/filter/cache/sul/StateLocalInputSULCache.java +++ b/filters/cache/src/main/java/de/learnlib/filter/cache/sul/StateLocalInputSULCache.java @@ -21,7 +21,6 @@ import java.util.List; import java.util.Map; -import de.learnlib.filter.cache.sul.AbstractSULCache.SULCacheState; import de.learnlib.filter.cache.sul.StateLocalInputSULCache.StateLocalInputSULCacheState; import de.learnlib.sul.StateLocalInputSUL; import net.automatalib.incremental.mealy.IncrementalMealyBuilder; diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCache.java b/filters/cache/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCache.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCache.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCache.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCaches.java b/filters/cache/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCaches.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCaches.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeSULCaches.java diff --git a/oracles/parallelism/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeStateLocalInputSULCache.java b/filters/cache/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeStateLocalInputSULCache.java similarity index 100% rename from oracles/parallelism/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeStateLocalInputSULCache.java rename to filters/cache/src/main/java/de/learnlib/filter/cache/sul/ThreadSafeStateLocalInputSULCache.java diff --git a/filters/cache/src/main/java/module-info.java b/filters/cache/src/main/java/module-info.java new file mode 100644 index 0000000000..4df43d4094 --- /dev/null +++ b/filters/cache/src/main/java/module-info.java @@ -0,0 +1,48 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides caches to avoid posing duplicate membership queries. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-cache</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.filter.cache { + + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires net.automatalib.incremental; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + // only required by documentation + requires static de.learnlib.oracle.parallelism; + + exports de.learnlib.filter.cache; + exports de.learnlib.filter.cache.dfa; + exports de.learnlib.filter.cache.mealy; + exports de.learnlib.filter.cache.moore; + exports de.learnlib.filter.cache.sul; +} diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/AbstractCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/AbstractCacheTest.java index 886da74792..a314bc344b 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/AbstractCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/AbstractCacheTest.java @@ -26,6 +26,7 @@ import de.learnlib.query.Query; import de.learnlib.testsupport.ResumeUtils; import net.automatalib.alphabet.Alphabet; +import net.automatalib.alphabet.SupportsGrowingAlphabet; import net.automatalib.automaton.concept.Output; import net.automatalib.word.Word; import net.automatalib.word.WordBuilder; @@ -148,6 +149,41 @@ public void testResuming() { } @Test(dependsOnMethods = "testResuming") + public void testAddSymbol() { + if (supportsGrowing()) { + @SuppressWarnings("unchecked") + final SupportsGrowingAlphabet growingCache = (SupportsGrowingAlphabet) oracle; + + // test that adding existing symbols does nothing; + final long oldCount = getNumberOfPosedQueries(); + alphabet.forEach(growingCache::addAlphabetSymbol); + final long newCount = getNumberOfPosedQueries(); + Assert.assertEquals(newCount, oldCount); + + // test that adding new symbols does nothing; + final Alphabet extensions = getExtensionAlphabet(); + final long oldCount2 = getNumberOfPosedQueries(); + extensions.forEach(growingCache::addAlphabetSymbol); + final long newCount2 = getNumberOfPosedQueries(); + Assert.assertEquals(newCount2, oldCount2); + + // test that adding new queries works + queries.clear(); + queries.add(new DefaultQuery<>(generateWord())); + final long oldCount3 = getNumberOfPosedQueries(); + oracle.processQueries(queries); + final long newCount3 = getNumberOfPosedQueries(); + Assert.assertEquals(newCount3, oldCount3 + 1); + + // test that querying new queries works + final long oldCount4 = getNumberOfPosedQueries(); + oracle.processQueries(queries); + final long newCount4 = getNumberOfPosedQueries(); + Assert.assertEquals(newCount4, oldCount4); + } + } + + @Test(dependsOnMethods = "testAddSymbol") public void testDuplicatesInBatch() { final long oldCount = getNumberOfPosedQueries(); @@ -172,6 +208,10 @@ public void testDuplicatesInBatch() { } private Word generateWord() { + return generateWord(alphabet); + } + + private Word generateWord(Alphabet alphabet) { final WordBuilder result = new WordBuilder<>(LENGTH); for (int i = 0; i < LENGTH; ++i) { @@ -198,6 +238,8 @@ protected Query getQuery(int i) { protected abstract Alphabet getAlphabet(); + protected abstract Alphabet getExtensionAlphabet(); + protected abstract A getTargetModel(); protected abstract A getInvalidTargetModel(); @@ -210,4 +252,6 @@ protected Query getQuery(int i) { protected abstract boolean supportsPrefixes(); + protected abstract boolean supportsGrowing(); + } diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/AbstractParallelCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/AbstractParallelCacheTest.java similarity index 99% rename from oracles/parallelism/src/test/java/de/learnlib/filter/cache/AbstractParallelCacheTest.java rename to filters/cache/src/test/java/de/learnlib/filter/cache/AbstractParallelCacheTest.java index 0902ca2a39..75f66ec1c5 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/AbstractParallelCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/AbstractParallelCacheTest.java @@ -20,7 +20,7 @@ import java.util.stream.IntStream; import de.learnlib.oracle.EquivalenceOracle; -import de.learnlib.oracle.parallelism.ParallelOracle; +import de.learnlib.oracle.ParallelOracle; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; import net.automatalib.common.util.collection.CollectionsUtil; diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/CacheConfig.java b/filters/cache/src/test/java/de/learnlib/filter/cache/CacheConfig.java similarity index 93% rename from oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/CacheConfig.java rename to filters/cache/src/test/java/de/learnlib/filter/cache/CacheConfig.java index 4445342758..1a476de8c0 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/CacheConfig.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/CacheConfig.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.filter.cache.configuration; +package de.learnlib.filter.cache; import java.util.ArrayList; import java.util.Collection; @@ -21,20 +21,18 @@ import java.util.function.BiFunction; import java.util.function.Supplier; -import de.learnlib.filter.cache.LearningCache; +import de.learnlib.filter.cache.CacheCreator.DFACacheCreator; +import de.learnlib.filter.cache.CacheCreator.MealyCacheCreator; +import de.learnlib.filter.cache.CacheCreator.MooreCacheCreator; +import de.learnlib.filter.cache.CacheCreator.SLISULCacheCreator; +import de.learnlib.filter.cache.CacheCreator.SULCacheCreator; import de.learnlib.filter.cache.LearningCache.MealyLearningCache; -import de.learnlib.filter.cache.LearningCacheOracle; import de.learnlib.filter.cache.LearningCacheOracle.DFALearningCacheOracle; import de.learnlib.filter.cache.LearningCacheOracle.MealyLearningCacheOracle; import de.learnlib.filter.cache.LearningCacheOracle.MooreLearningCacheOracle; -import de.learnlib.filter.cache.configuration.CacheCreator.DFACacheCreator; -import de.learnlib.filter.cache.configuration.CacheCreator.MealyCacheCreator; -import de.learnlib.filter.cache.configuration.CacheCreator.MooreCacheCreator; -import de.learnlib.filter.cache.configuration.CacheCreator.SLISULCacheCreator; -import de.learnlib.filter.cache.configuration.CacheCreator.SULCacheCreator; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.oracle.ParallelOracle; import de.learnlib.oracle.parallelism.AbstractStaticBatchProcessor; -import de.learnlib.oracle.parallelism.ParallelOracle; import de.learnlib.oracle.parallelism.ParallelOracleBuilders; import de.learnlib.sul.SUL; import de.learnlib.sul.StateLocalInputSUL; diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/CacheCreator.java b/filters/cache/src/test/java/de/learnlib/filter/cache/CacheCreator.java similarity index 87% rename from oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/CacheCreator.java rename to filters/cache/src/test/java/de/learnlib/filter/cache/CacheCreator.java index fadd6b6d64..fe47996474 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/CacheCreator.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/CacheCreator.java @@ -13,28 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.filter.cache.configuration; +package de.learnlib.filter.cache; import java.util.Collection; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; -import de.learnlib.filter.cache.LearningCache; +import de.learnlib.filter.cache.CacheConfig.DFACollectionConfig; +import de.learnlib.filter.cache.CacheConfig.DFASupplierConfig; +import de.learnlib.filter.cache.CacheConfig.MealyCollectionConfig; +import de.learnlib.filter.cache.CacheConfig.MealySupplierConfig; +import de.learnlib.filter.cache.CacheConfig.MooreCollectionConfig; +import de.learnlib.filter.cache.CacheConfig.MooreSupplierConfig; +import de.learnlib.filter.cache.CacheConfig.SLISULConfig; +import de.learnlib.filter.cache.CacheConfig.SULConfig; import de.learnlib.filter.cache.LearningCache.DFALearningCache; import de.learnlib.filter.cache.LearningCache.MealyLearningCache; import de.learnlib.filter.cache.LearningCache.MooreLearningCache; import de.learnlib.filter.cache.LearningCacheOracle.DFALearningCacheOracle; import de.learnlib.filter.cache.LearningCacheOracle.MealyLearningCacheOracle; import de.learnlib.filter.cache.LearningCacheOracle.MooreLearningCacheOracle; -import de.learnlib.filter.cache.configuration.CacheConfig.DFACollectionConfig; -import de.learnlib.filter.cache.configuration.CacheConfig.DFASupplierConfig; -import de.learnlib.filter.cache.configuration.CacheConfig.MealyCollectionConfig; -import de.learnlib.filter.cache.configuration.CacheConfig.MealySupplierConfig; -import de.learnlib.filter.cache.configuration.CacheConfig.MooreCollectionConfig; -import de.learnlib.filter.cache.configuration.CacheConfig.MooreSupplierConfig; -import de.learnlib.filter.cache.configuration.CacheConfig.SLISULConfig; -import de.learnlib.filter.cache.configuration.CacheConfig.SULConfig; import de.learnlib.oracle.MembershipOracle; import de.learnlib.sul.SUL; import de.learnlib.sul.StateLocalInputSUL; diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/CacheTestUtils.java b/filters/cache/src/test/java/de/learnlib/filter/cache/CacheTestUtils.java index 69b0e742d7..2236ec7fa8 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/CacheTestUtils.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/CacheTestUtils.java @@ -17,16 +17,31 @@ import java.util.Random; +import de.learnlib.driver.simulator.MealySimulatorSUL; +import de.learnlib.driver.simulator.StateLocalInputMealySimulatorSUL; +import de.learnlib.filter.statistic.oracle.DFACounterOracle; +import de.learnlib.filter.statistic.oracle.MealyCounterOracle; +import de.learnlib.filter.statistic.oracle.MooreCounterOracle; +import de.learnlib.filter.statistic.sul.ResetCounterSUL; +import de.learnlib.filter.statistic.sul.ResetCounterStateLocalInputSUL; +import de.learnlib.oracle.membership.DFASimulatorOracle; +import de.learnlib.oracle.membership.MealySimulatorOracle; +import de.learnlib.oracle.membership.MooreSimulatorOracle; +import de.learnlib.sul.SUL; +import de.learnlib.sul.StateLocalInputSUL; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; -import net.automatalib.automaton.transducer.CompactMealy; -import net.automatalib.automaton.transducer.CompactMoore; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.fsa.impl.CompactDFA; +import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.MooreMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; +import net.automatalib.automaton.transducer.impl.CompactMoore; import net.automatalib.util.automaton.random.RandomAutomata; public final class CacheTestUtils { public static final Alphabet INPUT_ALPHABET; + public static final Alphabet EXTENSION_ALPHABET; public static final Alphabet OUTPUT_ALPHABET; public static final CompactDFA DFA; @@ -36,24 +51,51 @@ public final class CacheTestUtils { public static final CompactMoore MOORE; public static final CompactMoore MOORE_INVALID; + public static final SUL SUL; + public static final StateLocalInputSUL SLI_SUL; + static { INPUT_ALPHABET = Alphabets.characters('a', 'c'); - OUTPUT_ALPHABET = Alphabets.integers(1, 3); + EXTENSION_ALPHABET = Alphabets.characters('d', 'e'); + OUTPUT_ALPHABET = Alphabets.integers(1, 4); + final Alphabet combinedAlphabet = Alphabets.characters('a', 'e'); final Random random = new Random(42); final int size = 20; - DFA = RandomAutomata.randomDFA(random, size, INPUT_ALPHABET); - MEALY = RandomAutomata.randomMealy(random, size, INPUT_ALPHABET, OUTPUT_ALPHABET); - MOORE = RandomAutomata.randomMoore(random, size, INPUT_ALPHABET, OUTPUT_ALPHABET); + DFA = RandomAutomata.randomDFA(random, size, combinedAlphabet); + MEALY = RandomAutomata.randomMealy(random, size, combinedAlphabet, OUTPUT_ALPHABET); + MOORE = RandomAutomata.randomMoore(random, size, combinedAlphabet, OUTPUT_ALPHABET); DFA_INVALID = new CompactDFA<>(DFA); DFA_INVALID.flipAcceptance(); // we rely on two generations not producing the same automaton - MEALY_INVALID = RandomAutomata.randomMealy(random, size, INPUT_ALPHABET, OUTPUT_ALPHABET); - MOORE_INVALID = RandomAutomata.randomMoore(random, size, INPUT_ALPHABET, OUTPUT_ALPHABET); + MEALY_INVALID = RandomAutomata.randomMealy(random, size, combinedAlphabet, OUTPUT_ALPHABET); + MOORE_INVALID = RandomAutomata.randomMoore(random, size, combinedAlphabet, OUTPUT_ALPHABET); + + SUL = new MealySimulatorSUL<>(MEALY); + SLI_SUL = new StateLocalInputMealySimulatorSUL<>(MEALY); } private CacheTestUtils() {} + public static DFACounterOracle getCounter(net.automatalib.automaton.fsa.DFA delegate) { + return new DFACounterOracle<>(new DFASimulatorOracle<>(delegate)); + } + + public static MealyCounterOracle getCounter(MealyMachine delegate) { + return new MealyCounterOracle<>(new MealySimulatorOracle<>(delegate)); + } + + public static MooreCounterOracle getCounter(MooreMachine delegate) { + return new MooreCounterOracle<>(new MooreSimulatorOracle<>(delegate)); + } + + public static ResetCounterSUL getCounter(SUL delegate) { + return new ResetCounterSUL<>("Queries", delegate); + } + + public static ResetCounterStateLocalInputSUL getCounter(StateLocalInputSUL delegate) { + return new ResetCounterStateLocalInputSUL<>("Queries", delegate); + } } diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/SULLearningCacheOracle.java b/filters/cache/src/test/java/de/learnlib/filter/cache/SULLearningCacheOracle.java index 2ba0ee1756..ed4eae7a50 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/SULLearningCacheOracle.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/SULLearningCacheOracle.java @@ -26,11 +26,12 @@ import de.learnlib.oracle.membership.SULOracle; import de.learnlib.oracle.membership.StateLocalInputSULOracle; import de.learnlib.query.Query; +import net.automatalib.alphabet.SupportsGrowingAlphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; -public class SULLearningCacheOracle & Resumable> - implements MealyLearningCacheOracle { +public class SULLearningCacheOracle & SupportsGrowingAlphabet & Resumable> + implements MealyLearningCacheOracle, SupportsGrowingAlphabet { private final C cache; private final MealyMembershipOracle oracle; @@ -67,4 +68,9 @@ public static SULLearningCacheOracle> O undefinedInput) { return new SULLearningCacheOracle<>(cache, new StateLocalInputSULOracle<>(cache, undefinedInput)); } + + @Override + public void addAlphabetSymbol(I symbol) { + cache.addAlphabetSymbol(symbol); + } } diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/AbstractDFACacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/AbstractDFACacheTest.java index 731e8e3902..a644e5959d 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/AbstractDFACacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/AbstractDFACacheTest.java @@ -21,6 +21,7 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.membership.DFASimulatorOracle; import net.automatalib.alphabet.Alphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.fsa.DFA; public abstract class AbstractDFACacheTest @@ -66,7 +67,17 @@ protected boolean supportsPrefixes() { @Override protected Alphabet getAlphabet() { - return CacheTestUtils.INPUT_ALPHABET; + return new GrowingMapAlphabet<>(CacheTestUtils.INPUT_ALPHABET); + } + + @Override + protected Alphabet getExtensionAlphabet() { + return CacheTestUtils.EXTENSION_ALPHABET; + } + + @Override + protected boolean supportsGrowing() { + return true; } protected abstract DFACacheOracle getCache(DFAMembershipOracle delegate); diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/DFAHashCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/DFAHashCacheTest.java index 91512c1441..78f3157ede 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/DFAHashCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/DFAHashCacheTest.java @@ -67,4 +67,14 @@ protected boolean supportsPrefixes() { protected Alphabet getAlphabet() { return CacheTestUtils.INPUT_ALPHABET; } + + @Override + protected Alphabet getExtensionAlphabet() { + return CacheTestUtils.EXTENSION_ALPHABET; + } + + @Override + protected boolean supportsGrowing() { + return false; + } } diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/DFAParallelCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/DFAParallelCacheTest.java similarity index 83% rename from oracles/parallelism/src/test/java/de/learnlib/filter/cache/DFAParallelCacheTest.java rename to filters/cache/src/test/java/de/learnlib/filter/cache/dfa/DFAParallelCacheTest.java index 0076d7ab76..827677865f 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/DFAParallelCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/dfa/DFAParallelCacheTest.java @@ -13,15 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.filter.cache; +package de.learnlib.filter.cache.dfa; -import de.learnlib.filter.cache.configuration.CacheConfig; -import de.learnlib.filter.cache.configuration.CacheCreator.DFACacheCreator; -import de.learnlib.filter.cache.configuration.Config; -import de.learnlib.filter.cache.dfa.ThreadSafeDFACacheOracle; -import de.learnlib.filter.cache.dfa.ThreadSafeDFACaches; +import de.learnlib.filter.cache.AbstractParallelCacheTest; +import de.learnlib.filter.cache.CacheConfig; +import de.learnlib.filter.cache.CacheCreator.DFACacheCreator; +import de.learnlib.filter.cache.CacheTestUtils; import de.learnlib.filter.statistic.oracle.DFACounterOracle; -import de.learnlib.oracle.parallelism.ParallelOracle; +import de.learnlib.oracle.ParallelOracle; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; import org.testng.annotations.DataProvider; @@ -35,10 +34,10 @@ public class DFAParallelCacheTest extends AbstractParallelCacheTest> creator) { - this.sul = Config.getCounter(Config.TARGET_MODEL_DFA); + this.sul = CacheTestUtils.getCounter(CacheTestUtils.DFA); final CacheConfig> config = - creator.apply(Config.ALPHABET, this.sul); + creator.apply(CacheTestUtils.INPUT_ALPHABET, this.sul); this.cacheRepresentative = config.getRepresentative(); this.parallelOracle = config.getParallelOracle(); @@ -56,12 +55,12 @@ public static Object[][] cacheProvider() { @Override protected Alphabet getAlphabet() { - return Config.ALPHABET; + return CacheTestUtils.INPUT_ALPHABET; } @Override protected DFA getTargetModel() { - return Config.TARGET_MODEL_DFA; + return CacheTestUtils.DFA; } @Override diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/AbstractMealyCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/AbstractMealyCacheTest.java index c1223fbed4..a783e5b2e4 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/AbstractMealyCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/AbstractMealyCacheTest.java @@ -21,6 +21,7 @@ import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.membership.MealySimulatorOracle; import net.automatalib.alphabet.Alphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.common.util.mapping.Mapping; import net.automatalib.word.Word; @@ -71,7 +72,17 @@ protected boolean supportsPrefixes() { @Override protected Alphabet getAlphabet() { - return CacheTestUtils.INPUT_ALPHABET; + return new GrowingMapAlphabet<>(CacheTestUtils.INPUT_ALPHABET); + } + + @Override + protected Alphabet getExtensionAlphabet() { + return CacheTestUtils.EXTENSION_ALPHABET; + } + + @Override + protected boolean supportsGrowing() { + return true; } protected abstract MealyCacheOracle getCache(MealyMembershipOracle delegate); diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/MealyParallelCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/MealyParallelCacheTest.java similarity index 67% rename from oracles/parallelism/src/test/java/de/learnlib/filter/cache/MealyParallelCacheTest.java rename to filters/cache/src/test/java/de/learnlib/filter/cache/mealy/MealyParallelCacheTest.java index 627c5c27f5..9d853151b4 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/MealyParallelCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/MealyParallelCacheTest.java @@ -13,20 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.filter.cache; +package de.learnlib.filter.cache.mealy; import java.util.Collection; import java.util.function.Function; import java.util.function.Supplier; -import de.learnlib.filter.cache.configuration.CacheConfig; -import de.learnlib.filter.cache.configuration.CacheCreator.MealyCacheCreator; -import de.learnlib.filter.cache.configuration.Config; -import de.learnlib.filter.cache.mealy.ThreadSafeMealyCacheOracle; -import de.learnlib.filter.cache.mealy.ThreadSafeMealyCaches; +import de.learnlib.filter.cache.AbstractParallelCacheTest; +import de.learnlib.filter.cache.CacheConfig; +import de.learnlib.filter.cache.CacheCreator.MealyCacheCreator; +import de.learnlib.filter.cache.CacheTestUtils; import de.learnlib.filter.statistic.oracle.MealyCounterOracle; import de.learnlib.oracle.MembershipOracle; -import de.learnlib.oracle.parallelism.ParallelOracle; +import de.learnlib.oracle.ParallelOracle; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; @@ -34,18 +33,18 @@ import org.testng.annotations.Factory; public class MealyParallelCacheTest - extends AbstractParallelCacheTest, Character, Word> { + extends AbstractParallelCacheTest, Character, Word> { - private final MealyCounterOracle sul; - private final ThreadSafeMealyCacheOracle cacheRepresentative; - private final ParallelOracle> parallelOracle; + private final MealyCounterOracle sul; + private final ThreadSafeMealyCacheOracle cacheRepresentative; + private final ParallelOracle> parallelOracle; @Factory(dataProvider = "caches") - public MealyParallelCacheTest(MealyCacheCreator> creator) { - this.sul = Config.getCounter(Config.TARGET_MODEL_MEALY); + public MealyParallelCacheTest(MealyCacheCreator> creator) { + this.sul = CacheTestUtils.getCounter(CacheTestUtils.MEALY); - final CacheConfig, ThreadSafeMealyCacheOracle> config = - creator.apply(Config.ALPHABET, this.sul); + final CacheConfig, ThreadSafeMealyCacheOracle> config = + creator.apply(CacheTestUtils.INPUT_ALPHABET, this.sul); this.cacheRepresentative = config.getRepresentative(); this.parallelOracle = config.getParallelOracle(); @@ -63,21 +62,21 @@ public static Object[][] cacheProvider() { @Override protected Alphabet getAlphabet() { - return Config.ALPHABET; + return CacheTestUtils.INPUT_ALPHABET; } @Override - protected MealyMachine getTargetModel() { - return Config.TARGET_MODEL_MEALY; + protected MealyMachine getTargetModel() { + return CacheTestUtils.MEALY; } @Override - protected ThreadSafeMealyCacheOracle getCacheRepresentative() { + protected ThreadSafeMealyCacheOracle getCacheRepresentative() { return this.cacheRepresentative; } @Override - protected ParallelOracle> getParallelOracle() { + protected ParallelOracle> getParallelOracle() { return this.parallelOracle; } diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/SymbolQueryCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/SymbolQueryCacheTest.java index 733472ff74..e80b1fa6b9 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/SymbolQueryCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/mealy/SymbolQueryCacheTest.java @@ -21,6 +21,7 @@ import de.learnlib.filter.statistic.oracle.CounterSymbolQueryOracle; import de.learnlib.oracle.membership.SULSymbolQueryOracle; import net.automatalib.alphabet.Alphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; @@ -36,7 +37,7 @@ public SymbolQueryCacheTest() { @Override protected Alphabet getAlphabet() { - return CacheTestUtils.INPUT_ALPHABET; + return new GrowingMapAlphabet<>(CacheTestUtils.INPUT_ALPHABET); } @Override @@ -70,4 +71,14 @@ protected long getNumberOfPosedQueries() { protected boolean supportsPrefixes() { return true; } + + @Override + protected Alphabet getExtensionAlphabet() { + return CacheTestUtils.EXTENSION_ALPHABET; + } + + @Override + protected boolean supportsGrowing() { + return true; + } } diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/moore/AbstractMooreCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/moore/AbstractMooreCacheTest.java index 221fea48aa..d8554e2e21 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/moore/AbstractMooreCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/moore/AbstractMooreCacheTest.java @@ -21,6 +21,7 @@ import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; import de.learnlib.oracle.membership.MooreSimulatorOracle; import net.automatalib.alphabet.Alphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.common.util.mapping.Mapping; import net.automatalib.word.Word; @@ -71,7 +72,17 @@ protected boolean supportsPrefixes() { @Override protected Alphabet getAlphabet() { - return CacheTestUtils.INPUT_ALPHABET; + return new GrowingMapAlphabet<>(CacheTestUtils.INPUT_ALPHABET); + } + + @Override + protected Alphabet getExtensionAlphabet() { + return CacheTestUtils.EXTENSION_ALPHABET; + } + + @Override + protected boolean supportsGrowing() { + return true; } protected abstract MooreCacheOracle getCache(MooreMembershipOracle delegate); diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/MooreParallelCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/moore/MooreParallelCacheTest.java similarity index 60% rename from oracles/parallelism/src/test/java/de/learnlib/filter/cache/MooreParallelCacheTest.java rename to filters/cache/src/test/java/de/learnlib/filter/cache/moore/MooreParallelCacheTest.java index 7eee39fdeb..fdc8e91143 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/MooreParallelCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/moore/MooreParallelCacheTest.java @@ -13,15 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.filter.cache; +package de.learnlib.filter.cache.moore; -import de.learnlib.filter.cache.configuration.CacheConfig; -import de.learnlib.filter.cache.configuration.CacheCreator.MooreCacheCreator; -import de.learnlib.filter.cache.configuration.Config; -import de.learnlib.filter.cache.moore.ThreadSafeMooreCacheOracle; -import de.learnlib.filter.cache.moore.ThreadSafeMooreCaches; +import de.learnlib.filter.cache.AbstractParallelCacheTest; +import de.learnlib.filter.cache.CacheConfig; +import de.learnlib.filter.cache.CacheCreator.MooreCacheCreator; +import de.learnlib.filter.cache.CacheTestUtils; import de.learnlib.filter.statistic.oracle.MooreCounterOracle; -import de.learnlib.oracle.parallelism.ParallelOracle; +import de.learnlib.oracle.ParallelOracle; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.word.Word; @@ -29,18 +28,18 @@ import org.testng.annotations.Factory; public class MooreParallelCacheTest - extends AbstractParallelCacheTest, Character, Word> { + extends AbstractParallelCacheTest, Character, Word> { - private final MooreCounterOracle sul; - private final ThreadSafeMooreCacheOracle cacheRepresentative; - private final ParallelOracle> parallelOracle; + private final MooreCounterOracle sul; + private final ThreadSafeMooreCacheOracle cacheRepresentative; + private final ParallelOracle> parallelOracle; @Factory(dataProvider = "caches") - public MooreParallelCacheTest(MooreCacheCreator> creator) { - this.sul = Config.getCounter(Config.TARGET_MODEL_MOORE); + public MooreParallelCacheTest(MooreCacheCreator> creator) { + this.sul = CacheTestUtils.getCounter(CacheTestUtils.MOORE); - final CacheConfig, ThreadSafeMooreCacheOracle> config = - creator.apply(Config.ALPHABET, this.sul); + final CacheConfig, ThreadSafeMooreCacheOracle> config = + creator.apply(CacheTestUtils.INPUT_ALPHABET, this.sul); this.cacheRepresentative = config.getRepresentative(); this.parallelOracle = config.getParallelOracle(); @@ -56,21 +55,21 @@ public static Object[][] cacheProvider() { @Override protected Alphabet getAlphabet() { - return Config.ALPHABET; + return CacheTestUtils.INPUT_ALPHABET; } @Override - protected MooreMachine getTargetModel() { - return Config.TARGET_MODEL_MOORE; + protected MooreMachine getTargetModel() { + return CacheTestUtils.MOORE; } @Override - protected ThreadSafeMooreCacheOracle getCacheRepresentative() { + protected ThreadSafeMooreCacheOracle getCacheRepresentative() { return this.cacheRepresentative; } @Override - protected ParallelOracle> getParallelOracle() { + protected ParallelOracle> getParallelOracle() { return this.parallelOracle; } diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/sul/AbstractSULCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/sul/AbstractSULCacheTest.java index 418e4d2da6..4f0f251269 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/sul/AbstractSULCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/sul/AbstractSULCacheTest.java @@ -22,6 +22,7 @@ import de.learnlib.filter.statistic.sul.ResetCounterSUL; import de.learnlib.sul.SUL; import net.automatalib.alphabet.Alphabet; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; @@ -69,7 +70,17 @@ protected boolean supportsPrefixes() { @Override protected Alphabet getAlphabet() { - return CacheTestUtils.INPUT_ALPHABET; + return new GrowingMapAlphabet<>(CacheTestUtils.INPUT_ALPHABET); + } + + @Override + protected Alphabet getExtensionAlphabet() { + return CacheTestUtils.EXTENSION_ALPHABET; + } + + @Override + protected boolean supportsGrowing() { + return true; } protected abstract SULCache getCache(SUL delegate); diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/SLISULParallelCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/sul/SLISULParallelCacheTest.java similarity index 59% rename from oracles/parallelism/src/test/java/de/learnlib/filter/cache/SLISULParallelCacheTest.java rename to filters/cache/src/test/java/de/learnlib/filter/cache/sul/SLISULParallelCacheTest.java index f78022e7bb..5be193019e 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/SLISULParallelCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/sul/SLISULParallelCacheTest.java @@ -13,15 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.filter.cache; +package de.learnlib.filter.cache.sul; -import de.learnlib.filter.cache.configuration.CacheConfig; -import de.learnlib.filter.cache.configuration.CacheCreator.SLISULCacheCreator; -import de.learnlib.filter.cache.configuration.Config; -import de.learnlib.filter.cache.sul.ThreadSafeSULCaches; -import de.learnlib.filter.cache.sul.ThreadSafeStateLocalInputSULCache; +import de.learnlib.filter.cache.AbstractParallelCacheTest; +import de.learnlib.filter.cache.CacheConfig; +import de.learnlib.filter.cache.CacheCreator.SLISULCacheCreator; +import de.learnlib.filter.cache.CacheTestUtils; import de.learnlib.filter.statistic.sul.ResetCounterStateLocalInputSUL; -import de.learnlib.oracle.parallelism.ParallelOracle; +import de.learnlib.oracle.ParallelOracle; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; @@ -29,18 +28,18 @@ import org.testng.annotations.Factory; public class SLISULParallelCacheTest - extends AbstractParallelCacheTest, Character, Word> { + extends AbstractParallelCacheTest, Character, Word> { - private final ResetCounterStateLocalInputSUL sul; - private final ThreadSafeStateLocalInputSULCache cacheRepresentative; - private final ParallelOracle> parallelOracle; + private final ResetCounterStateLocalInputSUL sul; + private final ThreadSafeStateLocalInputSULCache cacheRepresentative; + private final ParallelOracle> parallelOracle; @Factory(dataProvider = "caches") - public SLISULParallelCacheTest(SLISULCacheCreator> creator) { - this.sul = Config.getCounter(Config.TARGET_MODEL_SLI_SUL); + public SLISULParallelCacheTest(SLISULCacheCreator> creator) { + this.sul = CacheTestUtils.getCounter(CacheTestUtils.SLI_SUL); - final CacheConfig, ThreadSafeStateLocalInputSULCache> config = - creator.apply(Config.ALPHABET, sul); + final CacheConfig, ThreadSafeStateLocalInputSULCache> config = + creator.apply(CacheTestUtils.INPUT_ALPHABET, sul); this.cacheRepresentative = config.getRepresentative(); this.parallelOracle = config.getParallelOracle(); @@ -54,21 +53,21 @@ public static Object[][] cacheProvider() { @Override protected Alphabet getAlphabet() { - return Config.ALPHABET; + return CacheTestUtils.INPUT_ALPHABET; } @Override - protected MealyMachine getTargetModel() { - return Config.TARGET_MODEL_MEALY; + protected MealyMachine getTargetModel() { + return CacheTestUtils.MEALY; } @Override - protected ThreadSafeStateLocalInputSULCache getCacheRepresentative() { + protected ThreadSafeStateLocalInputSULCache getCacheRepresentative() { return this.cacheRepresentative; } @Override - protected ParallelOracle> getParallelOracle() { + protected ParallelOracle> getParallelOracle() { return this.parallelOracle; } diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/SULParallelCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/sul/SULParallelCacheTest.java similarity index 60% rename from oracles/parallelism/src/test/java/de/learnlib/filter/cache/SULParallelCacheTest.java rename to filters/cache/src/test/java/de/learnlib/filter/cache/sul/SULParallelCacheTest.java index 842e5038f5..2599ab6d08 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/SULParallelCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/sul/SULParallelCacheTest.java @@ -13,15 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.filter.cache; +package de.learnlib.filter.cache.sul; -import de.learnlib.filter.cache.configuration.CacheConfig; -import de.learnlib.filter.cache.configuration.CacheCreator.SULCacheCreator; -import de.learnlib.filter.cache.configuration.Config; -import de.learnlib.filter.cache.sul.ThreadSafeSULCache; -import de.learnlib.filter.cache.sul.ThreadSafeSULCaches; +import de.learnlib.filter.cache.AbstractParallelCacheTest; +import de.learnlib.filter.cache.CacheConfig; +import de.learnlib.filter.cache.CacheCreator.SULCacheCreator; +import de.learnlib.filter.cache.CacheTestUtils; import de.learnlib.filter.statistic.sul.ResetCounterSUL; -import de.learnlib.oracle.parallelism.ParallelOracle; +import de.learnlib.oracle.ParallelOracle; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.word.Word; @@ -29,18 +28,18 @@ import org.testng.annotations.Factory; public class SULParallelCacheTest - extends AbstractParallelCacheTest, Character, Word> { + extends AbstractParallelCacheTest, Character, Word> { - private final ResetCounterSUL sul; - private final ThreadSafeSULCache cacheRepresentative; - private final ParallelOracle> parallelOracle; + private final ResetCounterSUL sul; + private final ThreadSafeSULCache cacheRepresentative; + private final ParallelOracle> parallelOracle; @Factory(dataProvider = "caches") - public SULParallelCacheTest(SULCacheCreator> creator) { - this.sul = Config.getCounter(Config.TARGET_MODEL_SUL); + public SULParallelCacheTest(SULCacheCreator> creator) { + this.sul = CacheTestUtils.getCounter(CacheTestUtils.SUL); - final CacheConfig, ThreadSafeSULCache> config = - creator.apply(Config.ALPHABET, sul); + final CacheConfig, ThreadSafeSULCache> config = + creator.apply(CacheTestUtils.INPUT_ALPHABET, sul); this.cacheRepresentative = config.getRepresentative(); this.parallelOracle = config.getParallelOracle(); @@ -55,21 +54,21 @@ public static Object[][] cacheProvider() { @Override protected Alphabet getAlphabet() { - return Config.ALPHABET; + return CacheTestUtils.INPUT_ALPHABET; } @Override - protected MealyMachine getTargetModel() { - return Config.TARGET_MODEL_MEALY; + protected MealyMachine getTargetModel() { + return CacheTestUtils.MEALY; } @Override - protected ThreadSafeSULCache getCacheRepresentative() { + protected ThreadSafeSULCache getCacheRepresentative() { return this.cacheRepresentative; } @Override - protected ParallelOracle> getParallelOracle() { + protected ParallelOracle> getParallelOracle() { return this.parallelOracle; } diff --git a/filters/cache/src/test/java/de/learnlib/filter/cache/sul/StateLocalInputSULTreeCacheTest.java b/filters/cache/src/test/java/de/learnlib/filter/cache/sul/StateLocalInputSULTreeCacheTest.java index 31ef622d44..acf74cd010 100644 --- a/filters/cache/src/test/java/de/learnlib/filter/cache/sul/StateLocalInputSULTreeCacheTest.java +++ b/filters/cache/src/test/java/de/learnlib/filter/cache/sul/StateLocalInputSULTreeCacheTest.java @@ -106,7 +106,7 @@ public void testQueryWithNoContainedAlphabetSymbol() { final long oldCount = getNumberOfPosedQueries(); final Word oldQuery = getQuery(0).getInput(); - final Word answer = super.oracle.answerQuery(oldQuery.concat(Word.fromString("dcba"))); + final Word answer = super.oracle.answerQuery(oldQuery.concat(Word.fromString("fcba"))); Assert.assertEquals(getNumberOfPosedQueries(), oldCount); @@ -159,6 +159,16 @@ protected Alphabet getAlphabet() { return CacheTestUtils.INPUT_ALPHABET; } + @Override + protected Alphabet getExtensionAlphabet() { + return CacheTestUtils.EXTENSION_ALPHABET; + } + + @Override + protected boolean supportsGrowing() { + return false; + } + private StateLocalInputSULCache getCache() { return SULCaches.createStateLocalInputCache(CacheTestUtils.INPUT_ALPHABET, sliCounter); } diff --git a/filters/reuse/src/main/java/module-info.java b/filters/reuse/src/main/java/module-info.java new file mode 100644 index 0000000000..89e64311d3 --- /dev/null +++ b/filters/reuse/src/main/java/module-info.java @@ -0,0 +1,39 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides a reuse tree for (intelligently) caching membership queries. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-reuse</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.filter.reuse { + + requires de.learnlib.api; + requires net.automatalib.api; + requires org.checkerframework.checker.qual; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.filter.reuse; + exports de.learnlib.filter.reuse.tree; +} diff --git a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java index 49af1bb770..d74374203c 100644 --- a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java +++ b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/DomainKnowledgeTest.java @@ -24,7 +24,7 @@ import de.learnlib.filter.reuse.ReuseOracleBuilder; import de.learnlib.filter.reuse.tree.ReuseNode.NodeResult; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.word.Word; import org.testng.Assert; import org.testng.annotations.BeforeMethod; diff --git a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/LearningTest.java b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/LearningTest.java index a6c12dccdf..dcc32d6af2 100644 --- a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/LearningTest.java +++ b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/LearningTest.java @@ -26,7 +26,7 @@ import de.learnlib.filter.reuse.ReuseOracleBuilder; import de.learnlib.filter.reuse.tree.ReuseTree; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.serialization.dot.GraphDOT; import net.automatalib.word.Word; import net.automatalib.word.WordBuilder; diff --git a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java index d9f94e9371..6aa29250a0 100644 --- a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java +++ b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/QuiescenceTest.java @@ -23,7 +23,7 @@ import de.learnlib.filter.reuse.ReuseOracle; import de.learnlib.filter.reuse.ReuseOracleBuilder; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.word.Word; import net.automatalib.word.WordBuilder; import org.testng.annotations.BeforeClass; diff --git a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/ReuseOracleTest.java b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/ReuseOracleTest.java index 4b6d08de81..65a5afb2d1 100644 --- a/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/ReuseOracleTest.java +++ b/filters/reuse/src/test/java/de/learnlib/filter/reuse/test/ReuseOracleTest.java @@ -23,7 +23,7 @@ import de.learnlib.filter.reuse.ReuseOracleBuilder; import de.learnlib.filter.reuse.tree.ReuseNode.NodeResult; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.word.Word; import org.testng.Assert; import org.testng.annotations.BeforeMethod; diff --git a/filters/statistics/src/main/java/module-info.java b/filters/statistics/src/main/java/module-info.java new file mode 100644 index 0000000000..010bc62a5b --- /dev/null +++ b/filters/statistics/src/main/java/module-info.java @@ -0,0 +1,41 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides filters for collecting statistical data. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-statistics</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.filter.statistic { + + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.util; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.filter.statistic; + exports de.learnlib.filter.statistic.learner; + exports de.learnlib.filter.statistic.oracle; + exports de.learnlib.filter.statistic.sul; +} diff --git a/filters/statistics/src/test/java/de/learnlib/filter/statistic/TestQueries.java b/filters/statistics/src/test/java/de/learnlib/filter/statistic/TestQueries.java index 56d594d83c..6e1c44924c 100644 --- a/filters/statistics/src/test/java/de/learnlib/filter/statistic/TestQueries.java +++ b/filters/statistics/src/test/java/de/learnlib/filter/statistic/TestQueries.java @@ -22,8 +22,8 @@ import de.learnlib.query.Query; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.common.util.collection.CollectionsUtil; import net.automatalib.common.util.random.RandomUtil; import net.automatalib.util.automaton.random.RandomAutomata; diff --git a/oracles/emptiness-oracles/pom.xml b/oracles/emptiness-oracles/pom.xml index b7e11fad6f..ceec43bf96 100644 --- a/oracles/emptiness-oracles/pom.xml +++ b/oracles/emptiness-oracles/pom.xml @@ -68,4 +68,23 @@ mockito-core + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + @{argLine} + --add-reads=de.learnlib.oracle.emptiness=net.automatalib.core + --add-reads=de.learnlib.oracle.emptiness=net.automatalib.util + + + + + + diff --git a/oracles/emptiness-oracles/src/main/java/module-info.java b/oracles/emptiness-oracles/src/main/java/module-info.java new file mode 100644 index 0000000000..ec8558643d --- /dev/null +++ b/oracles/emptiness-oracles/src/main/java/module-info.java @@ -0,0 +1,39 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides a collection of emptiness oracles. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-emptiness-oracles</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.oracle.emptiness { + + requires de.learnlib.api; + requires de.learnlib.common.util; + requires net.automatalib.api; + requires org.checkerframework.checker.qual; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.oracle.emptiness; +} diff --git a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/AbstractLassoEmptinessOracleImplTest.java b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/AbstractLassoEmptinessOracleImplTest.java index f0c080d37b..1b4d22ba15 100644 --- a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/AbstractLassoEmptinessOracleImplTest.java +++ b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/AbstractLassoEmptinessOracleImplTest.java @@ -20,7 +20,7 @@ import de.learnlib.query.DefaultQuery; import de.learnlib.query.OmegaQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.modelchecking.Lasso; import net.automatalib.word.Word; import org.mockito.ArgumentMatchers; diff --git a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/DFABFEmptinessOracleTest.java b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/DFABFEmptinessOracleTest.java index e4a22ada70..2c51682904 100644 --- a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/DFABFEmptinessOracleTest.java +++ b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/DFABFEmptinessOracleTest.java @@ -19,8 +19,8 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.query.DefaultQuery; -import net.automatalib.automaton.fsa.CompactDFA; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.word.Word; import org.mockito.ArgumentMatchers; diff --git a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/DFALassoEmptinessOracleImplTest.java b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/DFALassoEmptinessOracleImplTest.java index 9ed3aeac4e..a59ec515e6 100644 --- a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/DFALassoEmptinessOracleImplTest.java +++ b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/DFALassoEmptinessOracleImplTest.java @@ -20,10 +20,10 @@ import de.learnlib.oracle.OmegaMembershipOracle.DFAOmegaMembershipOracle; import de.learnlib.query.DefaultQuery; import de.learnlib.query.OmegaQuery; -import net.automatalib.automaton.fsa.CompactDFA; import net.automatalib.automaton.fsa.DFA; -import net.automatalib.modelchecking.DFALassoImpl; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.modelchecking.Lasso; +import net.automatalib.modelchecking.impl.DFALassoImpl; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.word.Word; import org.mockito.ArgumentMatchers; diff --git a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/MealyBFEmptinessOracleTest.java b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/MealyBFEmptinessOracleTest.java index 52c04072fb..b763249620 100644 --- a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/MealyBFEmptinessOracleTest.java +++ b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/MealyBFEmptinessOracleTest.java @@ -19,8 +19,8 @@ import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.query.DefaultQuery; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.word.Word; import org.mockito.ArgumentMatchers; diff --git a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/MealyLassoEmptinessOracleImplTest.java b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/MealyLassoEmptinessOracleImplTest.java index fce67de90d..e1951956a4 100644 --- a/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/MealyLassoEmptinessOracleImplTest.java +++ b/oracles/emptiness-oracles/src/test/java/de/learnlib/oracle/emptiness/MealyLassoEmptinessOracleImplTest.java @@ -20,10 +20,10 @@ import de.learnlib.oracle.OmegaMembershipOracle.MealyOmegaMembershipOracle; import de.learnlib.query.DefaultQuery; import de.learnlib.query.OmegaQuery; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.modelchecking.Lasso; -import net.automatalib.modelchecking.MealyLassoImpl; +import net.automatalib.modelchecking.impl.MealyLassoImpl; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.word.Word; import org.mockito.ArgumentMatchers; diff --git a/oracles/equivalence-oracles/src/main/java/module-info.java b/oracles/equivalence-oracles/src/main/java/module-info.java new file mode 100644 index 0000000000..54307ad3b1 --- /dev/null +++ b/oracles/equivalence-oracles/src/main/java/module-info.java @@ -0,0 +1,49 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides a collection of equivalence oracles. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-equivalence-oracles</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.oracle.equivalence { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.common.util; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.oracle.equivalence; + exports de.learnlib.oracle.equivalence.mealy; + exports de.learnlib.oracle.equivalence.sba; + exports de.learnlib.oracle.equivalence.spa; + exports de.learnlib.oracle.equivalence.spmm; + exports de.learnlib.oracle.equivalence.vpa; +} diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/DFABFInclusionOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/DFABFInclusionOracleTest.java index 64462ac27c..20841a9733 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/DFABFInclusionOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/DFABFInclusionOracleTest.java @@ -19,8 +19,8 @@ import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.query.DefaultQuery; -import net.automatalib.automaton.fsa.CompactDFA; import net.automatalib.automaton.fsa.DFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.word.Word; import org.mockito.ArgumentMatchers; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/EmptyAutomatonOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/EmptyAutomatonOracleTest.java index da540478ec..d7e96013fd 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/EmptyAutomatonOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/EmptyAutomatonOracleTest.java @@ -15,20 +15,20 @@ */ package de.learnlib.oracle.equivalence; -import de.learnlib.example.LearningExample; -import de.learnlib.example.dfa.ExamplePaulAndMary; -import de.learnlib.example.mealy.ExampleStack; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.membership.SimulatorOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.LearningExample; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; +import de.learnlib.testsupport.example.mealy.ExampleStack; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.AutomatonCreator; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.DetSuffixOutputAutomaton; import net.automatalib.automaton.concept.Output; -import net.automatalib.automaton.fsa.CompactDFA; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.automaton.fsa.impl.CompactDFA; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.exception.UndefinedPropertyAccessException; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracleTest.java index c10acafa8a..6a4ace150b 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/IncrementalWMethodEQOracleTest.java @@ -18,9 +18,9 @@ import java.util.HashSet; import java.util.Set; -import de.learnlib.example.dfa.ExamplePaulAndMary; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; import net.automatalib.util.automaton.Automata; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/MealyBFInclusionOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/MealyBFInclusionOracleTest.java index 214645ce75..eca3489cd4 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/MealyBFInclusionOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/MealyBFInclusionOracleTest.java @@ -19,8 +19,8 @@ import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.query.DefaultQuery; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.word.Word; import org.mockito.ArgumentMatchers; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracleTest.java index cb292629ab..aa2c9b533f 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracleTest.java @@ -18,9 +18,9 @@ import java.util.HashSet; import java.util.Set; -import de.learnlib.example.dfa.ExamplePaulAndMary; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; import net.automatalib.util.automaton.Automata; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWordsEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWordsEQOracleTest.java index b91affa6b0..7cb36ee37a 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWordsEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWordsEQOracleTest.java @@ -20,7 +20,7 @@ import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.word.Word; import org.testng.Assert; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracleTest.java index 2c1144bb4f..2a1e6b9c50 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/RandomWpMethodEQOracleTest.java @@ -18,9 +18,9 @@ import java.util.HashSet; import java.util.Set; -import de.learnlib.example.dfa.ExamplePaulAndMary; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; import net.automatalib.util.automaton.Automata; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/SampleSetEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/SampleSetEQOracleTest.java index 9f69faeaea..1c91c327c0 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/SampleSetEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/SampleSetEQOracleTest.java @@ -23,7 +23,7 @@ import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.oracle.MembershipOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.common.util.random.RandomUtil; import net.automatalib.word.Word; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/mealy/RandomWalkEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/mealy/RandomWalkEQOracleTest.java index e94e4af4bf..c4b9dec966 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/mealy/RandomWalkEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/mealy/RandomWalkEQOracleTest.java @@ -21,8 +21,8 @@ import de.learnlib.query.DefaultQuery; import de.learnlib.sul.SUL; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.word.Word; import org.checkerframework.checker.nullness.qual.Nullable; import org.testng.Assert; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/sba/WMethodEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/sba/WMethodEQOracleTest.java index c2bab2a445..fb5bbd8719 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/sba/WMethodEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/sba/WMethodEQOracleTest.java @@ -21,9 +21,9 @@ import com.google.common.collect.Streams; import de.learnlib.oracle.membership.SimulatorOracle; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.automaton.procedural.SBA; import net.automatalib.util.automaton.conformance.SBAWMethodTestsIterator; import net.automatalib.util.automaton.random.RandomAutomata; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spa/WMethodEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spa/WMethodEQOracleTest.java index 23e171d934..55c2e223ba 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spa/WMethodEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spa/WMethodEQOracleTest.java @@ -21,9 +21,9 @@ import com.google.common.collect.Streams; import de.learnlib.oracle.membership.SimulatorOracle; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.automaton.procedural.SPA; import net.automatalib.util.automaton.conformance.SPATestsIterator; import net.automatalib.util.automaton.conformance.WMethodTestsIterator; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spa/WpMethodEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spa/WpMethodEQOracleTest.java index 5b939e2e3c..ce375185ab 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spa/WpMethodEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spa/WpMethodEQOracleTest.java @@ -21,9 +21,9 @@ import com.google.common.collect.Streams; import de.learnlib.oracle.membership.SimulatorOracle; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.automaton.procedural.SPA; import net.automatalib.util.automaton.conformance.SPATestsIterator; import net.automatalib.util.automaton.conformance.WpMethodTestsIterator; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spmm/WMethodEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spmm/WMethodEQOracleTest.java index c0f2a7e229..863b7b5153 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spmm/WMethodEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/spmm/WMethodEQOracleTest.java @@ -21,11 +21,11 @@ import com.google.common.collect.Streams; import de.learnlib.oracle.membership.SimulatorOracle; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; -import net.automatalib.alphabet.DefaultProceduralOutputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralOutputAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; +import net.automatalib.alphabet.impl.DefaultProceduralOutputAlphabet; import net.automatalib.automaton.procedural.SPMM; import net.automatalib.util.automaton.conformance.SPMMWMethodTestsIterator; import net.automatalib.util.automaton.random.RandomAutomata; diff --git a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/vpa/RandomWellMatchedWordsEQOracleTest.java b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/vpa/RandomWellMatchedWordsEQOracleTest.java index aec84576de..4a4eaf6f01 100644 --- a/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/vpa/RandomWellMatchedWordsEQOracleTest.java +++ b/oracles/equivalence-oracles/src/test/java/de/learnlib/oracle/equivalence/vpa/RandomWellMatchedWordsEQOracleTest.java @@ -21,9 +21,9 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.equivalence.AbstractEQOracleTest; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultVPAlphabet; import net.automatalib.alphabet.VPAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultVPAlphabet; import net.automatalib.automaton.concept.Output; import net.automatalib.automaton.concept.SuffixOutput; import net.automatalib.word.Word; diff --git a/oracles/membership-oracles/pom.xml b/oracles/membership-oracles/pom.xml index 075eda777b..2bf85b23f3 100644 --- a/oracles/membership-oracles/pom.xml +++ b/oracles/membership-oracles/pom.xml @@ -89,4 +89,19 @@ limitations under the License. testng + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + @{argLine} --add-reads=de.learnlib.oracle.membership=net.automatalib.core + + + + + diff --git a/oracles/membership-oracles/src/main/java/module-info.java b/oracles/membership-oracles/src/main/java/module-info.java new file mode 100644 index 0000000000..d83f017f45 --- /dev/null +++ b/oracles/membership-oracles/src/main/java/module-info.java @@ -0,0 +1,40 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides a collection of membership oracles. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-membership-oracles</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.oracle.membership { + + requires de.learnlib.api; + requires de.learnlib.common.util; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires org.checkerframework.checker.qual; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.oracle.membership; +} diff --git a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SULOmegaOracleTest.java b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SULOmegaOracleTest.java index 1350113ac7..4cdf7166ab 100644 --- a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SULOmegaOracleTest.java +++ b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SULOmegaOracleTest.java @@ -19,12 +19,12 @@ import java.util.List; import de.learnlib.driver.simulator.ObservableMealySimulatorSUL; -import de.learnlib.example.mealy.ExampleCoffeeMachine; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; import de.learnlib.oracle.OmegaMembershipOracle.MealyOmegaMembershipOracle; import de.learnlib.query.OmegaQuery; import de.learnlib.sul.ObservableSUL; -import net.automatalib.automaton.transducer.CompactMealy; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.word.Word; import org.mockito.Mockito; import org.testng.Assert; diff --git a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SULSymbolQueryOracleTest.java b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SULSymbolQueryOracleTest.java index 4fa2b6f729..acaeb39343 100644 --- a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SULSymbolQueryOracleTest.java +++ b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SULSymbolQueryOracleTest.java @@ -18,10 +18,10 @@ import java.util.Random; import de.learnlib.driver.simulator.MealySimulatorSUL; -import de.learnlib.example.mealy.ExampleRandomMealy; import de.learnlib.sul.SUL; +import de.learnlib.testsupport.example.mealy.ExampleRandomMealy; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.word.Word; import org.mockito.Mockito; import org.testng.Assert; diff --git a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOmegaOracleTest.java b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOmegaOracleTest.java index b361e6d5e9..03e681e0f0 100644 --- a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOmegaOracleTest.java +++ b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOmegaOracleTest.java @@ -18,9 +18,9 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.dfa.ExamplePaulAndMary; import de.learnlib.oracle.membership.SimulatorOmegaOracle.DFASimulatorOmegaOracle; import de.learnlib.query.OmegaQuery; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; import net.automatalib.automaton.fsa.DFA; import net.automatalib.word.Word; import org.testng.Assert; diff --git a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOracleTest.java b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOracleTest.java index 01d8822dd7..57c3b02cea 100644 --- a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOracleTest.java +++ b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/SimulatorOracleTest.java @@ -19,8 +19,8 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.dfa.ExamplePaulAndMary; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; import net.automatalib.automaton.fsa.DFA; import net.automatalib.word.Word; import org.testng.Assert; diff --git a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/StateLocalInputSULSymbolQueryOracleTest.java b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/StateLocalInputSULSymbolQueryOracleTest.java index c8858819d9..c3b999096a 100644 --- a/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/StateLocalInputSULSymbolQueryOracleTest.java +++ b/oracles/membership-oracles/src/test/java/de/learnlib/oracle/membership/StateLocalInputSULSymbolQueryOracleTest.java @@ -19,10 +19,10 @@ import java.util.Random; import de.learnlib.driver.simulator.StateLocalInputMealySimulatorSUL; -import de.learnlib.example.mealy.ExampleRandomStateLocalInputMealy; import de.learnlib.sul.StateLocalInputSUL; +import de.learnlib.testsupport.example.mealy.ExampleRandomStateLocalInputMealy; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.word.Word; import org.mockito.Mockito; import org.testng.Assert; diff --git a/oracles/parallelism/pom.xml b/oracles/parallelism/pom.xml index ae5b9d47bc..3c878708b7 100644 --- a/oracles/parallelism/pom.xml +++ b/oracles/parallelism/pom.xml @@ -28,7 +28,7 @@ limitations under the License. learnlib-parallelism LearnLib :: Oracles :: Parallelism - Support for parallel membership queries and thread-safe caches + Support for posing membership queries in parallel @@ -36,10 +36,6 @@ limitations under the License. de.learnlib learnlib-api - - de.learnlib - learnlib-cache - de.learnlib learnlib-membership-oracles @@ -67,10 +63,6 @@ limitations under the License. net.automatalib automata-commons-smartcollections - - net.automatalib - automata-incremental - org.checkerframework diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractDynamicBatchProcessor.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractDynamicBatchProcessor.java index 0929e1cccb..cd1c276ad0 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractDynamicBatchProcessor.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractDynamicBatchProcessor.java @@ -24,6 +24,9 @@ import java.util.function.Supplier; import com.google.common.base.Throwables; +import de.learnlib.exception.BatchInterruptedException; +import de.learnlib.oracle.BatchProcessor; +import de.learnlib.oracle.ThreadPool; import de.learnlib.setting.LearnLibProperty; import de.learnlib.setting.LearnLibSettings; import org.checkerframework.checker.index.qual.NonNegative; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractDynamicBatchProcessorBuilder.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractDynamicBatchProcessorBuilder.java index e919ebf6d6..f9a70d0196 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractDynamicBatchProcessorBuilder.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractDynamicBatchProcessorBuilder.java @@ -22,7 +22,8 @@ import java.util.function.Supplier; import com.google.common.base.Preconditions; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.BatchProcessor; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import net.automatalib.common.util.concurrent.ScalingThreadPoolExecutor; import org.checkerframework.checker.index.qual.NonNegative; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractQueriesJob.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractQueriesJob.java index 99c4f7ef77..422b0dd6ed 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractQueriesJob.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractQueriesJob.java @@ -17,6 +17,8 @@ import java.util.Collection; +import de.learnlib.oracle.BatchProcessor; + /** * Abstract base class for jobs (i.e., {@link Runnable}s) that process queries. *

diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractStaticBatchProcessor.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractStaticBatchProcessor.java index f89f962b77..c3f479c999 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractStaticBatchProcessor.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractStaticBatchProcessor.java @@ -25,6 +25,9 @@ import java.util.concurrent.Future; import com.google.common.base.Throwables; +import de.learnlib.exception.BatchInterruptedException; +import de.learnlib.oracle.BatchProcessor; +import de.learnlib.oracle.ThreadPool; import de.learnlib.setting.LearnLibProperty; import de.learnlib.setting.LearnLibSettings; import net.automatalib.common.smartcollection.ArrayStorage; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractStaticBatchProcessorBuilder.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractStaticBatchProcessorBuilder.java index e23e973255..ff7cb8c1e4 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractStaticBatchProcessorBuilder.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/AbstractStaticBatchProcessorBuilder.java @@ -21,7 +21,8 @@ import java.util.function.Supplier; import com.google.common.base.Preconditions; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.BatchProcessor; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import org.checkerframework.checker.index.qual.NonNegative; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicParallelOmegaOracle.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicParallelOmegaOracle.java index 8cd6ee54a4..86911b14d0 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicParallelOmegaOracle.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicParallelOmegaOracle.java @@ -21,6 +21,7 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.OmegaMembershipOracle; +import de.learnlib.oracle.ParallelOmegaOracle; import de.learnlib.query.OmegaQuery; import net.automatalib.word.Word; import org.checkerframework.checker.index.qual.NonNegative; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicParallelOracle.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicParallelOracle.java index d1605f34a5..af1e10e57e 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicParallelOracle.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicParallelOracle.java @@ -20,6 +20,7 @@ import java.util.function.Supplier; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.oracle.ParallelOracle; import de.learnlib.query.Query; import org.checkerframework.checker.index.qual.NonNegative; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicQueriesJob.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicQueriesJob.java index 3ce0e6e405..e248b6696c 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicQueriesJob.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/DynamicQueriesJob.java @@ -17,6 +17,8 @@ import java.util.Collection; +import de.learnlib.oracle.BatchProcessor; + /** * A queries job that maintains a thread-local reference to a {@link BatchProcessor}, and dynamically selects that * oracle depending on the executing thread. diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/ParallelOracleBuilders.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/ParallelOracleBuilders.java index c9b0573962..f13a281668 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/ParallelOracleBuilders.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/ParallelOracleBuilders.java @@ -22,10 +22,10 @@ import com.google.common.collect.Lists; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.OmegaMembershipOracle; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.oracle.membership.AbstractSULOmegaOracle; import de.learnlib.oracle.membership.SULOracle; import de.learnlib.oracle.membership.StateLocalInputSULOracle; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; import de.learnlib.sul.ObservableSUL; import de.learnlib.sul.SUL; import de.learnlib.sul.StateLocalInputSUL; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracle.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracle.java index 4f90145f6d..2e8f30190c 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracle.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracle.java @@ -19,6 +19,7 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.OmegaMembershipOracle; +import de.learnlib.oracle.ParallelOmegaOracle; import de.learnlib.query.OmegaQuery; import net.automatalib.word.Word; import org.checkerframework.checker.index.qual.NonNegative; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracleBuilder.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracleBuilder.java index beb447cd16..ab8ff31fcd 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracleBuilder.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracleBuilder.java @@ -19,7 +19,7 @@ import java.util.function.Supplier; import de.learnlib.oracle.OmegaMembershipOracle; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.query.OmegaQuery; /** diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOracle.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOracle.java index 12498cdb32..9adcad3bcc 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOracle.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOracle.java @@ -18,6 +18,7 @@ import java.util.Collection; import de.learnlib.oracle.MembershipOracle; +import de.learnlib.oracle.ParallelOracle; import de.learnlib.query.Query; import org.checkerframework.checker.index.qual.NonNegative; diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOracleBuilder.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOracleBuilder.java index f398548523..41efffef3e 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOracleBuilder.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticParallelOracleBuilder.java @@ -19,7 +19,7 @@ import java.util.function.Supplier; import de.learnlib.oracle.MembershipOracle; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.query.Query; /** diff --git a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticQueriesJob.java b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticQueriesJob.java index 00e068cfe0..3dec64f1a0 100644 --- a/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticQueriesJob.java +++ b/oracles/parallelism/src/main/java/de/learnlib/oracle/parallelism/StaticQueriesJob.java @@ -17,6 +17,8 @@ import java.util.Collection; +import de.learnlib.oracle.BatchProcessor; + /** * A queries job that maintains a fixed reference to a {@link BatchProcessor}, executes queries using this oracle * regardless of the executing thread. diff --git a/oracles/parallelism/src/main/java/module-info.java b/oracles/parallelism/src/main/java/module-info.java new file mode 100644 index 0000000000..cf29aad47f --- /dev/null +++ b/oracles/parallelism/src/main/java/module-info.java @@ -0,0 +1,41 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides support for posing membership queries in parallel. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-parallelism</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.oracle.parallelism { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.oracle.membership; + requires de.learnlib.setting; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.common.smartcollection; + requires org.checkerframework.checker.qual; + + exports de.learnlib.oracle.parallelism; +} diff --git a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/Config.java b/oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/Config.java deleted file mode 100644 index eeaafb5cb1..0000000000 --- a/oracles/parallelism/src/test/java/de/learnlib/filter/cache/configuration/Config.java +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package de.learnlib.filter.cache.configuration; - -import java.util.Random; - -import de.learnlib.driver.simulator.MealySimulatorSUL; -import de.learnlib.driver.simulator.StateLocalInputMealySimulatorSUL; -import de.learnlib.filter.statistic.oracle.DFACounterOracle; -import de.learnlib.filter.statistic.oracle.MealyCounterOracle; -import de.learnlib.filter.statistic.oracle.MooreCounterOracle; -import de.learnlib.filter.statistic.sul.ResetCounterSUL; -import de.learnlib.filter.statistic.sul.ResetCounterStateLocalInputSUL; -import de.learnlib.oracle.membership.DFASimulatorOracle; -import de.learnlib.oracle.membership.MealySimulatorOracle; -import de.learnlib.oracle.membership.MooreSimulatorOracle; -import de.learnlib.sul.SUL; -import de.learnlib.sul.StateLocalInputSUL; -import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.DFA; -import net.automatalib.automaton.transducer.CompactMealy; -import net.automatalib.automaton.transducer.CompactMoore; -import net.automatalib.automaton.transducer.MealyMachine; -import net.automatalib.automaton.transducer.MooreMachine; -import net.automatalib.util.automaton.random.RandomAutomata; - -public final class Config { - - public static final Alphabet ALPHABET; - public static final DFA TARGET_MODEL_DFA; - public static final MealyMachine TARGET_MODEL_MEALY; - public static final MooreMachine TARGET_MODEL_MOORE; - public static final SUL TARGET_MODEL_SUL; - public static final StateLocalInputSUL TARGET_MODEL_SLI_SUL; - - static { - ALPHABET = Alphabets.characters('a', 'e'); - TARGET_MODEL_DFA = RandomAutomata.randomDFA(new Random(42), 10, ALPHABET); - - final CompactMealy mealy = - RandomAutomata.randomMealy(new Random(42), 10, ALPHABET, ALPHABET); - - final CompactMoore moore = - RandomAutomata.randomMoore(new Random(42), 10, ALPHABET, ALPHABET); - - TARGET_MODEL_MEALY = mealy; - TARGET_MODEL_MOORE = moore; - TARGET_MODEL_SUL = new MealySimulatorSUL<>(mealy); - TARGET_MODEL_SLI_SUL = new StateLocalInputMealySimulatorSUL<>(mealy); - } - - private Config() {} - - public static DFACounterOracle getCounter(DFA delegate) { - return new DFACounterOracle<>(new DFASimulatorOracle<>(delegate)); - } - - public static MealyCounterOracle getCounter(MealyMachine delegate) { - return new MealyCounterOracle<>(new MealySimulatorOracle<>(delegate)); - } - - public static MooreCounterOracle getCounter(MooreMachine delegate) { - return new MooreCounterOracle<>(new MooreSimulatorOracle<>(delegate)); - } - - public static ResetCounterSUL getCounter(SUL delegate) { - return new ResetCounterSUL<>("Queries", delegate); - } - - public static ResetCounterStateLocalInputSUL getCounter(StateLocalInputSUL delegate) { - return new ResetCounterStateLocalInputSUL<>("Queries", delegate); - } -} diff --git a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractDynamicParallelOmegaOracleTest.java b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractDynamicParallelOmegaOracleTest.java index 7d18a16876..b3ea13927c 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractDynamicParallelOmegaOracleTest.java +++ b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractDynamicParallelOmegaOracleTest.java @@ -23,7 +23,8 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.OmegaMembershipOracle; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.ParallelOmegaOracle; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.query.OmegaQuery; import de.learnlib.sul.ObservableSUL; import net.automatalib.word.Word; diff --git a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractDynamicParallelOracleTest.java b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractDynamicParallelOracleTest.java index c508598c04..0fd5776eb3 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractDynamicParallelOracleTest.java +++ b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractDynamicParallelOracleTest.java @@ -22,7 +22,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import de.learnlib.oracle.MembershipOracle; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.ParallelOracle; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.query.Query; import de.learnlib.sul.StateLocalInputSUL; import net.automatalib.word.Word; diff --git a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractStaticParallelOmegaOracleTest.java b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractStaticParallelOmegaOracleTest.java index 6b9aded6d0..0990e92ae3 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractStaticParallelOmegaOracleTest.java +++ b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractStaticParallelOmegaOracleTest.java @@ -25,7 +25,7 @@ import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.OmegaMembershipOracle; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.oracle.parallelism.Utils.Analysis; import de.learnlib.oracle.parallelism.Utils.TestSULOutput; import de.learnlib.query.OmegaQuery; diff --git a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractStaticParallelOracleTest.java b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractStaticParallelOracleTest.java index f408d2e436..a9c2a141fa 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractStaticParallelOracleTest.java +++ b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/AbstractStaticParallelOracleTest.java @@ -24,7 +24,7 @@ import java.util.concurrent.atomic.AtomicInteger; import de.learnlib.oracle.MembershipOracle; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.oracle.parallelism.Utils.Analysis; import de.learnlib.oracle.parallelism.Utils.TestSULOutput; import de.learnlib.query.DefaultQuery; diff --git a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/DynamicParallelOmegaOracleTest.java b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/DynamicParallelOmegaOracleTest.java index 68408530c8..9ddf0d425a 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/DynamicParallelOmegaOracleTest.java +++ b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/DynamicParallelOmegaOracleTest.java @@ -20,7 +20,8 @@ import java.util.List; import java.util.concurrent.CountDownLatch; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.ParallelOmegaOracle; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.query.OmegaQuery; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/DynamicParallelOracleTest.java b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/DynamicParallelOracleTest.java index ced5d05e6d..c1caf3f21f 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/DynamicParallelOracleTest.java +++ b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/DynamicParallelOracleTest.java @@ -20,7 +20,8 @@ import java.util.List; import java.util.concurrent.CountDownLatch; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; +import de.learnlib.oracle.ParallelOracle; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.query.Query; import org.testng.annotations.Test; diff --git a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracleTest.java b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracleTest.java index 2dfed166a6..ff46c5d6f7 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracleTest.java +++ b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/StaticParallelOmegaOracleTest.java @@ -17,6 +17,7 @@ import java.util.Arrays; +import de.learnlib.oracle.ParallelOmegaOracle; import de.learnlib.oracle.parallelism.AbstractStaticParallelOmegaOracleTest.TestOutput; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/Utils.java b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/Utils.java index 858f90aadc..9e8cb27e43 100644 --- a/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/Utils.java +++ b/oracles/parallelism/src/test/java/de/learnlib/oracle/parallelism/Utils.java @@ -19,8 +19,8 @@ import java.util.Map; import java.util.Random; +import de.learnlib.oracle.ThreadPool.PoolPolicy; import de.learnlib.oracle.parallelism.AbstractStaticParallelOracleTest.TestOutput; -import de.learnlib.oracle.parallelism.ThreadPool.PoolPolicy; import net.automatalib.word.Word; import org.testng.Assert; import org.testng.annotations.DataProvider; diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/package-info.java b/oracles/property-oracles/src/main/java/module-info.java similarity index 51% rename from algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/package-info.java rename to oracles/property-oracles/src/main/java/module-info.java index cb88d1ba50..1ca41237a9 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithm/kv/package-info.java +++ b/oracles/property-oracles/src/main/java/module-info.java @@ -15,7 +15,25 @@ */ /** - * This package (and sub-packages) provides the implementation of the learning algorithm described in the book "An - * Introduction to Computational Learning Theory" by Michael Kearns and Umesh Vazirani. + * This module provides a collection of property oracles. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib</groupId>
+ *   <artifactId>learnlib-property-oracles</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
*/ -package de.learnlib.algorithm.kv; +open module de.learnlib.oracle.property { + + requires de.learnlib.api; + requires net.automatalib.api; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + requires static de.learnlib.tooling.annotation; + + exports de.learnlib.oracle.property; +} diff --git a/oracles/property-oracles/src/test/java/de/learnlib/oracle/property/MealyPropertyOracleTest.java b/oracles/property-oracles/src/test/java/de/learnlib/oracle/property/MealyPropertyOracleTest.java index 12e07a719f..9a7aa52349 100644 --- a/oracles/property-oracles/src/test/java/de/learnlib/oracle/property/MealyPropertyOracleTest.java +++ b/oracles/property-oracles/src/test/java/de/learnlib/oracle/property/MealyPropertyOracleTest.java @@ -17,7 +17,6 @@ import java.util.function.Function; -import de.learnlib.example.mealy.ExampleTinyMealy; import de.learnlib.oracle.EmptinessOracle.MealyEmptinessOracle; import de.learnlib.oracle.InclusionOracle.MealyInclusionOracle; import de.learnlib.oracle.LassoEmptinessOracle.MealyLassoEmptinessOracle; @@ -30,10 +29,11 @@ import de.learnlib.oracle.membership.MealySimulatorOracle; import de.learnlib.oracle.membership.SimulatorOmegaOracle.MealySimulatorOmegaOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.mealy.ExampleTinyMealy; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.modelchecker.ltsmin.LTSminUtil; import net.automatalib.modelchecker.ltsmin.LTSminVersion; import net.automatalib.modelchecker.ltsmin.ltl.LTSminLTLIOBuilder; diff --git a/pom.xml b/pom.xml index c747f23452..45627b027b 100644 --- a/pom.xml +++ b/pom.xml @@ -209,7 +209,7 @@ limitations under the License. 3.6.0 3.3.0 3.3.2 - 3.10.1 + 3.11.0 4.3.0 3.6.0 3.1.1 @@ -229,11 +229,11 @@ limitations under the License. 3.12.1 3.3.0 4.7.3.6 - 3.1.2 + 3.2.2 1.2.0 - 0.11.0 + 0.12.0-SNAPSHOT 0.1 1.11.1 3.40.0 @@ -241,16 +241,14 @@ limitations under the License. 32.1.2-jre 1.13.0 2.3.1 - 1.49 1.3.12 - 1.8 + 1.11 5.6.0 2.0.9 7.5.1 1.4.20 - http://docs.oracle.com/javase/8/docs/api/ http://learnlib.github.io/automatalib/maven-site/${automatalib.version}/apidocs/ https://checkerframework.org/releases/${checkerframework.version}/api/ http://google.github.io/guava/releases/${guava.version}/api/docs/ @@ -590,14 +588,6 @@ limitations under the License. test
- - - org.jmockit - jmockit - ${jmockit.version} - test - - com.github.caciocavallosilano @@ -822,9 +812,10 @@ limitations under the License. true false - ${java.apidocs} ${guava.apidocs} - ${automatalib.apidocs} + + + @@ -898,6 +889,37 @@ limitations under the License. + + + default-compile + + compile + + + + 9 + false + + + + java-8-compile + + compile + + + + + ${project.build.sourceDirectory} + ${project.build.directory}/generated-sources + + none + + + module-info.java + + + + org.apache.maven.plugins @@ -960,12 +982,13 @@ limitations under the License. org.apache.maven.plugins maven-javadoc-plugin + + 11 + non-aggregate - - javadoc - + aggregate diff --git a/test-support/learner-it-support/pom.xml b/test-support/learner-it-support/pom.xml index 8f297d80bb..32daf1634c 100644 --- a/test-support/learner-it-support/pom.xml +++ b/test-support/learner-it-support/pom.xml @@ -37,10 +37,6 @@ limitations under the License. de.learnlib learnlib-api - - de.learnlib - learnlib-cache - de.learnlib learnlib-drivers-simulator @@ -59,31 +55,16 @@ limitations under the License. de.learnlib learnlib-membership-oracles - - de.learnlib.testsupport - learnlib-test-support - compile - - de.learnlib learnlib-util - - com.google.guava - guava - - net.automatalib automata-api - - net.automatalib - automata-commons-util - net.automatalib automata-core @@ -93,11 +74,6 @@ limitations under the License. automata-util - - org.checkerframework - checker-qual - - org.slf4j slf4j-api diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractDFALearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractDFALearnerIT.java index 65df2e0972..bca700892f 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractDFALearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractDFALearnerIT.java @@ -18,11 +18,11 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.LearningExample.DFALearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.equivalence.SimulatorEQOracle; import de.learnlib.oracle.membership.DFASimulatorOracle; +import de.learnlib.testsupport.example.LearningExample.DFALearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantList.DFALearnerVariantList; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.DFALearnerVariantListImpl; import net.automatalib.alphabet.Alphabet; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractDFAPassiveLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractDFAPassiveLearnerIT.java index 85171e16c1..a93c0be794 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractDFAPassiveLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractDFAPassiveLearnerIT.java @@ -19,11 +19,11 @@ import java.util.Collection; import java.util.List; -import de.learnlib.example.DefaultPassiveLearningExample.DefaultDFAPassiveLearningExample; -import de.learnlib.example.LearningExample.DFALearningExample; -import de.learnlib.example.LearningExamples; -import de.learnlib.example.PassiveLearningExample.DFAPassiveLearningExample; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.DefaultPassiveLearningExample.DefaultDFAPassiveLearningExample; +import de.learnlib.testsupport.example.LearningExample.DFALearningExample; +import de.learnlib.testsupport.example.LearningExamples; +import de.learnlib.testsupport.example.PassiveLearningExample.DFAPassiveLearningExample; import de.learnlib.testsupport.it.learner.PassiveLearnerVariantListImpl.DFAPassiveLearnerVariantListImpl; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.fsa.DFA; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractLearnerVariantITCase.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractLearnerVariantITCase.java index a3e64a6511..9516b23411 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractLearnerVariantITCase.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractLearnerVariantITCase.java @@ -16,10 +16,10 @@ package de.learnlib.testsupport.it.learner; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.example.LearningExample; import de.learnlib.logging.Category; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.LearningExample; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.concept.FiniteRepresentation; import net.automatalib.word.Word; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealyLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealyLearnerIT.java index d985adc746..12c1d0a36a 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealyLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealyLearnerIT.java @@ -19,19 +19,18 @@ import java.util.List; import de.learnlib.driver.simulator.StateLocalInputMealySimulatorSUL; -import de.learnlib.example.LearningExample.MealyLearningExample; -import de.learnlib.example.LearningExample.StateLocalInputMealyLearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.equivalence.MealySimulatorEQOracle; import de.learnlib.oracle.equivalence.mealy.StateLocalInputMealySimulatorEQOracle; import de.learnlib.oracle.membership.MealySimulatorOracle; import de.learnlib.oracle.membership.StateLocalInputSULOracle; +import de.learnlib.testsupport.example.LearningExample.MealyLearningExample; +import de.learnlib.testsupport.example.LearningExample.StateLocalInputMealyLearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantList.MealyLearnerVariantList; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.MealyLearnerVariantListImpl; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.automaton.transducer.StateLocalInputMealyMachine; import net.automatalib.util.automaton.transducer.MealyFilter; @@ -85,7 +84,7 @@ public Object[] createExampleITCases() { final O undefinedOutput = example.getUndefinedOutput(); // make sure, our oracle actually receives a partial mealy - final CompactMealy partialRef = + final StateLocalInputMealyMachine partialRef = MealyFilter.pruneTransitionsWithOutput(reference, alphabet, undefinedOutput); final MealyMembershipOracle mqOracle = diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealyPassiveLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealyPassiveLearnerIT.java index 32d66372d9..ec424bdd8e 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealyPassiveLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealyPassiveLearnerIT.java @@ -19,11 +19,11 @@ import java.util.Collection; import java.util.List; -import de.learnlib.example.DefaultPassiveLearningExample.DefaultMealyPassiveLearningExample; -import de.learnlib.example.LearningExample.MealyLearningExample; -import de.learnlib.example.LearningExamples; -import de.learnlib.example.PassiveLearningExample.MealyPassiveLearningExample; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.DefaultPassiveLearningExample.DefaultMealyPassiveLearningExample; +import de.learnlib.testsupport.example.LearningExample.MealyLearningExample; +import de.learnlib.testsupport.example.LearningExamples; +import de.learnlib.testsupport.example.PassiveLearningExample.MealyPassiveLearningExample; import de.learnlib.testsupport.it.learner.PassiveLearnerVariantListImpl.MealyLearnerVariantListImpl; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MealyMachine; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealySymLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealySymLearnerIT.java index 81049800dc..8009c09b12 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealySymLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMealySymLearnerIT.java @@ -18,12 +18,12 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.LearningExample.MealyLearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.equivalence.SimulatorEQOracle; import de.learnlib.oracle.membership.MealySimulatorOracle; +import de.learnlib.testsupport.example.LearningExample.MealyLearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantList.MealySymLearnerVariantList; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.MealySymLearnerVariantListImpl; import de.learnlib.util.mealy.MealyUtil; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMooreLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMooreLearnerIT.java index c5259619ec..d6b9650ec2 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMooreLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMooreLearnerIT.java @@ -18,12 +18,12 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.LearningExample.MooreLearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; import de.learnlib.oracle.equivalence.MooreSimulatorEQOracle; import de.learnlib.oracle.membership.MooreSimulatorOracle; +import de.learnlib.testsupport.example.LearningExample.MooreLearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantList.MooreLearnerVariantList; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.MooreLearnerVariantListImpl; import net.automatalib.alphabet.Alphabet; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMoorePassiveLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMoorePassiveLearnerIT.java index 58f597dfae..381fb13fb5 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMoorePassiveLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMoorePassiveLearnerIT.java @@ -19,11 +19,11 @@ import java.util.Collection; import java.util.List; -import de.learnlib.example.DefaultPassiveLearningExample.DefaultMoorePassiveLearningExample; -import de.learnlib.example.LearningExample.MooreLearningExample; -import de.learnlib.example.LearningExamples; -import de.learnlib.example.PassiveLearningExample.MoorePassiveLearningExample; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.DefaultPassiveLearningExample.DefaultMoorePassiveLearningExample; +import de.learnlib.testsupport.example.LearningExample.MooreLearningExample; +import de.learnlib.testsupport.example.LearningExamples; +import de.learnlib.testsupport.example.PassiveLearningExample.MoorePassiveLearningExample; import de.learnlib.testsupport.it.learner.PassiveLearnerVariantListImpl.MooreLearnerVariantListImpl; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.transducer.MooreMachine; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMooreSymLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMooreSymLearnerIT.java index 2d9a95e105..4e0b0b4756 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMooreSymLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractMooreSymLearnerIT.java @@ -18,12 +18,12 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.LearningExample.MooreLearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.MembershipOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; import de.learnlib.oracle.equivalence.SimulatorEQOracle; import de.learnlib.oracle.membership.MooreSimulatorOracle; +import de.learnlib.testsupport.example.LearningExample.MooreLearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantList.MooreSymLearnerVariantList; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.MooreSymLearnerVariantListImpl; import de.learnlib.util.moore.MooreUtil; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractOneSEVPALearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractOneSEVPALearnerIT.java index b54f0c1fb3..9d74651a3e 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractOneSEVPALearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractOneSEVPALearnerIT.java @@ -18,11 +18,11 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.LearningExample.OneSEVPALearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.equivalence.vpa.SimulatorEQOracle; import de.learnlib.oracle.membership.SEVPASimulatorOracle; +import de.learnlib.testsupport.example.LearningExample.OneSEVPALearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.OneSEVPALearnerVariantListImpl; import net.automatalib.alphabet.VPAlphabet; import net.automatalib.automaton.vpa.OneSEVPA; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSBALearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSBALearnerIT.java index c6a3c13a98..3f6d3d0ff3 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSBALearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSBALearnerIT.java @@ -18,11 +18,11 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.LearningExample.SBALearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.equivalence.sba.SimulatorEQOracle; import de.learnlib.oracle.membership.SBASimulatorOracle; +import de.learnlib.testsupport.example.LearningExample.SBALearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantList.SBALearnerVariantList; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.SBALearnerVariantListImpl; import net.automatalib.alphabet.ProceduralInputAlphabet; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSPALearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSPALearnerIT.java index a33277f5ad..afc2df67fb 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSPALearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSPALearnerIT.java @@ -18,11 +18,11 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.LearningExample.SPALearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.equivalence.spa.SimulatorEQOracle; import de.learnlib.oracle.membership.SPASimulatorOracle; +import de.learnlib.testsupport.example.LearningExample.SPALearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantList.SPALearnerVariantList; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.SPALearnerVariantListImpl; import net.automatalib.alphabet.ProceduralInputAlphabet; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSPMMLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSPMMLearnerIT.java index ec479b6e8b..ac19518f07 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSPMMLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSPMMLearnerIT.java @@ -18,11 +18,11 @@ import java.util.ArrayList; import java.util.List; -import de.learnlib.example.LearningExample.SPMMLearningExample; -import de.learnlib.example.LearningExamples; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.equivalence.spmm.SimulatorEQOracle; import de.learnlib.oracle.membership.SPMMSimulatorOracle; +import de.learnlib.testsupport.example.LearningExample.SPMMLearningExample; +import de.learnlib.testsupport.example.LearningExamples; import de.learnlib.testsupport.it.learner.LearnerVariantList.SPMMLearnerVariantList; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.SPMMLearnerVariantListImpl; import net.automatalib.alphabet.ProceduralInputAlphabet; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSSTPassiveLearnerIT.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSSTPassiveLearnerIT.java index f48fe6a3bf..5a412a8824 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSSTPassiveLearnerIT.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/AbstractSSTPassiveLearnerIT.java @@ -19,13 +19,13 @@ import java.util.Collection; import java.util.List; -import de.learnlib.example.DefaultPassiveLearningExample.DefaultSSTPassiveLearningExample; -import de.learnlib.example.LearningExample; -import de.learnlib.example.LearningExample.MealyLearningExample; -import de.learnlib.example.LearningExample.SSTLearningExample; -import de.learnlib.example.LearningExamples; -import de.learnlib.example.PassiveLearningExample.SSTPassiveLearningExample; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.DefaultPassiveLearningExample.DefaultSSTPassiveLearningExample; +import de.learnlib.testsupport.example.LearningExample; +import de.learnlib.testsupport.example.LearningExample.MealyLearningExample; +import de.learnlib.testsupport.example.LearningExample.SSTLearningExample; +import de.learnlib.testsupport.example.LearningExamples; +import de.learnlib.testsupport.example.PassiveLearningExample.SSTPassiveLearningExample; import de.learnlib.testsupport.it.learner.PassiveLearnerVariantListImpl.SSTLearnerVariantListImpl; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.UniversalDeterministicAutomaton; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/LearnerITUtil.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/LearnerITUtil.java index 91f7d92ad8..65c505766d 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/LearnerITUtil.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/LearnerITUtil.java @@ -20,15 +20,15 @@ import java.util.List; import java.util.Random; -import de.learnlib.example.LearningExample; -import de.learnlib.example.LearningExample.OneSEVPALearningExample; -import de.learnlib.example.LearningExample.SBALearningExample; -import de.learnlib.example.LearningExample.SPALearningExample; -import de.learnlib.example.LearningExample.SPMMLearningExample; -import de.learnlib.example.LearningExample.UniversalDeterministicLearningExample; -import de.learnlib.example.PassiveLearningExample; import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.LearningExample; +import de.learnlib.testsupport.example.LearningExample.OneSEVPALearningExample; +import de.learnlib.testsupport.example.LearningExample.SBALearningExample; +import de.learnlib.testsupport.example.LearningExample.SPALearningExample; +import de.learnlib.testsupport.example.LearningExample.SPMMLearningExample; +import de.learnlib.testsupport.example.LearningExample.UniversalDeterministicLearningExample; +import de.learnlib.testsupport.example.PassiveLearningExample; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.OneSEVPALearnerVariantListImpl; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.SBALearnerVariantListImpl; import de.learnlib.testsupport.it.learner.LearnerVariantListImpl.SPALearnerVariantListImpl; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/OneSEVPALearnerITCase.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/OneSEVPALearnerITCase.java index 2b4a548681..9fea3e7e4b 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/OneSEVPALearnerITCase.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/OneSEVPALearnerITCase.java @@ -15,8 +15,8 @@ */ package de.learnlib.testsupport.it.learner; -import de.learnlib.example.LearningExample.OneSEVPALearningExample; import de.learnlib.oracle.EquivalenceOracle; +import de.learnlib.testsupport.example.LearningExample.OneSEVPALearningExample; import net.automatalib.automaton.vpa.OneSEVPA; import net.automatalib.util.automaton.vpa.OneSEVPAs; import net.automatalib.word.Word; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/PassiveLearnerVariantITCase.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/PassiveLearnerVariantITCase.java index 15da9f49a9..c86f04e286 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/PassiveLearnerVariantITCase.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/PassiveLearnerVariantITCase.java @@ -18,9 +18,9 @@ import java.util.Collection; import de.learnlib.algorithm.PassiveLearningAlgorithm; -import de.learnlib.example.PassiveLearningExample; import de.learnlib.logging.Category; import de.learnlib.query.DefaultQuery; +import de.learnlib.testsupport.example.PassiveLearningExample; import net.automatalib.automaton.concept.SuffixOutput; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SBALearnerITCase.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SBALearnerITCase.java index 1a11f90025..a7d3d2eaec 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SBALearnerITCase.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SBALearnerITCase.java @@ -15,8 +15,8 @@ */ package de.learnlib.testsupport.it.learner; -import de.learnlib.example.LearningExample.SBALearningExample; import de.learnlib.oracle.EquivalenceOracle; +import de.learnlib.testsupport.example.LearningExample.SBALearningExample; import net.automatalib.automaton.procedural.SBA; import net.automatalib.util.automaton.procedural.SBAs; import net.automatalib.word.Word; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SPALearnerITCase.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SPALearnerITCase.java index b063048dbc..82180a7b5d 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SPALearnerITCase.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SPALearnerITCase.java @@ -15,8 +15,8 @@ */ package de.learnlib.testsupport.it.learner; -import de.learnlib.example.LearningExample.SPALearningExample; import de.learnlib.oracle.EquivalenceOracle; +import de.learnlib.testsupport.example.LearningExample.SPALearningExample; import net.automatalib.automaton.procedural.SPA; import net.automatalib.util.automaton.procedural.SPAs; import net.automatalib.word.Word; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SPMMLearnerITCase.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SPMMLearnerITCase.java index 4b0d745867..8933f5a8d4 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SPMMLearnerITCase.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/SPMMLearnerITCase.java @@ -15,8 +15,8 @@ */ package de.learnlib.testsupport.it.learner; -import de.learnlib.example.LearningExample.SPMMLearningExample; import de.learnlib.oracle.EquivalenceOracle; +import de.learnlib.testsupport.example.LearningExample.SPMMLearningExample; import net.automatalib.automaton.procedural.SPMM; import net.automatalib.util.automaton.procedural.SPMMs; import net.automatalib.word.Word; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/UniversalDeterministicLearnerITCase.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/UniversalDeterministicLearnerITCase.java index 11a62d5854..fb0a60439e 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/UniversalDeterministicLearnerITCase.java +++ b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/it/learner/UniversalDeterministicLearnerITCase.java @@ -15,8 +15,8 @@ */ package de.learnlib.testsupport.it.learner; -import de.learnlib.example.LearningExample.UniversalDeterministicLearningExample; import de.learnlib.oracle.EquivalenceOracle; +import de.learnlib.testsupport.example.LearningExample.UniversalDeterministicLearningExample; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.util.automaton.Automata; import net.automatalib.word.Word; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/package-info.java b/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/package-info.java deleted file mode 100644 index e8d748bc83..0000000000 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (including sub-packages) contains utility code for formalizing test-cases. - */ -package de.learnlib.testsupport; diff --git a/test-support/learner-it-support/src/main/java/module-info.java b/test-support/learner-it-support/src/main/java/module-info.java new file mode 100644 index 0000000000..0f57e907e3 --- /dev/null +++ b/test-support/learner-it-support/src/main/java/module-info.java @@ -0,0 +1,46 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides support classes for easily writing integration test cases for learning algorithms. Note: + * This module is not intended as a library but only exists for internal testing purposes. You may use it but + * documentation may be sparse and usability may be inconvenient without any intentions to change it. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib.testsupport</groupId>
+ *   <artifactId>learnlib-learner-it-support</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.testsupport.it { + + requires de.learnlib.api; + requires de.learnlib.common.util; + requires de.learnlib.driver.simulator; + requires de.learnlib.oracle.membership; + requires de.learnlib.oracle.equivalence; + requires de.learnlib.testsupport.example; + requires net.automatalib.api; + requires net.automatalib.core; + requires net.automatalib.util; + requires org.slf4j; + requires org.testng; + + exports de.learnlib.testsupport.it.learner; +} diff --git a/test-support/learning-examples/pom.xml b/test-support/learning-examples/pom.xml index 5a526ee09a..93e2de5b66 100644 --- a/test-support/learning-examples/pom.xml +++ b/test-support/learning-examples/pom.xml @@ -29,7 +29,7 @@ limitations under the License. jar LearnLib :: Test Support :: Learning Examples - Example learning setups, to be used for integration testing + Example learning setups to be used for integration testing diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/package-info.java b/test-support/learning-examples/src/main/java/de/learnlib/example/package-info.java deleted file mode 100644 index 7bfebcc57a..0000000000 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2013-2024 TU Dortmund University - * This file is part of LearnLib, http://www.learnlib.de/. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package (including sub-packages) contains example models of various types used in integration-tests. - */ -package de.learnlib.example; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/DefaultLearningExample.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/DefaultLearningExample.java similarity index 99% rename from test-support/learning-examples/src/main/java/de/learnlib/example/DefaultLearningExample.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/DefaultLearningExample.java index dd1b9a80b8..8495fc3b2a 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/DefaultLearningExample.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/DefaultLearningExample.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example; +package de.learnlib.testsupport.example; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/DefaultPassiveLearningExample.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/DefaultPassiveLearningExample.java similarity index 98% rename from test-support/learning-examples/src/main/java/de/learnlib/example/DefaultPassiveLearningExample.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/DefaultPassiveLearningExample.java index 5d627232b9..d92cf4dd5a 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/DefaultPassiveLearningExample.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/DefaultPassiveLearningExample.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example; +package de.learnlib.testsupport.example; import java.util.Collection; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/LearningExample.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/LearningExample.java similarity index 98% rename from test-support/learning-examples/src/main/java/de/learnlib/example/LearningExample.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/LearningExample.java index be18b0c027..4c7a780f68 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/LearningExample.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/LearningExample.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example; +package de.learnlib.testsupport.example; import net.automatalib.alphabet.Alphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/LearningExamples.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/LearningExamples.java similarity index 75% rename from test-support/learning-examples/src/main/java/de/learnlib/example/LearningExamples.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/LearningExamples.java index 3f17554b34..8dca17072d 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/LearningExamples.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/LearningExamples.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example; +package de.learnlib.testsupport.example; import java.util.Arrays; import java.util.Collection; @@ -21,41 +21,41 @@ import java.util.List; import java.util.Random; -import de.learnlib.example.LearningExample.DFALearningExample; -import de.learnlib.example.LearningExample.MealyLearningExample; -import de.learnlib.example.LearningExample.MooreLearningExample; -import de.learnlib.example.LearningExample.OneSEVPALearningExample; -import de.learnlib.example.LearningExample.SBALearningExample; -import de.learnlib.example.LearningExample.SPALearningExample; -import de.learnlib.example.LearningExample.SPMMLearningExample; -import de.learnlib.example.LearningExample.SSTLearningExample; -import de.learnlib.example.LearningExample.StateLocalInputMealyLearningExample; -import de.learnlib.example.dfa.ExampleAngluin; -import de.learnlib.example.dfa.ExampleKeylock; -import de.learnlib.example.dfa.ExamplePaulAndMary; -import de.learnlib.example.dfa.ExampleTinyDFA; -import de.learnlib.example.mealy.ExampleCoffeeMachine; -import de.learnlib.example.mealy.ExampleGrid; -import de.learnlib.example.mealy.ExampleRandomMealy; -import de.learnlib.example.mealy.ExampleRandomStateLocalInputMealy; -import de.learnlib.example.mealy.ExampleShahbazGroz; -import de.learnlib.example.mealy.ExampleStack; -import de.learnlib.example.mealy.ExampleTinyMealy; -import de.learnlib.example.moore.ExampleRandomMoore; -import de.learnlib.example.sba.ExampleRandomSBA; -import de.learnlib.example.spa.ExamplePalindrome; -import de.learnlib.example.spa.ExampleRandomSPA; -import de.learnlib.example.spmm.ExampleRandomSPMM; -import de.learnlib.example.sst.ExampleRandomSST; -import de.learnlib.example.vpa.ExampleRandomOneSEVPA; +import de.learnlib.testsupport.example.LearningExample.DFALearningExample; +import de.learnlib.testsupport.example.LearningExample.MealyLearningExample; +import de.learnlib.testsupport.example.LearningExample.MooreLearningExample; +import de.learnlib.testsupport.example.LearningExample.OneSEVPALearningExample; +import de.learnlib.testsupport.example.LearningExample.SBALearningExample; +import de.learnlib.testsupport.example.LearningExample.SPALearningExample; +import de.learnlib.testsupport.example.LearningExample.SPMMLearningExample; +import de.learnlib.testsupport.example.LearningExample.SSTLearningExample; +import de.learnlib.testsupport.example.LearningExample.StateLocalInputMealyLearningExample; +import de.learnlib.testsupport.example.dfa.ExampleAngluin; +import de.learnlib.testsupport.example.dfa.ExampleKeylock; +import de.learnlib.testsupport.example.dfa.ExamplePaulAndMary; +import de.learnlib.testsupport.example.dfa.ExampleTinyDFA; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine; +import de.learnlib.testsupport.example.mealy.ExampleGrid; +import de.learnlib.testsupport.example.mealy.ExampleRandomMealy; +import de.learnlib.testsupport.example.mealy.ExampleRandomStateLocalInputMealy; +import de.learnlib.testsupport.example.mealy.ExampleShahbazGroz; +import de.learnlib.testsupport.example.mealy.ExampleStack; +import de.learnlib.testsupport.example.mealy.ExampleTinyMealy; +import de.learnlib.testsupport.example.moore.ExampleRandomMoore; +import de.learnlib.testsupport.example.sba.ExampleRandomSBA; +import de.learnlib.testsupport.example.spa.ExamplePalindrome; +import de.learnlib.testsupport.example.spa.ExampleRandomSPA; +import de.learnlib.testsupport.example.spmm.ExampleRandomSPMM; +import de.learnlib.testsupport.example.sst.ExampleRandomSST; +import de.learnlib.testsupport.example.vpa.ExampleRandomOneSEVPA; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; -import net.automatalib.alphabet.DefaultProceduralOutputAlphabet; -import net.automatalib.alphabet.DefaultVPAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralOutputAlphabet; import net.automatalib.alphabet.VPAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; +import net.automatalib.alphabet.impl.DefaultProceduralOutputAlphabet; +import net.automatalib.alphabet.impl.DefaultVPAlphabet; import net.automatalib.word.Word; public final class LearningExamples { @@ -137,14 +137,14 @@ public static List> createSPAExamples() { } public static List> createSBAExamples() { - return Arrays.asList(de.learnlib.example.sba.ExamplePalindrome.createExample(), + return Arrays.asList(de.learnlib.testsupport.example.sba.ExamplePalindrome.createExample(), ExampleRandomSBA.createExample(new Random(RANDOM_SEED), PROCEDURAL_INPUT_ALPHABET, PROCEDURE_SIZE)); } public static List> createSPMMExamples() { - return Arrays.asList(de.learnlib.example.spmm.ExamplePalindrome.createExample(), + return Arrays.asList(de.learnlib.testsupport.example.spmm.ExamplePalindrome.createExample(), ExampleRandomSPMM.createExample(new Random(RANDOM_SEED), PROCEDURAL_INPUT_ALPHABET, PROCEDURAL_OUTPUT_ALPHABET, diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/PassiveLearningExample.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/PassiveLearningExample.java similarity index 96% rename from test-support/learning-examples/src/main/java/de/learnlib/example/PassiveLearningExample.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/PassiveLearningExample.java index 772ba46a06..4b3e3698b9 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/PassiveLearningExample.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/PassiveLearningExample.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example; +package de.learnlib.testsupport.example; import java.util.Collection; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/DFABenchmarks.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/DFABenchmarks.java similarity index 91% rename from test-support/learning-examples/src/main/java/de/learnlib/example/dfa/DFABenchmarks.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/DFABenchmarks.java index e653ffe3de..4a48ddc125 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/DFABenchmarks.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/DFABenchmarks.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.dfa; +package de.learnlib.testsupport.example.dfa; import java.io.IOException; import java.io.InputStream; -import de.learnlib.example.DefaultLearningExample.DefaultDFALearningExample; -import de.learnlib.example.LearningExample.DFALearningExample; import de.learnlib.logging.Category; -import net.automatalib.automaton.fsa.CompactDFA; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultDFALearningExample; +import de.learnlib.testsupport.example.LearningExample.DFALearningExample; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.serialization.learnlibv2.LearnLibV2Serialization; import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleAngluin.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleAngluin.java similarity index 90% rename from test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleAngluin.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleAngluin.java index c5eb36a6d5..2d1bc2e330 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleAngluin.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleAngluin.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.dfa; +package de.learnlib.testsupport.example.dfa; -import de.learnlib.example.DefaultLearningExample.DefaultDFALearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultDFALearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.MutableDFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.builder.AutomatonBuilders; /** diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleKeylock.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleKeylock.java similarity index 92% rename from test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleKeylock.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleKeylock.java index 0f77a6eb92..f7aa89b098 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleKeylock.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleKeylock.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.dfa; +package de.learnlib.testsupport.example.dfa; -import de.learnlib.example.DefaultLearningExample.DefaultDFALearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultDFALearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.fsa.impl.CompactDFA; public class ExampleKeylock extends DefaultDFALearningExample { diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExamplePaulAndMary.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExamplePaulAndMary.java similarity index 91% rename from test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExamplePaulAndMary.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExamplePaulAndMary.java index 85ee1c3a91..c4a4fe4f2e 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExamplePaulAndMary.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExamplePaulAndMary.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.dfa; +package de.learnlib.testsupport.example.dfa; -import de.learnlib.example.DefaultLearningExample.DefaultDFALearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultDFALearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.MutableDFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.builder.AutomatonBuilders; /** diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleRandomDFA.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleRandomDFA.java similarity index 86% rename from test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleRandomDFA.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleRandomDFA.java index 3989f9ebc0..37f1b95ce3 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleRandomDFA.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleRandomDFA.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.dfa; +package de.learnlib.testsupport.example.dfa; import java.util.Random; -import de.learnlib.example.DefaultLearningExample.DefaultDFALearningExample; -import net.automatalib.alphabet.Alphabets; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultDFALearningExample; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.util.automaton.random.RandomAutomata; public class ExampleRandomDFA extends DefaultDFALearningExample { diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleTinyDFA.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleTinyDFA.java similarity index 88% rename from test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleTinyDFA.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleTinyDFA.java index 5f6e3a4609..ab11642d48 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/dfa/ExampleTinyDFA.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/dfa/ExampleTinyDFA.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.dfa; +package de.learnlib.testsupport.example.dfa; -import de.learnlib.example.DefaultLearningExample.DefaultDFALearningExample; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.fsa.CompactDFA; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultDFALearningExample; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.fsa.impl.CompactDFA; import net.automatalib.util.automaton.builder.AutomatonBuilders; /** diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleCoffeeMachine.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleCoffeeMachine.java similarity index 91% rename from test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleCoffeeMachine.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleCoffeeMachine.java index 049d3d824b..bf5633fcae 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleCoffeeMachine.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleCoffeeMachine.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.mealy; +package de.learnlib.testsupport.example.mealy; -import de.learnlib.example.DefaultLearningExample.DefaultMealyLearningExample; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultMealyLearningExample; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MutableMealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.builder.AutomatonBuilders; /** diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleGrid.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleGrid.java similarity index 92% rename from test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleGrid.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleGrid.java index 8ddf611b10..c56493a716 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleGrid.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleGrid.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.mealy; +package de.learnlib.testsupport.example.mealy; -import de.learnlib.example.DefaultLearningExample.DefaultMealyLearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultMealyLearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MutableMealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; /** * This class generates a Mealy machine consisting of a two-dimensional grid of states. Each transition has unique diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleRandomMealy.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleRandomMealy.java similarity index 90% rename from test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleRandomMealy.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleRandomMealy.java index 25d569f168..6e60ccc5b3 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleRandomMealy.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleRandomMealy.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.mealy; +package de.learnlib.testsupport.example.mealy; import java.util.Arrays; import java.util.Collections; import java.util.Random; -import de.learnlib.example.DefaultLearningExample.DefaultMealyLearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultMealyLearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.random.RandomAutomata; public class ExampleRandomMealy extends DefaultMealyLearningExample { diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleRandomStateLocalInputMealy.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleRandomStateLocalInputMealy.java similarity index 96% rename from test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleRandomStateLocalInputMealy.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleRandomStateLocalInputMealy.java index fde2d8323a..8cad19e1f2 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleRandomStateLocalInputMealy.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleRandomStateLocalInputMealy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.mealy; +package de.learnlib.testsupport.example.mealy; import java.util.Arrays; import java.util.Collection; @@ -22,11 +22,11 @@ import java.util.Objects; import java.util.Random; -import de.learnlib.example.LearningExample.StateLocalInputMealyLearningExample; +import de.learnlib.testsupport.example.LearningExample.StateLocalInputMealyLearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.automaton.transducer.StateLocalInputMealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.common.util.mapping.Mapping; import net.automatalib.common.util.mapping.MutableMapping; import net.automatalib.common.util.random.RandomUtil; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleShahbazGroz.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleShahbazGroz.java similarity index 91% rename from test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleShahbazGroz.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleShahbazGroz.java index f1603fa21d..e0b5344dba 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleShahbazGroz.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleShahbazGroz.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.mealy; +package de.learnlib.testsupport.example.mealy; -import de.learnlib.example.DefaultLearningExample.DefaultMealyLearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultMealyLearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MutableMealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.builder.AutomatonBuilders; /** diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleStack.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleStack.java similarity index 87% rename from test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleStack.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleStack.java index 580b4a3500..b3039f7384 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleStack.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleStack.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.mealy; +package de.learnlib.testsupport.example.mealy; -import de.learnlib.example.DefaultLearningExample.DefaultMealyLearningExample; -import de.learnlib.example.mealy.ExampleStack.Input; -import de.learnlib.example.mealy.ExampleStack.Output; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultMealyLearningExample; +import de.learnlib.testsupport.example.mealy.ExampleStack.Input; +import de.learnlib.testsupport.example.mealy.ExampleStack.Output; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MutableMealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.builder.AutomatonBuilders; /** diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleTinyMealy.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleTinyMealy.java similarity index 87% rename from test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleTinyMealy.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleTinyMealy.java index 3587906042..cf3a8c3bcd 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/mealy/ExampleTinyMealy.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/mealy/ExampleTinyMealy.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.mealy; +package de.learnlib.testsupport.example.mealy; -import de.learnlib.example.DefaultLearningExample.DefaultMealyLearningExample; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.automaton.transducer.CompactMealy; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultMealyLearningExample; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.util.automaton.builder.AutomatonBuilders; /** diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/moore/ExampleRandomMoore.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/moore/ExampleRandomMoore.java similarity index 90% rename from test-support/learning-examples/src/main/java/de/learnlib/example/moore/ExampleRandomMoore.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/moore/ExampleRandomMoore.java index 80b2f1bdf9..5fa1f13533 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/moore/ExampleRandomMoore.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/moore/ExampleRandomMoore.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.moore; +package de.learnlib.testsupport.example.moore; import java.util.Arrays; import java.util.Collections; import java.util.Random; -import de.learnlib.example.DefaultLearningExample.DefaultMooreLearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultMooreLearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.CompactMoore; +import net.automatalib.automaton.transducer.impl.CompactMoore; import net.automatalib.util.automaton.random.RandomAutomata; public class ExampleRandomMoore extends DefaultMooreLearningExample { diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/sba/ExamplePalindrome.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sba/ExamplePalindrome.java similarity index 90% rename from test-support/learning-examples/src/main/java/de/learnlib/example/sba/ExamplePalindrome.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sba/ExamplePalindrome.java index 0c4b3e9c9b..a5932f4e8a 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/sba/ExamplePalindrome.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sba/ExamplePalindrome.java @@ -13,21 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.sba; +package de.learnlib.testsupport.example.sba; import java.util.HashMap; import java.util.Map; -import de.learnlib.example.DefaultLearningExample.DefaultSBALearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultSBALearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.automaton.fsa.DFA; -import net.automatalib.automaton.fsa.FastDFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; +import net.automatalib.automaton.fsa.impl.FastDFA; import net.automatalib.automaton.procedural.SBA; -import net.automatalib.automaton.procedural.StackSBA; +import net.automatalib.automaton.procedural.impl.StackSBA; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.util.automaton.fsa.MutableDFAs; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/sba/ExampleRandomSBA.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sba/ExampleRandomSBA.java similarity index 90% rename from test-support/learning-examples/src/main/java/de/learnlib/example/sba/ExampleRandomSBA.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sba/ExampleRandomSBA.java index f2578666de..348fbe4ef3 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/sba/ExampleRandomSBA.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sba/ExampleRandomSBA.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.sba; +package de.learnlib.testsupport.example.sba; import java.util.Random; -import de.learnlib.example.DefaultLearningExample.DefaultSBALearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultSBALearningExample; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.util.automaton.random.RandomAutomata; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/spa/ExamplePalindrome.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spa/ExamplePalindrome.java similarity index 89% rename from test-support/learning-examples/src/main/java/de/learnlib/example/spa/ExamplePalindrome.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spa/ExamplePalindrome.java index 2e16112de4..82bb5a7078 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/spa/ExamplePalindrome.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spa/ExamplePalindrome.java @@ -13,21 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.spa; +package de.learnlib.testsupport.example.spa; import java.util.HashMap; import java.util.Map; -import de.learnlib.example.DefaultLearningExample.DefaultSPALearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultSPALearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; -import net.automatalib.automaton.fsa.CompactDFA; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.automaton.fsa.DFA; -import net.automatalib.automaton.fsa.FastDFA; +import net.automatalib.automaton.fsa.impl.CompactDFA; +import net.automatalib.automaton.fsa.impl.FastDFA; import net.automatalib.automaton.procedural.SPA; -import net.automatalib.automaton.procedural.StackSPA; +import net.automatalib.automaton.procedural.impl.StackSPA; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.util.automaton.fsa.MutableDFAs; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/spa/ExampleRandomSPA.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spa/ExampleRandomSPA.java similarity index 90% rename from test-support/learning-examples/src/main/java/de/learnlib/example/spa/ExampleRandomSPA.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spa/ExampleRandomSPA.java index 1e1e6536d9..ce82c18da0 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/spa/ExampleRandomSPA.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spa/ExampleRandomSPA.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.spa; +package de.learnlib.testsupport.example.spa; import java.util.Random; -import de.learnlib.example.DefaultLearningExample.DefaultSPALearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultSPALearningExample; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.util.automaton.random.RandomAutomata; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/spmm/ExamplePalindrome.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spmm/ExamplePalindrome.java similarity index 91% rename from test-support/learning-examples/src/main/java/de/learnlib/example/spmm/ExamplePalindrome.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spmm/ExamplePalindrome.java index bf242c8be2..007e6d9e73 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/spmm/ExamplePalindrome.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spmm/ExamplePalindrome.java @@ -13,21 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.spmm; +package de.learnlib.testsupport.example.spmm; import java.util.HashMap; import java.util.Map; -import de.learnlib.example.DefaultLearningExample.DefaultSPMMLearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultSPMMLearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; -import net.automatalib.alphabet.DefaultProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralInputAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.DefaultProceduralInputAlphabet; import net.automatalib.automaton.procedural.SPMM; -import net.automatalib.automaton.procedural.StackSPMM; -import net.automatalib.automaton.transducer.CompactMealy; -import net.automatalib.automaton.transducer.FastMealy; +import net.automatalib.automaton.procedural.impl.StackSPMM; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; +import net.automatalib.automaton.transducer.impl.FastMealy; import net.automatalib.util.automaton.builder.AutomatonBuilders; import net.automatalib.util.automaton.transducer.MutableMealyMachines; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/spmm/ExampleRandomSPMM.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spmm/ExampleRandomSPMM.java similarity index 91% rename from test-support/learning-examples/src/main/java/de/learnlib/example/spmm/ExampleRandomSPMM.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spmm/ExampleRandomSPMM.java index 600e68a1da..b3599f0d16 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/spmm/ExampleRandomSPMM.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/spmm/ExampleRandomSPMM.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.spmm; +package de.learnlib.testsupport.example.spmm; import java.util.Random; -import de.learnlib.example.DefaultLearningExample.DefaultSPMMLearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultSPMMLearningExample; import net.automatalib.alphabet.ProceduralInputAlphabet; import net.automatalib.alphabet.ProceduralOutputAlphabet; import net.automatalib.util.automaton.random.RandomAutomata; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/sst/ExampleRandomSST.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sst/ExampleRandomSST.java similarity index 91% rename from test-support/learning-examples/src/main/java/de/learnlib/example/sst/ExampleRandomSST.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sst/ExampleRandomSST.java index e4d17d7c1f..be45116895 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/sst/ExampleRandomSST.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/sst/ExampleRandomSST.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.sst; +package de.learnlib.testsupport.example.sst; import java.util.Collection; import java.util.Random; -import de.learnlib.example.DefaultLearningExample.DefaultSSTLearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultSSTLearningExample; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.CompactSST; +import net.automatalib.automaton.transducer.impl.CompactSST; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; diff --git a/test-support/learning-examples/src/main/java/de/learnlib/example/vpa/ExampleRandomOneSEVPA.java b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/vpa/ExampleRandomOneSEVPA.java similarity index 92% rename from test-support/learning-examples/src/main/java/de/learnlib/example/vpa/ExampleRandomOneSEVPA.java rename to test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/vpa/ExampleRandomOneSEVPA.java index f55f6c7b7f..885a82d62d 100644 --- a/test-support/learning-examples/src/main/java/de/learnlib/example/vpa/ExampleRandomOneSEVPA.java +++ b/test-support/learning-examples/src/main/java/de/learnlib/testsupport/example/vpa/ExampleRandomOneSEVPA.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package de.learnlib.example.vpa; +package de.learnlib.testsupport.example.vpa; import java.util.Random; -import de.learnlib.example.DefaultLearningExample.DefaultOneSEVPALearningExample; +import de.learnlib.testsupport.example.DefaultLearningExample.DefaultOneSEVPALearningExample; import net.automatalib.alphabet.VPAlphabet; import net.automatalib.util.automaton.random.RandomAutomata; diff --git a/test-support/learning-examples/src/main/java/module-info.java b/test-support/learning-examples/src/main/java/module-info.java new file mode 100644 index 0000000000..7a4038a717 --- /dev/null +++ b/test-support/learning-examples/src/main/java/module-info.java @@ -0,0 +1,51 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides example learning setups, to be used for integration testing. Note: This module is not + * intended as a library but only exists for internal testing purposes. You may use it but documentation may be sparse + * and usability may be inconvenient without any intentions to change it. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib.testsupport</groupId>
+ *   <artifactId>learnlib-learning-examples</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.testsupport.example { + + requires de.learnlib.api; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires net.automatalib.serialization.learnlibv2; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + requires org.slf4j; + + exports de.learnlib.testsupport.example; + exports de.learnlib.testsupport.example.dfa; + exports de.learnlib.testsupport.example.mealy; + exports de.learnlib.testsupport.example.moore; + exports de.learnlib.testsupport.example.sba; + exports de.learnlib.testsupport.example.spa; + exports de.learnlib.testsupport.example.spmm; + exports de.learnlib.testsupport.example.sst; + exports de.learnlib.testsupport.example.vpa; +} diff --git a/test-support/learning-examples/src/test/java/de/learnlib/example/dfa/DFAExamplesTest.java b/test-support/learning-examples/src/test/java/de/learnlib/example/dfa/DFAExamplesTest.java index 30d718f41c..82faf3679f 100644 --- a/test-support/learning-examples/src/test/java/de/learnlib/example/dfa/DFAExamplesTest.java +++ b/test-support/learning-examples/src/test/java/de/learnlib/example/dfa/DFAExamplesTest.java @@ -15,6 +15,7 @@ */ package de.learnlib.example.dfa; +import de.learnlib.testsupport.example.dfa.DFABenchmarks; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/test-support/test-support/pom.xml b/test-support/test-support/pom.xml index 5069deb572..43d7c2fc29 100644 --- a/test-support/test-support/pom.xml +++ b/test-support/test-support/pom.xml @@ -17,12 +17,33 @@ + + de.learnlib + learnlib-api + + + de.learnlib + learnlib-drivers-simulator + + + de.learnlib + learnlib-membership-oracles + de.learnlib learnlib-util + + de.learnlib.testsupport + learnlib-learning-examples + compile + + + com.google.guava + guava + com.thoughtworks.xstream xstream @@ -32,11 +53,23 @@ net.automatalib automata-api + + net.automatalib + automata-commons-util + net.automatalib automata-core + + net.automatalib + automata-util + + + org.checkerframework + checker-qual + org.mockito mockito-core diff --git a/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractBFOracleTest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractBFOracleTest.java index 3c56c1e832..b0bc6a71bb 100644 --- a/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractBFOracleTest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractBFOracleTest.java @@ -17,7 +17,7 @@ import de.learnlib.util.AbstractBFOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.ts.simple.SimpleDTS; import net.automatalib.word.Word; import org.mockito.MockitoAnnotations; diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetDFATest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetDFATest.java similarity index 74% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetDFATest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetDFATest.java index eedb06b41a..b690047941 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetDFATest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetDFATest.java @@ -16,18 +16,14 @@ package de.learnlib.testsupport; import java.util.Collection; -import java.util.List; import java.util.Random; -import java.util.function.Consumer; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.filter.cache.dfa.DFACacheOracle; -import de.learnlib.filter.cache.dfa.DFACaches; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; import de.learnlib.oracle.membership.DFASimulatorOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; import net.automatalib.util.automaton.random.RandomAutomata; @@ -53,14 +49,4 @@ protected DFA getTarget(Alphabet alphabet) { protected DFAMembershipOracle getOracle(DFA target) { return new DFASimulatorOracle<>(target); } - - @Override - protected DFAMembershipOracle getCachedOracle(Alphabet alphabet, - DFAMembershipOracle original, - List> symbolListener) { - final DFACacheOracle cache = DFACaches.createDAGCache(alphabet, original); - symbolListener.add(cache::addAlphabetSymbol); - return cache; - } - } diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMealyTest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMealyTest.java similarity index 75% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMealyTest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMealyTest.java index a083dfcb90..66f9940748 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMealyTest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMealyTest.java @@ -16,18 +16,14 @@ package de.learnlib.testsupport; import java.util.Collection; -import java.util.List; import java.util.Random; -import java.util.function.Consumer; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.filter.cache.mealy.MealyCacheOracle; -import de.learnlib.filter.cache.mealy.MealyCaches; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; import de.learnlib.oracle.membership.MealySimulatorOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; @@ -57,13 +53,4 @@ protected Collection getAlphabetExtensions() { protected MealyMembershipOracle getOracle(MealyMachine target) { return new MealySimulatorOracle<>(target); } - - @Override - protected MealyMembershipOracle getCachedOracle(Alphabet alphabet, - MealyMembershipOracle source, - List> symbolListener) { - final MealyCacheOracle cache = MealyCaches.createDAGCache(alphabet, source); - symbolListener.add(cache::addAlphabetSymbol); - return cache; - } } diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMooreTest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMooreTest.java similarity index 75% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMooreTest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMooreTest.java index 0cacda7c12..c75399dde4 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMooreTest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetMooreTest.java @@ -16,18 +16,14 @@ package de.learnlib.testsupport; import java.util.Collection; -import java.util.List; import java.util.Random; -import java.util.function.Consumer; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.filter.cache.moore.MooreCacheOracle; -import de.learnlib.filter.cache.moore.MooreCaches; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; import de.learnlib.oracle.membership.MooreSimulatorOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; @@ -57,13 +53,4 @@ protected Collection getAlphabetExtensions() { protected MooreMembershipOracle getOracle(MooreMachine target) { return new MooreSimulatorOracle<>(target); } - - @Override - protected MooreMembershipOracle getCachedOracle(Alphabet alphabet, - MooreMembershipOracle source, - List> symbolListener) { - final MooreCacheOracle cache = MooreCaches.createCache(alphabet, source); - symbolListener.add(cache::addAlphabetSymbol); - return cache; - } } diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetTest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetTest.java similarity index 82% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetTest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetTest.java index f4417fa327..6844259486 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetTest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractGrowingAlphabetTest.java @@ -17,17 +17,15 @@ import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; -import java.util.function.Consumer; import de.learnlib.algorithm.LearningAlgorithm; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; import net.automatalib.alphabet.GrowingAlphabet; -import net.automatalib.alphabet.GrowingMapAlphabet; import net.automatalib.alphabet.SupportsGrowingAlphabet; +import net.automatalib.alphabet.impl.Alphabets; +import net.automatalib.alphabet.impl.GrowingMapAlphabet; import net.automatalib.automaton.UniversalDeterministicAutomaton; import net.automatalib.automaton.concept.Output; import net.automatalib.exception.GrowingAlphabetNotSupportedException; @@ -77,15 +75,13 @@ public void setup() { protected abstract OR getOracle(M target); - protected abstract OR getCachedOracle(Alphabet alphabet, OR source, List> symbolListener); - protected abstract L getLearner(OR oracle, Alphabet alphabet); @Test(expectedExceptions = GrowingAlphabetNotSupportedException.class) public void testInitialAlphabet() { final L leaner = getLearner(oracle, initialAlphabet); - testAlphabet(initialAlphabet, leaner, Collections.singletonList(leaner::addAlphabetSymbol)); + testAlphabet(initialAlphabet, leaner); } /** @@ -98,24 +94,13 @@ public void testGrowingAlphabet() { final GrowingAlphabet alphabet = new GrowingMapAlphabet<>(initialAlphabet); final L learner = getLearner(oracle, alphabet); - testAlphabet(alphabet, learner, Collections.singletonList(learner::addAlphabetSymbol)); - } - - @Test - public void testGrowingAlphabetWithCache() { - final GrowingAlphabet alphabet = new GrowingMapAlphabet<>(initialAlphabet); - final List> symbolListener = new ArrayList<>(); - final OR cachedOracle = getCachedOracle(alphabet, oracle, symbolListener); - final L learner = getLearner(cachedOracle, alphabet); - symbolListener.add(learner::addAlphabetSymbol); - - testAlphabet(alphabet, learner, symbolListener); + testAlphabet(alphabet, learner); } - private void testAlphabet(Alphabet alphabet, L learner, List> symbolListener) { + private void testAlphabet(Alphabet alphabet, L learner) { // add the first symbol before actually starting the learning process - symbolListener.forEach(c -> c.accept(alphabetExtensions.get(0))); + learner.addAlphabetSymbol(alphabetExtensions.get(0)); learner.startLearning(); this.performLearnLoopAndCheck(learner, alphabet); @@ -127,7 +112,7 @@ private void testAlphabet(Alphabet alphabet, L learner, List> sym for (I i : alphabetExtensions) { currentAlphabet.add(i); - symbolListener.forEach(c -> c.accept(i)); + learner.addAlphabetSymbol(i); if (duplicateAdd) { learner.addAlphabetSymbol(i); diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerDFATest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerDFATest.java similarity index 84% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerDFATest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerDFATest.java index 480b091555..337c2af057 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerDFATest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerDFATest.java @@ -19,12 +19,10 @@ import de.learnlib.Resumable; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle; import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle; -import de.learnlib.oracle.equivalence.DFASimulatorEQOracle; import de.learnlib.oracle.membership.DFASimulatorOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.fsa.DFA; import net.automatalib.util.automaton.random.RandomAutomata; @@ -47,10 +45,4 @@ protected DFA getTarget(Alphabet alphabet) { protected DFAMembershipOracle getOracle(DFA target) { return new DFASimulatorOracle<>(target); } - - @Override - protected DFAEquivalenceOracle getEquivalenceOracle(DFA target) { - return new DFASimulatorEQOracle<>(target); - } - } diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMealyTest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMealyTest.java similarity index 85% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMealyTest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMealyTest.java index 0016117a7c..de21e12acb 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMealyTest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMealyTest.java @@ -19,12 +19,10 @@ import de.learnlib.Resumable; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle; import de.learnlib.oracle.MembershipOracle.MealyMembershipOracle; -import de.learnlib.oracle.equivalence.MealySimulatorEQOracle; import de.learnlib.oracle.membership.MealySimulatorOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MealyMachine; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; @@ -51,9 +49,4 @@ protected Alphabet getInitialAlphabet() { protected MealyMembershipOracle getOracle(MealyMachine target) { return new MealySimulatorOracle<>(target); } - - @Override - protected MealyEquivalenceOracle getEquivalenceOracle(MealyMachine target) { - return new MealySimulatorEQOracle<>(target); - } } diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMooreTest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMooreTest.java similarity index 85% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMooreTest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMooreTest.java index ffbc632d00..221cdc5cbc 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMooreTest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerMooreTest.java @@ -19,12 +19,10 @@ import de.learnlib.Resumable; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.oracle.EquivalenceOracle.MooreEquivalenceOracle; import de.learnlib.oracle.MembershipOracle.MooreMembershipOracle; -import de.learnlib.oracle.equivalence.MooreSimulatorEQOracle; import de.learnlib.oracle.membership.MooreSimulatorOracle; import net.automatalib.alphabet.Alphabet; -import net.automatalib.alphabet.Alphabets; +import net.automatalib.alphabet.impl.Alphabets; import net.automatalib.automaton.transducer.MooreMachine; import net.automatalib.util.automaton.random.RandomAutomata; import net.automatalib.word.Word; @@ -51,9 +49,4 @@ protected Alphabet getInitialAlphabet() { protected MooreMembershipOracle getOracle(MooreMachine target) { return new MooreSimulatorOracle<>(target); } - - @Override - protected MooreEquivalenceOracle getEquivalenceOracle(MooreMachine target) { - return new MooreSimulatorEQOracle<>(target); - } } diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerTest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerTest.java similarity index 86% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerTest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerTest.java index 2a920c0867..5acb437190 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerTest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractResumableLearnerTest.java @@ -17,11 +17,12 @@ import de.learnlib.Resumable; import de.learnlib.algorithm.LearningAlgorithm; -import de.learnlib.oracle.EquivalenceOracle; import de.learnlib.query.DefaultQuery; import net.automatalib.alphabet.Alphabet; import net.automatalib.automaton.UniversalDeterministicAutomaton; +import net.automatalib.automaton.concept.Output; import net.automatalib.util.automaton.Automata; +import net.automatalib.word.Word; import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -42,7 +43,7 @@ * @param * state type */ -public abstract class AbstractResumableLearnerTest & LearningAlgorithm, M extends UniversalDeterministicAutomaton, OR, I, D, T> { +public abstract class AbstractResumableLearnerTest & LearningAlgorithm, M extends UniversalDeterministicAutomaton & Output, OR, I, D, T> { protected static final int RANDOM_SEED = 42; @@ -72,8 +73,6 @@ public void setup() { protected abstract OR getOracle(M target); - protected abstract EquivalenceOracle getEquivalenceOracle(M target); - protected abstract L getLearner(OR oracle, Alphabet alphabet); protected abstract int getRounds(); @@ -85,15 +84,13 @@ public void testSuspendAndResumeLearner() { int roundsPre = 0, roundsPost = 0; byte[] data = null; - EquivalenceOracle equivalenceOracle = getEquivalenceOracle(target); - while (true) { final M hyp = learner.getHypothesisModel(); - final DefaultQuery ce = equivalenceOracle.findCounterExample(hyp, inputAlphabet); + final Word ce = Automata.findSeparatingWord(target, hyp, inputAlphabet); if (ce == null) { break; } - learner.refineHypothesis(ce); + learner.refineHypothesis(new DefaultQuery<>(Word.epsilon(), ce, target.computeOutput(ce))); roundsPre++; if (roundsPre == rounds) { @@ -111,11 +108,11 @@ public void testSuspendAndResumeLearner() { while (true) { final M hyp = learner2.getHypothesisModel(); - final DefaultQuery ce = equivalenceOracle.findCounterExample(hyp, inputAlphabet); + final Word ce = Automata.findSeparatingWord(target, hyp, inputAlphabet); if (ce == null) { break; } - learner2.refineHypothesis(ce); + learner2.refineHypothesis(new DefaultQuery<>(Word.epsilon(), ce, target.computeOutput(ce))); roundsPost++; } diff --git a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractVisualizationTest.java b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractVisualizationTest.java similarity index 77% rename from test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractVisualizationTest.java rename to test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractVisualizationTest.java index 49e39b5a54..6e0d4facda 100644 --- a/test-support/learner-it-support/src/main/java/de/learnlib/testsupport/AbstractVisualizationTest.java +++ b/test-support/test-support/src/main/java/de/learnlib/testsupport/AbstractVisualizationTest.java @@ -21,15 +21,15 @@ import com.google.common.io.CharStreams; import de.learnlib.algorithm.LearningAlgorithm; import de.learnlib.driver.simulator.MealySimulatorSUL; -import de.learnlib.example.mealy.ExampleCoffeeMachine; -import de.learnlib.example.mealy.ExampleCoffeeMachine.Input; -import de.learnlib.oracle.equivalence.SimulatorEQOracle; +import de.learnlib.query.DefaultQuery; import de.learnlib.sul.SUL; -import de.learnlib.util.Experiment; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine; +import de.learnlib.testsupport.example.mealy.ExampleCoffeeMachine.Input; import net.automatalib.alphabet.Alphabet; -import net.automatalib.automaton.transducer.CompactMealy; import net.automatalib.automaton.transducer.MealyMachine; +import net.automatalib.automaton.transducer.impl.CompactMealy; import net.automatalib.common.util.IOUtil; +import net.automatalib.util.automaton.Automata; import net.automatalib.word.Word; import org.checkerframework.checker.initialization.qual.UnderInitialization; @@ -51,10 +51,16 @@ public AbstractVisualizationTest() { final SUL sul = new MealySimulatorSUL<>(target); this.learner = getLearnerBuilder(alphabet, sul); + this.learner.startLearning(); - final Experiment experiment = new Experiment<>(learner, new SimulatorEQOracle<>(target), alphabet); + MealyMachine hyp = this.learner.getHypothesisModel(); + Word ce; - experiment.run(); + while ((ce = Automata.findSeparatingWord(target, hyp, alphabet)) != null) { + final DefaultQuery> q = new DefaultQuery<>(ce, target.computeOutput(ce)); + while (this.learner.refineHypothesis(q)) {} + hyp = this.learner.getHypothesisModel(); + } } protected String resourceAsString(String resourceName) throws IOException { diff --git a/test-support/test-support/src/main/java/module-info.java b/test-support/test-support/src/main/java/module-info.java new file mode 100644 index 0000000000..7ab636a5bc --- /dev/null +++ b/test-support/test-support/src/main/java/module-info.java @@ -0,0 +1,49 @@ +/* Copyright (C) 2013-2024 TU Dortmund University + * This file is part of LearnLib, http://www.learnlib.de/. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This module provides support classes for easily writing unit tests for various components of LearnLib. Note: + * This module is not intended as a library but only exists for internal testing purposes. You may use it but + * documentation may be sparse and usability may be inconvenient without any intentions to change it. + *

+ * This module is provided by the following Maven dependency: + *

+ * <dependency>
+ *   <groupId>de.learnlib.testsupport</groupId>
+ *   <artifactId>learnlib-test-support</artifactId>
+ *   <version>${version}</version>
+ * </dependency>
+ * 
+ */ +open module de.learnlib.testsupport { + + requires com.google.common; + requires de.learnlib.api; + requires de.learnlib.common.util; + requires de.learnlib.driver.simulator; + requires de.learnlib.oracle.membership; + requires de.learnlib.testsupport.example; + requires net.automatalib.api; + requires net.automatalib.common.util; + requires net.automatalib.core; + requires net.automatalib.util; + requires org.checkerframework.checker.qual; + requires org.mockito; + requires org.testng; + requires xstream; + + exports de.learnlib.testsupport; +} From 5a3303d2efed2c5f8601cb1f2979bd2e93c9e8c9 Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Mon, 8 Jan 2024 21:52:31 +0100 Subject: [PATCH 19/88] fix rendering of javadoc --- .../oracle/equivalence/RandomWMethodEQOracle.java | 6 +++--- .../oracle/equivalence/RandomWpMethodEQOracle.java | 6 +++--- .../oracle/equivalence/WMethodEQOracle.java | 14 ++++++++------ .../oracle/equivalence/WpMethodEQOracle.java | 4 ++-- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java index 9fe0c16390..2c0332f3fa 100644 --- a/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java +++ b/oracles/equivalence-oracles/src/main/java/de/learnlib/oracle/equivalence/RandomWMethodEQOracle.java @@ -43,9 +43,9 @@ import net.automatalib.word.WordBuilder; /** - * Implements an equivalence test by applying the W-method test on the given hypothesis automaton. Generally the - * Wp-method performs better in finding counter examples. Instead of enumerating the test suite in order, this is a - * sampling implementation: + * Implements an equivalence test by applying the W-method test on the given hypothesis automaton, as described in + * Testing Software Design Modeled by Finite-State Machines by + * T. S. Chow. Instead of enumerating the test suite in order, this is a sampling implementation: *