diff --git a/pom.xml b/pom.xml index 00ff97c..2a02de4 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,11 @@ javax.servlet-api 3.0.1 + + org.slf4j + slf4j-api + 1.7.25 + diff --git a/src/main/java/io/asfjava/ui/core/FormDefinitionGeneratorFactory.java b/src/main/java/io/asfjava/ui/core/FormDefinitionGeneratorFactory.java index 2ee2c3f..78bcb6b 100644 --- a/src/main/java/io/asfjava/ui/core/FormDefinitionGeneratorFactory.java +++ b/src/main/java/io/asfjava/ui/core/FormDefinitionGeneratorFactory.java @@ -16,15 +16,15 @@ void register(String annotationName, FormDefinitionGenerator generator) { } public static FormDefinitionGeneratorFactory getInstance() { - if (INSTANCE == null) { - INSTANCE = new FormDefinitionGeneratorFactory(); + if (instance == null) { + instance = new FormDefinitionGeneratorFactory(); } - return INSTANCE; + return instance; } private static final Map GENERATORS = new ConcurrentHashMap<>(); - private static FormDefinitionGeneratorFactory INSTANCE; + private static FormDefinitionGeneratorFactory instance; private FormDefinitionGeneratorFactory() { } diff --git a/src/main/java/io/asfjava/ui/core/GeneratorFactoryInitializer.java b/src/main/java/io/asfjava/ui/core/GeneratorFactoryInitializer.java index 09de369..6acd17e 100644 --- a/src/main/java/io/asfjava/ui/core/GeneratorFactoryInitializer.java +++ b/src/main/java/io/asfjava/ui/core/GeneratorFactoryInitializer.java @@ -15,6 +15,6 @@ public final void contextInitialized(final ServletContextEvent sce) { @Override public final void contextDestroyed(final ServletContextEvent sce) { - + //to implement it } } diff --git a/src/main/java/io/asfjava/ui/core/GeneratorFactoryLoader.java b/src/main/java/io/asfjava/ui/core/GeneratorFactoryLoader.java index 171fffe..37cc847 100644 --- a/src/main/java/io/asfjava/ui/core/GeneratorFactoryLoader.java +++ b/src/main/java/io/asfjava/ui/core/GeneratorFactoryLoader.java @@ -5,11 +5,12 @@ import org.reflections.Reflections; import io.asfjava.ui.core.generators.FormDefinitionGenerator; +import io.asfjava.ui.core.logging.ASFUILogger; +import static io.asfjava.ui.core.logging.ErrorCode.*; final class GeneratorFactoryLoader { private static final String PACKAGESCAN = "io.asfjava.ui.core.generators"; private static Reflections reflections = new Reflections(PACKAGESCAN); - void load() { Set> subTypes = reflections @@ -20,12 +21,8 @@ void load() { formDefinitionGenerator = (FormDefinitionGenerator) Class.forName(subtype.getName()).newInstance(); FormDefinitionGeneratorFactory.getInstance().register(formDefinitionGenerator.getAnnoation(), formDefinitionGenerator); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { - e.printStackTrace(); + } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { + ASFUILogger.getLogger().error(ASF01, e); } } } @@ -35,12 +32,12 @@ void unload() { } static GeneratorFactoryLoader getInstance() { - if (INSTANCE == null) - INSTANCE = new GeneratorFactoryLoader(); - return INSTANCE; + if (instance == null) + instance = new GeneratorFactoryLoader(); + return instance; } - private static GeneratorFactoryLoader INSTANCE; + private static GeneratorFactoryLoader instance; private GeneratorFactoryLoader() { } diff --git a/src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java b/src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java index f9973b3..11dea08 100644 --- a/src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java +++ b/src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java @@ -3,27 +3,27 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import io.asfjava.ui.schema.decorator.SchemaDecorator; +import io.asfjava.ui.core.schema.decorator.SchemaDecorator; public final class SchemaDecoratorFactory { public SchemaDecorator getGenerator(String annotationName) { - return GENERATORS.get(annotationName); + return decorators.get(annotationName); } void register(String annotationName, SchemaDecorator generator) { - GENERATORS.put(annotationName, generator); + decorators.put(annotationName, generator); } public static SchemaDecoratorFactory getInstance() { - if (INSTANCE == null) { - INSTANCE = new SchemaDecoratorFactory(); + if (instance == null) { + instance = new SchemaDecoratorFactory(); } - return INSTANCE; + return instance; } - private static final Map GENERATORS = new ConcurrentHashMap<>(); + private static final Map decorators = new ConcurrentHashMap<>(); - private static SchemaDecoratorFactory INSTANCE; + private static SchemaDecoratorFactory instance; private SchemaDecoratorFactory() { } diff --git a/src/main/java/io/asfjava/ui/core/SchemaDecoratorLoader.java b/src/main/java/io/asfjava/ui/core/SchemaDecoratorLoader.java index 8e8ee86..67b8f65 100644 --- a/src/main/java/io/asfjava/ui/core/SchemaDecoratorLoader.java +++ b/src/main/java/io/asfjava/ui/core/SchemaDecoratorLoader.java @@ -1,33 +1,29 @@ package io.asfjava.ui.core; +import static io.asfjava.ui.core.logging.ErrorCode.ASF02; + import java.util.Set; import org.reflections.Reflections; -import io.asfjava.ui.schema.decorator.SchemaDecorator; - - +import io.asfjava.ui.core.logging.ASFUILogger; +import io.asfjava.ui.core.schema.decorator.SchemaDecorator; final class SchemaDecoratorLoader { private static final String PACKAGESCAN = "io.asfjava.ui.schema.decorator"; private static Reflections reflections = new Reflections(PACKAGESCAN); + void load() { - Set> subTypes = reflections - .getSubTypesOf(SchemaDecorator.class); + Set> subTypes = reflections.getSubTypesOf(SchemaDecorator.class); for (Class subtype : subTypes) { SchemaDecorator schemaDecorator; try { schemaDecorator = (SchemaDecorator) Class.forName(subtype.getName()).newInstance(); - SchemaDecoratorFactory.getInstance().register(schemaDecorator.getAnnotation(), - schemaDecorator); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { - e.printStackTrace(); + SchemaDecoratorFactory.getInstance().register(schemaDecorator.getAnnotation(), schemaDecorator); + } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { + ASFUILogger.getLogger().error(ASF02, e); } } } diff --git a/src/main/java/io/asfjava/ui/core/generators/CheckBoxGenerator.java b/src/main/java/io/asfjava/ui/core/generators/CheckBoxGenerator.java index 8a9cf31..c65a011 100644 --- a/src/main/java/io/asfjava/ui/core/generators/CheckBoxGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/CheckBoxGenerator.java @@ -10,6 +10,7 @@ import io.asfjava.ui.core.form.CheckBox; import io.asfjava.ui.core.form.ValuesContainer; +import io.asfjava.ui.core.logging.ASFUILogger; public class CheckBoxGenerator implements FormDefinitionGenerator { @@ -20,8 +21,6 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { fieldFormDefinition.put("type", "checkboxes"); fieldFormDefinition.put("multiple", annotation.multiple()); fieldFormDefinition.put("required", annotation.required()); -// fieldFormDefinition.put("title", annotation.title()); - ObjectMapper checkBoxMapper = new ObjectMapper(); ArrayNode titlesMap = checkBoxMapper.createArrayNode(); if (annotation.values().length > 0) { @@ -40,7 +39,7 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { }); fieldFormDefinition.set("titleMap", titlesMap); } catch (InstantiationException | IllegalAccessException e) { - e.printStackTrace(); + ASFUILogger.getLogger().error(e.getMessage()); } } } diff --git a/src/main/java/io/asfjava/ui/core/generators/ComboBoxGenerator.java b/src/main/java/io/asfjava/ui/core/generators/ComboBoxGenerator.java index 5d552b1..8811624 100644 --- a/src/main/java/io/asfjava/ui/core/generators/ComboBoxGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/ComboBoxGenerator.java @@ -10,6 +10,7 @@ import io.asfjava.ui.core.form.ComboBox; import io.asfjava.ui.core.form.ValuesContainer; +import io.asfjava.ui.core.logging.ASFUILogger; public class ComboBoxGenerator implements FormDefinitionGenerator { @@ -23,7 +24,6 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { fieldFormDefinition.put("multiple", annotation.multiple()); fieldFormDefinition.put("required", annotation.required()); fieldFormDefinition.put("size", annotation.size()); -// fieldFormDefinition.put("title", annotation.title()); ObjectMapper comboMapper = new ObjectMapper(); ArrayNode titlesMap = comboMapper.createArrayNode(); @@ -43,7 +43,7 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { }); fieldFormDefinition.set("titleMap", titlesMap); } catch (InstantiationException | IllegalAccessException e) { - e.printStackTrace(); + ASFUILogger.getLogger().error(e.getMessage()); } } diff --git a/src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java b/src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java index cd4cc65..047ba51 100644 --- a/src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java @@ -12,7 +12,6 @@ public class PasswordGenerator implements FormDefinitionGenerator { public void generate(ObjectNode fieldFormDefinition, Field field) { Password annotation = field.getAnnotation(Password.class); fieldFormDefinition.put("key", field.getName()); -// fieldFormDefinition.put("title", annotation.title()); fieldFormDefinition.put("type", "password"); String description = annotation.description(); diff --git a/src/main/java/io/asfjava/ui/core/generators/RadioBoxGenerator.java b/src/main/java/io/asfjava/ui/core/generators/RadioBoxGenerator.java index a0bde26..b3f9b51 100644 --- a/src/main/java/io/asfjava/ui/core/generators/RadioBoxGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/RadioBoxGenerator.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import io.asfjava.ui.core.form.RadioBox; +import io.asfjava.ui.core.logging.ASFUILogger; public class RadioBoxGenerator implements FormDefinitionGenerator { @@ -19,7 +20,6 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { fieldFormDefinition.put("key", field.getName()); fieldFormDefinition.put("readOnly", annotation.readOnly()); fieldFormDefinition.put("type", "radios"); -// fieldFormDefinition.put("title", annotation.title()); JsonNode radioFieldFormDefinition = ((JsonNode) fieldFormDefinition); @@ -40,8 +40,7 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { } } catch (InstantiationException | IllegalAccessException e) { - // TODO Log It into a Logger - e.printStackTrace(); + ASFUILogger.getLogger().error(e.getMessage()); } ((ObjectNode) radioFieldFormDefinition).set("titleMap", titlesMap); diff --git a/src/main/java/io/asfjava/ui/core/generators/TextAreaGenerator.java b/src/main/java/io/asfjava/ui/core/generators/TextAreaGenerator.java index 1dfdbcf..8d35d76 100644 --- a/src/main/java/io/asfjava/ui/core/generators/TextAreaGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/TextAreaGenerator.java @@ -12,7 +12,6 @@ public class TextAreaGenerator implements FormDefinitionGenerator { public void generate(ObjectNode fieldFormDefinition, Field field) { TextArea annotation = field.getAnnotation(TextArea.class); fieldFormDefinition.put("key", field.getName()); -// fieldFormDefinition.put("title", annotation.title()); fieldFormDefinition.put("type", "textarea"); String description = annotation.description(); diff --git a/src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java b/src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java index ddf2db9..236c549 100644 --- a/src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java @@ -13,8 +13,6 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { TextField annotation = field.getAnnotation(TextField.class); fieldFormDefinition.put("key", field.getName()); -// fieldFormDefinition.put("title", annotation.title()); - String description = annotation.description(); if (!description.isEmpty()) { fieldFormDefinition.put("description", description); @@ -45,7 +43,4 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { public String getAnnoation() { return TextField.class.getName(); } - - public TextFieldGenerator() { - } } diff --git a/src/main/java/io/asfjava/ui/core/logging/ASFUILogger.java b/src/main/java/io/asfjava/ui/core/logging/ASFUILogger.java new file mode 100644 index 0000000..bf448d4 --- /dev/null +++ b/src/main/java/io/asfjava/ui/core/logging/ASFUILogger.java @@ -0,0 +1,12 @@ +package io.asfjava.ui.core.logging; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class ASFUILogger { + + private final static Logger LOGGER=LoggerFactory.getLogger("ASFUILogger"); + public static Logger getLogger(){ + return LOGGER; + } +} diff --git a/src/main/java/io/asfjava/ui/core/logging/ErrorCode.java b/src/main/java/io/asfjava/ui/core/logging/ErrorCode.java new file mode 100644 index 0000000..244944c --- /dev/null +++ b/src/main/java/io/asfjava/ui/core/logging/ErrorCode.java @@ -0,0 +1,9 @@ +package io.asfjava.ui.core.logging; + +public final class ErrorCode { +public final static String ASF01="Failure when trying to load Generators"; +public final static String ASF02="Failure when trying to load Decorators"; +private ErrorCode(){ + +} +} diff --git a/src/main/java/io/asfjava/ui/core/schema/CustomStringSchema.java b/src/main/java/io/asfjava/ui/core/schema/CustomStringSchema.java index aacc9da..f666afa 100644 --- a/src/main/java/io/asfjava/ui/core/schema/CustomStringSchema.java +++ b/src/main/java/io/asfjava/ui/core/schema/CustomStringSchema.java @@ -11,11 +11,10 @@ class CustomStringSchema extends StringSchema { @Override public void enrichWithBeanProperty(BeanProperty beanProperty) { - super.enrichWithBeanProperty(beanProperty); + super.enrichWithBeanProperty(beanProperty); Iterable it = beanProperty.getMember().annotations(); String anno = it.iterator().next().annotationType().getName(); SchemaDecoratorFactory.getInstance().getGenerator(anno).customizeSchema(beanProperty, this); - } } diff --git a/src/main/java/io/asfjava/ui/schema/decorator/CheckBoxSchemaDecorator.java b/src/main/java/io/asfjava/ui/core/schema/decorator/CheckBoxSchemaDecorator.java similarity index 93% rename from src/main/java/io/asfjava/ui/schema/decorator/CheckBoxSchemaDecorator.java rename to src/main/java/io/asfjava/ui/core/schema/decorator/CheckBoxSchemaDecorator.java index ddb13e4..b0f1216 100644 --- a/src/main/java/io/asfjava/ui/schema/decorator/CheckBoxSchemaDecorator.java +++ b/src/main/java/io/asfjava/ui/core/schema/decorator/CheckBoxSchemaDecorator.java @@ -1,4 +1,4 @@ -package io.asfjava.ui.schema.decorator; +package io.asfjava.ui.core.schema.decorator; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.module.jsonSchema.JsonSchema; diff --git a/src/main/java/io/asfjava/ui/schema/decorator/ComboBoxSchemaDecorator.java b/src/main/java/io/asfjava/ui/core/schema/decorator/ComboBoxSchemaDecorator.java similarity index 93% rename from src/main/java/io/asfjava/ui/schema/decorator/ComboBoxSchemaDecorator.java rename to src/main/java/io/asfjava/ui/core/schema/decorator/ComboBoxSchemaDecorator.java index 3e8ca7a..2efb6e3 100644 --- a/src/main/java/io/asfjava/ui/schema/decorator/ComboBoxSchemaDecorator.java +++ b/src/main/java/io/asfjava/ui/core/schema/decorator/ComboBoxSchemaDecorator.java @@ -1,4 +1,4 @@ -package io.asfjava.ui.schema.decorator; +package io.asfjava.ui.core.schema.decorator; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.module.jsonSchema.JsonSchema; diff --git a/src/main/java/io/asfjava/ui/schema/decorator/PasswordSchemaDecorator.java b/src/main/java/io/asfjava/ui/core/schema/decorator/PasswordSchemaDecorator.java similarity index 93% rename from src/main/java/io/asfjava/ui/schema/decorator/PasswordSchemaDecorator.java rename to src/main/java/io/asfjava/ui/core/schema/decorator/PasswordSchemaDecorator.java index 10511cc..eba23ee 100644 --- a/src/main/java/io/asfjava/ui/schema/decorator/PasswordSchemaDecorator.java +++ b/src/main/java/io/asfjava/ui/core/schema/decorator/PasswordSchemaDecorator.java @@ -1,4 +1,4 @@ -package io.asfjava.ui.schema.decorator; +package io.asfjava.ui.core.schema.decorator; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.module.jsonSchema.JsonSchema; diff --git a/src/main/java/io/asfjava/ui/schema/decorator/RadioBoxSchemaDecorator.java b/src/main/java/io/asfjava/ui/core/schema/decorator/RadioBoxSchemaDecorator.java similarity index 88% rename from src/main/java/io/asfjava/ui/schema/decorator/RadioBoxSchemaDecorator.java rename to src/main/java/io/asfjava/ui/core/schema/decorator/RadioBoxSchemaDecorator.java index b0d3f4c..c4d2b77 100644 --- a/src/main/java/io/asfjava/ui/schema/decorator/RadioBoxSchemaDecorator.java +++ b/src/main/java/io/asfjava/ui/core/schema/decorator/RadioBoxSchemaDecorator.java @@ -1,10 +1,9 @@ -package io.asfjava.ui.schema.decorator; +package io.asfjava.ui.core.schema.decorator; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.module.jsonSchema.JsonSchema; import com.fasterxml.jackson.module.jsonSchema.types.StringSchema; -import io.asfjava.ui.core.form.Password; import io.asfjava.ui.core.form.RadioBox; public class RadioBoxSchemaDecorator implements SchemaDecorator { diff --git a/src/main/java/io/asfjava/ui/schema/decorator/SchemaDecorator.java b/src/main/java/io/asfjava/ui/core/schema/decorator/SchemaDecorator.java similarity index 84% rename from src/main/java/io/asfjava/ui/schema/decorator/SchemaDecorator.java rename to src/main/java/io/asfjava/ui/core/schema/decorator/SchemaDecorator.java index 8039412..46ffc54 100644 --- a/src/main/java/io/asfjava/ui/schema/decorator/SchemaDecorator.java +++ b/src/main/java/io/asfjava/ui/core/schema/decorator/SchemaDecorator.java @@ -1,4 +1,4 @@ -package io.asfjava.ui.schema.decorator; +package io.asfjava.ui.core.schema.decorator; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.module.jsonSchema.JsonSchema; diff --git a/src/main/java/io/asfjava/ui/schema/decorator/TextAreaSchemaDecorator.java b/src/main/java/io/asfjava/ui/core/schema/decorator/TextAreaSchemaDecorator.java similarity index 93% rename from src/main/java/io/asfjava/ui/schema/decorator/TextAreaSchemaDecorator.java rename to src/main/java/io/asfjava/ui/core/schema/decorator/TextAreaSchemaDecorator.java index 537f316..f231856 100644 --- a/src/main/java/io/asfjava/ui/schema/decorator/TextAreaSchemaDecorator.java +++ b/src/main/java/io/asfjava/ui/core/schema/decorator/TextAreaSchemaDecorator.java @@ -1,4 +1,4 @@ -package io.asfjava.ui.schema.decorator; +package io.asfjava.ui.core.schema.decorator; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.module.jsonSchema.JsonSchema; diff --git a/src/main/java/io/asfjava/ui/schema/decorator/TextFieldSchemaDecorator.java b/src/main/java/io/asfjava/ui/core/schema/decorator/TextFieldSchemaDecorator.java similarity index 69% rename from src/main/java/io/asfjava/ui/schema/decorator/TextFieldSchemaDecorator.java rename to src/main/java/io/asfjava/ui/core/schema/decorator/TextFieldSchemaDecorator.java index e850675..44775b1 100644 --- a/src/main/java/io/asfjava/ui/schema/decorator/TextFieldSchemaDecorator.java +++ b/src/main/java/io/asfjava/ui/core/schema/decorator/TextFieldSchemaDecorator.java @@ -1,4 +1,4 @@ -package io.asfjava.ui.schema.decorator; +package io.asfjava.ui.core.schema.decorator; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.module.jsonSchema.JsonSchema; @@ -6,18 +6,17 @@ import io.asfjava.ui.core.form.TextField; -public class TextFieldSchemaDecorator implements SchemaDecorator{ +public class TextFieldSchemaDecorator implements SchemaDecorator { @Override public void customizeSchema(BeanProperty property, JsonSchema jsonschema) { TextField annotation = property.getAnnotation(TextField.class); if (annotation != null) { - if(annotation.title()!=null){ - ((StringSchema) jsonschema).setTitle(annotation.title()); + if (annotation.title() != null) { + ((StringSchema) jsonschema).setTitle(annotation.title()); } - if(annotation.pattern()!=null) - { - ((StringSchema) jsonschema).setPattern(annotation.pattern()); + if (annotation.pattern() != null) { + ((StringSchema) jsonschema).setPattern(annotation.pattern()); } } }