Required attribute in event uses attribute's required value as default
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/commit/6cf96b62 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/tree/6cf96b62 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/diff/6cf96b62 Branch: refs/heads/master Commit: 6cf96b6289e630526de76644960ed17b67760e31 Parents: 1fcf810 Author: Ralph Goers <[email protected]> Authored: Sat Feb 3 13:30:08 2018 -0700 Committer: Ralph Goers <[email protected]> Committed: Sat Feb 3 13:30:08 2018 -0700 ---------------------------------------------------------------------- .../src/main/resources/sql/hsql/schema.sql | 2 +- .../main/resources/sql/postgresql/schema.sql | 2 +- .../api/annotation/JdbcUrlCondition.java | 2 +- .../jpa/converter/BooleanToStringConverter.java | 8 ++- .../catalog/jpa/converter/EventConverter.java | 6 +- .../catalog/jpa/model/EventAttributeModel.java | 6 +- .../src/test/resources/sql/hsql/schema.sql | 2 +- .../log4j/catalog/config/WebMvcAppContext.java | 59 +++++++++++++++++++- .../catalog/controller/EventController.java | 2 + .../src/main/resources/sql/hsql/schema.sql | 2 +- 10 files changed, 79 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-audit/log4j-audit-war/src/main/resources/sql/hsql/schema.sql ---------------------------------------------------------------------- diff --git a/log4j-audit/log4j-audit-war/src/main/resources/sql/hsql/schema.sql b/log4j-audit/log4j-audit-war/src/main/resources/sql/hsql/schema.sql index 78e5475..df55275 100644 --- a/log4j-audit/log4j-audit-war/src/main/resources/sql/hsql/schema.sql +++ b/log4j-audit/log4j-audit-war/src/main/resources/sql/hsql/schema.sql @@ -85,7 +85,7 @@ CREATE TABLE EVENT_ATTRIBUTES ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1, INCREMENT BY 1) PRIMARY KEY, EVENT_ID BIGINT NOT NULL, ATTRIBUTE_ID BIGINT NOT NULL, - IS_REQUIRED CHAR NOT NULL, + IS_REQUIRED CHAR, FOREIGN KEY (EVENT_ID) REFERENCES CATALOG_EVENT(ID), FOREIGN KEY (ATTRIBUTE_ID) REFERENCES EVENT_ATTRIBUTE(ID) ); http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-audit/log4j-audit-war/src/main/resources/sql/postgresql/schema.sql ---------------------------------------------------------------------- diff --git a/log4j-audit/log4j-audit-war/src/main/resources/sql/postgresql/schema.sql b/log4j-audit/log4j-audit-war/src/main/resources/sql/postgresql/schema.sql index 4ec242d..1ca5e12 100644 --- a/log4j-audit/log4j-audit-war/src/main/resources/sql/postgresql/schema.sql +++ b/log4j-audit/log4j-audit-war/src/main/resources/sql/postgresql/schema.sql @@ -81,7 +81,7 @@ CREATE TABLE EVENT_ATTRIBUTES ID SERIAL8 UNIQUE PRIMARY KEY, EVENT_ID BIGINT REFERENCES CATALOG_EVENT (ID), ATTRIBUTE_ID BIGINT REFERENCES EVENT_ATTRIBUTE (ID), - IS_REQUIRED CHAR NOT NULL + IS_REQUIRED CHAR ); CREATE TABLE CATALOG_CATEGORY http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-catalog/log4j-catalog-api/src/main/java/org/apache/logging/log4j/catalog/api/annotation/JdbcUrlCondition.java ---------------------------------------------------------------------- diff --git a/log4j-catalog/log4j-catalog-api/src/main/java/org/apache/logging/log4j/catalog/api/annotation/JdbcUrlCondition.java b/log4j-catalog/log4j-catalog-api/src/main/java/org/apache/logging/log4j/catalog/api/annotation/JdbcUrlCondition.java index 11bfbac..ceeca50 100644 --- a/log4j-catalog/log4j-catalog-api/src/main/java/org/apache/logging/log4j/catalog/api/annotation/JdbcUrlCondition.java +++ b/log4j-catalog/log4j-catalog-api/src/main/java/org/apache/logging/log4j/catalog/api/annotation/JdbcUrlCondition.java @@ -38,7 +38,7 @@ public class JdbcUrlCondition implements Condition { if (value.equals("hsqldb")) { return jdbcUrl == null || isEmbedded; } - if (jdbcUrl == null) { + if (jdbcUrl == null || isEmbedded) { return false; } if (!jdbcUrl.startsWith("jdbc:")) { http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/BooleanToStringConverter.java ---------------------------------------------------------------------- diff --git a/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/BooleanToStringConverter.java b/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/BooleanToStringConverter.java index 1d694f9..7139a6d 100644 --- a/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/BooleanToStringConverter.java +++ b/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/BooleanToStringConverter.java @@ -27,11 +27,17 @@ import javax.persistence.Converter; public class BooleanToStringConverter implements AttributeConverter<Boolean, String> { @Override public String convertToDatabaseColumn(Boolean value) { - return (value != null && value) ? "Y" : "N"; + if (value == null) { + return null; + } + return value ? "Y" : "N"; } @Override public Boolean convertToEntityAttribute(String value) { + if (value == null) { + return null; + } return "Y".equals(value); } } http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/EventConverter.java ---------------------------------------------------------------------- diff --git a/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/EventConverter.java b/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/EventConverter.java index cf77f1b..388252b 100644 --- a/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/EventConverter.java +++ b/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/converter/EventConverter.java @@ -72,12 +72,14 @@ public class EventConverter extends AbstractConverter<Event, EventModel> { for (EventAttribute eventAttribute : eventAttributes) { EventAttributeModel eventAttributeModel = model.getAttribute(eventAttribute.getName()); if (eventAttributeModel != null) { - eventAttributeModel.setRequired(eventAttribute.isRequired()); + eventAttributeModel.setRequired(eventAttribute != null ? eventAttribute.isRequired() : null); } else { Optional<AttributeModel> optional = getAttribute(event.getCatalogId(), eventAttribute.getName()); if (optional.isPresent()) { eventAttributeModel = new EventAttributeModel(); - eventAttributeModel.setRequired(eventAttribute.isRequired()); + if (eventAttribute != null) { + eventAttributeModel.setRequired(eventAttribute.isRequired()); + } eventAttributeModel.setEvent(model); eventAttributeModel.setAttribute(optional.get()); eventAttributeModels.add(eventAttributeModel); http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/model/EventAttributeModel.java ---------------------------------------------------------------------- diff --git a/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/model/EventAttributeModel.java b/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/model/EventAttributeModel.java index 5f01dcd..2edb385 100644 --- a/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/model/EventAttributeModel.java +++ b/log4j-catalog/log4j-catalog-jpa/src/main/java/org/apache/logging/log4j/catalog/jpa/model/EventAttributeModel.java @@ -51,7 +51,7 @@ public class EventAttributeModel implements Serializable { @Column(name = "is_required") @Convert(converter=BooleanToStringConverter.class) - private boolean isRequired; + private Boolean isRequired; /** * Return the identifier for this event. @@ -85,11 +85,11 @@ public class EventAttributeModel implements Serializable { this.attribute = attribute; } - public boolean isRequired() { + public Boolean isRequired() { return isRequired; } - public void setRequired(boolean required) { + public void setRequired(Boolean required) { isRequired = required; } http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-catalog/log4j-catalog-jpa/src/test/resources/sql/hsql/schema.sql ---------------------------------------------------------------------- diff --git a/log4j-catalog/log4j-catalog-jpa/src/test/resources/sql/hsql/schema.sql b/log4j-catalog/log4j-catalog-jpa/src/test/resources/sql/hsql/schema.sql index 1618e73..5deec7c 100644 --- a/log4j-catalog/log4j-catalog-jpa/src/test/resources/sql/hsql/schema.sql +++ b/log4j-catalog/log4j-catalog-jpa/src/test/resources/sql/hsql/schema.sql @@ -75,7 +75,7 @@ CREATE TABLE EVENT_ATTRIBUTES ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1, INCREMENT BY 1) PRIMARY KEY, EVENT_ID BIGINT NOT NULL, ATTRIBUTE_ID BIGINT NOT NULL, - IS_REQUIRED CHAR NOT NULL, + IS_REQUIRED CHAR, FOREIGN KEY (EVENT_ID) REFERENCES CATALOG_EVENT(ID), FOREIGN KEY (ATTRIBUTE_ID) REFERENCES EVENT_ATTRIBUTE(ID) ); http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/config/WebMvcAppContext.java ---------------------------------------------------------------------- diff --git a/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/config/WebMvcAppContext.java b/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/config/WebMvcAppContext.java index 7836b41..1e1627a 100644 --- a/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/config/WebMvcAppContext.java +++ b/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/config/WebMvcAppContext.java @@ -19,6 +19,7 @@ package org.apache.logging.log4j.catalog.config; import java.io.File; import java.net.URI; import java.net.URISyntaxException; +import java.util.Collections; import java.util.List; import com.fasterxml.jackson.databind.ObjectMapper; @@ -53,7 +54,9 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; +import org.springframework.context.annotation.Scope; import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.core.annotation.Order; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.scheduling.annotation.EnableScheduling; @@ -65,6 +68,11 @@ import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; +import org.thymeleaf.spring4.SpringTemplateEngine; +import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver; +import org.thymeleaf.spring4.view.ThymeleafView; +import org.thymeleaf.spring4.view.ThymeleafViewResolver; +import org.thymeleaf.templatemode.TemplateMode; import static org.apache.commons.lang3.StringUtils.isNotBlank; @@ -136,6 +144,7 @@ public class WebMvcAppContext extends WebMvcConfigurerAdapter implements Applica return proxyCreator; } + /* @Bean public ViewResolver internalResourceViewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); @@ -144,7 +153,7 @@ public class WebMvcAppContext extends WebMvcConfigurerAdapter implements Applica viewResolver.setSuffix(".jsp"); viewResolver.setOrder(10); return viewResolver; - } + } */ @Bean public MessageSource messageSource() { @@ -276,4 +285,52 @@ public class WebMvcAppContext extends WebMvcConfigurerAdapter implements Applica } return dataSource; } + + public SpringResourceTemplateResolver templateResolver(){ + // SpringResourceTemplateResolver automatically integrates with Spring's own + // resource resolution infrastructure, which is highly recommended. + SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); + templateResolver.setApplicationContext(this.applicationContext); + templateResolver.setPrefix("/WEB-INF/templates/"); + templateResolver.setSuffix(".html"); + // HTML is the default value, added here for the sake of clarity. + templateResolver.setTemplateMode(TemplateMode.HTML); + // Template cache is true by default. Set to false if you want + // templates to be automatically updated when modified. + templateResolver.setCacheable(true); + return templateResolver; + } + + public SpringTemplateEngine templateEngine(){ + // SpringTemplateEngine automatically applies SpringStandardDialect and + // enables Spring's own MessageSource message resolution mechanisms. + SpringTemplateEngine templateEngine = new SpringTemplateEngine(); + templateEngine.setTemplateResolver(templateResolver()); + // Enabling the SpringEL compiler with Spring 4.2.4 or newer can + // speed up execution in most scenarios, but might be incompatible + // with specific cases when expressions in one template are reused + // across different data types, so this flag is "false" by default + // for safer backwards compatibility. + templateEngine.setEnableSpringELCompiler(true); + return templateEngine; + } + + @Bean + public ViewResolver thymeleafViewResolver(){ + ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); + viewResolver.setTemplateEngine(templateEngine()); + // NOTE 'order' and 'viewNames' are optional + viewResolver.setOrder(1); + viewResolver.setViewNames(new String[] {"products", "categories", "events", "attributes"}); + return viewResolver; + } + + @Bean + @Scope("prototype") + public ThymeleafView mainView() { + ThymeleafView view = new ThymeleafView("index"); // templateName = 'main' + view.setStaticVariables( + Collections.singletonMap("footer", "The Apache Software Foundation")); + return view; + } } http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/controller/EventController.java ---------------------------------------------------------------------- diff --git a/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/controller/EventController.java b/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/controller/EventController.java index b3a5ade..0dd8295 100644 --- a/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/controller/EventController.java +++ b/log4j-catalog/log4j-catalog-war/src/main/java/org/apache/logging/log4j/catalog/controller/EventController.java @@ -116,6 +116,7 @@ public class EventController { } catch (Exception ex) { response.put("Result", "FAILURE"); response.put("Message", ex.getMessage()); + LOGGER.warn("Unable to create event named {}", event.getName(), ex); } return new ResponseEntity<>(response, HttpStatus.OK); } @@ -131,6 +132,7 @@ public class EventController { } catch (Exception ex) { response.put("Result", "FAILURE"); response.put("Message", ex.getMessage()); + LOGGER.warn("Unable to update event named {}", event.getName(), ex); } return new ResponseEntity<>(response, HttpStatus.OK); } http://git-wip-us.apache.org/repos/asf/logging-log4j-audit/blob/6cf96b62/log4j-catalog/log4j-catalog-war/src/main/resources/sql/hsql/schema.sql ---------------------------------------------------------------------- diff --git a/log4j-catalog/log4j-catalog-war/src/main/resources/sql/hsql/schema.sql b/log4j-catalog/log4j-catalog-war/src/main/resources/sql/hsql/schema.sql index 8525361..772d65b 100644 --- a/log4j-catalog/log4j-catalog-war/src/main/resources/sql/hsql/schema.sql +++ b/log4j-catalog/log4j-catalog-war/src/main/resources/sql/hsql/schema.sql @@ -75,7 +75,7 @@ CREATE TABLE EVENT_ATTRIBUTES ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1, INCREMENT BY 1) PRIMARY KEY, EVENT_ID BIGINT NOT NULL, ATTRIBUTE_ID BIGINT NOT NULL, - IS_REQUIRED CHAR NOT NULL, + IS_REQUIRED CHAR, FOREIGN KEY (EVENT_ID) REFERENCES CATALOG_EVENT(ID), FOREIGN KEY (ATTRIBUTE_ID) REFERENCES EVENT_ATTRIBUTE(ID) );
