Author: jleroux
Date: Thu Oct 4 08:07:34 2012
New Revision: 1393948
URL:
http://svn.apache.org/viewvc?rev=1393948&view=revLog:
A patch from Paul Foxworthy "Recalculate Order causes NumberFormatException"
https://issues.apache.org/jira/browse/OFBIZ-5046On demo site, create a new order by using the URL
https://demo-trunk.ofbiz.apache.org/ordermgr/control/orderentryEnter any Product ID, e.g. GZ-1000
Enter a Quantity, e.g. 1
Click on Add To Order
Now click on Recalculate Order on the title bar of the Create Order screenlet
Check the logs. On the demo site, you can do this with the URL
https://demo-trunk.ofbiz.apache.org/webtools/control/LogViewYou will see:
Exception: java.lang.NumberFormatException Message: For input string: "i18n" ---- stack trace --------------------------------------------------------------- java.lang.NumberFormatException: For input string: "i18n" java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) java.lang.Integer.parseInt(Integer.java:449) java.lang.Integer.parseInt(Integer.java:499) org.ofbiz.order.shoppingcart.ShoppingCartHelper.modifyCart(ShoppingCartHelper.java:673)
The problem is the suffix _i18n on the input elements. The code in modifycart assumes the last thing in the parameter names is a sequence number.
This problem is not as severe as OFBIZ-5045, because the exception is swallowed immediately and the cart is updated properly. Still, these exceptions slow down OFBiz and add noise to the logs.
Modified:
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java
Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java?rev=1393948&r1=1393947&r2=1393948&view=diff==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java Thu Oct 4 08:07:34 2012
@@ -667,7 +667,8 @@ public class ShoppingCartHelper {
for(String parameterName : context.keySet()) {
int underscorePos = parameterName.lastIndexOf('_');
- if (underscorePos >= 0) {
+ // ignore localized date input elements, just use their counterpart without the _i18n suffix
+ if (underscorePos >= 0 && (!parameterName.endsWith("_i18n"))) {
try {
String indexStr = parameterName.substring(underscorePos + 1);
int index = Integer.parseInt(indexStr);