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 cce2f51b0c881acba3b6fae6119f078e4fefa2ec Author: Arnaud Thimel <thimel@codelutin.com> Date: Thu Sep 4 14:37:26 2014 +0200 fix a few Sonar critical issues --- .../org/nuiton/topia/it/TopiaSchemaHelper.java | 24 ++++++++++++--- .../nuiton/topia/persistence/TopiaEntities.java | 2 +- .../topia/persistence/event/EntityState.java | 19 ++++++++++++ .../topia/persistence/event/TopiaEntityEvent.java | 3 +- .../persistence/internal/AbstractTopiaDao.java | 3 +- .../internal/AbstractTopiaPersistenceContext.java | 1 + .../nuiton/topia/persistence/legacy/Collector.java | 3 +- .../nuiton/topia/persistence/legacy/DBMapping.java | 2 +- .../topia/persistence/util/TopiaEntityHelper.java | 12 ++------ .../topia/persistence/util/TopiaEntityRef.java | 35 ++++++++++++++++++---- .../topia/replication/model/ReplicationModel.java | 6 ++-- .../topia/templates/EntityDaoTransformer.java | 17 ++++++----- .../templates/EntityHibernateMappingGenerator.java | 9 +++--- .../nuiton/topia/templates/TopiaGeneratorUtil.java | 19 ++++++------ .../topia/templates/TopiaTemplateHelper.java | 7 ----- 15 files changed, 108 insertions(+), 54 deletions(-) diff --git a/topia-it/src/main/java/org/nuiton/topia/it/TopiaSchemaHelper.java b/topia-it/src/main/java/org/nuiton/topia/it/TopiaSchemaHelper.java index 794d566..3dbb327 100644 --- a/topia-it/src/main/java/org/nuiton/topia/it/TopiaSchemaHelper.java +++ b/topia-it/src/main/java/org/nuiton/topia/it/TopiaSchemaHelper.java @@ -24,6 +24,8 @@ package org.nuiton.topia.it; * #L% */ +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaConfigurationConstants; import java.sql.CallableStatement; @@ -39,6 +41,20 @@ import java.util.Map; */ public class TopiaSchemaHelper { + private static final Log log = LogFactory.getLog(TopiaSchemaHelper.class); + + protected static void closeQuietly(AutoCloseable autoCloseable) { + if (autoCloseable != null) { + try { + autoCloseable.close(); + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Unable to close: " + eee.getMessage() , eee); + } + } + } + } + /** * Create the physical schema. * @@ -49,18 +65,18 @@ public class TopiaSchemaHelper { */ public static void createSchema(Map<String, String> config, String schemaName) throws Exception { Connection connection = null; + CallableStatement callableStatement = null; try { //DriverManager.registerDriver(new Driver()); connection = DriverManager.getConnection( config.get(TopiaConfigurationConstants.CONFIG_URL), config.get(TopiaConfigurationConstants.CONFIG_USER), config.get(TopiaConfigurationConstants.CONFIG_PASS)); - CallableStatement callableStatement = connection.prepareCall("create schema " + schemaName); + callableStatement = connection.prepareCall("create schema " + schemaName); callableStatement.execute(); } finally { - if (connection != null && !connection.isClosed()) { - connection.close(); - } + closeQuietly(callableStatement); + closeQuietly(connection); } } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntities.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntities.java index 9496b03..340ea7c 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntities.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntities.java @@ -57,7 +57,7 @@ public class TopiaEntities { * @param id the expected topiaId * @return the created Predicate */ - protected static Predicate<TopiaEntity> entityHasId(String id) { + public static Predicate<TopiaEntity> entityHasId(String id) { Predicate<String> equalsPredicate = Predicates.equalTo(id); Predicate<TopiaEntity> result = Predicates.compose(equalsPredicate, GET_TOPIA_ID); return result; diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/EntityState.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/EntityState.java index 84af244..08f3487 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/EntityState.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/EntityState.java @@ -164,4 +164,23 @@ public class EntityState implements Comparable<EntityState> { return state - o.state; } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + EntityState that = (EntityState) o; + + return state == that.state; + } + + @Override + public int hashCode() { + return state; + } + } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/TopiaEntityEvent.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/TopiaEntityEvent.java index 5534000..17a1b14 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/TopiaEntityEvent.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/TopiaEntityEvent.java @@ -24,6 +24,7 @@ package org.nuiton.topia.persistence.event; * #L% */ +import org.apache.commons.lang3.ArrayUtils; import org.nuiton.topia.persistence.TopiaPersistenceContext; import org.nuiton.topia.persistence.TopiaEntity; @@ -45,7 +46,7 @@ public class TopiaEntityEvent extends EventObject { public TopiaEntityEvent(TopiaPersistenceContext source, TopiaEntity entity, Object[] state) { super(source); this.entity = entity; - this.state = state; + this.state = ArrayUtils.clone(state); } public TopiaEntity getEntity() { diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java index 3cb4b53..c6e72ff 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java @@ -69,6 +69,7 @@ import org.nuiton.util.pagination.PaginationResult; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -199,7 +200,7 @@ public abstract class AbstractTopiaDao<E extends TopiaEntity> implements TopiaDa @Override public PaginationResult<E> initPagination(int pageSize) { - PaginationResult<E> result = initPagination(newFromClause(), null, pageSize); + PaginationResult<E> result = initPagination(newFromClause(), new HashMap<String, Object>(), pageSize); return result; } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java index 05337c6..8bbd93b 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java @@ -276,6 +276,7 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc Preconditions.checkArgument(entityClass != null, "The method 'getDao' requires a non null 'entityClass' parameter"); SessionFactory hibernateFactory = hibernateSupport.getHibernateFactory(); + Preconditions.checkState(hibernateFactory != null, "The Hibernate SessionFactory is null, please initialize"); if (hibernateFactory.getClassMetadata(entityClass) == null && hibernateFactory.getClassMetadata(entityClass.getName() + "Impl") == null && hibernateFactory.getClassMetadata(entityClass.getName() + "Abstract") == null) { diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/legacy/Collector.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/legacy/Collector.java index 0eb71c6..6e10159 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/legacy/Collector.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/legacy/Collector.java @@ -24,6 +24,7 @@ package org.nuiton.topia.persistence.legacy; * #L% */ +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaException; @@ -62,7 +63,7 @@ public abstract class Collector<R> { public Collector(CollectorVisitor visitor, TopiaEntityEnum[] contracts) { this.visitor = visitor == null ? new CollectorVisitor() : visitor; this.visitor.setCollector(this); - this.contracts = contracts; + this.contracts = ArrayUtils.clone(contracts); } public Collector(TopiaEntityEnum[] contracts) { diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/legacy/DBMapping.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/legacy/DBMapping.java index 725d3d1..fd40d3a 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/legacy/DBMapping.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/legacy/DBMapping.java @@ -343,7 +343,7 @@ public abstract class DBMapping { @Override public BigInteger prepareResult(ResultSet set) throws SQLException { - return set.getBigDecimal(0).unscaledValue(); // TODO AThimel 23/11/13 Don't know if it may work or not + return set.getBigDecimal(1).unscaledValue(); // TODO AThimel 23/11/13 Don't know if it may work or not } }); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaEntityHelper.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaEntityHelper.java index 144ca29..f5adcf8 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaEntityHelper.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaEntityHelper.java @@ -28,6 +28,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaEntities; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaPersistenceContext; import org.nuiton.topia.persistence.TopiaDao; @@ -997,18 +998,11 @@ public class TopiaEntityHelper { if (localeIdList.contains(refId)) { // id existant sur le storage locale - TopiaEntity localeEntity = null; // il se peut que les listes ne soient pas triées sur le même // ordre, on parcourt donc la liste cible pour retrouver // l'entité cible - for (TopiaEntity e : locale) { - if (e.getTopiaId().equals(refId)) { - localeEntity = e; - break; - } - } - boolean wasModified = referentielEntity.getTopiaVersion() > - localeEntity.getTopiaVersion(); + TopiaEntity localeEntity = Iterables.find(locale, TopiaEntities.entityHasId(refId)); + boolean wasModified = referentielEntity.getTopiaVersion() > localeEntity.getTopiaVersion(); if (wasModified) { result.get(DiffState.MODIFIED).add(refId); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaEntityRef.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaEntityRef.java index afd85bc..d53a5f4 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaEntityRef.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaEntityRef.java @@ -24,8 +24,11 @@ package org.nuiton.topia.persistence.util; * #L% */ +import org.apache.commons.lang3.ArrayUtils; import org.nuiton.topia.persistence.TopiaEntity; +import com.google.common.base.Preconditions; + /** * Definition of a reference of an entity from a root entity. * <p/> @@ -41,21 +44,22 @@ public class TopiaEntityRef implements Comparable<TopiaEntityRef> { public static final String SEPARATOR = "/"; /** the root entity */ - TopiaEntity root; + protected TopiaEntity root; /** the entity ref */ - TopiaEntity ref; + protected TopiaEntity ref; /** the jxpath used to acces ref from root */ - String accessorExpression; + protected String accessorExpression; - TopiaEntity[] path; + protected TopiaEntity[] path; public TopiaEntityRef(TopiaEntity root, TopiaEntity ref, String accessorExpression, TopiaEntity[] path) { + Preconditions.checkNotNull(ref); this.root = root; this.ref = ref; this.accessorExpression = accessorExpression; - this.path = path; + this.path = ArrayUtils.clone(path); } public TopiaEntity getRoot() { @@ -98,4 +102,25 @@ public class TopiaEntityRef implements Comparable<TopiaEntityRef> { public int compareTo(TopiaEntityRef o) { return ref.getTopiaId().compareTo(o.getRef().getTopiaId()); } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + TopiaEntityRef that = (TopiaEntityRef) o; + + return ref.equals(that.ref); + + } + + @Override + public int hashCode() { + return ref.hashCode(); + } + } diff --git a/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java b/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java index 3ced3ba..0855f2d 100644 --- a/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java +++ b/topia-service-replication/src/main/java/org/nuiton/topia/replication/model/ReplicationModel.java @@ -38,8 +38,10 @@ import org.nuiton.topia.replication.operation.AttachLink; import org.nuiton.topia.replication.operation.DettachAssociation; import org.nuiton.topia.replication.operation.Duplicate; import org.nuiton.topia.replication.operation.LoadLink; +import org.nuiton.util.ArrayUtil; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -88,7 +90,7 @@ public class ReplicationModel { public ReplicationModel(TopiaEntityEnum[] contracts, Set<Class<? extends TopiaEntity>> types, String... topiaIds) { - this.contracts = contracts; + this.contracts = contracts.clone(); this.topiaIds = topiaIds; replicateAll = false; order = new ArrayList<ReplicationNode>(); @@ -105,7 +107,7 @@ public class ReplicationModel { public ReplicationModel(TopiaEntityEnum[] contracts, boolean replicateAll, String... topiaIds) { - this.contracts = contracts; + this.contracts = contracts.clone(); this.topiaIds = topiaIds; this.replicateAll = replicateAll; order = new ArrayList<ReplicationNode>(); diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java index 70449b6..b522097 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java @@ -27,7 +27,9 @@ package org.nuiton.topia.templates; /*{generator option: parentheses = false}*/ /*{generator option: writeString = +}*/ +import com.google.common.base.Joiner; import com.google.common.base.Strings; +import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -1179,21 +1181,20 @@ public class EntityDaoTransformer extends ObjectModelTransformerToJava { ObjectModelOperation createByNotNull = addOperation(result, "createByNotNull", "E", ObjectModelJavaModifier.PUBLIC); - String createProperties = ""; -// String params = ""; String clazzName = clazz.getName(); + List<String> createPropertiesList = Lists.newArrayList(); for (ObjectModelAttribute attr : props) { String propName = attr.getName(); // add property as param in both methods addParameter(createByNotNull, attr.getType(), propName); - createProperties += - ", " + clazzName + '.' + getConstantName(propName) + - ", " + propName; - //params += ", " + propName; + // First parameter is the property identifier : <clazzName>.PROPERTY_XXX + createPropertiesList.add(clazzName + '.' + getConstantName(propName)); + + // Second parameter is the property value : <propName> + createPropertiesList.add(propName); } - createProperties = createProperties.substring(2); - //params = params.substring(2); + String createProperties = Joiner.on(", ").join(createPropertiesList); setOperationBody(createByNotNull, "" /*{ diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java index 4a873fd..573f270 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java @@ -581,14 +581,13 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { columnAttributes.put(HIBERNATE_ATTRIBUTE_NAME, attrColumn); - String columnAttributesAsString =""; - for (Map.Entry<String, String> entry : - columnAttributes.entrySet()) { + StringBuilder columnAttributesBuilder = new StringBuilder(); + for (Map.Entry<String, String> entry : columnAttributes.entrySet()) { String name = entry.getKey(); String value = entry.getValue(); - columnAttributesAsString += generateFromTagValue(name, value, null); + columnAttributesBuilder.append(generateFromTagValue(name, value, null)); } - columnAttributesAsString = " " + columnAttributesAsString.trim(); + String columnAttributesAsString = " " + columnAttributesBuilder.toString().trim(); /*{<%=optionalAttributes%>> <%=prefix%> <column<%=columnAttributesAsString%>/> <%=prefix%> </property> diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java index 0c326fc..4c38e5d 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java @@ -24,7 +24,10 @@ package org.nuiton.topia.templates; * #L% */ +import com.google.common.base.Joiner; import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -955,22 +958,20 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { @Deprecated public static String getPrimaryKeyAttributesListDeclaration( ObjectModelClass clazz, boolean includeName) { - String attributes = ""; Collection<ObjectModelAttribute> attributeCollection; attributeCollection = getElementsWithStereotype(clazz.getAttributes(), TopiaStereoTypes.STEREOTYPE_PRIMARY_KEY); + List<String> attributes = Lists.newArrayList(); for (ObjectModelAttribute attr : attributeCollection) { - attributes += attr.getType(); + String attribute = attr.getType(); if (includeName) { - attributes += ' ' + attr.getName(); + attribute += ' '; + attribute += attr.getName(); } - attributes += ", "; - } - if (attributes.length() > 0) { - attributes = attributes.substring(0, attributes.length() - 2); - attributes = attributes.substring(0, attributes.length() - 2); + attributes.add(attribute); } - return attributes; + + return Joiner.on(", ").join(attributes); } /** diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTemplateHelper.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTemplateHelper.java index 2bc5781..94a9642 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTemplateHelper.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTemplateHelper.java @@ -398,15 +398,9 @@ public class TopiaTemplateHelper { return type; } ObjectModelClass clazz = model.getClass(type); - ObjectModelPackage aPackage = model.getPackage(clazz); if (isEntity(clazz)) { //tchemit-2011-09-12 What ever abstract or not, we always use an Impl type += "Impl"; -// if (shouldBeAbstract(clazz)) { -// type += "Abstract"; -// } else { -// type += "Impl"; -// } } return type; } @@ -522,7 +516,6 @@ public class TopiaTemplateHelper { if (!reverse.isNavigable()) { //Il s'agit d'une entity ObjectModelClass clazz = model.getClass(attr.getType()); - ObjectModelPackage aPackage = model.getPackage(clazz); if (clazz != null && isEntity(clazz)) { //Cette classe a des sous-classes dans le modèle for (ObjectModelClass subClass : model.getClasses()) { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.