details:   https://code.openbravo.com/erp/devel/pi/rev/3cdbbbf58782
changeset: 22323:3cdbbbf58782
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Mon Mar 03 09:30:34 2014 +0100
summary:   fixed bug 25862: NPE serializing to JSON a non persisted Order

  Computed columns is null when object is not persisted yet, it should return
  null instead of failing

details:   https://code.openbravo.com/erp/devel/pi/rev/e7a2966e5278
changeset: 22324:e7a2966e5278
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Mon Mar 03 09:35:08 2014 +0100
summary:   related to bug 25862: added test case

diffstat:

 
modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
 |   2 +
 src-test/org/openbravo/test/dal/ComputedColumnsTest.java                       
            |  21 +++++++++-
 src/org/openbravo/base/gen/entity.ftl                                          
            |   7 ++-
 3 files changed, 27 insertions(+), 3 deletions(-)

diffs (90 lines):

diff -r d83edb2bcfe7 -r e7a2966e5278 
modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
--- 
a/modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
        Mon Mar 03 10:59:20 2014 +0530
+++ 
b/modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
        Mon Mar 03 09:35:08 2014 +0100
@@ -165,6 +165,8 @@
           continue;
         }
 
+        System.out.println("P:" + property);
+
         Object value;
         if (dataResolvingMode == DataResolvingMode.FULL_TRANSLATABLE) {
           value = bob.get(property.getName(), 
OBContext.getOBContext().getLanguage());
diff -r d83edb2bcfe7 -r e7a2966e5278 
src-test/org/openbravo/test/dal/ComputedColumnsTest.java
--- a/src-test/org/openbravo/test/dal/ComputedColumnsTest.java  Mon Mar 03 
10:59:20 2014 +0530
+++ b/src-test/org/openbravo/test/dal/ComputedColumnsTest.java  Mon Mar 03 
09:35:08 2014 +0100
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2013 Openbravo SLU
+ * All portions are Copyright (C) 2013-2014 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -21,10 +21,13 @@
 
 import java.util.Set;
 
+import org.codehaus.jettison.json.JSONException;
+import org.codehaus.jettison.json.JSONObject;
 import org.hibernate.QueryException;
 import org.hibernate.criterion.Restrictions;
 import org.hibernate.engine.EntityKey;
 import org.hibernate.stat.SessionStatistics;
+import org.openbravo.base.provider.OBProvider;
 import org.openbravo.dal.core.DalUtil;
 import org.openbravo.dal.core.SessionHandler;
 import org.openbravo.dal.service.OBCriteria;
@@ -32,6 +35,8 @@
 import org.openbravo.dal.service.OBQuery;
 import org.openbravo.model.common.order.Order;
 import org.openbravo.model.common.order.Order_ComputedColumns;
+import org.openbravo.service.json.DataResolvingMode;
+import org.openbravo.service.json.DataToJsonConverter;
 import org.openbravo.test.base.BaseTest;
 
 /**
@@ -136,4 +141,18 @@
     }
     return false;
   }
+
+  /**
+   * Tests issue #25862
+   * 
+   * Computed columns for a new object should be null when converting to JSON
+   */
+  public void testJSONConverter() throws JSONException {
+    Order myOrder = OBProvider.getInstance().get(Order.class);
+    DataToJsonConverter toJsonConverter = 
OBProvider.getInstance().get(DataToJsonConverter.class);
+    JSONObject json = toJsonConverter.toJsonObject(myOrder, 
DataResolvingMode.FULL);
+
+    assertTrue("delivery status property should be present and null",
+        json.isNull(Order.COMPUTED_COLUMN_DELIVERYSTATUS));
+  }
 }
diff -r d83edb2bcfe7 -r e7a2966e5278 src/org/openbravo/base/gen/entity.ftl
--- a/src/org/openbravo/base/gen/entity.ftl     Mon Mar 03 10:59:20 2014 +0530
+++ b/src/org/openbravo/base/gen/entity.ftl     Mon Mar 03 09:35:08 2014 +0100
@@ -26,7 +26,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2008-2013 Openbravo SLU
+ * All portions are Copyright (C) 2008-2014 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -199,7 +199,10 @@
     @Override
     public Object get(String propName) {
       <#list entity.computedColumnProperties as p>
-      if (COMPUTED_COLUMN_${p.name?upper_case}.equals(propName)){
+      if (COMPUTED_COLUMN_${p.name?upper_case}.equals(propName)) {
+        if (get_computedColumns() == null) {
+          return null;
+        }
         return get_computedColumns().${getter(p)}();
       }
       </#list>

------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to