Author: mbrohl
Date: Sat Oct 28 15:19:56 2017
New Revision: 1813640
URL: http://svn.apache.org/viewvc?rev=1813640&view=rev
Log:
Improved: Fixing defects reported by FindBugs, package
org.apache.ofbiz.entity.
(OFBIZ-9716)
I modified the patch slightly.
Thanks Julian Leichert for reporting and providing the patch.
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericPK.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericValue.java
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java?rev=1813640&r1=1813639&r2=1813640&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java
Sat Oct 28 15:19:56 2017
@@ -114,9 +114,9 @@ public class GenericDelegator implements
protected EntityCrypto crypto = null;
/** A ThreadLocal variable to allow other methods to specify a user
identifier (usually the userLoginId, though technically the Entity Engine
doesn't know anything about the UserLogin entity) */
- protected static ThreadLocal<List<String>> userIdentifierStack = new
ThreadLocal<List<String>>();
+ private static final ThreadLocal<List<String>> userIdentifierStack = new
ThreadLocal<List<String>>();
/** A ThreadLocal variable to allow other methods to specify a session
identifier (usually the visitId, though technically the Entity Engine doesn't
know anything about the Visit entity) */
- protected static ThreadLocal<List<String>> sessionIdentifierStack = new
ThreadLocal<List<String>>();
+ private static final ThreadLocal<List<String>> sessionIdentifierStack =
new ThreadLocal<List<String>>();
private boolean testMode = false;
private boolean testRollbackInProgress = false;
@@ -786,7 +786,7 @@ public class GenericDelegator implements
value.setDelegator(this);
// if audit log on for any fields, save new value with no old
value because it's a create
- if (value != null &&
value.getModelEntity().getHasFieldWithAuditLog()) {
+ if (value.getModelEntity().getHasFieldWithAuditLog()) {
createEntityAuditLogAll(value, false, false);
}
@@ -796,7 +796,7 @@ public class GenericDelegator implements
if (testMode) {
storeForTestRollback(new
TestOperation(OperationType.INSERT, value));
}
- } catch (GenericEntityException e) {
+ } catch (IllegalStateException | GenericEntityException e) {
// see if this was caused by an existing record before
resetting the sequencer and trying again
// NOTE: use the helper directly so ECA rules, etc won't be run
@@ -843,7 +843,7 @@ public class GenericDelegator implements
TransactionUtil.commit(beganTransaction);
return value;
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String entityName = value != null ? value.getEntityName() :
"invalid Generic Value";
String errMsg = "Failure in createSetNextSeqId operation for
entity [" + entityName + "]: " + e.toString() + ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
@@ -877,7 +877,7 @@ public class GenericDelegator implements
value.setDelegator(this);
// if audit log on for any fields, save new value with no old
value because it's a create
- if (value != null &&
value.getModelEntity().getHasFieldWithAuditLog()) {
+ if (value.getModelEntity().getHasFieldWithAuditLog()) {
createEntityAuditLogAll(value, false, false);
}
@@ -900,7 +900,7 @@ public class GenericDelegator implements
TransactionUtil.commit(beganTransaction);
return value;
- } catch (Exception e) {
+ } catch (IllegalStateException | GenericEntityException e) {
String errMsg = "Failure in create operation for entity [" +
(value != null ? value.getEntityName() : "value is null") + "]: " +
e.toString() + ". Rolling back transaction.";
Debug.logError(errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1011,7 +1011,7 @@ public class GenericDelegator implements
ecaRunner.evalRules(EntityEcaHandler.EV_RETURN,
EntityEcaHandler.OP_REMOVE, primaryKey, false);
TransactionUtil.commit(beganTransaction);
return num;
- } catch (Exception e) {
+ } catch (IllegalStateException | GenericEntityException e) {
String errMsg = "Failure in removeByPrimaryKey operation for
entity [" + primaryKey.getEntityName() + "]: " + e.toString() + ". Rolling back
transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1068,7 +1068,7 @@ public class GenericDelegator implements
ecaRunner.evalRules(EntityEcaHandler.EV_RETURN,
EntityEcaHandler.OP_REMOVE, value, false);
TransactionUtil.commit(beganTransaction);
return num;
- } catch (Exception e) {
+ } catch (IllegalStateException | GenericEntityException e) {
String errMsg = "Failure in removeValue operation for entity [" +
value.getEntityName() + "]: " + e.toString() + ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1124,7 +1124,7 @@ public class GenericDelegator implements
}
TransactionUtil.commit(beganTransaction);
return rowsAffected;
- } catch (Exception e) {
+ } catch (IllegalStateException | GenericEntityException e) {
String errMsg = "Failure in removeByCondition operation for entity
[" + entityName + "]: " + e.toString() + ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1206,7 +1206,7 @@ public class GenericDelegator implements
}
TransactionUtil.commit(beganTransaction);
return rowsAffected;
- } catch (Exception e) {
+ } catch (IllegalStateException | GenericEntityException e) {
String errMsg = "Failure in storeByCondition operation for entity
[" + entityName + "]: " + e.toString() + ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1259,7 +1259,7 @@ public class GenericDelegator implements
ecaRunner.evalRules(EntityEcaHandler.EV_RETURN,
EntityEcaHandler.OP_STORE, value, false);
TransactionUtil.commit(beganTransaction);
return retVal;
- } catch (Exception e) {
+ } catch (IllegalStateException | GenericEntityException e) {
String errMsg = "Failure in store operation for entity [" +
value.getEntityName() + "]: " + e.toString() + ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1345,7 +1345,7 @@ public class GenericDelegator implements
}
TransactionUtil.commit(beganTransaction);
return numberChanged;
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String errMsg = "Failure in storeAll operation: " + e.toString() +
". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1383,7 +1383,7 @@ public class GenericDelegator implements
}
TransactionUtil.commit(beganTransaction);
return numRemoved;
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String errMsg = "Failure in removeAll operation: " + e.toString()
+ ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1456,7 +1456,7 @@ public class GenericDelegator implements
ecaRunner.evalRules(EntityEcaHandler.EV_RETURN,
EntityEcaHandler.OP_FIND, (value == null ? primaryKey : value), false);
TransactionUtil.commit(beganTransaction);
return value;
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String errMsg = "Failure in findOne operation for entity [" +
entityName + "]: " + e.toString() + ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1495,7 +1495,7 @@ public class GenericDelegator implements
ecaRunner.evalRules(EntityEcaHandler.EV_RETURN,
EntityEcaHandler.OP_FIND, primaryKey, false);
TransactionUtil.commit(beganTransaction);
return value;
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String errMsg = "Failure in findByPrimaryKeyPartial operation for
entity [" + primaryKey.getEntityName() + "]: " + e.toString() + ". Rolling back
transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1593,7 +1593,7 @@ public class GenericDelegator implements
}
TransactionUtil.commit(beganTransaction);
return list;
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String errMsg = "Failure in findByCondition operation for entity
[" + entityName + "]: " + e.toString() + ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1660,7 +1660,7 @@ public class GenericDelegator implements
ecaRunner.evalRules(EntityEcaHandler.EV_RETURN,
EntityEcaHandler.OP_FIND, dummyValue, false);
TransactionUtil.commit(beganTransaction);
return count;
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String errMsg = "Failure in findListIteratorByCondition operation
for entity [DynamicView]: " + e.toString() + ". Rolling back transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -1691,7 +1691,7 @@ public class GenericDelegator implements
List<GenericValue> result = helper.findByMultiRelation(value,
modelRelationOne, modelEntityOne, modelRelationTwo, modelEntityTwo, orderBy);
TransactionUtil.commit(beganTransaction);
return result;
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String errMsg = "Failure in getMultiRelation operation for entity
[" + value.getEntityName() + "]: " + e.toString() + ". Rolling back
transaction.";
Debug.logError(e, errMsg, module);
TransactionUtil.rollback(beganTransaction, errMsg, e);
@@ -2344,7 +2344,7 @@ public class GenericDelegator implements
if (highestSeqVal == null || seqVal >
highestSeqVal.intValue()) {
highestSeqVal = Integer.valueOf(seqVal);
}
- } catch (Exception e) {
+ } catch (NumberFormatException e) {
Debug.logWarning("Error in make-next-seq-id
converting SeqId [" + currentSeqId + "] in field: " + seqFieldName + " from
entity: " + value.getEntityName() + " to a number: " + e.toString(), module);
}
}
@@ -2356,7 +2356,7 @@ public class GenericDelegator implements
// only commit the transaction if we started one...
TransactionUtil.commit(beganTransaction);
- } catch (Exception e) {
+ } catch (GenericEntityException e) {
String errMsg = "Failure in setNextSubSeqId operation for
entity [" + value.getEntityName() + "]: " + e.toString() + ". Rolling back
transaction.";
Debug.logError(e, errMsg, module);
try {
@@ -2601,7 +2601,7 @@ public class GenericDelegator implements
this.testMode = true;
}
- public final class TestOperation {
+ public final static class TestOperation {
private final OperationType operation;
private final GenericValue value;
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java?rev=1813640&r1=1813639&r2=1813640&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java
Sat Oct 28 15:19:56 2017
@@ -46,6 +46,7 @@ import org.apache.ofbiz.base.util.Observ
import org.apache.ofbiz.base.util.TimeDuration;
import org.apache.ofbiz.base.util.UtilDateTime;
import org.apache.ofbiz.base.util.UtilGenerics;
+import org.apache.ofbiz.base.util.UtilIO;
import org.apache.ofbiz.base.util.UtilProperties;
import org.apache.ofbiz.base.util.UtilValidate;
import org.apache.ofbiz.base.util.UtilXml;
@@ -351,8 +352,7 @@ public class GenericEntity implements Ma
public Delegator getDelegator() {
if (internalDelegator == null) {
if (delegatorName == null) delegatorName = "default";
- if (delegatorName != null)
- internalDelegator =
DelegatorFactory.getDelegator(delegatorName);
+ internalDelegator = DelegatorFactory.getDelegator(delegatorName);
if (internalDelegator == null) {
throw new IllegalStateException("[GenericEntity.getDelegator]
could not find delegator with name " + delegatorName);
}
@@ -449,7 +449,7 @@ public class GenericEntity implements Ma
ModelFieldType type = null;
try {
type = getDelegator().getEntityFieldType(getModelEntity(),
modelField.getType());
- } catch (GenericEntityException e) {
+ } catch (IllegalStateException | GenericEntityException e) {
Debug.logWarning(e, module);
}
if (type == null) {
@@ -471,9 +471,11 @@ public class GenericEntity implements Ma
if (value instanceof TimeDuration) {
try {
value = ObjectType.simpleTypeConvert(value,
type.getJavaType(), null, null);
- } catch (GeneralException e) {}
+ } catch (GeneralException e) {
+ Debug.logError(e, module);
+ }
} else if ((value instanceof String) &&
"byte[]".equals(type.getJavaType())) {
- value = ((String) value).getBytes();
+ value = ((String) value).getBytes(UtilIO.getUtf8());
}
if (!ObjectType.instanceOf(value, type.getJavaType())) {
if (!("java.sql.Blob".equals(type.getJavaType()) && (value
instanceof byte[] || ObjectType.instanceOf(value, ByteBuffer.class)))) {
@@ -529,8 +531,10 @@ public class GenericEntity implements Ma
ModelFieldType type = null;
try {
- type = getDelegator().getEntityFieldType(getModelEntity(),
field.getType());
- } catch (GenericEntityException e) {
+ if (field != null) {
+ type = getDelegator().getEntityFieldType(getModelEntity(),
field.getType());
+ }
+ } catch (IllegalStateException | GenericEntityException e) {
Debug.logWarning(e, module);
}
if (type == null) throw new IllegalArgumentException("Type " +
field.getType() + " not found");
@@ -633,7 +637,7 @@ public class GenericEntity implements Ma
Object obj = get(name);
if (obj == null) {
- return null;
+ return false;
}
if (obj instanceof Boolean) {
return (Boolean) obj;
@@ -709,7 +713,7 @@ public class GenericEntity implements Ma
// this "hack" is needed for now until the Double/BigDecimal issues
are all resolved
Object value = get(name);
if (value instanceof BigDecimal) {
- return new Double(((BigDecimal) value).doubleValue());
+ return Double.valueOf(((BigDecimal) value).doubleValue());
}
return (Double) value;
}
@@ -1148,7 +1152,7 @@ public class GenericEntity implements Ma
boolean b1 = obj instanceof byte [];
if (b1) {
byte [] binData = (byte [])obj;
- String strData = new String(Base64.base64Encode(binData));
+ String strData = new String(Base64.base64Encode(binData),
UtilIO.getUtf8());
cdataMap.put(name, strData);
} else {
Debug.logWarning("Field:" + name + " is not of type
'byte[]'. obj: " + obj, module);
@@ -1325,7 +1329,7 @@ public class GenericEntity implements Ma
// random encoding; just treat it as a series of raw bytes.
// This won't give the same output as the value stored in the
// database, but should be good enough for printing
- curValue = HashCrypt.cryptBytes(null, null,
encryptField.getBytes());
+ curValue = HashCrypt.cryptBytes(null, null,
encryptField.getBytes(UtilIO.getUtf8()));
}
theString.append('[');
theString.append(curKey);
@@ -1612,8 +1616,18 @@ public class GenericEntity implements Ma
return "[null-field]";
}
+ @Override
+ public int hashCode() {
+ return 42;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ return this == o;
+ }
+
public int compareTo(NullField other) {
- return this != other ? -1 : 0;
+ return equals(other) ? 0 : -1;
}
}
}
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericPK.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericPK.java?rev=1813640&r1=1813639&r2=1813640&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericPK.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericPK.java
Sat Oct 28 15:19:56 2017
@@ -21,6 +21,7 @@ package org.apache.ofbiz.entity;
import java.util.Map;
import org.apache.ofbiz.entity.model.ModelEntity;
+import org.apache.sis.internal.jdk7.Objects;
/**
* Generic Entity Primary Key Object
@@ -60,6 +61,11 @@ public class GenericPK extends GenericEn
}
@Override
+ public int hashCode() {
+ return Objects.hashCode(super.hashCode());
+ }
+
+ @Override
public boolean equals(Object obj) {
if (obj instanceof GenericPK) {
return super.equals(obj);
@@ -71,7 +77,7 @@ public class GenericPK extends GenericEn
* @return Object that is a clone of this GenericPK
*/
@Override
- public Object clone() {
+ public GenericPK clone() {
return GenericPK.create(this);
}
}
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericValue.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericValue.java?rev=1813640&r1=1813639&r2=1813640&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericValue.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericValue.java
Sat Oct 28 15:19:56 2017
@@ -21,10 +21,13 @@ package org.apache.ofbiz.entity;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
+import java.util.Arrays;
import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.entity.model.ModelEntity;
+
/**
* Generic Entity Value Object - Handles persistence for any defined entity.
*
@@ -216,6 +219,11 @@ public class GenericValue extends Generi
}
@Override
+ public int hashCode() {
+ return Objects.hashCode(super.hashCode());
+ }
+
+ @Override
public boolean equals(Object obj) {
if (obj instanceof GenericValue) {
return super.equals(obj);
@@ -243,6 +251,6 @@ public class GenericValue extends Generi
}
public static String getStackTraceAsString() {
- return Thread.currentThread().getStackTrace().toString();
+ return Arrays.toString(Thread.currentThread().getStackTrace());
}
}