CAY-2077 Bug in CayenneRuntimeException using wrong specified string in Formatter plus cleanup
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/2be06d62 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/2be06d62 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/2be06d62 Branch: refs/heads/master Commit: 2be06d62b2626dea132d6eb891e6242983dfd16b Parents: 8733147 Author: Nikita Timofeev <[email protected]> Authored: Fri Mar 24 14:56:41 2017 +0300 Committer: Nikita Timofeev <[email protected]> Committed: Fri Mar 24 14:56:41 2017 +0300 ---------------------------------------------------------------------- .../cayenne/gen/ClassGenerationAction.java | 2 +- .../org/apache/cayenne/gen/EntityUtils.java | 3 +- .../apache/cayenne/remote/ClientChannel.java | 10 ++-- .../cayenne/jcache/JCacheEntryLoader.java | 2 +- .../java/org/apache/cayenne/BaseContext.java | 18 +++---- .../main/java/org/apache/cayenne/Cayenne.java | 20 +++---- .../java/org/apache/cayenne/CayenneContext.java | 2 +- .../org/apache/cayenne/CayenneDataObject.java | 10 ++-- .../cayenne/ObjectContextDeleteAction.java | 57 +++++++------------- .../access/ClientServerChannelQueryAction.java | 6 +-- .../org/apache/cayenne/access/DataContext.java | 6 +-- .../org/apache/cayenne/access/DataDomain.java | 11 ++-- .../cayenne/access/DataDomainFlushObserver.java | 7 ++- .../access/DataDomainIndirectDiffBuilder.java | 9 ++-- .../cayenne/access/DataDomainInsertBucket.java | 2 +- .../access/DataDomainLegacyQueryAction.java | 4 +- .../cayenne/access/DataDomainQueryAction.java | 4 +- .../cayenne/access/DataDomainSyncBucket.java | 8 +-- .../org/apache/cayenne/access/DataNode.java | 2 +- .../access/DataNodeSyncQualifierDescriptor.java | 4 +- .../access/DefaultObjectMapRetainStrategy.java | 2 +- .../apache/cayenne/access/FlattenedArcKey.java | 17 +++--- .../access/HierarchicalObjectResolver.java | 6 +-- .../access/HierarchicalObjectResolverNode.java | 2 +- .../cayenne/access/IncrementalFaultList.java | 4 +- .../JoinedIdParentAttachementStrategy.java | 9 +--- .../apache/cayenne/access/ObjectResolver.java | 7 ++- .../org/apache/cayenne/access/ObjectStore.java | 2 +- .../access/PrefetchProcessorJointNode.java | 3 +- .../access/PrefetchProcessorTreeBuilder.java | 4 +- .../org/apache/cayenne/access/ToOneFault.java | 13 ++--- .../jdbc/ConnectionAwareResultIterator.java | 10 ++-- .../cayenne/access/jdbc/JDBCResultIterator.java | 2 +- .../cayenne/access/jdbc/ProcedureAction.java | 3 +- .../access/jdbc/RowDescriptorBuilder.java | 30 ++++------- .../cayenne/access/jdbc/reader/IdRowReader.java | 2 +- .../batch/DefaultBatchTranslatorFactory.java | 2 +- .../ejbql/EJBQLIdentifierColumnsTranslator.java | 17 +++--- .../ejbql/EJBQLSelectColumnsTranslator.java | 2 +- .../select/DefaultSelectTranslator.java | 8 +-- .../translator/select/OrderingTranslator.java | 2 +- .../translator/select/QueryAssemblerHelper.java | 26 ++++----- .../cayenne/access/types/CalendarType.java | 14 ++--- .../cayenne/access/types/ExtendedEnumType.java | 14 ++--- .../access/util/IteratedSelectObserver.java | 2 +- .../cayenne/ashwood/AshwoodEntitySorter.java | 4 +- .../apache/cayenne/cache/EhCacheQueryCache.java | 2 +- .../org/apache/cayenne/cache/MapQueryCache.java | 2 +- .../org/apache/cayenne/cache/OSQueryCache.java | 25 +++------ .../cayenne/datasource/DataSourceBuilder.java | 8 +-- .../cayenne/datasource/DriverDataSource.java | 6 +-- .../datasource/PoolingDataSourceBuilder.java | 8 +-- .../org/apache/cayenne/dba/JdbcAdapter.java | 8 +-- .../org/apache/cayenne/dba/JdbcPkGenerator.java | 10 ++-- .../org/apache/cayenne/dba/db2/DB2Adapter.java | 4 +- .../cayenne/dba/db2/DB2QualifierTranslator.java | 4 +- .../apache/cayenne/dba/derby/DerbyAdapter.java | 7 ++- .../dba/derby/DerbyQualifierTranslator.java | 3 +- .../cayenne/dba/firebird/FirebirdAdapter.java | 4 +- .../cayenne/dba/frontbase/FrontBaseAdapter.java | 8 +-- .../dba/frontbase/FrontBasePkGenerator.java | 2 +- .../frontbase/FrontBaseQualifierTranslator.java | 2 +- .../dba/hsqldb/HSQLQualifierTranslator.java | 3 +- .../cayenne/dba/ingres/IngresAdapter.java | 4 +- .../apache/cayenne/dba/mysql/MySQLAdapter.java | 8 +-- .../dba/mysql/MySQLQualifierTranslator.java | 3 +- .../cayenne/dba/openbase/OpenBaseAdapter.java | 10 ++-- .../dba/openbase/OpenBasePkGenerator.java | 10 ++-- .../dba/oracle/Oracle8LOBBatchAction.java | 4 +- .../dba/oracle/Oracle8LOBBatchTranslator.java | 4 +- .../cayenne/dba/oracle/OraclePkGenerator.java | 2 +- .../cayenne/dba/postgres/PostgresAdapter.java | 8 +-- .../cayenne/dba/sybase/SybasePkGenerator.java | 6 +-- .../cayenne/exp/LikeExpressionHelper.java | 2 +- .../apache/cayenne/exp/parser/ASTExtract.java | 2 +- .../apache/cayenne/graph/ChildDiffLoader.java | 4 +- .../cayenne/log/CommonsJdbcEventLogger.java | 7 +-- .../java/org/apache/cayenne/map/DataMap.java | 9 +--- .../java/org/apache/cayenne/map/DbEntity.java | 5 +- .../org/apache/cayenne/map/DbRelationship.java | 2 +- .../apache/cayenne/map/EmbeddedAttribute.java | 4 +- .../org/apache/cayenne/map/MappingCache.java | 4 +- .../java/org/apache/cayenne/map/ObjEntity.java | 9 ++-- .../org/apache/cayenne/map/ObjRelationship.java | 8 +-- .../org/apache/cayenne/map/Relationship.java | 4 +- .../org/apache/cayenne/query/AbstractQuery.java | 3 +- .../org/apache/cayenne/query/BatchQueryRow.java | 2 +- .../org/apache/cayenne/query/EJBQLQuery.java | 3 +- .../org/apache/cayenne/query/FluentSelect.java | 4 +- .../org/apache/cayenne/query/IndirectQuery.java | 5 +- .../org/apache/cayenne/query/MappedSelect.java | 2 +- .../org/apache/cayenne/query/NamedQuery.java | 8 +-- .../org/apache/cayenne/query/ObjectIdQuery.java | 5 +- .../apache/cayenne/query/RelationshipQuery.java | 17 ++---- .../java/org/apache/cayenne/query/SQLExec.java | 4 +- .../org/apache/cayenne/query/SelectById.java | 4 +- .../cayenne/query/SelectQueryMetadata.java | 4 +- .../query/SelectQueryPrefetchRouterAction.java | 6 +-- .../cayenne/reflect/ClassDescriptorMap.java | 2 +- .../apache/cayenne/reflect/FieldAccessor.java | 10 +--- .../reflect/PersistentDescriptorFactory.java | 2 +- .../remote/RemoteIncrementalFaultList.java | 9 ++-- .../cayenne/remote/service/DispatchHelper.java | 12 ++--- .../apache/cayenne/tx/TransactionFilter.java | 2 +- .../apache/cayenne/util/DeepMergeOperation.java | 3 +- .../apache/cayenne/util/IndexPropertyList.java | 6 +-- .../org/apache/cayenne/util/MemoryClob.java | 16 +++--- .../cayenne/util/ObjectDetachOperation.java | 5 +- .../cayenne/util/PersistentObjectHolder.java | 6 +-- .../cayenne/util/PersistentObjectList.java | 6 +-- .../cayenne/util/PersistentObjectMap.java | 26 ++++----- .../cayenne/util/PersistentObjectSet.java | 14 ++--- .../velocity/VelocitySQLTemplateProcessor.java | 7 ++- docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 + .../org/apache/cayenne/event/XMPPBridge.java | 44 ++++----------- .../dialog/ResolveDbRelationshipDialog.java | 7 ++- .../cayenne/pref/CayenneProjectPreferences.java | 18 +++---- .../cayenne/pref/ChildrenMapPreference.java | 51 ++++++------------ .../apache/cayenne/swing/BeanActionBinding.java | 3 +- 119 files changed, 362 insertions(+), 574 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java ---------------------------------------------------------------------- diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java index 2c3fbda..c07a3cb 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java @@ -291,7 +291,7 @@ public class ClassGenerationAction { } if (!destDir.canWrite()) { - throw new CayenneRuntimeException("Do not have write permissions for " + destDir); + throw new CayenneRuntimeException("Do not have write permissions for %s", destDir); } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java ---------------------------------------------------------------------- diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java index ecf2a3f..cd814db 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java @@ -257,8 +257,7 @@ public class EntityUtils { // its type. ObjAttribute attribute = targetEntity.getAttribute(relationship.getMapKey()); if (attribute == null) { - throw new CayenneRuntimeException("Invalid map key '" + relationship.getMapKey() - + "', no matching attribute found"); + throw new CayenneRuntimeException("Invalid map key '%s', no matching attribute found", relationship.getMapKey()); } return attribute.getType(); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java b/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java index ef17e3a..8353bc4 100644 --- a/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java +++ b/cayenne-client/src/main/java/org/apache/cayenne/remote/ClientChannel.java @@ -173,8 +173,7 @@ public class ClientChannel implements DataChannel { // sanity check if (id == null) { - throw new CayenneRuntimeException("Server returned an object without an id: " - + object); + throw new CayenneRuntimeException("Server returned an object without an id: %s", object); } return merger.merge(object); @@ -300,10 +299,9 @@ public class ClientChannel implements DataChannel { if (result != null && !resultClass.isInstance(result)) { String resultString = new ToStringBuilder(result).toString(); - throw new CayenneRuntimeException("Expected result type: " - + resultClass.getName() - + ", actual: " - + resultString); + throw new CayenneRuntimeException("Expected result type: %s, actual: %s" + , resultClass.getName() + , resultString); } return resultClass.cast(result); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-jcache/src/main/java/org/apache/cayenne/jcache/JCacheEntryLoader.java ---------------------------------------------------------------------- diff --git a/cayenne-jcache/src/main/java/org/apache/cayenne/jcache/JCacheEntryLoader.java b/cayenne-jcache/src/main/java/org/apache/cayenne/jcache/JCacheEntryLoader.java index 1dbf3c1..4d247ae 100644 --- a/cayenne-jcache/src/main/java/org/apache/cayenne/jcache/JCacheEntryLoader.java +++ b/cayenne-jcache/src/main/java/org/apache/cayenne/jcache/JCacheEntryLoader.java @@ -44,7 +44,7 @@ public class JCacheEntryLoader implements EntryProcessor<String, List, List> { List result = (List)entryFactory.createObject(); // sanity checking value if (result == null) { - throw new CayenneRuntimeException("Null object created: " + entry.getKey()); + throw new CayenneRuntimeException("Null object created: %s", entry.getKey()); } entry.setValue(result); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java b/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java index 0ff58e1..ac9cc7a 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java @@ -253,19 +253,19 @@ public abstract class BaseContext implements ObjectContext { // first look for the ID in the local GraphManager synchronized (getGraphManager()) { + @SuppressWarnings("unchecked") T localObject = (T) getGraphManager().getNode(id); if (localObject != null) { return localObject; } - // create a hollow object, optimistically assuming that the ID we - // got from - // 'objectFromAnotherContext' is a valid ID either in the parent - // context or in - // the DB. This essentially defers possible FaultFailureExceptions. + // create a hollow object, optimistically assuming that the ID we got from + // 'objectFromAnotherContext' is a valid ID either in the parent context or in the DB. + // This essentially defers possible FaultFailureExceptions. ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(id.getEntityName()); - Persistent persistent = (Persistent) descriptor.createObject(); + @SuppressWarnings("unchecked") + T persistent = (T) descriptor.createObject(); persistent.setObjectContext(this); persistent.setObjectId(id); @@ -273,7 +273,7 @@ public abstract class BaseContext implements ObjectContext { getGraphManager().registerNode(id, persistent); - return (T) persistent; + return persistent; } } @@ -317,7 +317,7 @@ public abstract class BaseContext implements ObjectContext { if (objects.size() == 0) { return null; } else if (objects.size() > 1) { - throw new CayenneRuntimeException("Expected zero or one object, instead query matched: " + objects.size()); + throw new CayenneRuntimeException("Expected zero or one object, instead query matched: %d", objects.size()); } return objects.get(0); @@ -501,7 +501,7 @@ public abstract class BaseContext implements ObjectContext { case DataChannel.FLUSH_CASCADE_SYNC: return onContextFlush(originatingContext, changes, true); default: - throw new CayenneRuntimeException("Unrecognized SyncMessage type: " + syncType); + throw new CayenneRuntimeException("Unrecognized SyncMessage type: %d", syncType); } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/Cayenne.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/Cayenne.java b/cayenne-server/src/main/java/org/apache/cayenne/Cayenne.java index 0b34b49..8098bf5 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/Cayenne.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/Cayenne.java @@ -270,7 +270,7 @@ public class Cayenne { Object value = pkForObject(dataObject); if (!(value instanceof Number)) { - throw new CayenneRuntimeException("PK is not a number: " + dataObject.getObjectId()); + throw new CayenneRuntimeException("PK is not a number: %s", dataObject.getObjectId()); } return ((Number) value).longValue(); @@ -285,7 +285,7 @@ public class Cayenne { Object value = pkForObject(dataObject); if (!(value instanceof Number)) { - throw new CayenneRuntimeException("PK is not a number: " + dataObject.getObjectId()); + throw new CayenneRuntimeException("PK is not a number: %s", dataObject.getObjectId()); } return ((Number) value).intValue(); @@ -300,7 +300,7 @@ public class Cayenne { Map<String, Object> pk = extractObjectId(dataObject); if (pk.size() != 1) { - throw new CayenneRuntimeException("Expected single column PK, got " + pk.size() + " columns, ID: " + pk); + throw new CayenneRuntimeException("Expected single column PK, got %d columns, ID: %s", pk.size(), pk); } return pk.entrySet().iterator().next().getValue(); @@ -389,7 +389,7 @@ public class Cayenne { ObjEntity entity = context.getEntityResolver().getObjEntity(dataObjectClass); if (entity == null) { - throw new CayenneRuntimeException("Non-existent ObjEntity for class: " + dataObjectClass); + throw new CayenneRuntimeException("Non-existent ObjEntity for class: %s", dataObjectClass); } return (T) objectForPK(context, new ObjectId(entity.getName(), pk)); @@ -407,7 +407,7 @@ public class Cayenne { * @see #objectForPK(ObjectContext, ObjectId) */ public static Object objectForPK(ObjectContext context, String objEntityName, int pk) { - return objectForPK(context, buildId(context, objEntityName, Integer.valueOf(pk))); + return objectForPK(context, buildId(context, objEntityName, pk)); } /** @@ -469,7 +469,7 @@ public class Cayenne { if (objects.size() == 0) { return null; } else if (objects.size() > 1) { - throw new CayenneRuntimeException("Expected zero or one object, instead query matched: " + objects.size()); + throw new CayenneRuntimeException("Expected zero or one object, instead query matched: %d", objects.size()); } return objects.get(0); @@ -486,12 +486,12 @@ public class Cayenne { ObjEntity entity = context.getEntityResolver().getObjEntity(objEntityName); if (entity == null) { - throw new CayenneRuntimeException("Non-existent ObjEntity: " + objEntityName); + throw new CayenneRuntimeException("Non-existent ObjEntity: %s", objEntityName); } Collection<String> pkAttributes = entity.getPrimaryKeyNames(); if (pkAttributes.size() != 1) { - throw new CayenneRuntimeException("PK contains " + pkAttributes.size() + " columns, expected 1."); + throw new CayenneRuntimeException("PK contains %d columns, expected 1.", pkAttributes.size()); } String attr = pkAttributes.iterator().next(); @@ -509,12 +509,12 @@ public class Cayenne { ObjEntity entity = context.getEntityResolver().getObjEntity(dataObjectClass); if (entity == null) { - throw new CayenneRuntimeException("Unmapped DataObject Class: " + dataObjectClass.getName()); + throw new CayenneRuntimeException("Unmapped DataObject Class: %s", dataObjectClass.getName()); } Collection<String> pkAttributes = entity.getPrimaryKeyNames(); if (pkAttributes.size() != 1) { - throw new CayenneRuntimeException("PK contains " + pkAttributes.size() + " columns, expected 1."); + throw new CayenneRuntimeException("PK contains %d columns, expected 1.", pkAttributes.size()); } String attr = pkAttributes.iterator().next(); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java b/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java index 856d77b..c352ae0 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/CayenneContext.java @@ -245,7 +245,7 @@ public class CayenneContext extends BaseContext { ObjEntity entity = getEntityResolver().getObjEntity(persistentClass); if (entity == null) { - throw new CayenneRuntimeException("No entity mapped for class: " + persistentClass); + throw new CayenneRuntimeException("No entity mapped for class: %s", persistentClass); } ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(entity.getName()); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java b/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java index 0aca689..6a0c23e 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/CayenneDataObject.java @@ -396,8 +396,8 @@ public class CayenneDataObject extends PersistentObject implements DataObject, V } else if (this.getObjectContext() != null && object.getObjectContext() == null) { this.getObjectContext().registerNewObject(object); } else { - throw new CayenneRuntimeException("Cannot set object as destination of relationship " + relationshipName - + " because it is in a different ObjectContext"); + throw new CayenneRuntimeException("Cannot set object as destination of relationship %s" + + " because it is in a different ObjectContext", relationshipName); } } @@ -581,7 +581,7 @@ public class CayenneDataObject extends PersistentObject implements DataObject, V ObjEntity objEntity = getObjectContext().getEntityResolver().getObjEntity(this); if (objEntity == null) { - throw new CayenneRuntimeException("No ObjEntity mapping found for DataObject " + getClass().getName()); + throw new CayenneRuntimeException("No ObjEntity mapping found for DataObject %s", getClass().getName()); } // validate mandatory attributes @@ -607,8 +607,8 @@ public class CayenneDataObject extends PersistentObject implements DataObject, V DbAttribute dbAttribute = next.getDbAttribute(); if (dbAttribute == null) { - throw new CayenneRuntimeException("ObjAttribute '" + next.getName() - + "' does not have a corresponding DbAttribute"); + throw new CayenneRuntimeException("ObjAttribute '%s" + + "' does not have a corresponding DbAttribute", next.getName()); } // pk may still be generated http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java b/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java index 907a7b7..e38868c 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java @@ -22,7 +22,6 @@ package org.apache.cayenne; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Iterator; import java.util.Map; import org.apache.cayenne.map.DeleteRule; @@ -63,15 +62,13 @@ class ObjectContextDeleteAction { if (object.getObjectContext() == null) { throw new CayenneRuntimeException( - "Attempt to delete unregistered non-TRANSIENT object: " + object); + "Attempt to delete unregistered non-TRANSIENT object: %s", object); } if (object.getObjectContext() != context) { throw new CayenneRuntimeException( - "Attempt to delete object regsitered in a different ObjectContext. Object: " - + object - + ", context: " - + context); + "Attempt to delete object regsitered in a different ObjectContext. Object: %s, context: %s" + , object, context); } // must resolve HOLLOW objects before delete... needed @@ -108,21 +105,20 @@ class ObjectContextDeleteAction { context.getGraphManager().nodeRemoved(object.getObjectId()); } - private Collection toCollection(Object object) { + @SuppressWarnings("unchecked") + private Collection<Persistent> toCollection(Object object) { if (object == null) { - return Collections.EMPTY_LIST; + return Collections.emptyList(); } // create copies of collections to avoid iterator exceptions if (object instanceof Collection) { - return new ArrayList((Collection) object); - } - else if (object instanceof Map) { - return new ArrayList(((Map) object).values()); - } - else { - return Collections.singleton(object); + return new ArrayList<>((Collection<Persistent>) object); + } else if (object instanceof Map) { + return new ArrayList<>(((Map<?, Persistent>) object).values()); + } else { + return Collections.singleton((Persistent)object); } } @@ -143,9 +139,8 @@ class ObjectContextDeleteAction { continue; } - ArcProperty property = (ArcProperty) descriptor.getProperty(relationship - .getName()); - Collection relatedObjects = toCollection(property.readProperty(object)); + ArcProperty property = (ArcProperty) descriptor.getProperty(relationship.getName()); + final Collection<Persistent> relatedObjects = toCollection(property.readProperty(object)); // no related object, bail out if (relatedObjects.size() == 0) { @@ -166,11 +161,9 @@ class ObjectContextDeleteAction { // joins must be removed even if they are non-existent or ignored in the // object graph if (processFlattened) { - Iterator iterator = relatedObjects.iterator(); - while (iterator.hasNext()) { - Persistent relatedObject = (Persistent) iterator.next(); - context.getGraphManager().arcDeleted(object.getObjectId(), relatedObject - .getObjectId(), relationship.getName()); + for (Persistent relatedObject : relatedObjects) { + context.getGraphManager().arcDeleted(object.getObjectId() + , relatedObject.getObjectId(), relationship.getName()); } } @@ -186,8 +179,6 @@ class ObjectContextDeleteAction { break; } - final Collection finalRelatedObjects = relatedObjects; - reverseArc.visit(new PropertyVisitor() { public boolean visitAttribute(AttributeProperty property) { @@ -195,21 +186,16 @@ class ObjectContextDeleteAction { } public boolean visitToMany(ToManyProperty property) { - Iterator iterator = finalRelatedObjects.iterator(); - while (iterator.hasNext()) { - Object relatedObject = iterator.next(); + for (Persistent relatedObject : relatedObjects) { property.removeTarget(relatedObject, object, true); } - return false; } public boolean visitToOne(ToOneProperty property) { // Inverse is to-one - find all related objects and // nullify the reverse relationship - Iterator iterator = finalRelatedObjects.iterator(); - while (iterator.hasNext()) { - Object relatedObject = iterator.next(); + for (Persistent relatedObject : relatedObjects) { property.setTarget(relatedObject, null, true); } return false; @@ -219,17 +205,14 @@ class ObjectContextDeleteAction { break; case DeleteRule.CASCADE: // Delete all related objects - Iterator iterator = relatedObjects.iterator(); - while (iterator.hasNext()) { - Persistent relatedObject = (Persistent) iterator.next(); + for (Persistent relatedObject : relatedObjects) { performDelete(relatedObject); } break; default: object.setPersistenceState(oldState); - throw new CayenneRuntimeException("Invalid delete rule " - + relationship.getDeleteRule()); + throw new CayenneRuntimeException("Invalid delete rule %s", relationship.getDeleteRule()); } } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/ClientServerChannelQueryAction.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/ClientServerChannelQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/ClientServerChannelQueryAction.java index 0fbd203..af88e0f 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/ClientServerChannelQueryAction.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ClientServerChannelQueryAction.java @@ -92,8 +92,7 @@ class ClientServerChannelQueryAction { cachedList = channel.getQueryCache().get(serverMetadata); if (cachedList == null) { - throw new CayenneRuntimeException("No cached list for " - + serverMetadata.getCacheKey()); + throw new CayenneRuntimeException("No cached list for %s", serverMetadata.getCacheKey()); } } else { return !DONE; @@ -260,8 +259,7 @@ class ClientServerChannelQueryAction { // sanity check if (id == null) { - throw new CayenneRuntimeException("Server returned an object without an id: " - + object); + throw new CayenneRuntimeException("Server returned an object without an id: %s", object); } // have to resolve descriptor here for every object, as http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java index ca7a3d9..de66464 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java @@ -347,8 +347,8 @@ public class DataContext extends BaseContext { if (targetObject instanceof Fault) { DataRow storedSnapshot = getObjectStore().getSnapshot(object.getObjectId()); if (storedSnapshot == null) { - throw new CayenneRuntimeException("No matching objects found for ObjectId " - + object.getObjectId() + ". Object may have been deleted externally."); + throw new CayenneRuntimeException("No matching objects found for ObjectId %s" + + ". Object may have been deleted externally.", object.getObjectId()); } DbRelationship dbRel = rel.getDbRelationships().get(0); @@ -433,7 +433,7 @@ public class DataContext extends BaseContext { ObjEntity entity = this.getEntityResolver().getObjEntity(objectClass); if (entity == null) { - throw new CayenneRuntimeException("Unmapped Java class: " + objectClass); + throw new CayenneRuntimeException("Unmapped Java class: %s", objectClass); } ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(entity.getName()); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java index 13746f1..9caa59d 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomain.java @@ -486,8 +486,8 @@ public class DataDomain implements QueryEngine, DataChannel { nodesByDataMapName.put(map.getName(), defaultNode); node = defaultNode; } else { - throw new CayenneRuntimeException("No DataNode configured for DataMap '" + map.getName() - + "' and no default DataNode set"); + throw new CayenneRuntimeException("No DataNode configured for DataMap '%s'" + + " and no default DataNode set", map.getName()); } } } @@ -603,7 +603,7 @@ public class DataDomain implements QueryEngine, DataChannel { result = onSyncFlush(originatingContext, changes); break; default: - throw new CayenneRuntimeException("Invalid synchronization type: " + syncType); + throw new CayenneRuntimeException("Invalid synchronization type: %d", syncType); } return result; @@ -623,9 +623,8 @@ public class DataDomain implements QueryEngine, DataChannel { GraphDiff onSyncFlush(ObjectContext originatingContext, GraphDiff childChanges) { if (!(originatingContext instanceof DataContext)) { - throw new CayenneRuntimeException( - "No support for committing ObjectContexts that are not DataContexts yet. " - + "Unsupported context: " + originatingContext); + throw new CayenneRuntimeException("No support for committing ObjectContexts that are not DataContexts yet. " + + "Unsupported context: %s", originatingContext); } DataDomainFlushAction action = new DataDomainFlushAction(this); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlushObserver.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlushObserver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlushObserver.java index 64dd41a..44923dc 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlushObserver.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlushObserver.java @@ -76,8 +76,7 @@ class DataDomainFlushObserver implements OperationObserver { } if (!(query instanceof InsertBatchQuery)) { - throw new CayenneRuntimeException("Generated keys only supported for InsertBatchQuery, instead got " - + query); + throw new CayenneRuntimeException("Generated keys only supported for InsertBatchQuery, instead got %s", query); } if (idToUpdate == null || !idToUpdate.isTemporary()) { @@ -86,7 +85,7 @@ class DataDomainFlushObserver implements OperationObserver { } if (keys.size() != 1) { - throw new CayenneRuntimeException("One and only one PK row is expected, instead got " + keys.size()); + throw new CayenneRuntimeException("One and only one PK row is expected, instead got %d", keys.size()); } DataRow key = keys.get(0); @@ -107,7 +106,7 @@ class DataDomainFlushObserver implements OperationObserver { // infer the key name and currently will only support a single column... if (key.size() > 1) { throw new CayenneRuntimeException("Only a single column autogenerated PK is supported. " - + "Generated key: " + key); + + "Generated key: %s", key); } BatchQuery batch = (BatchQuery) query; http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainIndirectDiffBuilder.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainIndirectDiffBuilder.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainIndirectDiffBuilder.java index ab06059..c703ef9 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainIndirectDiffBuilder.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainIndirectDiffBuilder.java @@ -87,9 +87,8 @@ final class DataDomainIndirectDiffBuilder implements GraphChangeHandler { if (relationship.isFlattened()) { if (relationship.isReadOnly()) { - throw new CayenneRuntimeException("Cannot set the read-only flattened relationship '" - + relationship.getName() + "' in ObjEntity '" + relationship.getSourceEntity().getName() - + "'."); + throw new CayenneRuntimeException("Cannot set the read-only flattened relationship '%s' in ObjEntity '%s'." + , relationship.getName(), relationship.getSourceEntity().getName()); } // Register this combination (so we can remove it later if an @@ -121,8 +120,8 @@ final class DataDomainIndirectDiffBuilder implements GraphChangeHandler { if (relationship.isFlattened()) { if (relationship.isReadOnly()) { - throw new CayenneRuntimeException("Cannot unset the read-only flattened relationship " - + relationship.getName()); + throw new CayenneRuntimeException("Cannot unset the read-only flattened relationship %s" + , relationship.getName()); } // Register this combination (so we can remove it later if an http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java index dbe9a70..6f37109 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java @@ -166,7 +166,7 @@ class DataDomainInsertBucket extends DataDomainSyncBucket { idMap.put(dbAttrName, pkValue); autoPkDone = true; } catch (Exception ex) { - throw new CayenneRuntimeException("Error generating PK: " + ex.getMessage(), ex); + throw new CayenneRuntimeException("Error generating PK: %s", ex, ex.getMessage()); } } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainLegacyQueryAction.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainLegacyQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainLegacyQueryAction.java index 42fd089..7715c12 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainLegacyQueryAction.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainLegacyQueryAction.java @@ -120,7 +120,7 @@ class DataDomainLegacyQueryAction implements QueryRouter, OperationObserver { QueryEngine node = domain.lookupDataNode(map); if (node == null) { - throw new CayenneRuntimeException("No DataNode exists for DataMap " + map); + throw new CayenneRuntimeException("No DataNode exists for DataMap %s", map); } return node; @@ -137,7 +137,7 @@ class DataDomainLegacyQueryAction implements QueryRouter, OperationObserver { if (name != null) { node = domain.getDataNode(name); if (node == null) { - throw new CayenneRuntimeException("No DataNode exists for name " + name); + throw new CayenneRuntimeException("No DataNode exists for name %s", name); } } else { node = domain.getDefaultNode(); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java index 7e00cca..a87de83 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java @@ -542,7 +542,7 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver { QueryEngine node = domain.lookupDataNode(map); if (node == null) { - throw new CayenneRuntimeException("No DataNode exists for DataMap " + map); + throw new CayenneRuntimeException("No DataNode exists for DataMap %s", map); } return node; @@ -559,7 +559,7 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver { if (name != null) { node = domain.getDataNode(name); if (node == null) { - throw new CayenneRuntimeException("No DataNode exists for name " + name); + throw new CayenneRuntimeException("No DataNode exists for name %s", name); } } else { node = domain.getDefaultNode(); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java index 588a0d2..780e492 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java @@ -226,7 +226,7 @@ abstract class DataDomainSyncBucket { } else if (id.isTemporary()) { throw new CayenneRuntimeException( - "Temporary ID hasn't been replaced on commit: " + object); + "Temporary ID hasn't been replaced on commit: %s", object); } else { finalId = id; @@ -307,11 +307,7 @@ abstract class DataDomainSyncBucket { Object value = masterID.getIdSnapshot().get(masterKey); if (value == null) { throw new CayenneRuntimeException("Can't extract a master key. " - + "Missing key (" - + masterKey - + "), master ID (" - + masterID - + ")"); + + "Missing key (%s), master ID (%s)", masterKey, masterID); } return value; http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataNode.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataNode.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataNode.java index 88b864b..e02ea39 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataNode.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataNode.java @@ -257,7 +257,7 @@ public class DataNode implements QueryEngine { } if (callback.isIteratedResult() && listSize > 1) { - throw new CayenneRuntimeException("Iterated queries are not allowed in a batch. Batch size: " + listSize); + throw new CayenneRuntimeException("Iterated queries are not allowed in a batch. Batch size: %d", listSize); } // do this meaningless inexpensive operation to trigger AutoAdapter lazy http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.java index 8ec6705..2f10d01 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.java @@ -93,8 +93,8 @@ class DataNodeSyncQualifierDescriptor { // supported... if (descriptor.getPathFromMaster().size() != 1) { throw new CayenneRuntimeException( - "Only single step dependent relationships are currently supported. Actual path length: " - + descriptor.getPathFromMaster().size()); + "Only single step dependent relationships are currently supported. Actual path length: %d" + , descriptor.getPathFromMaster().size()); } DbRelationship masterDependentDbRel = descriptor.getPathFromMaster().get(0); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java index 85c8913..7fe338c 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultObjectMapRetainStrategy.java @@ -57,7 +57,7 @@ public class DefaultObjectMapRetainStrategy implements ObjectMapRetainStrategy { } else if (HARD_RETAIN_STRATEGY.equals(strategy)) { return new ReferenceMap(AbstractReferenceMap.HARD, AbstractReferenceMap.HARD); } else { - throw new CayenneRuntimeException("Unsupported retain strategy " + strategy); + throw new CayenneRuntimeException("Unsupported retain strategy %s", strategy); } } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/FlattenedArcKey.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/FlattenedArcKey.java b/cayenne-server/src/main/java/org/apache/cayenne/access/FlattenedArcKey.java index 97e7ec8..ab5698d 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/FlattenedArcKey.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/FlattenedArcKey.java @@ -121,7 +121,7 @@ final class FlattenedArcKey { snapshot.put(dbAttrName, pkValue); autoPkDone = true; } catch (Exception ex) { - throw new CayenneRuntimeException("Error generating PK: " + ex.getMessage(), ex); + throw new CayenneRuntimeException("Error generating PK: %s", ex, ex.getMessage()); } } @@ -134,7 +134,7 @@ final class FlattenedArcKey { * theoretically possible, so the return value is a list. */ List buildJoinSnapshotsForDelete(DataNode node) { - Map snapshot = eagerJoinSnapshot(); + Map<String, Object> snapshot = eagerJoinSnapshot(); DbEntity joinEntity = getJoinEntity(); @@ -299,12 +299,12 @@ final class FlattenedArcKey { return false; } - private Map eagerJoinSnapshot() { + private Map<String, Object> eagerJoinSnapshot() { List<DbRelationship> relList = relationship.getDbRelationships(); if (relList.size() != 2) { throw new CayenneRuntimeException( - "Only single-step flattened relationships are supported in this operation: " + relationship); + "Only single-step flattened relationships are supported in this operation: %s", relationship); } DbRelationship firstDbRel = relList.get(0); @@ -332,7 +332,7 @@ final class FlattenedArcKey { List<DbRelationship> relList = relationship.getDbRelationships(); if (relList.size() != 2) { throw new CayenneRuntimeException( - "Only single-step flattened relationships are supported in this operation: " + relationship); + "Only single-step flattened relationships are supported in this operation: %s", relationship); } DbRelationship firstDbRel = relList.get(0); @@ -346,15 +346,12 @@ final class FlattenedArcKey { // here ordering of ids is determined by 'relationship', so use id1, id2 // instead of orderedIds - for (int i = 0, numJoins = fromSourceJoins.size(); i < numJoins; i++) { - DbJoin join = fromSourceJoins.get(i); - + for (DbJoin join : fromSourceJoins) { Object value = new PropagatedValueFactory(id1.getSourceId(), join.getSourceName()); snapshot.put(join.getTargetName(), value); } - for (int i = 0, numJoins = toTargetJoins.size(); i < numJoins; i++) { - DbJoin join = toTargetJoins.get(i); + for (DbJoin join : toTargetJoins) { Object value = new PropagatedValueFactory(id2.getSourceId(), join.getTargetName()); snapshot.put(join.getSourceName(), value); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java index d75f232..a747e9d 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java @@ -307,7 +307,7 @@ class HierarchicalObjectResolver { @Override public boolean startUnknownPrefetch(PrefetchTreeNode node) { - throw new CayenneRuntimeException("Unknown prefetch node: " + node); + throw new CayenneRuntimeException("Unknown prefetch node: %s", node); } @Override @@ -404,7 +404,7 @@ class HierarchicalObjectResolver { @Override public boolean startUnknownPrefetch(PrefetchTreeNode node) { - throw new CayenneRuntimeException("Unknown prefetch node: " + node); + throw new CayenneRuntimeException("Unknown prefetch node: %s", node); } @Override @@ -456,7 +456,7 @@ class HierarchicalObjectResolver { @Override public boolean startUnknownPrefetch(PrefetchTreeNode node) { - throw new CayenneRuntimeException("Unknown prefetch node: " + node); + throw new CayenneRuntimeException("Unknown prefetch node: %s", node); } } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolverNode.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolverNode.java b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolverNode.java index 940567e..861533c 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolverNode.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolverNode.java @@ -59,7 +59,7 @@ class HierarchicalObjectResolverNode extends PrefetchObjectResolver { Persistent object = objectFromDataRow(row, anId, classDescriptor); if (object == null) { - throw new CayenneRuntimeException("Can't build Object from row: " + row); + throw new CayenneRuntimeException("Can't build Object from row: %s", row); } // keep the dupe objects (and data rows) around, as there maybe an http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java b/cayenne-server/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java index bdfce69..0611514 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java @@ -327,7 +327,7 @@ public class IncrementalFaultList<E> implements List<E>, Serializable { throw new CayenneRuntimeException(buffer.toString()); } else if (objects.size() > ids.size()) { - throw new CayenneRuntimeException("Expected " + ids.size() + " objects, retrieved " + objects.size()); + throw new CayenneRuntimeException("Expected %d objects, retrieved %d", ids.size(), objects.size()); } } @@ -659,7 +659,7 @@ public class IncrementalFaultList<E> implements List<E>, Serializable { } if (!found) { - throw new CayenneRuntimeException("Can't find id for " + object); + throw new CayenneRuntimeException("Can't find id for %s", object); } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/JoinedIdParentAttachementStrategy.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/JoinedIdParentAttachementStrategy.java b/cayenne-server/src/main/java/org/apache/cayenne/access/JoinedIdParentAttachementStrategy.java index 7640b91..1162f8c 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/JoinedIdParentAttachementStrategy.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/JoinedIdParentAttachementStrategy.java @@ -68,16 +68,11 @@ class JoinedIdParentAttachementStrategy implements ParentAttachmentStrategy { ObjectId id = node.getResolver().createObjectId(row, entity, relatedIdPrefix); if (id == null) { - throw new CayenneRuntimeException("Can't build ObjectId from row: " - + row - + ", entity: " - + entity.getName() - + ", prefix: " - + relatedIdPrefix); + throw new CayenneRuntimeException("Can't build ObjectId from row: %s, entity: %s, prefix: %s" + , row, entity.getName(), relatedIdPrefix); } parentObject = (Persistent) graphManager.getNode(id); - if (parentObject != null) { break; } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java index 9d55272..56b52b5 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java @@ -66,14 +66,13 @@ class ObjectResolver { DbEntity dbEntity = descriptor.getEntity().getDbEntity(); if (dbEntity == null) { - throw new CayenneRuntimeException("ObjEntity '" + descriptor.getEntity().getName() + "' has no DbEntity."); + throw new CayenneRuntimeException("ObjEntity '%s' has no DbEntity.", descriptor.getEntity().getName()); } this.primaryKey = dbEntity.getPrimaryKeys(); if (primaryKey.size() == 0) { - throw new CayenneRuntimeException("Won't be able to create ObjectId for '" - + descriptor.getEntity().getName() + "'. Reason: DbEntity '" + dbEntity.getName() - + "' has no Primary Key defined."); + throw new CayenneRuntimeException("Won't be able to create ObjectId for '%s'. Reason: DbEntity " + + "'%s' has no Primary Key defined.", descriptor.getEntity().getName(), dbEntity.getName()); } this.context = context; http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java index 6901b77..bebada0 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectStore.java @@ -158,7 +158,7 @@ public class ObjectStore implements Serializable, SnapshotEventListener, GraphMa Persistent object = objectMap.get(nodeId); if (object == null) { - throw new CayenneRuntimeException("No object is registered in context with Id " + nodeId); + throw new CayenneRuntimeException("No object is registered in context with Id %s", nodeId); } if (object.getPersistenceState() == PersistenceState.COMMITTED) { http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java index be7e1ed..784453a 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java @@ -283,8 +283,7 @@ class PrefetchProcessorJointNode extends PrefetchProcessorNode { // sanity check if (idIndices[i] == -1) { - throw new CayenneRuntimeException("PK column is not part of result row: " - + pk.getName()); + throw new CayenneRuntimeException("PK column is not part of result row: %s", pk.getName()); } } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java index 9aad5e6..dc2ea91 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilder.java @@ -158,8 +158,8 @@ final class PrefetchProcessorTreeBuilder implements PrefetchProcessor { arc = (ArcProperty) currentNode.getResolver().getDescriptor().getProperty(node.getName()); if (arc == null) { - throw new CayenneRuntimeException("No relationship with name '" + node.getName() + "' found in entity " - + currentNode.getResolver().getEntity().getName()); + throw new CayenneRuntimeException("No relationship with name '%s' found in entity '%s'" + , node.getName(), currentNode.getResolver().getEntity().getName()); } descriptor = arc.getTargetDescriptor(); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/ToOneFault.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/ToOneFault.java b/cayenne-server/src/main/java/org/apache/cayenne/access/ToOneFault.java index 2f99fd1..1fefe42 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/ToOneFault.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ToOneFault.java @@ -82,17 +82,12 @@ public class ToOneFault extends Fault { if (objects.isEmpty()) { return null; - } - else if (objects.size() == 1) { + } else if (objects.size() == 1) { return objects.get(0); - } - else { + } else { throw new CayenneRuntimeException("Error resolving to-one fault. " - + "More than one object found. " - + "Source Id: " - + sourceObject.getObjectId() - + ", relationship: " - + relationshipName); + + "More than one object found. Source Id: %s, relationship: %s" + , sourceObject.getObjectId(), relationshipName); } } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ConnectionAwareResultIterator.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ConnectionAwareResultIterator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ConnectionAwareResultIterator.java index b821d8e..be846e9 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ConnectionAwareResultIterator.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ConnectionAwareResultIterator.java @@ -61,10 +61,8 @@ public class ConnectionAwareResultIterator<T> implements ResultIterator<T> { try { delegate.close(); } catch (Exception e1) { - if (errors == null) { - errors = new StringBuilder(); - } - errors.append("Error closing ResultSet: " + e1); + errors = new StringBuilder(); + errors.append("Error closing ResultSet: ").append(e1); } try { @@ -74,11 +72,11 @@ public class ConnectionAwareResultIterator<T> implements ResultIterator<T> { errors = new StringBuilder(); } - errors.append("Error closing connection: " + e2); + errors.append("Error closing connection: ").append(e2); } if (errors != null) { - throw new CayenneRuntimeException("Error closing ResultIterator: " + errors.toString()); + throw new CayenneRuntimeException("Error closing ResultIterator: %s", errors); } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java index ffa1ad3..d6a4a34 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/JDBCResultIterator.java @@ -144,7 +144,7 @@ public class JDBCResultIterator<T> implements ResultIterator<T> { } if (errors.length() > 0) { - throw new CayenneRuntimeException("Error closing ResultIterator: " + errors.toString()); + throw new CayenneRuntimeException("Error closing ResultIterator: %s", errors); } closed = true; http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java index 67ee201..0022587 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java @@ -152,8 +152,7 @@ public class ProcedureAction extends BaseSQLAction { // if one result is described, all of them must be present... if (setIndex >= descriptors.size() || descriptors.get(setIndex) == null) { - throw new CayenneRuntimeException("No descriptor for result set at index '" + setIndex - + "' configured."); + throw new CayenneRuntimeException("No descriptor for result set at index '%d' configured.", setIndex); } ColumnDescriptor[] columns = descriptors.get(setIndex); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java index 86c1fb7..8cf71e8 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java @@ -60,8 +60,7 @@ public class RowDescriptorBuilder { /** * Returns a RowDescriptor built based on the builder internal state. */ - public RowDescriptor getDescriptor(ExtendedTypeMap typeMap) throws SQLException, - IllegalStateException { + public RowDescriptor getDescriptor(ExtendedTypeMap typeMap) throws SQLException, IllegalStateException { ColumnDescriptor[] columnsForRD; @@ -69,12 +68,10 @@ public class RowDescriptorBuilder { // do merge between explicitly-set columns and ResultSetMetadata // explicitly-set columns take precedence columnsForRD = mergeResultSetAndPresetColumns(); - } - else if (this.columns != null) { + } else if (this.columns != null) { // use explicitly-set columns columnsForRD = this.columns; - } - else { + } else { throw new IllegalStateException( "Can't build RowDescriptor, both 'columns' and 'resultSetMetadata' are null"); } @@ -102,10 +99,8 @@ public class RowDescriptorBuilder { int columnLen = (columns != null) ? columns.length : 0; if (rsLen < columnLen) { - throw new CayenneRuntimeException( - "'ResultSetMetadata' has less elements then 'columns'."); - } - else if (rsLen == columnLen) { + throw new CayenneRuntimeException("'ResultSetMetadata' has less elements then 'columns'."); + } else if (rsLen == columnLen) { // 'columns' contains ColumnDescriptor for every column // in resultSetMetadata. This return is for optimization. return columns; @@ -177,19 +172,16 @@ public class RowDescriptorBuilder { int len = columnArray.length; if (caseTransformer != null) { - for (int i = 0; i < len; i++) { - - columnArray[i].setDataRowKey((String) caseTransformer - .transform(columnArray[i].getDataRowKey())); - columnArray[i].setName((String) caseTransformer.transform(columnArray[i] - .getName())); + for (ColumnDescriptor aColumnArray : columnArray) { + aColumnArray.setDataRowKey((String) caseTransformer.transform(aColumnArray.getDataRowKey())); + aColumnArray.setName((String) caseTransformer.transform(aColumnArray.getName())); } } if (typeOverrides != null) { - for (int i = 0; i < len; i++) { - String type = typeOverrides.get(columnArray[i].getName()); + for (ColumnDescriptor aColumnArray : columnArray) { + String type = typeOverrides.get(aColumnArray.getName()); if (type != null) { - columnArray[i].setJavaClass(type); + aColumnArray.setJavaClass(type); } } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java index 7ad539d..2ee015d 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java @@ -51,7 +51,7 @@ class IdRowReader<T> extends BaseRowReader<T> { // sanity check if (len == 0) { - throw new CayenneRuntimeException("Root DBEntity has no PK defined: " + dbEntity); + throw new CayenneRuntimeException("Root DBEntity has no PK defined: %s", dbEntity); } int[] pk = new int[len]; http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorFactory.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorFactory.java index b39837e..a441fe2 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorFactory.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorFactory.java @@ -41,7 +41,7 @@ public class DefaultBatchTranslatorFactory implements BatchTranslatorFactory { } else if (query instanceof DeleteBatchQuery) { return deleteTranslator((DeleteBatchQuery) query, adapter, trimFunction); } else { - throw new CayenneRuntimeException("Unsupported batch query: " + query); + throw new CayenneRuntimeException("Unsupported batch query: %s", query); } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java index 38dcd9b..59ea77e 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java @@ -95,7 +95,7 @@ class EJBQLIdentifierColumnsTranslator extends EJBQLBaseVisitor { Object pathPart = dbPathIterator.next(); if (pathPart == null) { - throw new CayenneRuntimeException("ObjAttribute has no component: " + oa.getName()); + throw new CayenneRuntimeException("ObjAttribute has no component: %s", oa.getName()); } else if (pathPart instanceof DbRelationship) { if (marker == null) { @@ -174,21 +174,16 @@ class EJBQLIdentifierColumnsTranslator extends EJBQLBaseVisitor { for (PathComponent<DbAttribute, DbRelationship> component : table.resolvePath(dbPrefetch, context .getMetadata().getPathSplitAliases())) { r = component.getRelationship(); - } if (r == null) { - throw new CayenneRuntimeException("Invalid joint prefetch '" + prefetch + "' for entity: " - + objectEntity.getName()); + throw new CayenneRuntimeException("Invalid joint prefetch '%s' for entity: %s" + , prefetch, objectEntity.getName()); } - Iterator<DbAttribute> targetAttributes = (Iterator<DbAttribute>) r.getTargetEntity() - .getAttributes().iterator(); - while (targetAttributes.hasNext()) { - DbAttribute attribute = targetAttributes.next(); + for (DbAttribute attribute : r.getTargetEntity().getAttributes()) { appendColumn(prefetch.getEjbqlPathEntityId() + "." + prefetch.getPath(), attribute, "", prefetch.getPath() + "." + attribute.getName(), null); - } } } @@ -211,7 +206,7 @@ class EJBQLIdentifierColumnsTranslator extends EJBQLBaseVisitor { public void appendColumn(String identifier, DbAttribute column, String columnAlias, String dataRowKey, String javaType) { - DbEntity table = (DbEntity) column.getEntity(); + DbEntity table = column.getEntity(); String alias = context.getTableAlias(identifier, context.getQuotingStrategy().quotedFullyQualifiedName(table)); String columnName = alias + "." + context.getQuotingStrategy().quotedName(column); @@ -244,7 +239,7 @@ class EJBQLIdentifierColumnsTranslator extends EJBQLBaseVisitor { private Set<String> getColumns() { if (columns == null) { - columns = new HashSet<String>(); + columns = new HashSet<>(); } return columns; http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java index c0f5eaf..dbe2726 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java @@ -182,7 +182,7 @@ public class EJBQLSelectColumnsTranslator extends EJBQLBaseVisitor { // processed // later when appending table if (pathPart == null) { - throw new CayenneRuntimeException("ObjAttribute has no component: " + attribute.getName()); + throw new CayenneRuntimeException("ObjAttribute has no component: %s", attribute.getName()); } else if (pathPart instanceof DbAttribute) { DbAttribute dbAttribute = (DbAttribute) pathPart; appendColumn(attribute.getType(), http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java index 61aec97..76af339 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java @@ -530,7 +530,7 @@ public class DefaultSelectTranslator extends QueryAssembler implements SelectTra Object pathPart = dbPathIterator.next(); if (pathPart == null) { - throw new CayenneRuntimeException("ObjAttribute has no component: " + oa.getName()); + throw new CayenneRuntimeException("ObjAttribute has no component: %s", oa.getName()); } else if (pathPart instanceof DbRelationship) { DbRelationship rel = (DbRelationship) pathPart; dbRelationshipAdded(rel, JoinType.LEFT_OUTER, null); @@ -657,8 +657,8 @@ public class DefaultSelectTranslator extends QueryAssembler implements SelectTra } if (r == null) { - throw new CayenneRuntimeException("Invalid joint prefetch '" + prefetch + "' for entity: " - + oe.getName()); + throw new CayenneRuntimeException("Invalid joint prefetch '%s' for entity: %s" + , prefetch, oe.getName()); } // add columns from the target entity, including those that are @@ -679,7 +679,7 @@ public class DefaultSelectTranslator extends QueryAssembler implements SelectTra Object pathPart = dbPathIterator.next(); if (pathPart == null) { - throw new CayenneRuntimeException("ObjAttribute has no component: " + oa.getName()); + throw new CayenneRuntimeException("ObjAttribute has no component: %s", oa.getName()); } else if (pathPart instanceof DbRelationship) { DbRelationship rel = (DbRelationship) pathPart; dbRelationshipAdded(rel, JoinType.INNER, null); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/OrderingTranslator.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/OrderingTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/OrderingTranslator.java index 4079b0a..59602f0 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/OrderingTranslator.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/OrderingTranslator.java @@ -83,7 +83,7 @@ public class OrderingTranslator extends QueryAssemblerHelper { } else if (exp.getType() == Expression.FUNCTION_CALL) { appendFunction(exp); } else { - throw new CayenneRuntimeException("Unsupported ordering expression: " + exp); + throw new CayenneRuntimeException("Unsupported ordering expression: %s", exp); } // Close UPPER() modifier http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssemblerHelper.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssemblerHelper.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssemblerHelper.java index 2fc6078..fcdad65 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssemblerHelper.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssemblerHelper.java @@ -178,7 +178,7 @@ public abstract class QueryAssemblerHelper { Object pathPart = dbPathIterator.next(); if (pathPart == null) { - throw new CayenneRuntimeException("ObjAttribute has no component: " + attribute.getName()); + throw new CayenneRuntimeException("ObjAttribute has no component: %s", attribute.getName()); } else if (pathPart instanceof DbRelationship) { queryAssembler.dbRelationshipAdded((DbRelationship) pathPart, JoinType.INNER, joinSplitAlias); } else if (pathPart instanceof DbAttribute) { @@ -287,11 +287,8 @@ public abstract class QueryAssemblerHelper { Map<String, Object> snap = id.getIdSnapshot(); if (snap.size() != 1) { - StringBuilder msg = new StringBuilder(); - msg.append("Object must have a single primary key column ").append("to serve as a query parameter. ") - .append("This object has ").append(snap.size()).append(": ").append(snap); - - throw new CayenneRuntimeException(msg.toString()); + throw new CayenneRuntimeException("Object must have a single primary key column to serve " + + "as a query parameter. This object has %s: %s", snap.size(), snap); } // checks have been passed, use id value @@ -306,11 +303,8 @@ public abstract class QueryAssemblerHelper { Map<String, Object> snap = id.getIdSnapshot(); if (snap.size() != 1) { - StringBuilder msg = new StringBuilder(); - msg.append("Object must have a single primary key column ").append("to serve as a query parameter. ") - .append("This object has ").append(snap.size()).append(": ").append(snap); - - throw new CayenneRuntimeException(msg.toString()); + throw new CayenneRuntimeException("Object must have a single primary key column to serve " + + "as a query parameter. This object has %s: %s", snap.size(), snap); } // checks have been passed, use id value @@ -459,9 +453,8 @@ public abstract class QueryAssemblerHelper { List<DbJoin> joins = rel.getJoins(); if (joins.size() != 1) { String msg = "OBJ_PATH expressions are only supported for a single-join relationships. " + - "This relationship has " + joins.size() + " joins."; - - throw new CayenneRuntimeException(msg); + "This relationship has %s joins."; + throw new CayenneRuntimeException(msg, joins.size()); } DbJoin join = joins.get(0); @@ -473,9 +466,8 @@ public abstract class QueryAssemblerHelper { Collection<DbAttribute> pk = ent.getPrimaryKeys(); if (pk.size() != 1) { String msg = "DB_NAME expressions can only support targets with a single column PK. " + - "This entity has " + pk.size() + " columns in primary key."; - - throw new CayenneRuntimeException(msg); + "This entity has %d columns in primary key."; + throw new CayenneRuntimeException(msg, pk.size()); } attribute = pk.iterator().next(); http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java index 0b60548..044605f 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java @@ -77,11 +77,8 @@ public class CalendarType<T extends Calendar> implements ExtendedType<Calendar> Object object = rs.getObject(index); if (object != null && !(object instanceof Date)) { - throw new CayenneRuntimeException( - "Expected an instance of java.util.Date, instead got " - + object.getClass().getName() - + ", column index: " - + index); + throw new CayenneRuntimeException("Expected an instance of java.util.Date, " + + "instead got %s, column index: %d", object.getClass().getName(), index); } val = (Date) object; @@ -118,11 +115,8 @@ public class CalendarType<T extends Calendar> implements ExtendedType<Calendar> Object object = rs.getObject(index); if (object != null && !(object instanceof Date)) { - throw new CayenneRuntimeException( - "Expected an instance of java.util.Date, instead got " - + object.getClass().getName() - + ", column index: " - + index); + throw new CayenneRuntimeException("Expected an instance of java.util.Date, " + + "instead got %s, column index: %d", object.getClass().getName(), index); } val = (Date) object; http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java index 3ac8dc9..ed819fb 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java @@ -128,8 +128,7 @@ public class ExtendedEnumType<T extends Enum<T>> implements ExtendedType<T> { // Check for duplicates. if (enumerationMappings.containsKey(databaseValue) || enumerationMappings.containsValue(enumeration)) - throw new CayenneRuntimeException( - "Enumerations/values may not be duplicated."); + throw new CayenneRuntimeException("Enumerations/values may not be duplicated."); // Store by database value/enum because we have to lookup by db value later. enumerationMappings.put(databaseValue, enumeration); @@ -141,13 +140,10 @@ public class ExtendedEnumType<T extends Enum<T>> implements ExtendedType<T> { private T lookup(Object databaseValue) { if (!enumerationMappings.containsKey(databaseValue)) { // All integers enums are mapped. Not necessarily all strings. - if (databaseValue instanceof Integer) - throw new CayenneRuntimeException("Missing enumeration mapping for " - + getClassName() - + " with value " - + databaseValue - + "."); - + if (databaseValue instanceof Integer) { + throw new CayenneRuntimeException("Missing enumeration mapping for %s with value %s." + , getClassName(), databaseValue); + } // Use the database value (a String) as the enum value. return Enum.valueOf(enumerationClass, (String) databaseValue); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/2be06d62/cayenne-server/src/main/java/org/apache/cayenne/access/util/IteratedSelectObserver.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/util/IteratedSelectObserver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/util/IteratedSelectObserver.java index 1c501f6..4b1a313 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/util/IteratedSelectObserver.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/util/IteratedSelectObserver.java @@ -66,7 +66,7 @@ public class IteratedSelectObserver extends DefaultOperationObserver { // this should never happen } - throw new CayenneRuntimeException("Error getting ResultIterator: " + str.getBuffer()); + throw new CayenneRuntimeException("Error getting ResultIterator: %s", str.getBuffer()); } return resultIterator;
