diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java index c5c73e470..9b743ab37 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java @@ -1,7 +1,10 @@ package org.zkoss.ganttz.util.script; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -49,4 +52,59 @@ public class ScriptDependenciesSorter { return result; } + public static List extractFrom(Class classWithScripts) { + ScriptsRequiredDeclaration annotation = classWithScripts + .getAnnotation(ScriptsRequiredDeclaration.class); + if (annotation == null) + throw new IllegalArgumentException(classWithScripts + + " must be annotated with " + + ScriptsRequiredDeclaration.class.getName()); + List dependsOn = getDependencies(annotation); + List result = new ArrayList(); + for (Field field : getStringFields(getStaticFields(classWithScripts + .getFields()))) { + result.add(new ScriptDependency(getValueFromStringField(field), + dependsOn)); + } + return result; + } + + static ArrayList getDependencies( + ScriptsRequiredDeclaration declaration) { + Class[] dependsOn = declaration.dependsOn(); + ArrayList result = new ArrayList(); + for (Class klass : dependsOn) { + result.addAll(extractFrom(klass)); + } + return result; + } + + static String getValueFromStringField(Field stringField) { + try { + return (String) stringField.get(null); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private static List getStaticFields(Field[] fields) { + List result = new ArrayList(); + for (Field field : fields) { + if (Modifier.isStatic(field.getModifiers())) { + result.add(field); + } + } + return result; + } + + static List getStringFields(Collection fields) { + List stringFields = new ArrayList(); + for (Field field : fields) { + if (field.getType().equals(String.class)) { + stringFields.add(field); + } + } + return stringFields; + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptExtractor.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptExtractor.java deleted file mode 100644 index e150727b7..000000000 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptExtractor.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.zkoss.ganttz.util.script; - -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -public class ScriptExtractor { - - public static List extractFrom(Class classWithScripts) { - ScriptsRequiredDeclaration annotation = classWithScripts - .getAnnotation(ScriptsRequiredDeclaration.class); - if (annotation == null) - throw new IllegalArgumentException(classWithScripts - + " must be annotated with " - + ScriptsRequiredDeclaration.class.getName()); - List dependsOn = getDependencies(annotation); - List result = new ArrayList(); - for (Field field : getStringFields(getStaticFields(classWithScripts - .getFields()))) { - result.add(new ScriptDependency(getValueFromStringField(field), - dependsOn)); - } - return result; - } - - private static ArrayList getDependencies( - ScriptsRequiredDeclaration declaration) { - Class[] dependsOn = declaration.dependsOn(); - ArrayList result = new ArrayList(); - for (Class klass : dependsOn) { - result.addAll(extractFrom(klass)); - } - return result; - } - - - private static String getValueFromStringField(Field stringField) { - try { - return (String) stringField.get(null); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private static List getStaticFields(Field[] fields) { - List result = new ArrayList(); - for (Field field : fields) { - if (Modifier.isStatic(field.getModifiers())) { - result.add(field); - } - } - return result; - } - - private static List getStringFields(Collection fields) { - List stringFields = new ArrayList(); - for (Field field : fields) { - if (field.getType().equals(String.class)) { - stringFields.add(field); - } - } - return stringFields; - } - -} diff --git a/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptExtractorTest.java b/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptExtractionTest.java similarity index 92% rename from ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptExtractorTest.java rename to ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptExtractionTest.java index 9afadbf57..f028fb8c0 100644 --- a/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptExtractorTest.java +++ b/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptExtractionTest.java @@ -15,16 +15,16 @@ import org.hamcrest.Description; import org.hamcrest.Matcher; import org.junit.Test; -public class ScriptExtractorTest { +public class ScriptExtractionTest { @Test(expected = IllegalArgumentException.class) public void aClassWithoutScriptRequiredAnnotationIsNotIncluded() { - ScriptExtractor.extractFrom(String.class); + ScriptDependenciesSorter.extractFrom(String.class); } @Test public void onlyPublicStringFieldsAreIncluded() { - List scripts = ScriptExtractor + List scripts = ScriptDependenciesSorter .extractFrom(ScriptsDeclarationsExample.class); assertThat(scripts.size(), equalTo(2)); assertThat(scripts, @@ -33,7 +33,7 @@ public class ScriptExtractorTest { @Test public void testIncludesDependencies() { - List scripts = ScriptExtractor + List scripts = ScriptDependenciesSorter .extractFrom(ScriptsDeclarationsExample.class); assertThat(scripts, each(withDependencies(ScriptIncludedExample.base, ScriptIncludedExample.other)));