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
