diff --git a/.travis.yml b/.travis.yml index e27956f34e..0bc7c1ff0c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,8 +17,13 @@ branches: only: - master - develop + - release + before_install: - - git clone -b develop --single-branch https://github.com/LearnLib/automatalib.git /tmp/automatalib-develop + # set Travis environment variables "AUTOMATALIB_FORK" and "AUTOMATALIB_BRANCH" to build custom AutomataLib versions. + # Defaults are "LearnLib" and the current/targeted LearnLib branch ($TRAVIS_BRANCH, relies on the same naming + # conventions between AutomataLib and LearnLib branches). + - git clone -b ${AUTOMATALIB_BRANCH:-$TRAVIS_BRANCH} --single-branch https://github.com/${AUTOMATALIB_FORK:-LearnLib}/automatalib.git /tmp/automatalib-develop - pushd /tmp/automatalib-develop # skip several aspects of the build process, because we are only interested in the compiled code - mvn install -DskipTests -Dmaven.javadoc.skip=true diff --git a/README.md b/README.md index 66a7118146..9ba64f2238 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,8 @@ Note, that LearnLib requires Java 8. #### Building development versions -If you intend to use development versions of LearnLib, simply clone the development branch of the repository +If you intend to use development versions of LearnLib, you can either use the deployed SNAPSHOT artifacts from the continuous integration server (see [Using Development Versions](https://github.com/LearnLib/learnlib/wiki/Using-Development-Versions)), or build them yourself. +Simply clone the development branch of the repository ``` git clone -b develop --single-branch https://github.com/LearnLib/learnlib.git diff --git a/algorithms/active/adt/pom.xml b/algorithms/active/adt/pom.xml index 56f90a48b3..1020275603 100644 --- a/algorithms/active/adt/pom.xml +++ b/algorithms/active/adt/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-active-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/learner/ADTLearner.java b/algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/learner/ADTLearner.java index 402c2924a6..b13f2740cc 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/learner/ADTLearner.java +++ b/algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/learner/ADTLearner.java @@ -65,6 +65,7 @@ import net.automatalib.words.Word; import net.automatalib.words.WordBuilder; import net.automatalib.words.impl.Alphabets; +import net.automatalib.words.impl.SymbolHidingAlphabet; /** * The main learning algorithm. @@ -101,7 +102,7 @@ public ADTLearner(final Alphabet alphabet, final ADTExtender adtExtender, final SubtreeReplacer subtreeReplacer) { - this.alphabet = alphabet; + this.alphabet = SymbolHidingAlphabet.wrapIfMutable(alphabet); this.observationTree = new ObservationTree<>(this.alphabet); this.oracle = new SQOOTBridge<>(this.observationTree, oracle, true); @@ -370,9 +371,17 @@ public void addAlphabetSymbol(I symbol) { return; } - this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); this.hypothesis.addAlphabetSymbol(symbol); - this.observationTree.getObservationTree().addAlphabetSymbol(symbol); + + SymbolHidingAlphabet.runWhileHiding(alphabet, + symbol, + () -> this.observationTree.getObservationTree().addAlphabetSymbol(symbol)); + + // since we share the alphabet instance with our hypothesis, our alphabet might have already been updated (if it + // was already a GrowableAlphabet) + if (!this.alphabet.containsSymbol(symbol)) { + this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); + } for (final ADTState s : this.hypothesis.getStates()) { this.openTransitions.add(this.hypothesis.createOpenTransition(s, symbol, this.adt.getRoot())); diff --git a/algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/learner/ADTLearnerState.java b/algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/learner/ADTLearnerState.java index d9b767cbc9..7441212109 100644 --- a/algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/learner/ADTLearnerState.java +++ b/algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/learner/ADTLearnerState.java @@ -37,7 +37,7 @@ public class ADTLearnerState implements Serializable { private final ADTHypothesis hypothesis; private final ADT adt; - public ADTLearnerState(ADTHypothesis hypothesis, ADT adt) { + ADTLearnerState(ADTHypothesis hypothesis, ADT adt) { this.hypothesis = hypothesis; this.adt = adt; } diff --git a/algorithms/active/dhc/pom.xml b/algorithms/active/dhc/pom.xml index 70f2ef04c7..7211179719 100644 --- a/algorithms/active/dhc/pom.xml +++ b/algorithms/active/dhc/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-active-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/active/dhc/src/main/java/de/learnlib/algorithms/dhc/mealy/MealyDHCState.java b/algorithms/active/dhc/src/main/java/de/learnlib/algorithms/dhc/mealy/MealyDHCState.java index efeba844cd..2edbf1a718 100644 --- a/algorithms/active/dhc/src/main/java/de/learnlib/algorithms/dhc/mealy/MealyDHCState.java +++ b/algorithms/active/dhc/src/main/java/de/learnlib/algorithms/dhc/mealy/MealyDHCState.java @@ -34,7 +34,7 @@ * * @author bainczyk */ -class MealyDHCState implements Serializable { +public class MealyDHCState implements Serializable { private final LinkedHashSet> splitters; private final CompactMealy hypothesis; diff --git a/algorithms/active/discrimination-tree-vpda/pom.xml b/algorithms/active/discrimination-tree-vpda/pom.xml index 135780f1d7..cbb42296a5 100644 --- a/algorithms/active/discrimination-tree-vpda/pom.xml +++ b/algorithms/active/discrimination-tree-vpda/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-active-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/active/discrimination-tree/pom.xml b/algorithms/active/discrimination-tree/pom.xml index 8d939bc5ad..874407f2d5 100644 --- a/algorithms/active/discrimination-tree/pom.xml +++ b/algorithms/active/discrimination-tree/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-active-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/AbstractDTLearner.java b/algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/AbstractDTLearner.java index cb34f0aab4..3a37bc0ceb 100644 --- a/algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/AbstractDTLearner.java +++ b/algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/AbstractDTLearner.java @@ -222,9 +222,14 @@ public void addAlphabetSymbol(I symbol) { final int newSymbolIdx = this.alphabet.size(); - this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); this.hypothesis.addAlphabetSymbol(symbol); + // since we share the alphabet instance with our hypothesis, our alphabet might have already been updated (if it + // was already a GrowableAlphabet) + if (!this.alphabet.containsSymbol(symbol)) { + this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); + } + for (final HState s : this.hypothesis.getStates()) { final HTransition newTrans = new HTransition<>(s, symbol, dtree.getRoot()); s.setTransition(newSymbolIdx, newTrans); diff --git a/algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/hypothesis/DTLearnerHypothesis.java b/algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/hypothesis/DTLearnerHypothesis.java index 41c5d30357..d43ece67ee 100644 --- a/algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/hypothesis/DTLearnerHypothesis.java +++ b/algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/hypothesis/DTLearnerHypothesis.java @@ -31,7 +31,6 @@ import net.automatalib.visualization.DefaultVisualizationHelper; import net.automatalib.visualization.VisualizationHelper; import net.automatalib.words.Alphabet; -import net.automatalib.words.GrowingAlphabet; import net.automatalib.words.Word; import net.automatalib.words.impl.Alphabets; @@ -132,8 +131,8 @@ public HState getSuccessor(HTransition trans) { @Override public void addAlphabetSymbol(I symbol) { - if (this.alphabet instanceof GrowingAlphabet) { - ((GrowingAlphabet) this.alphabet).addSymbol(symbol); + if (this.alphabet.containsSymbol(symbol)) { + return; } this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); diff --git a/algorithms/active/kearns-vazirani/pom.xml b/algorithms/active/kearns-vazirani/pom.xml index 0f26aa2513..5a2b08875c 100644 --- a/algorithms/active/kearns-vazirani/pom.xml +++ b/algorithms/active/kearns-vazirani/pom.xml @@ -20,7 +20,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.13.0 + 0.13.1 ../pom.xml learnlib-kearns-vazirani diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/dfa/KearnsVaziraniDFA.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/dfa/KearnsVaziraniDFA.java index fc9caad445..fcb51cf787 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/dfa/KearnsVaziraniDFA.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/dfa/KearnsVaziraniDFA.java @@ -267,9 +267,14 @@ public void addAlphabetSymbol(I symbol) { } final int inputIdx = this.alphabet.size(); - this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); this.hypothesis.addAlphabetSymbol(symbol); + // since we share the alphabet instance with our hypothesis, our alphabet might have already been updated (if it + // was already a GrowableAlphabet) + if (!this.alphabet.containsSymbol(symbol)) { + this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); + } + // use new list to prevent concurrent modification exception for (final StateInfo si : new ArrayList<>(this.stateInfos)) { final int state = si.id; diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/dfa/KearnsVaziraniDFAState.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/dfa/KearnsVaziraniDFAState.java index 421310b9fa..5ec0a18220 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/dfa/KearnsVaziraniDFAState.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/dfa/KearnsVaziraniDFAState.java @@ -30,7 +30,7 @@ * * @author bainczyk */ -class KearnsVaziraniDFAState implements Serializable { +public class KearnsVaziraniDFAState implements Serializable { private final CompactDFA hypothesis; private final BinaryDTree> discriminationTree; diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/mealy/KearnsVaziraniMealy.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/mealy/KearnsVaziraniMealy.java index a1a36620e8..74e0902b43 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/mealy/KearnsVaziraniMealy.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/mealy/KearnsVaziraniMealy.java @@ -283,9 +283,14 @@ public void addAlphabetSymbol(I symbol) { } final int inputIdx = this.alphabet.size(); - this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); this.hypothesis.addAlphabetSymbol(symbol); + // since we share the alphabet instance with our hypothesis, our alphabet might have already been updated (if it + // was already a GrowableAlphabet) + if (!this.alphabet.containsSymbol(symbol)) { + this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); + } + // use new list to prevent concurrent modification exception for (final StateInfo> si : new ArrayList<>(this.stateInfos)) { final int state = si.id; diff --git a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/mealy/KearnsVaziraniMealyState.java b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/mealy/KearnsVaziraniMealyState.java index eba16b9840..8b59a4cc01 100644 --- a/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/mealy/KearnsVaziraniMealyState.java +++ b/algorithms/active/kearns-vazirani/src/main/java/de/learnlib/algorithms/kv/mealy/KearnsVaziraniMealyState.java @@ -33,7 +33,7 @@ * * @author bainczyk */ -class KearnsVaziraniMealyState implements Serializable { +public class KearnsVaziraniMealyState implements Serializable { private final CompactMealy hypothesis; private final AbstractWordBasedDiscriminationTree, StateInfo>> discriminationTree; diff --git a/algorithms/active/lstar/pom.xml b/algorithms/active/lstar/pom.xml index 4565d2b968..ab86d1644b 100644 --- a/algorithms/active/lstar/pom.xml +++ b/algorithms/active/lstar/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-active-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractAutomatonLStar.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractAutomatonLStar.java index ed65ffbb04..d68b6043fb 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractAutomatonLStar.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractAutomatonLStar.java @@ -28,6 +28,7 @@ import net.automatalib.automata.MutableDeterministic; import net.automatalib.commons.util.collections.CollectionsUtil; import net.automatalib.words.Alphabet; +import net.automatalib.words.impl.SymbolHidingAlphabet; /** * Abstract base class for algorithms that produce (subclasses of) {@link MutableDeterministic} automata. @@ -63,7 +64,7 @@ public abstract class AbstractAutomatonLStar alphabet, MembershipOracle oracle, AI internalHyp) { - super(alphabet, oracle); + super(SymbolHidingAlphabet.wrapIfMutable(alphabet), oracle); this.internalHyp = internalHyp; internalHyp.clear(); } @@ -191,8 +192,10 @@ public void addAlphabetSymbol(I symbol) { return; } - super.addAlphabetSymbol(symbol); this.internalHyp.addAlphabetSymbol(symbol); + + SymbolHidingAlphabet.runWhileHiding(alphabet, symbol, () -> super.addAlphabetSymbol(symbol)); + this.updateInternalHypothesis(); } diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractLStar.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractLStar.java index 1e9493cb0b..0af041d97b 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractLStar.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractLStar.java @@ -232,10 +232,14 @@ public void addAlphabetSymbol(I symbol) { return; } - this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); - final List>> unclosed = this.table.addAlphabetSymbol(symbol, oracle); + // since we share the alphabet instance with our observation table, our alphabet might have already been updated + // (if it was already a GrowableAlphabet) + if (!this.alphabet.containsSymbol(symbol)) { + this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); + } + completeConsistentTable(unclosed, true); } } diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractLStarState.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractLStarState.java index 4f268fe65e..7a6b9418af 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractLStarState.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AbstractLStarState.java @@ -33,7 +33,7 @@ public abstract class AbstractLStarState implements Serializable { private final GenericObservationTable observationTable; - public AbstractLStarState(final GenericObservationTable observationTable) { + AbstractLStarState(final GenericObservationTable observationTable) { this.observationTable = observationTable; } diff --git a/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AutomatonLStarState.java b/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AutomatonLStarState.java index d63a678ade..8ad48478dd 100644 --- a/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AutomatonLStarState.java +++ b/algorithms/active/lstar/src/main/java/de/learnlib/algorithms/lstar/AutomatonLStarState.java @@ -40,9 +40,9 @@ public class AutomatonLStarState extends AbstractLStarState { private final AI hypothesis; private final List> stateInfos; - public AutomatonLStarState(final GenericObservationTable observationTable, - final AI hypothesis, - final List> stateInfos) { + AutomatonLStarState(final GenericObservationTable observationTable, + final AI hypothesis, + final List> stateInfos) { super(observationTable); this.hypothesis = hypothesis; this.stateInfos = stateInfos; diff --git a/algorithms/active/nlstar/pom.xml b/algorithms/active/nlstar/pom.xml index 34529a8574..124978483b 100644 --- a/algorithms/active/nlstar/pom.xml +++ b/algorithms/active/nlstar/pom.xml @@ -20,7 +20,7 @@ limitations under the License. de.learnlib learnlib-algorithms-active-parent - 0.13.0 + 0.13.1 LearnLib :: Algorithms :: NL* learnlib-nlstar diff --git a/algorithms/active/pom.xml b/algorithms/active/pom.xml index c2da98e796..a9653ce25b 100644 --- a/algorithms/active/pom.xml +++ b/algorithms/active/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/active/ttt-vpda/pom.xml b/algorithms/active/ttt-vpda/pom.xml index 48e22d71cd..cf2daf847c 100644 --- a/algorithms/active/ttt-vpda/pom.xml +++ b/algorithms/active/ttt-vpda/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-active-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/active/ttt/pom.xml b/algorithms/active/ttt/pom.xml index 1424df3706..71d3e2e498 100644 --- a/algorithms/active/ttt/pom.xml +++ b/algorithms/active/ttt/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-active-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/base/AbstractTTTLearner.java b/algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/base/AbstractTTTLearner.java index 880ca1f894..e265e09a38 100644 --- a/algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/base/AbstractTTTLearner.java +++ b/algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/base/AbstractTTTLearner.java @@ -949,9 +949,14 @@ public void addAlphabetSymbol(I symbol) { final int newSymbolIdx = this.alphabet.size(); - this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); this.hypothesis.addAlphabetSymbol(symbol); + // since we share the alphabet instance with our hypothesis, our alphabet might have already been updated (if it + // was already a GrowableAlphabet) + if (!this.alphabet.containsSymbol(symbol)) { + this.alphabet = Alphabets.withNewSymbol(this.alphabet, symbol); + } + for (final TTTState s : this.hypothesis.getStates()) { final TTTTransition trans = createTransition(s, symbol); trans.setNonTreeTarget(dtree.getRoot()); diff --git a/algorithms/passive/pom.xml b/algorithms/passive/pom.xml index 2e97a5d75f..47f483a8d7 100644 --- a/algorithms/passive/pom.xml +++ b/algorithms/passive/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/passive/rpni-edsm/pom.xml b/algorithms/passive/rpni-edsm/pom.xml index a9560d3a75..c81b986d6e 100644 --- a/algorithms/passive/rpni-edsm/pom.xml +++ b/algorithms/passive/rpni-edsm/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-passive-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/passive/rpni-mdl/pom.xml b/algorithms/passive/rpni-mdl/pom.xml index 773b2478ce..755a51262e 100644 --- a/algorithms/passive/rpni-mdl/pom.xml +++ b/algorithms/passive/rpni-mdl/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-passive-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/passive/rpni/pom.xml b/algorithms/passive/rpni/pom.xml index 2abc6bc323..2068feca23 100644 --- a/algorithms/passive/rpni/pom.xml +++ b/algorithms/passive/rpni/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-algorithms-passive-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/algorithms/pom.xml b/algorithms/pom.xml index bf16efa7d0..686a169ccf 100644 --- a/algorithms/pom.xml +++ b/algorithms/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-build-parent de.learnlib - 0.13.0 + 0.13.1 ../build-parent/pom.xml diff --git a/api/pom.xml b/api/pom.xml index b0e48c9ff4..ebf60c1e05 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -21,7 +21,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.13.0 + 0.13.1 ../build-parent/pom.xml diff --git a/archetypes/basic/pom.xml b/archetypes/basic/pom.xml index 827dc6f61a..cd4c43efad 100644 --- a/archetypes/basic/pom.xml +++ b/archetypes/basic/pom.xml @@ -27,7 +27,7 @@ limitations under the License. de.learnlib.archetypes learnlib-archetypes-parent - 0.13.0 + 0.13.1 ../pom.xml diff --git a/archetypes/complete/pom.xml b/archetypes/complete/pom.xml index a7b496adbd..cbed117de2 100644 --- a/archetypes/complete/pom.xml +++ b/archetypes/complete/pom.xml @@ -27,7 +27,7 @@ limitations under the License. de.learnlib.archetypes learnlib-archetypes-parent - 0.13.0 + 0.13.1 ../pom.xml diff --git a/archetypes/pom.xml b/archetypes/pom.xml index 72d09bc1b2..3d64afea06 100644 --- a/archetypes/pom.xml +++ b/archetypes/pom.xml @@ -28,7 +28,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.13.0 + 0.13.1 ../build-parent/pom.xml diff --git a/build-parent/pom.xml b/build-parent/pom.xml index dd786bd0b3..b496ab0083 100644 --- a/build-parent/pom.xml +++ b/build-parent/pom.xml @@ -30,7 +30,7 @@ limitations under the License. de.learnlib learnlib-parent - 0.13.0 + 0.13.1 ../pom.xml diff --git a/build-tools/pom.xml b/build-tools/pom.xml index 5256056f13..13a407b42a 100644 --- a/build-tools/pom.xml +++ b/build-tools/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/commons/acex/pom.xml b/commons/acex/pom.xml index 21da6a13f1..dfd80e677f 100644 --- a/commons/acex/pom.xml +++ b/commons/acex/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-commons-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/commons/counterexamples/pom.xml b/commons/counterexamples/pom.xml index 4ec4cb94f4..7f7201fd5b 100644 --- a/commons/counterexamples/pom.xml +++ b/commons/counterexamples/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-commons-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/commons/pom.xml b/commons/pom.xml index 3a192c565f..19a7ae9788 100644 --- a/commons/pom.xml +++ b/commons/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-build-parent de.learnlib - 0.13.0 + 0.13.1 ../build-parent/pom.xml diff --git a/commons/settings/pom.xml b/commons/settings/pom.xml index d4a30adfe2..9d50ceb028 100644 --- a/commons/settings/pom.xml +++ b/commons/settings/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-commons-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/commons/util/pom.xml b/commons/util/pom.xml index a559a61e74..4dcef41ff5 100644 --- a/commons/util/pom.xml +++ b/commons/util/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-commons-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/commons/util/src/main/java/de/learnlib/util/statistics/SimpleProfiler.java b/commons/util/src/main/java/de/learnlib/util/statistics/SimpleProfiler.java index f923235981..1b914671d6 100644 --- a/commons/util/src/main/java/de/learnlib/util/statistics/SimpleProfiler.java +++ b/commons/util/src/main/java/de/learnlib/util/statistics/SimpleProfiler.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package de.learnlib.util.statistics; import java.util.Map; @@ -34,7 +33,6 @@ public final class SimpleProfiler { private static final Map CUMULATED = new ConcurrentHashMap<>(); private static final Map PENDING = new ConcurrentHashMap<>(); - private static final boolean PROFILE = true; private static final LearnLogger LOGGER = LearnLogger.getLogger(SimpleProfiler.class.getName()); private static final double MILLISECONDS_PER_SECOND = 1000.0; @@ -43,7 +41,7 @@ private SimpleProfiler() { } /** - * reset internal data. + * Reset internal data. */ public static void reset() { CUMULATED.clear(); @@ -51,40 +49,46 @@ public static void reset() { } /** - * start activity. + * Start the timer identified by the given key. + * + * @param name + * The name of the timer to be started. */ public static void start(String name) { - if (!PROFILE) { - return; - } - long start = System.currentTimeMillis(); - - PENDING.put(name, start); - + PENDING.put(name, System.currentTimeMillis()); } /** - * stop activity. + * Stop the timer identified by the given key. After stopping a timer, the time passed from its + * {@link #start(String) initialization} will be added to the cumulated time of the specific timer. + * + * @param name + * The name of the timer to be stopped. */ public static void stop(String name) { - if (!PROFILE) { - return; - } Long start = PENDING.remove(name); if (start == null) { return; } long duration = System.currentTimeMillis() - start; - Counter sum = CUMULATED.get(name); - if (sum == null) { - sum = new Counter(name, "ms"); - } + Counter sum = CUMULATED.computeIfAbsent(name, k -> new Counter(k, "ms")); sum.increment(duration); - CUMULATED.put(name, sum); } /** - * get profiling results as string. + * Return the counter for the cumulated (passed) time of the given timer. + * + * @param name + * The name of the timer to be returned. + * + * @return The counter for tracking the passed milliseconds of the timer + */ + public static Counter cumulated(String name) { + return CUMULATED.get(name); + } + + /** + * Get profiling results as string. */ @Nonnull public static String getResults() { @@ -100,7 +104,7 @@ public static String getResults() { } /** - * log results in category PROFILING. + * Log results in category PROFILING. */ public static void logResults() { for (Entry e : CUMULATED.entrySet()) { diff --git a/datastructures/discrimination-tree/pom.xml b/datastructures/discrimination-tree/pom.xml index a34b9efb7a..e6297ad84b 100644 --- a/datastructures/discrimination-tree/pom.xml +++ b/datastructures/discrimination-tree/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-datastructures-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/datastructures/list/pom.xml b/datastructures/list/pom.xml index 7181a311ea..dabdccf9c2 100644 --- a/datastructures/list/pom.xml +++ b/datastructures/list/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-datastructures-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/datastructures/observation-table/pom.xml b/datastructures/observation-table/pom.xml index 9cbd390944..1ed5fcd8dd 100644 --- a/datastructures/observation-table/pom.xml +++ b/datastructures/observation-table/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-datastructures-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/datastructures/pom.xml b/datastructures/pom.xml index ce4b9cc9fe..39a6c92c97 100644 --- a/datastructures/pom.xml +++ b/datastructures/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-build-parent de.learnlib - 0.13.0 + 0.13.1 ../build-parent/pom.xml diff --git a/datastructures/pta/pom.xml b/datastructures/pta/pom.xml index 352a3e2fad..a55afa3ff8 100644 --- a/datastructures/pta/pom.xml +++ b/datastructures/pta/pom.xml @@ -22,7 +22,7 @@ limitations under the License. learnlib-datastructures-parent de.learnlib - 0.13.0 + 0.13.1 ../pom.xml diff --git a/distribution/pom.xml b/distribution/pom.xml index 6e514826d7..efd3dfb1a3 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -20,7 +20,7 @@ limitations under the License. de.learnlib learnlib-build-parent - 0.13.0 + 0.13.1 ../build-parent/pom.xml @@ -29,6 +29,13 @@ limitations under the License. pom LearnLib :: Distribution + + An artifact that aggregates all other artifacts of LearnLib to produce an Uber-JAR that can be used in + non-maven environments. Likewise, this single artifact may be used in maven-aware environments to declare a + dependency on all LearnLib artifacts. + + + de.learnlib learnlib-parent - 0.13.0 + 0.13.1 pom LearnLib http://learnlib.github.io/learnlib/maven-site/${project.version} @@ -129,7 +129,7 @@ limitations under the License. scm:git:git@github.com:LearnLib/learnlib.git scm:git:git@github.com:LearnLib/learnlib.git https://github.com/LearnLib/learnlib/tree/develop - learnlib-0.13.0 + learnlib-0.13.1 - 0.7.0 + 0.7.1 0.1 8.1 3.0.2 @@ -410,14 +410,6 @@ limitations under the License. - - - - org.apache.maven.wagon - wagon-ssh - 2.6 - -