From 73b2d5a99c98c1c1bb9d38141fe99e25e5aadde6 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 14 Sep 2011 15:34:29 +0200 Subject: [PATCH] DATADOC-270 - Removed critical Sonar warnings from codebase. --- .../mongodb/MongoChangeSetPersister.java | 269 +++++++++--------- .../CannotGetMongoDbConnectionException.java | 4 +- .../data/mongodb/core/MongoTemplate.java | 4 +- .../data/mongodb/core/QueryMapper.java | 3 +- .../core/convert/MappingMongoConverter.java | 2 +- .../data/mongodb/core/geo/Circle.java | 2 +- .../data/mongodb/core/query/OrCriteria.java | 2 +- 7 files changed, 143 insertions(+), 143 deletions(-) diff --git a/spring-data-mongodb-cross-store/src/main/java/org/springframework/data/persistence/document/mongodb/MongoChangeSetPersister.java b/spring-data-mongodb-cross-store/src/main/java/org/springframework/data/persistence/document/mongodb/MongoChangeSetPersister.java index 11e697588..01962213d 100644 --- a/spring-data-mongodb-cross-store/src/main/java/org/springframework/data/persistence/document/mongodb/MongoChangeSetPersister.java +++ b/spring-data-mongodb-cross-store/src/main/java/org/springframework/data/persistence/document/mongodb/MongoChangeSetPersister.java @@ -2,10 +2,6 @@ package org.springframework.data.persistence.document.mongodb; import javax.persistence.EntityManagerFactory; -import com.mongodb.BasicDBObject; -import com.mongodb.DBCollection; -import com.mongodb.DBObject; -import com.mongodb.MongoException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.dao.DataAccessException; @@ -18,152 +14,157 @@ import org.springframework.data.persistence.ChangeSetBacked; import org.springframework.data.persistence.ChangeSetPersister; import org.springframework.util.ClassUtils; +import com.mongodb.BasicDBObject; +import com.mongodb.DBCollection; +import com.mongodb.DBObject; +import com.mongodb.MongoException; + public class MongoChangeSetPersister implements ChangeSetPersister { - private static final String ENTITY_CLASS = "_entity_class"; + private static final String ENTITY_CLASS = "_entity_class"; - private static final String ENTITY_ID = "_entity_id"; + private static final String ENTITY_ID = "_entity_id"; - private static final String ENTITY_FIELD_NAME = "_entity_field_name"; + private static final String ENTITY_FIELD_NAME = "_entity_field_name"; - private static final String ENTITY_FIELD_CLASS = "_entity_field_class"; + private static final String ENTITY_FIELD_CLASS = "_entity_field_class"; - protected final Log log = LogFactory.getLog(getClass()); + protected final Log log = LogFactory.getLog(getClass()); - private MongoTemplate mongoTemplate; + private MongoTemplate mongoTemplate; - private EntityManagerFactory entityManagerFactory; + private EntityManagerFactory entityManagerFactory; - public void setMongoTemplate(MongoTemplate mongoTemplate) { - this.mongoTemplate = mongoTemplate; - } + public void setMongoTemplate(MongoTemplate mongoTemplate) { + this.mongoTemplate = mongoTemplate; + } - public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) { - this.entityManagerFactory = entityManagerFactory; - } + public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) { + this.entityManagerFactory = entityManagerFactory; + } - public void getPersistentState(Class entityClass, - Object id, final ChangeSet changeSet) - throws DataAccessException, NotFoundException { - - if (id == null) { - log.debug("Unable to load MongoDB data for null id"); - return; - } - - String collName = getCollectionNameForEntity(entityClass); + public void getPersistentState(Class entityClass, + Object id, final ChangeSet changeSet) + throws DataAccessException, NotFoundException { - final DBObject dbk = new BasicDBObject(); - dbk.put(ENTITY_ID, id); - dbk.put(ENTITY_CLASS, entityClass.getName()); - if (log.isDebugEnabled()) { - log.debug("Loading MongoDB data for " + dbk); - } - mongoTemplate.execute(collName, new CollectionCallback() { - public Object doInCollection(DBCollection collection) - throws MongoException, DataAccessException { - for (DBObject dbo : collection.find(dbk)) { - String key = (String) dbo.get(ENTITY_FIELD_NAME); - if (log.isDebugEnabled()) { - log.debug("Processing key: " + key); - } - if (!changeSet.getValues().containsKey(key)) { - String className = (String) dbo.get(ENTITY_FIELD_CLASS); - if (className == null) { - throw new DataIntegrityViolationException( - "Unble to convert property " + key - + ": Invalid metadata, " + ENTITY_FIELD_CLASS + " not available"); - } - Class clazz = ClassUtils.resolveClassName(className, ClassUtils.getDefaultClassLoader()); - Object value = mongoTemplate.getConverter().read(clazz, dbo); - if (log.isDebugEnabled()) { - log.debug("Adding to ChangeSet: " + key); - } - changeSet.set(key, value); - } - } - return null; - } - }); - } + if (id == null) { + log.debug("Unable to load MongoDB data for null id"); + return; + } - public Object getPersistentId(ChangeSetBacked entity, ChangeSet cs) throws DataAccessException { - log.debug("getPersistentId called on " + entity); - if (entityManagerFactory == null) { - throw new DataAccessResourceFailureException("EntityManagerFactory cannot be null"); - } - Object o = entityManagerFactory.getPersistenceUnitUtil().getIdentifier(entity); - return o; - } + String collName = getCollectionNameForEntity(entityClass); - public Object persistState(ChangeSetBacked entity, ChangeSet cs) throws DataAccessException { - if (cs == null) { - log.debug("Flush: changeset was null, nothing to flush."); - return 0L; - } - - if (log.isDebugEnabled()) { - log.debug("Flush: changeset: " + cs.getValues()); - } + final DBObject dbk = new BasicDBObject(); + dbk.put(ENTITY_ID, id); + dbk.put(ENTITY_CLASS, entityClass.getName()); + if (log.isDebugEnabled()) { + log.debug("Loading MongoDB data for " + dbk); + } + mongoTemplate.execute(collName, new CollectionCallback() { + public Object doInCollection(DBCollection collection) + throws MongoException, DataAccessException { + for (DBObject dbo : collection.find(dbk)) { + String key = (String) dbo.get(ENTITY_FIELD_NAME); + if (log.isDebugEnabled()) { + log.debug("Processing key: " + key); + } + if (!changeSet.getValues().containsKey(key)) { + String className = (String) dbo.get(ENTITY_FIELD_CLASS); + if (className == null) { + throw new DataIntegrityViolationException( + "Unble to convert property " + key + + ": Invalid metadata, " + ENTITY_FIELD_CLASS + " not available"); + } + Class clazz = ClassUtils.resolveClassName(className, ClassUtils.getDefaultClassLoader()); + Object value = mongoTemplate.getConverter().read(clazz, dbo); + if (log.isDebugEnabled()) { + log.debug("Adding to ChangeSet: " + key); + } + changeSet.set(key, value); + } + } + return null; + } + }); + } - String collName = getCollectionNameForEntity(entity.getClass()); - DBCollection dbc = mongoTemplate.getCollection(collName); - if (dbc == null) { - dbc = mongoTemplate.createCollection(collName); - } - for (String key : cs.getValues().keySet()) { - if (key != null && !key.startsWith("_") && !key.equals(ChangeSetPersister.ID_KEY)) { - Object value = cs.getValues().get(key); - final DBObject dbQuery = new BasicDBObject(); - dbQuery.put(ENTITY_ID, getPersistentId(entity, cs)); - dbQuery.put(ENTITY_CLASS, entity.getClass().getName()); - dbQuery.put(ENTITY_FIELD_NAME, key); - DBObject dbId = mongoTemplate.execute(collName, - new CollectionCallback() { - public DBObject doInCollection(DBCollection collection) - throws MongoException, DataAccessException { - return collection.findOne(dbQuery); - } - }); - if (value == null) { - if (log.isDebugEnabled()) { - log.debug("Flush: removing: " + dbQuery); - } - mongoTemplate.execute(collName, new CollectionCallback() { - public Object doInCollection(DBCollection collection) - throws MongoException, DataAccessException { - collection.remove(dbQuery); - return null; - } - }); - } - else { - final DBObject dbDoc = new BasicDBObject(); - dbDoc.putAll(dbQuery); - if (log.isDebugEnabled()) { - log.debug("Flush: saving: " + dbQuery); - } - mongoTemplate.getConverter().write(value, dbDoc); - dbDoc.put(ENTITY_FIELD_CLASS, value.getClass().getName()); - if (dbId != null) { - dbDoc.put("_id", dbId.get("_id")); - } - mongoTemplate.execute(collName, new CollectionCallback() { - public Object doInCollection(DBCollection collection) - throws MongoException, DataAccessException { - collection.save(dbDoc); - return null; - } - }); - } - } - } - return 0L; - } + public Object getPersistentId(ChangeSetBacked entity, ChangeSet cs) throws DataAccessException { + log.debug("getPersistentId called on " + entity); + if (entityManagerFactory == null) { + throw new DataAccessResourceFailureException("EntityManagerFactory cannot be null"); + } + Object o = entityManagerFactory.getPersistenceUnitUtil().getIdentifier(entity); + return o; + } - private String getCollectionNameForEntity(Class entityClass) { - return ClassUtils.getQualifiedName(entityClass); - } + public Object persistState(ChangeSetBacked entity, ChangeSet cs) throws DataAccessException { + if (cs == null) { + log.debug("Flush: changeset was null, nothing to flush."); + return 0L; + } + + if (log.isDebugEnabled()) { + log.debug("Flush: changeset: " + cs.getValues()); + } + + String collName = getCollectionNameForEntity(entity.getClass()); + if (mongoTemplate.getCollection(collName) == null) { + mongoTemplate.createCollection(collName); + } + + for (String key : cs.getValues().keySet()) { + if (key != null && !key.startsWith("_") && !key.equals(ChangeSetPersister.ID_KEY)) { + Object value = cs.getValues().get(key); + final DBObject dbQuery = new BasicDBObject(); + dbQuery.put(ENTITY_ID, getPersistentId(entity, cs)); + dbQuery.put(ENTITY_CLASS, entity.getClass().getName()); + dbQuery.put(ENTITY_FIELD_NAME, key); + DBObject dbId = mongoTemplate.execute(collName, + new CollectionCallback() { + public DBObject doInCollection(DBCollection collection) + throws MongoException, DataAccessException { + return collection.findOne(dbQuery); + } + }); + if (value == null) { + if (log.isDebugEnabled()) { + log.debug("Flush: removing: " + dbQuery); + } + mongoTemplate.execute(collName, new CollectionCallback() { + public Object doInCollection(DBCollection collection) + throws MongoException, DataAccessException { + collection.remove(dbQuery); + return null; + } + }); + } + else { + final DBObject dbDoc = new BasicDBObject(); + dbDoc.putAll(dbQuery); + if (log.isDebugEnabled()) { + log.debug("Flush: saving: " + dbQuery); + } + mongoTemplate.getConverter().write(value, dbDoc); + dbDoc.put(ENTITY_FIELD_CLASS, value.getClass().getName()); + if (dbId != null) { + dbDoc.put("_id", dbId.get("_id")); + } + mongoTemplate.execute(collName, new CollectionCallback() { + public Object doInCollection(DBCollection collection) + throws MongoException, DataAccessException { + collection.save(dbDoc); + return null; + } + }); + } + } + } + return 0L; + } + + private String getCollectionNameForEntity(Class entityClass) { + return ClassUtils.getQualifiedName(entityClass); + } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/CannotGetMongoDbConnectionException.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/CannotGetMongoDbConnectionException.java index f7d4b3536..5c291db47 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/CannotGetMongoDbConnectionException.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/CannotGetMongoDbConnectionException.java @@ -35,10 +35,10 @@ public class CannotGetMongoDbConnectionException extends DataAccessResourceFailu super(msg); } - public CannotGetMongoDbConnectionException(String msg, String database, String username, char[] password2) { + public CannotGetMongoDbConnectionException(String msg, String database, String username, char[] password) { super(msg); this.username = username; - this.password = password2; + this.password = password == null ? null : password.clone(); this.database = database; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 3462ca471..cc4403656 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -866,7 +866,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { } else { commandResult = executeCommand(commandObject); } - commandResult.throwOnError(); + commandResult.throwOnError(); } catch (RuntimeException ex) { this.potentiallyConvertRuntimeException(ex); } @@ -1277,7 +1277,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { if (entityClass == null) { throw new InvalidDataAccessApiUsageException( - "No class parameter provided, entity collection can't be determined for " + entityClass); + "No class parameter provided, entity collection can't be determined!"); } MongoPersistentEntity entity = mappingContext.getPersistentEntity(entityClass); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryMapper.java index e6aec821b..b6463ead8 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryMapper.java @@ -100,9 +100,8 @@ public class QueryMapper { newConditions.add(getMappedObject((DBObject) iter.next(), entity)); } value = newConditions; - } else { - // TODO: Implement other forms of conversion (like @Alias and whatnot) } + newDbo.put(newKey, value); } return newDbo; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index ecae9d227..19ba0027a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -200,7 +200,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App spelCtx.setBeanResolver(new BeanFactoryResolver(applicationContext)); } if (!(dbo instanceof BasicDBList)) { - String[] keySet = dbo.keySet().toArray(new String[] {}); + String[] keySet = dbo.keySet().toArray(new String[dbo.keySet().size()]); for (String key : keySet) { spelCtx.setVariable(key, dbo.get(key)); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/Circle.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/Circle.java index 5ddb9fab7..a590c11cb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/Circle.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/Circle.java @@ -51,6 +51,6 @@ public class Circle { @Override public String toString() { - return String.format("Circle [center=%s, radius=%d]", center, radius); + return String.format("Circle [center=%s, radius=%f]", center, radius); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/OrCriteria.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/OrCriteria.java index c87eaeb32..6bc989eeb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/OrCriteria.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/OrCriteria.java @@ -25,7 +25,7 @@ public class OrCriteria implements CriteriaDefinition { public OrCriteria(Query[] queries) { super(); - this.queries = queries; + this.queries = queries == null ? null : queries.clone(); } /*