You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2015/05/18 19:18:55 UTC
svn commit: r1680058 - in /ofbiz/trunk/framework:
base/src/org/ofbiz/base/util/ObjectType.java
minilang/src/org/ofbiz/minilang/MiniLangUtil.java
minilang/src/org/ofbiz/minilang/method/conditional/Compare.java
Author: adrianc
Date: Mon May 18 17:18:54 2015
New Revision: 1680058
URL: http://svn.apache.org/r1680058
Log:
Replace ClassCastException with type check - https://issues.apache.org/jira/browse/OFBIZ-6291.
Ignoring a thrown ClassCastException is a common pattern in the project (one I have used myself), but it should be avoided in the future because it makes debugging difficult, plus it creates objects unnecessarily.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java
ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/MiniLangUtil.java
ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/Compare.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java?rev=1680058&r1=1680057&r2=1680058&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ObjectType.java Mon May 18 17:18:54 2015
@@ -530,11 +530,9 @@ public class ObjectType {
converter = (Converter<Object, Object>) Converters.getConverter(sourceClass, targetClass);
} catch (ClassNotFoundException e) {}
if (converter != null) {
- LocalizedConverter<Object, Object> localizedConverter = null;
- try {
- localizedConverter = (LocalizedConverter<Object, Object>) converter;
- } catch (ClassCastException e) {}
- if (localizedConverter != null) {
+ if (converter instanceof LocalizedConverter) {
+ @SuppressWarnings("rawtypes")
+ LocalizedConverter<Object, Object> localizedConverter = (LocalizedConverter) converter;
if (timeZone == null) {
timeZone = TimeZone.getDefault();
}
Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/MiniLangUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/MiniLangUtil.java?rev=1680058&r1=1680057&r2=1680058&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/MiniLangUtil.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/MiniLangUtil.java Mon May 18 17:18:54 2015
@@ -169,7 +169,7 @@ public final class MiniLangUtil {
}
Converter<Object, Object> converter = (Converter<Object, Object>) Converters.getConverter(sourceClass, targetClass);
LocalizedConverter<Object, Object> localizedConverter = null;
- try {
+ if (converter instanceof LocalizedConverter) {
localizedConverter = (LocalizedConverter) converter;
if (locale == null) {
locale = Locale.getDefault();
@@ -181,7 +181,7 @@ public final class MiniLangUtil {
format = null;
}
return localizedConverter.convert(obj, locale, timeZone, format);
- } catch (ClassCastException e) {}
+ }
return converter.convert(obj);
}
Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/Compare.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/Compare.java?rev=1680058&r1=1680057&r2=1680058&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/Compare.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/Compare.java Mon May 18 17:18:54 2015
@@ -109,10 +109,9 @@ public abstract class Compare {
if (lValue == null || lValue == GenericEntity.NULL_FIELD) {
return false;
}
- try {
+ if (lValue instanceof Collection) {
Collection<Object> collection = UtilGenerics.checkCollection(lValue);
return collection.contains(rValue);
- } catch (ClassCastException e) {
}
if (lValue instanceof String && rValue instanceof String) {
return ((String) lValue).contains((String) rValue);
@@ -133,16 +132,16 @@ public abstract class Compare {
if (convertedRvalue == null) {
return false;
}
- try {
+ if (convertedLvalue instanceof BigDecimal &&
+ convertedRvalue instanceof BigDecimal) {
BigDecimal lBigDecimal = (BigDecimal) convertedLvalue;
BigDecimal rBigDecimal = (BigDecimal) convertedRvalue;
return compareBigDecimals(lBigDecimal, rBigDecimal) == 0;
- } catch (ClassCastException e) {
}
- try {
+ if (convertedLvalue instanceof Comparable &&
+ convertedRvalue instanceof Comparable) {
Comparable<Object> comparable = UtilGenerics.cast(convertedLvalue);
return comparable.compareTo(convertedRvalue) == 0;
- } catch (ClassCastException e) {
}
return convertedLvalue.equals(convertedRvalue);
}
@@ -155,16 +154,16 @@ public abstract class Compare {
Object convertedLvalue = MiniLangUtil.convertType(lValue, type, locale, timeZone, format);
Object convertedRvalue = MiniLangUtil.convertType(rValue, type, locale, timeZone, format);
assertValuesNotNull(convertedLvalue, convertedRvalue);
- try {
+ if (convertedLvalue instanceof BigDecimal &&
+ convertedRvalue instanceof BigDecimal) {
BigDecimal lBigDecimal = (BigDecimal) convertedLvalue;
BigDecimal rBigDecimal = (BigDecimal) convertedRvalue;
return compareBigDecimals(lBigDecimal, rBigDecimal) > 0;
- } catch (ClassCastException e) {
}
- try {
+ if (convertedLvalue instanceof Comparable &&
+ convertedRvalue instanceof Comparable) {
Comparable<Object> comparable = UtilGenerics.cast(convertedLvalue);
return comparable.compareTo(convertedRvalue) > 0;
- } catch (ClassCastException e) {
}
throw new IllegalArgumentException("Cannot compare: l-value is not a comparable type");
}
@@ -177,16 +176,16 @@ public abstract class Compare {
Object convertedLvalue = MiniLangUtil.convertType(lValue, type, locale, timeZone, format);
Object convertedRvalue = MiniLangUtil.convertType(rValue, type, locale, timeZone, format);
assertValuesNotNull(convertedLvalue, convertedRvalue);
- try {
+ if (convertedLvalue instanceof BigDecimal &&
+ convertedRvalue instanceof BigDecimal) {
BigDecimal lBigDecimal = (BigDecimal) convertedLvalue;
BigDecimal rBigDecimal = (BigDecimal) convertedRvalue;
return compareBigDecimals(lBigDecimal, rBigDecimal) >= 0;
- } catch (ClassCastException e) {
}
- try {
+ if (convertedLvalue instanceof Comparable &&
+ convertedRvalue instanceof Comparable) {
Comparable<Object> comparable = UtilGenerics.cast(convertedLvalue);
return comparable.compareTo(convertedRvalue) >= 0;
- } catch (ClassCastException e) {
}
throw new IllegalArgumentException("Cannot compare: l-value is not a comparable type");
}
@@ -226,16 +225,16 @@ public abstract class Compare {
Object convertedLvalue = MiniLangUtil.convertType(lValue, type, locale, timeZone, format);
Object convertedRvalue = MiniLangUtil.convertType(rValue, type, locale, timeZone, format);
assertValuesNotNull(convertedLvalue, convertedRvalue);
- try {
+ if (convertedLvalue instanceof BigDecimal &&
+ convertedRvalue instanceof BigDecimal) {
BigDecimal lBigDecimal = (BigDecimal) convertedLvalue;
BigDecimal rBigDecimal = (BigDecimal) convertedRvalue;
return compareBigDecimals(lBigDecimal, rBigDecimal) < 0;
- } catch (ClassCastException e) {
}
- try {
+ if (convertedLvalue instanceof Comparable &&
+ convertedRvalue instanceof Comparable) {
Comparable<Object> comparable = UtilGenerics.cast(convertedLvalue);
return comparable.compareTo(convertedRvalue) < 0;
- } catch (ClassCastException e) {
}
throw new IllegalArgumentException("Cannot compare: l-value is not a comparable type");
}
@@ -248,16 +247,16 @@ public abstract class Compare {
Object convertedLvalue = MiniLangUtil.convertType(lValue, type, locale, timeZone, format);
Object convertedRvalue = MiniLangUtil.convertType(rValue, type, locale, timeZone, format);
assertValuesNotNull(convertedLvalue, convertedRvalue);
- try {
+ if (convertedLvalue instanceof BigDecimal &&
+ convertedRvalue instanceof BigDecimal) {
BigDecimal lBigDecimal = (BigDecimal) convertedLvalue;
BigDecimal rBigDecimal = (BigDecimal) convertedRvalue;
return compareBigDecimals(lBigDecimal, rBigDecimal) <= 0;
- } catch (ClassCastException e) {
}
- try {
+ if (convertedLvalue instanceof Comparable &&
+ convertedRvalue instanceof Comparable) {
Comparable<Object> comparable = UtilGenerics.cast(convertedLvalue);
return comparable.compareTo(convertedRvalue) <= 0;
- } catch (ClassCastException e) {
}
throw new IllegalArgumentException("Cannot compare: l-value is not a comparable type");
}
@@ -275,16 +274,16 @@ public abstract class Compare {
if (convertedRvalue == null) {
return true;
}
- try {
+ if (convertedLvalue instanceof BigDecimal &&
+ convertedRvalue instanceof BigDecimal) {
BigDecimal lBigDecimal = (BigDecimal) convertedLvalue;
BigDecimal rBigDecimal = (BigDecimal) convertedRvalue;
return compareBigDecimals(lBigDecimal, rBigDecimal) != 0;
- } catch (ClassCastException e) {
}
- try {
+ if (convertedLvalue instanceof Comparable &&
+ convertedRvalue instanceof Comparable) {
Comparable<Object> comparable = UtilGenerics.cast(convertedLvalue);
return comparable.compareTo(convertedRvalue) != 0;
- } catch (ClassCastException e) {
}
return !convertedLvalue.equals(convertedRvalue);
}