[topia] branch develop updated (78ee131 -> 973f889)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository topia. See http://git.nuiton.org/topia.git from 78ee131 Fix typo in log message in liquibase service new 5342aee Refactor MetaTransformer validation and stop generation when model use forbidden class names and attributes (fixes #3487) new fb598d4 Add 'user' to the set of the forbidden attribute names (fixes #3194) new 973f889 Check that 'object' is not used as a HQL parameter' (fixes #3193) The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 973f889010accb5b2ba0b486bd59153565d11c29 Author: Brendan Le Ny <bleny@codelutin.com> Date: Fri Aug 29 16:20:50 2014 +0200 Check that 'object' is not used as a HQL parameter' (fixes #3193) commit fb598d420874191d8502b389c52633c3d96fab9b Author: Brendan Le Ny <bleny@codelutin.com> Date: Fri Aug 29 15:59:53 2014 +0200 Add 'user' to the set of the forbidden attribute names (fixes #3194) commit 5342aeeca8f1bdd460653c8060fade0c9b791ba7 Author: Brendan Le Ny <bleny@codelutin.com> Date: Fri Aug 29 15:52:10 2014 +0200 Refactor MetaTransformer validation and stop generation when model use forbidden class names and attributes (fixes #3487) Summary of changes: .../internal/support/HibernateTopiaJpaSupport.java | 6 ++ .../topia/templates/TopiaMetaTransformer.java | 78 +++++++++++----------- 2 files changed, 46 insertions(+), 38 deletions(-) -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository topia. See http://git.nuiton.org/topia.git commit 5342aeeca8f1bdd460653c8060fade0c9b791ba7 Author: Brendan Le Ny <bleny@codelutin.com> Date: Fri Aug 29 15:52:10 2014 +0200 Refactor MetaTransformer validation and stop generation when model use forbidden class names and attributes (fixes #3487) --- .../topia/templates/TopiaMetaTransformer.java | 78 +++++++++++----------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java index 544aacf..973679e 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java @@ -24,6 +24,7 @@ package org.nuiton.topia.templates; * #L% */ +import com.google.common.collect.ImmutableSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.AbstractMetaTransformer; @@ -36,7 +37,6 @@ import org.nuiton.eugene.models.object.validator.AttributeNamesValidator; import org.nuiton.eugene.models.object.validator.ClassNamesValidator; import org.nuiton.eugene.models.object.validator.ObjectModelValidator; -import java.util.ArrayList; import java.util.List; /** @@ -51,6 +51,13 @@ public class TopiaMetaTransformer extends AbstractMetaTransformer<ObjectModel> { /** Logger */ private static final Log log = LogFactory.getLog(TopiaMetaTransformer.class); + protected static final ImmutableSet<String> FORBIDDEN_ATTRIBUTE_NAMES = + ImmutableSet.of("analyze", "next", "value", "values", "begin", "end", "authorization", + "order"); + + protected static final ImmutableSet<String> FORBIDDEN_CLASS_NAMES = + ImmutableSet.of("constraint", "user"); + public TopiaMetaTransformer() { setTemplateTypes( @@ -68,43 +75,17 @@ public class TopiaMetaTransformer extends AbstractMetaTransformer<ObjectModel> { } protected boolean validateModel(ObjectModel model) { - List<ObjectModelValidator> validators = new ArrayList<ObjectModelValidator>(); - - AttributeNamesValidator attrValidator = new AttributeNamesValidator( - model); - attrValidator.addNameAndReason("analyze", - "Le nom d'attribut \"analyze\" est incompatible avec certains SGBD"); - attrValidator.addNameAndReason("next", - "Le nom d'attribut \"next\" est incompatible avec HSQL"); - attrValidator.addNameAndReason("value", - "Le nom d'attribut \"value\" est incompatible avec certains SGBD"); - attrValidator.addNameAndReason("values", - "Le nom d'attribut \"values\" est incompatible avec certains SGBD"); - attrValidator.addNameAndReason("begin", - "Le nom d'attribut \"begin\" est incompatible avec certains SGBD"); - attrValidator.addNameAndReason("end", - "Le nom d'attribut \"end\" est incompatible avec certains SGBD"); - attrValidator.addNameAndReason("authorization", - "Le nom d'attribut \"authorization\" est incompatible avec certains SGBD"); - attrValidator.addNameAndReason("order", - "Le nom d'attribut \"order\" est incompatible avec certains SGBD"); - validators.add(attrValidator); - - ClassNamesValidator classValidator = new ClassNamesValidator(model); - classValidator.addNameAndReason("constraint", "Nom de classe incompatible avec certains SGBD"); - classValidator.addNameAndReason("user", "Nom de classe incompatible avec certains SGBD"); - validators.add(classValidator); - - validators.add(new TopiaJavaValidator(model)); - validators.add(new TopiaRelationValidator(model)); - - for (ObjectModelValidator validator : validators) { - if (!validator.validate()) { + + boolean validationSuccess = true; + + for (ObjectModelValidator validator : getValidators(model)) { + if ( ! validator.validate()) { for (String error : validator.getErrors()) { if (log.isWarnEnabled()) { log.warn("[VALIDATION] " + error); } } + validationSuccess = false; } } @@ -116,13 +97,34 @@ public class TopiaMetaTransformer extends AbstractMetaTransformer<ObjectModel> { if (classes.isEmpty()) { // no entity to generate, can stop safely if (log.isWarnEnabled()) { - log.warn("No entity to generate, " + getClass().getName() + - " is skipped"); + log.warn("No entity to generate, " + getClass().getName() + " is skipped"); } - return false; + validationSuccess = false; } - //FIXME-TC20091220 seems we still generate if there is some validation errors ? not very normal - return true; + + return validationSuccess; + } + + protected ImmutableSet<ObjectModelValidator> getValidators(ObjectModel model) { + + AttributeNamesValidator attributeNamesValidator = new AttributeNamesValidator(model); + for (String sqlKeyword : FORBIDDEN_ATTRIBUTE_NAMES) { + attributeNamesValidator.addNameAndReason( + sqlKeyword, "Le nom d'attribut \"" + sqlKeyword + "\" est incompatible avec certains SGBD"); + } + + ClassNamesValidator classNamesValidator = new ClassNamesValidator(model); + for (String sqlKeyword : FORBIDDEN_CLASS_NAMES) { + classNamesValidator.addNameAndReason( + sqlKeyword, "Le nom de classe \"" + sqlKeyword + "\" est incompatible avec certains SGBD"); + } + + TopiaJavaValidator topiaJavaValidator = new TopiaJavaValidator(model); + + TopiaRelationValidator topiaRelationValidator = new TopiaRelationValidator(model); + + return ImmutableSet.of(attributeNamesValidator, classNamesValidator, topiaJavaValidator, topiaRelationValidator); + } } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository topia. See http://git.nuiton.org/topia.git commit fb598d420874191d8502b389c52633c3d96fab9b Author: Brendan Le Ny <bleny@codelutin.com> Date: Fri Aug 29 15:59:53 2014 +0200 Add 'user' to the set of the forbidden attribute names (fixes #3194) --- .../src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java index 973679e..7225c12 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaMetaTransformer.java @@ -53,7 +53,7 @@ public class TopiaMetaTransformer extends AbstractMetaTransformer<ObjectModel> { protected static final ImmutableSet<String> FORBIDDEN_ATTRIBUTE_NAMES = ImmutableSet.of("analyze", "next", "value", "values", "begin", "end", "authorization", - "order"); + "order", "user"); protected static final ImmutableSet<String> FORBIDDEN_CLASS_NAMES = ImmutableSet.of("constraint", "user"); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository topia. See http://git.nuiton.org/topia.git commit 973f889010accb5b2ba0b486bd59153565d11c29 Author: Brendan Le Ny <bleny@codelutin.com> Date: Fri Aug 29 16:20:50 2014 +0200 Check that 'object' is not used as a HQL parameter' (fixes #3193) --- .../persistence/internal/support/HibernateTopiaJpaSupport.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/HibernateTopiaJpaSupport.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/HibernateTopiaJpaSupport.java index 9fb8cd1..d024c5a 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/HibernateTopiaJpaSupport.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/HibernateTopiaJpaSupport.java @@ -24,6 +24,7 @@ package org.nuiton.topia.persistence.internal.support; * #L% */ +import com.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.FlushMode; @@ -92,6 +93,7 @@ public class HibernateTopiaJpaSupport implements TopiaJpaSupport { } protected Query prepareQuery(String jpaql, Map<String, Object> parameters) { + checkHqlParameters(parameters); Query query = hibernateSupport.getHibernateSession().createQuery(jpaql); for (Map.Entry<String, Object> entry : parameters.entrySet()) { String name = entry.getKey(); @@ -111,6 +113,10 @@ public class HibernateTopiaJpaSupport implements TopiaJpaSupport { return query; } + protected void checkHqlParameters(Map<String, Object> parameters) { + Preconditions.checkArgument(!parameters.containsKey("object"), "'object' is not a valid parameter name in HQL"); + } + @Override public <T> List<T> findAll(String jpaql, Map<String, Object> parameters) { try { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm