diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..5c98b42 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000..386e077 Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..fd8bfea --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..15a15b2 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..5918b36 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..b8d198b --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__ch_qos_logback_logback_classic_1_1_2.xml b/.idea/libraries/Gradle__ch_qos_logback_logback_classic_1_1_2.xml new file mode 100644 index 0000000..47a8dd3 --- /dev/null +++ b/.idea/libraries/Gradle__ch_qos_logback_logback_classic_1_1_2.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__ch_qos_logback_logback_core_1_1_2.xml b/.idea/libraries/Gradle__ch_qos_logback_logback_core_1_1_2.xml new file mode 100644 index 0000000..4637511 --- /dev/null +++ b/.idea/libraries/Gradle__ch_qos_logback_logback_core_1_1_2.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_guava_guava_jdk5_13_0.xml b/.idea/libraries/Gradle__com_google_guava_guava_jdk5_13_0.xml new file mode 100644 index 0000000..54ed937 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_guava_guava_jdk5_13_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__junit_junit_4_12.xml b/.idea/libraries/Gradle__junit_junit_4_12.xml new file mode 100644 index 0000000..7104f8c --- /dev/null +++ b/.idea/libraries/Gradle__junit_junit_4_12.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__junit_junit_dep_4_10.xml b/.idea/libraries/Gradle__junit_junit_dep_4_10.xml new file mode 100644 index 0000000..c2d6895 --- /dev/null +++ b/.idea/libraries/Gradle__junit_junit_dep_4_10.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_codehaus_groovy_groovy_all_2_4_0.xml b/.idea/libraries/Gradle__org_codehaus_groovy_groovy_all_2_4_0.xml new file mode 100644 index 0000000..fd17d6a --- /dev/null +++ b/.idea/libraries/Gradle__org_codehaus_groovy_groovy_all_2_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..3d1348e --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml new file mode 100644 index 0000000..b3ed2ba --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml new file mode 100644 index 0000000..bee5237 --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_mockito_mockito_core_1_10_8.xml b/.idea/libraries/Gradle__org_mockito_mockito_core_1_10_8.xml new file mode 100644 index 0000000..3911a20 --- /dev/null +++ b/.idea/libraries/Gradle__org_mockito_mockito_core_1_10_8.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_objenesis_objenesis_2_1.xml b/.idea/libraries/Gradle__org_objenesis_objenesis_2_1.xml new file mode 100644 index 0000000..e6b52ad --- /dev/null +++ b/.idea/libraries/Gradle__org_objenesis_objenesis_2_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_slf4j_slf4j_api_1_7_6.xml b/.idea/libraries/Gradle__org_slf4j_slf4j_api_1_7_6.xml new file mode 100644 index 0000000..b4476b3 --- /dev/null +++ b/.idea/libraries/Gradle__org_slf4j_slf4j_api_1_7_6.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_spockframework_spock_core_0_7_groovy_2_0.xml b/.idea/libraries/Gradle__org_spockframework_spock_core_0_7_groovy_2_0.xml new file mode 100644 index 0000000..50e61a0 --- /dev/null +++ b/.idea/libraries/Gradle__org_spockframework_spock_core_0_7_groovy_2_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..84da703 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2ab88d3 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/hsm/hsm-java.hsm.iml b/.idea/modules/hsm/hsm-java.hsm.iml new file mode 100644 index 0000000..c4ebe8f --- /dev/null +++ b/.idea/modules/hsm/hsm-java.hsm.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/hsm/hsm-java.hsm.main.iml b/.idea/modules/hsm/hsm-java.hsm.main.iml new file mode 100644 index 0000000..4f4ccf3 --- /dev/null +++ b/.idea/modules/hsm/hsm-java.hsm.main.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/hsm/hsm-java.hsm.test.iml b/.idea/modules/hsm/hsm-java.hsm.test.iml new file mode 100644 index 0000000..c328677 --- /dev/null +++ b/.idea/modules/hsm/hsm-java.hsm.test.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/hsm/module_hsm-java.hsm.main.xml b/.idea/modules/hsm/module_hsm-java.hsm.main.xml new file mode 100644 index 0000000..8555b58 --- /dev/null +++ b/.idea/modules/hsm/module_hsm-java.hsm.main.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/hsm/module_hsm-java.hsm.test.xml b/.idea/modules/hsm/module_hsm-java.hsm.test.xml new file mode 100644 index 0000000..f0b08d8 --- /dev/null +++ b/.idea/modules/hsm/module_hsm-java.hsm.test.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/hsm/module_hsm-java.hsm.xml b/.idea/modules/hsm/module_hsm-java.hsm.xml new file mode 100644 index 0000000..a912190 --- /dev/null +++ b/.idea/modules/hsm/module_hsm-java.hsm.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/tests/hsm-java.tests.iml b/.idea/modules/tests/hsm-java.tests.iml new file mode 100644 index 0000000..d84bb46 --- /dev/null +++ b/.idea/modules/tests/hsm-java.tests.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/tests/hsm-java.tests.main.iml b/.idea/modules/tests/hsm-java.tests.main.iml new file mode 100644 index 0000000..7a8685d --- /dev/null +++ b/.idea/modules/tests/hsm-java.tests.main.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/tests/hsm-java.tests.test.iml b/.idea/modules/tests/hsm-java.tests.test.iml new file mode 100644 index 0000000..caaed06 --- /dev/null +++ b/.idea/modules/tests/hsm-java.tests.test.iml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/tests/module_hsm-java.tests.main.xml b/.idea/modules/tests/module_hsm-java.tests.main.xml new file mode 100644 index 0000000..16fd6c2 --- /dev/null +++ b/.idea/modules/tests/module_hsm-java.tests.main.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/tests/module_hsm-java.tests.test.xml b/.idea/modules/tests/module_hsm-java.tests.test.xml new file mode 100644 index 0000000..1448da1 --- /dev/null +++ b/.idea/modules/tests/module_hsm-java.tests.test.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/tests/module_hsm-java.tests.xml b/.idea/modules/tests/module_hsm-java.tests.xml new file mode 100644 index 0000000..e399753 --- /dev/null +++ b/.idea/modules/tests/module_hsm-java.tests.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index ce22f1e..f173ca8 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,9 @@ task wrapper(type: Wrapper) { allprojects { repositories { - mavenCentral() + jcenter() + google() + mavenLocal() } } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 667288a..758de96 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bb8c6ae..2d80b69 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Mon Feb 23 09:41:19 CET 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip diff --git a/gradlew b/gradlew index 91a7e26..cccdd3d 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,20 +6,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index aec9973..e95643d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/hsm-java.iml b/hsm-java.iml new file mode 100644 index 0000000..4da3820 --- /dev/null +++ b/hsm-java.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/hsm/build.gradle b/hsm/build.gradle index 82918bd..647a6b7 100644 --- a/hsm/build.gradle +++ b/hsm/build.gradle @@ -30,7 +30,7 @@ publishing { } dependencies { - compile 'org.slf4j:slf4j-api:1.7.3' +// compile 'org.slf4j:slf4j-api:1.7.3' /* compile 'com.google.guava:guava:17.0' */ compile 'com.google.guava:guava-jdk5:13.0' } diff --git a/hsm/src/main/java/de/artcom/hsm/ILogger.java b/hsm/src/main/java/de/artcom/hsm/ILogger.java new file mode 100644 index 0000000..90935ba --- /dev/null +++ b/hsm/src/main/java/de/artcom/hsm/ILogger.java @@ -0,0 +1,5 @@ +package de.artcom.hsm; + +public interface ILogger { + void debug(String message); +} diff --git a/hsm/src/main/java/de/artcom/hsm/State.java b/hsm/src/main/java/de/artcom/hsm/State.java index 25cb78e..6e1dbf8 100644 --- a/hsm/src/main/java/de/artcom/hsm/State.java +++ b/hsm/src/main/java/de/artcom/hsm/State.java @@ -1,19 +1,24 @@ package de.artcom.hsm; -import com.google.common.collect.LinkedListMultimap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import com.google.common.collect.LinkedListMultimap; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; public class State> { - final static Logger LOGGER = LoggerFactory.getLogger(State.class); + ILogger LOGGER = new ILogger() { + @Override + public void debug(String message) { + Logger.getAnonymousLogger().log(Level.INFO,message); + } + }; private final String mId; private Action mOnEnterAction; @@ -29,7 +34,10 @@ public State(String id) { mHandlers = LinkedListMultimap.create(); mId = id; } - + public void setLogger(ILogger log) + { + LOGGER = log; + } public T onEnter(Action onEnterAction) { mOnEnterAction = onEnterAction; return getThis(); diff --git a/hsm/src/main/java/de/artcom/hsm/StateMachine.java b/hsm/src/main/java/de/artcom/hsm/StateMachine.java index 4f13b3a..770d2d5 100644 --- a/hsm/src/main/java/de/artcom/hsm/StateMachine.java +++ b/hsm/src/main/java/de/artcom/hsm/StateMachine.java @@ -1,8 +1,8 @@ package de.artcom.hsm; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import java.io.Console; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -12,10 +12,17 @@ import java.util.Queue; import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.logging.Level; +import java.util.logging.Logger; public class StateMachine implements EventHandler { - final static Logger LOGGER = LoggerFactory.getLogger(StateMachine.class); + ILogger LOGGER = new ILogger() { + @Override + public void debug(String message) { + Logger.getAnonymousLogger().log(Level.INFO,message); + } + }; private final List mStateList = new ArrayList(); private final List mDescendantStateList = new ArrayList(); @@ -26,7 +33,7 @@ public class StateMachine implements EventHandler { private boolean mEventQueueInProgress = false; private final List mPath = new ArrayList(); private State mContainer; - + private ILogger logger; public StateMachine(String name, State initialState, State... states) { this(initialState, states); mName = name; @@ -42,6 +49,10 @@ public StateMachine(State initialState, State... states) { mName = ""; } + public void setLogger(ILogger log) + { + LOGGER = log; + } void setContainer(State container) { mContainer = container; } diff --git a/tests/build.gradle b/tests/build.gradle index a0f22e7..84e5cc7 100644 --- a/tests/build.gradle +++ b/tests/build.gradle @@ -29,4 +29,5 @@ dependencies { testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.8' + } diff --git a/tests/src/test/java/de/artcom/hsm/test/CustomLogStateMachineTest.java b/tests/src/test/java/de/artcom/hsm/test/CustomLogStateMachineTest.java new file mode 100644 index 0000000..389df14 --- /dev/null +++ b/tests/src/test/java/de/artcom/hsm/test/CustomLogStateMachineTest.java @@ -0,0 +1,44 @@ +package de.artcom.hsm.test; + +import de.artcom.hsm.*; +import de.artcom.hsm.test.helper.Logger; +import groovy.util.logging.Log; +import org.junit.Assert; +import org.junit.Test; +import org.mockito.InOrder; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; +import static org.mockito.Mockito.*; + +public class CustomLogStateMachineTest { + + + + @Test + public void getAllActiveStates() { + // given: + ILogger log = new Logger(); + State a11 = new State("a11"); + State a22 = new State("a22"); + State a33 = new State("a33"); + Parallel a1 = new Parallel("a1", new StateMachine(a11), new StateMachine(a22, a33)); + Sub a = new Sub("a", a1); + a11.setLogger(log); + StateMachine sm = new StateMachine(a); + sm.setLogger(log); + sm.init(); + + // when: + List allActiveStates = sm.getAllActiveStates(); + + // then: + assertThat(allActiveStates, hasItems(a, a1, a11, a22)); + assertThat(allActiveStates, not(hasItems(a33))); + } + +} diff --git a/tests/src/test/java/de/artcom/hsm/test/helper/Logger.java b/tests/src/test/java/de/artcom/hsm/test/helper/Logger.java new file mode 100644 index 0000000..e3ff64e --- /dev/null +++ b/tests/src/test/java/de/artcom/hsm/test/helper/Logger.java @@ -0,0 +1,14 @@ +package de.artcom.hsm.test.helper; + +import de.artcom.hsm.ILogger; + +import java.util.logging.Level; + +public class Logger implements ILogger { + + + @Override + public void debug(String message) { + java.util.logging.Logger.getAnonymousLogger().log(Level.ALL,message); + } +}