From 66ce36c0adfe8add0b02a73cc72941002a821bdd Mon Sep 17 00:00:00 2001 From: "Richard G. Curtis" Date: Tue, 2 Nov 2010 17:33:41 +0000 Subject: [PATCH] OPENJPA-1868: Miscellaneous FindBugs suggested performance improvements for openjpa-kernel. git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@1030139 13f79535-47bb-0310-9956-ffa450edef68 --- .../openjpa/datacache/DataCacheStoreManager.java | 6 +++--- .../AbstractQueryCacheInstrument.java | 2 +- .../org/apache/openjpa/kernel/AttachStrategy.java | 10 ++++++---- .../openjpa/kernel/DetachedValueStateManager.java | 4 ++-- .../openjpa/kernel/ExpressionStoreQuery.java | 9 +++++---- .../java/org/apache/openjpa/kernel/Filters.java | 14 +++++++------- .../openjpa/kernel/ObjectIdStateManager.java | 8 ++++---- .../java/org/apache/openjpa/kernel/QueryImpl.java | 6 ++---- .../apache/openjpa/kernel/StateManagerImpl.java | 14 ++++++-------- .../java/org/apache/openjpa/kernel/exps/Abs.java | 4 ++-- .../java/org/apache/openjpa/kernel/exps/Sqrt.java | 2 +- .../java/org/apache/openjpa/meta/JavaTypes.java | 8 ++++---- .../apache/openjpa/meta/MetaDataRepository.java | 2 +- .../org/apache/openjpa/util/ApplicationIds.java | 4 ++-- .../java/org/apache/openjpa/util/DoubleId.java | 2 +- .../main/java/org/apache/openjpa/util/FloatId.java | 2 +- 16 files changed, 48 insertions(+), 49 deletions(-) diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java index 4d558fbc9..a5656300f 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java @@ -492,9 +492,9 @@ public class DataCacheStoreManager unloaded = addUnloaded(sm, null, unloaded); } - for (Iterator itr = caches.keySet().iterator(); itr.hasNext();) { - cache = itr.next(); - smList = caches.get(cache); + for(Entry> entry : caches.entrySet()){ + cache = entry.getKey(); + smList = entry.getValue(); List oidList = new ArrayList(smList.size()); for (OpenJPAStateManager sm : smList) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/instrumentation/AbstractQueryCacheInstrument.java b/openjpa-kernel/src/main/java/org/apache/openjpa/instrumentation/AbstractQueryCacheInstrument.java index 454555a93..e58a88ef1 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/instrumentation/AbstractQueryCacheInstrument.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/instrumentation/AbstractQueryCacheInstrument.java @@ -199,7 +199,7 @@ public abstract class AbstractQueryCacheInstrument extends AbstractInstrument private QueryKey findKey(String key) { QueryStatistics stats = getStatistics(); for (QueryKey qk : stats.keys()) { - if (qk.toString().equals(key.toString())) { + if (qk.toString().equals(key)) { return qk; } } diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java index 1b1190b3d..21b7f8e50 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java @@ -23,6 +23,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Set; +import java.util.Map.Entry; import org.apache.commons.lang.ObjectUtils; import org.apache.openjpa.enhance.PersistenceCapable; @@ -379,10 +380,11 @@ abstract class AttachStrategy try { return manager.getProxyManager().copyMap(orig); } catch (Exception e) { - Map map = (Map) sm.newFieldProxy(fmd.getIndex()); - Set keys = orig.keySet(); - for (Object key : keys) - map.put(key, orig.get(key)); + Map map = (Map) sm.newFieldProxy(fmd.getIndex()); + + for (Entry entry : ((Map) orig).entrySet()) { + map.put(entry.getKey(), entry.getValue()); + } return map; } } diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedValueStateManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedValueStateManager.java index 873854e2f..8ab181de7 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedValueStateManager.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedValueStateManager.java @@ -316,9 +316,9 @@ public class DetachedValueStateManager case JavaTypes.CHAR: return Character.valueOf(fm.fetchCharField(field)); case JavaTypes.DOUBLE: - return new Double(fm.fetchDoubleField(field)); + return Double.valueOf(fm.fetchDoubleField(field)); case JavaTypes.FLOAT: - return new Float(fm.fetchFloatField(field)); + return Float.valueOf(fm.fetchFloatField(field)); case JavaTypes.INT: return fm.fetchIntField(field); case JavaTypes.LONG: diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExpressionStoreQuery.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExpressionStoreQuery.java index 78906042b..8d41cc940 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExpressionStoreQuery.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ExpressionStoreQuery.java @@ -28,11 +28,10 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.Map.Entry; -import org.apache.commons.collections.map.LinkedMap; import org.apache.openjpa.conf.OpenJPAConfiguration; import org.apache.openjpa.datacache.DataCache; -import org.apache.openjpa.kernel.exps.Subquery; import org.apache.openjpa.kernel.exps.AbstractExpressionVisitor; import org.apache.openjpa.kernel.exps.AggregateListener; import org.apache.openjpa.kernel.exps.Constant; @@ -44,6 +43,7 @@ import org.apache.openjpa.kernel.exps.Path; import org.apache.openjpa.kernel.exps.QueryExpressions; import org.apache.openjpa.kernel.exps.Resolver; import org.apache.openjpa.kernel.exps.StringContains; +import org.apache.openjpa.kernel.exps.Subquery; import org.apache.openjpa.kernel.exps.Val; import org.apache.openjpa.kernel.exps.Value; import org.apache.openjpa.kernel.exps.WildcardMatch; @@ -409,7 +409,8 @@ public class ExpressionStoreQuery OrderedMap> paramTypes = getOrderedParameterTypes(q); Object[] arr = new Object[userParams.size()]; int base = positionalParameterBase(userParams.keySet()); - for (Object key : paramTypes.keySet()) { + for(Entry> entry : paramTypes.entrySet()){ + Object key = entry.getKey(); int idx = (key instanceof Integer) ? ((Integer)key).intValue() - base : paramTypes.indexOf(key); @@ -418,7 +419,7 @@ public class ExpressionStoreQuery new Object[]{q.getContext().getQueryString(), key, userParams.size(), userParams})); Object value = userParams.get(key); - validateParameterValue(key, value, (Class)paramTypes.get(key)); + validateParameterValue(key, value, (Class)entry.getValue()); arr[idx] = value; } return arr; diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java index 8e370c1ab..1e3f9c2f1 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java @@ -337,9 +337,9 @@ public class Filters { if (type == Integer.class && allowNumericConversion(o.getClass(), type, strictNumericConversion)) { return ((Number) o).intValue(); } else if (type == Float.class && allowNumericConversion(o.getClass(), type, strictNumericConversion)) { - return new Float(((Number) o).floatValue()); + return Float.valueOf(((Number) o).floatValue()); } else if (type == Double.class) { - return new Double(((Number) o).doubleValue()); + return Double.valueOf(((Number) o).doubleValue()); } else if (type == Long.class && allowNumericConversion(o.getClass(), type, strictNumericConversion)) { return ((Number) o).longValue(); } else if (type == BigDecimal.class) { @@ -349,11 +349,11 @@ public class Filters { // and Float versions, despite wanting to cast it to BigDecimal double dval = ((Number) o).doubleValue(); if (Double.isNaN(dval) || Double.isInfinite(dval)) - return new Double(dval); + return Double.valueOf(dval); float fval = ((Number) o).floatValue(); if (Float.isNaN(fval) || Float.isInfinite(fval)) - return new Float(fval); + return Float.valueOf(fval); return new BigDecimal(o.toString()); } else if (type == BigInteger.class) { @@ -512,7 +512,7 @@ public class Filters { default: throw new InternalException(); } - return new Float(tot); + return Float.valueOf(tot); } /** @@ -539,7 +539,7 @@ public class Filters { default: throw new InternalException(); } - return new Double(tot); + return Double.valueOf(tot); } /** @@ -1021,7 +1021,7 @@ public class Filters { if (nType == Integer.class) return Integer.valueOf(0); if (nType == Double.class) - return new Double(0.0); + return Double.valueOf(0.0); if (nType == Float.class) return new Float(0.0); if (nType == Short.class) diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java index 1dac1f4da..620757ee0 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java @@ -49,8 +49,8 @@ public class ObjectIdStateManager private static final Byte ZERO_BYTE = Byte.valueOf((byte)0); private static final Character ZERO_CHAR = Character.valueOf((char)0); - private static final Double ZERO_DOUBLE = new Double(0); - private static final Float ZERO_FLOAT = new Float(0); + private static final Double ZERO_DOUBLE = Double.valueOf(0); + private static final Float ZERO_FLOAT = Float.valueOf(0); private static final Short ZERO_SHORT = Short.valueOf((short)0); private Object _oid; @@ -483,11 +483,11 @@ public class ObjectIdStateManager } public void storeFloat(int field, float extVal) { - setValue(field, new Float(extVal), true); + setValue(field, Float.valueOf(extVal), true); } public void storeDouble(int field, double extVal) { - setValue(field, new Double(extVal), true); + setValue(field, Double.valueOf(extVal), true); } public void storeString(int field, String extVal) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java index 811cb9019..41217748f 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java @@ -29,6 +29,7 @@ import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.locks.ReentrantLock; import org.apache.commons.collections.map.LinkedMap; @@ -1769,10 +1770,7 @@ public class QueryImpl expected, paramTypes.keySet())); } - Iterator>> itr = paramTypes.entrySet().iterator(); - Map.Entry> entry; - for (int i = 0; itr.hasNext(); i++) { - entry = itr.next(); + for (Entry> entry : paramTypes.entrySet()) { if (entry.getValue().isPrimitive() && params.get(entry.getKey()) == null) throw new UserException(_loc.get("null-primitive-param", entry.getKey())); diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java index b3124285a..e4bf02cf0 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java @@ -852,9 +852,9 @@ public class StateManagerImpl case JavaTypes.CHAR: return Character.valueOf(fetchCharField(field)); case JavaTypes.DOUBLE: - return new Double(fetchDoubleField(field)); + return Double.valueOf(fetchDoubleField(field)); case JavaTypes.FLOAT: - return new Float(fetchFloatField(field)); + return Float.valueOf(fetchFloatField(field)); case JavaTypes.INT: return fetchIntField(field); case JavaTypes.LONG: @@ -983,9 +983,9 @@ public class StateManagerImpl case JavaTypes.CHAR: return Character.valueOf(fm.fetchCharField(field)); case JavaTypes.DOUBLE: - return new Double(fm.fetchDoubleField(field)); + return Double.valueOf(fm.fetchDoubleField(field)); case JavaTypes.FLOAT: - return new Float(fm.fetchFloatField(field)); + return Float.valueOf(fm.fetchFloatField(field)); case JavaTypes.INT: return fm.fetchIntField(field); case JavaTypes.LONG: @@ -2486,8 +2486,7 @@ public class StateManagerImpl if (!fmd.isExternalized()) storeDoubleField(field, externalVal); else - storeField(field, fmd.getFieldValue(new Double(externalVal), - _broker)); + storeField(field, fmd.getFieldValue(Double.valueOf(externalVal), _broker)); } public void storeDoubleField(int field, double curVal) { @@ -2507,8 +2506,7 @@ public class StateManagerImpl if (!fmd.isExternalized()) storeFloatField(field, externalVal); else - storeField(field, fmd.getFieldValue(new Float(externalVal), - _broker)); + storeField(field, fmd.getFieldValue(Float.valueOf(externalVal), _broker)); } public void storeFloatField(int field, float curVal) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Abs.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Abs.java index 98455751d..576e577bd 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Abs.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Abs.java @@ -53,9 +53,9 @@ class Abs if (c == Integer.class) return Math.abs(((Number) o).intValue()); if (c == Float.class) - return new Float(Math.abs(((Number) o).floatValue())); + return Float.valueOf(Math.abs(((Number) o).floatValue())); if (c == Double.class) - return new Double(Math.abs(((Number) o).doubleValue())); + return Double.valueOf(Math.abs(((Number) o).doubleValue())); if (c == Long.class) return Math.abs(((Number) o).longValue()); if (c == BigDecimal.class) diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Sqrt.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Sqrt.java index 400a0643b..22576c237 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Sqrt.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Sqrt.java @@ -38,6 +38,6 @@ class Sqrt } protected Object operate(Object o, Class c) { - return new Double(Math.sqrt(((Number) o).doubleValue())); + return Double.valueOf(Math.sqrt(((Number) o).doubleValue())); } } diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java index d5b12aa55..36dce4713 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java @@ -295,21 +295,21 @@ public class JavaTypes { if (val instanceof Double) return val; if (val instanceof Number) - return new Double(((Number) val).doubleValue()); + return Double.valueOf(((Number) val).doubleValue()); // no break case DOUBLE: if (val instanceof String) - return new Double(val.toString()); + return Double.valueOf(val.toString()); return val; case FLOAT_OBJ: if (val instanceof Float) return val; if (val instanceof Number) - return new Float(((Number) val).floatValue()); + return Float.valueOf(((Number) val).floatValue()); // no break case FLOAT: if (val instanceof String) - return new Float(val.toString()); + return Float.valueOf(val.toString()); return val; case INT_OBJ: if (val instanceof Integer) diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java index bc7d81f0f..0a1593bcc 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java @@ -1268,7 +1268,7 @@ public class MetaDataRepository implements PCRegistry.RegisterClassListener, Con mapped.add(meta); } } - return mapped.toArray(new ClassMetaData[]{}); + return mapped.toArray(new ClassMetaData[mapped.size()]); } /** * Gets the metadata corresponding to the given persistence-aware class. Returns null, if the diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java index 50edf9174..7cf29768e 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java @@ -622,11 +622,11 @@ public class ApplicationIds { } public void storeFloatField(int field, float val) { - store(new Float(val)); + store(Float.valueOf(val)); } public void storeDoubleField(int field, double val) { - store(new Double(val)); + store(Double.valueOf(val)); } public void storeStringField(int field, String val) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DoubleId.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DoubleId.java index 9929872c8..0fb15f53b 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DoubleId.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DoubleId.java @@ -51,7 +51,7 @@ public final class DoubleId } public Object getIdObject() { - return new Double(key); + return Double.valueOf(key); } public String toString() { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/FloatId.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/FloatId.java index 981e4530a..51e42ee75 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/FloatId.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/FloatId.java @@ -51,7 +51,7 @@ public final class FloatId } public Object getIdObject() { - return new Float(key); + return Float.valueOf(key); } public String toString() {