details: https://code.openbravo.com/erp/devel/pi/rev/4775fc0c799b changeset: 26895:4775fc0c799b user: Carlos Aristu <carlos.aristu <at> openbravo.com> date: Wed Jun 10 18:23:19 2015 +0200 summary: Fixes issue 30119: ScrollableResults object should be closed
diffstat: modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/ADTreeDatasourceService.java | 51 +- modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/LinkToParentTreeDatasourceService.java | 150 +++++---- 2 files changed, 107 insertions(+), 94 deletions(-) diffs (233 lines): diff -r 2a75107a6f00 -r 4775fc0c799b modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/ADTreeDatasourceService.java --- a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/ADTreeDatasourceService.java Wed Jun 10 18:04:18 2015 +0200 +++ b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/ADTreeDatasourceService.java Wed Jun 10 18:23:19 2015 +0200 @@ -288,31 +288,36 @@ int ENTITY = 4; int cont = 0; ScrollableResults scrollNodes = obq.createQuery().scroll(ScrollMode.FORWARD_ONLY); - while (scrollNodes.next()) { - Object[] node = scrollNodes.get(); - JSONObject value = null; - BaseOBObject bob = (BaseOBObject) node[ENTITY]; - try { - value = toJsonConverter.toJsonObject(bob, DataResolvingMode.FULL); - value.put("nodeId", bob.getId().toString()); - if (fetchRoot) { - value.put("parentId", ROOT_NODE_CLIENT); - } else { - value.put("parentId", node[PARENT_ID]); + try { + while (scrollNodes.next()) { + Object[] node = scrollNodes.get(); + JSONObject value = null; + BaseOBObject bob = (BaseOBObject) node[ENTITY]; + try { + value = toJsonConverter.toJsonObject(bob, DataResolvingMode.FULL); + value.put("nodeId", bob.getId().toString()); + if (fetchRoot) { + value.put("parentId", ROOT_NODE_CLIENT); + } else { + value.put("parentId", node[PARENT_ID]); + } + addNodeCommonAttributes(entity, bob, value); + value.put("seqno", node[SEQNO]); + value + .put("_hasChildren", (this.nodeHasChildren(entity, (String) node[NODE_ID], + hqlWhereClause)) ? true : false); + } catch (JSONException e) { + logger.error("Error while constructing JSON reponse", e); } - addNodeCommonAttributes(entity, bob, value); - value.put("seqno", node[SEQNO]); - value.put("_hasChildren", - (this.nodeHasChildren(entity, (String) node[NODE_ID], hqlWhereClause)) ? true : false); - } catch (JSONException e) { - logger.error("Error while constructing JSON reponse", e); + responseData.put(value); + if ((cont % 100) == 0) { + OBDal.getInstance().flush(); + OBDal.getInstance().getSession().clear(); + } + cont++; } - responseData.put(value); - if ((cont % 100) == 0) { - OBDal.getInstance().flush(); - OBDal.getInstance().getSession().clear(); - } - cont++; + } finally { + scrollNodes.close(); } return responseData; } diff -r 2a75107a6f00 -r 4775fc0c799b modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/LinkToParentTreeDatasourceService.java --- a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/LinkToParentTreeDatasourceService.java Wed Jun 10 18:04:18 2015 +0200 +++ b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/LinkToParentTreeDatasourceService.java Wed Jun 10 18:23:19 2015 +0200 @@ -284,44 +284,48 @@ } int count = 0; final ScrollableResults scrollableResults = query.scroll(ScrollMode.FORWARD_ONLY); - while (scrollableResults.next()) { - BaseOBObject bob = (BaseOBObject) scrollableResults.get()[0]; - final JSONObject json = toJsonConverter.toJsonObject(bob, DataResolvingMode.FULL); - if (fetchRoot) { - json.put("parentId", ROOT_NODE_CLIENT); - } else { - json.put("parentId", parentId); + try { + while (scrollableResults.next()) { + BaseOBObject bob = (BaseOBObject) scrollableResults.get()[0]; + final JSONObject json = toJsonConverter.toJsonObject(bob, DataResolvingMode.FULL); + if (fetchRoot) { + json.put("parentId", ROOT_NODE_CLIENT); + } else { + json.put("parentId", parentId); + } + Object nodeId = bob.get(nodeIdProperty.getName()); + String nodeIdStr = null; + if (nodeId instanceof String) { + nodeIdStr = (String) nodeId; + } else if (nodeId instanceof BaseOBObject) { + nodeIdStr = ((BaseOBObject) nodeId).getId().toString(); + } + + Object parentNodeId = bob.get(linkToParentProperty.getName()); + String parentNodeIdStr = null; + if (parentNodeId instanceof String) { + parentNodeIdStr = (String) parentNodeId; + } else if (parentNodeId instanceof BaseOBObject) { + parentNodeIdStr = ((BaseOBObject) parentNodeId).getId().toString(); + } + + if (isMultiParentTree) { + json.put("nodeId", parentNodeIdStr + ID_SEPARATOR + nodeIdStr); + } else { + json.put("nodeId", nodeIdStr); + } + addNodeCommonAttributes(entity, bob, json); + json.put("_hasChildren", (this.nodeHasChildren(entity, linkToParentProperty, + nodeIdProperty, bob, hqlWhereClause)) ? true : false); + responseData.put(json); + count++; + if (count % 100 == 0) { + OBDal.getInstance().getSession().clear(); + } + } - Object nodeId = bob.get(nodeIdProperty.getName()); - String nodeIdStr = null; - if (nodeId instanceof String) { - nodeIdStr = (String) nodeId; - } else if (nodeId instanceof BaseOBObject) { - nodeIdStr = ((BaseOBObject) nodeId).getId().toString(); - } - - Object parentNodeId = bob.get(linkToParentProperty.getName()); - String parentNodeIdStr = null; - if (parentNodeId instanceof String) { - parentNodeIdStr = (String) parentNodeId; - } else if (parentNodeId instanceof BaseOBObject) { - parentNodeIdStr = ((BaseOBObject) parentNodeId).getId().toString(); - } - - if (isMultiParentTree) { - json.put("nodeId", parentNodeIdStr + ID_SEPARATOR + nodeIdStr); - } else { - json.put("nodeId", nodeIdStr); - } - addNodeCommonAttributes(entity, bob, json); - json.put("_hasChildren", (this.nodeHasChildren(entity, linkToParentProperty, nodeIdProperty, - bob, hqlWhereClause)) ? true : false); - responseData.put(json); - count++; - if (count % 100 == 0) { - OBDal.getInstance().getSession().clear(); - } - + } finally { + scrollableResults.close(); } return responseData; } @@ -840,42 +844,46 @@ } int count = 0; final ScrollableResults scrollableResults = query.scroll(ScrollMode.FORWARD_ONLY); - while (scrollableResults.next()) { - BaseOBObject bob = (BaseOBObject) scrollableResults.get()[0]; - final JSONObject json = toJsonConverter.toJsonObject(bob, DataResolvingMode.FULL); + try { + while (scrollableResults.next()) { + BaseOBObject bob = (BaseOBObject) scrollableResults.get()[0]; + final JSONObject json = toJsonConverter.toJsonObject(bob, DataResolvingMode.FULL); - Object nodeId = bob.get(nodeIdProperty.getName()); - String nodeIdStr = null; - if (nodeId instanceof String) { - nodeIdStr = (String) nodeId; - } else if (nodeId instanceof BaseOBObject) { - nodeIdStr = ((BaseOBObject) nodeId).getId().toString(); + Object nodeId = bob.get(nodeIdProperty.getName()); + String nodeIdStr = null; + if (nodeId instanceof String) { + nodeIdStr = (String) nodeId; + } else if (nodeId instanceof BaseOBObject) { + nodeIdStr = ((BaseOBObject) nodeId).getId().toString(); + } + + Object parentNodeId = bob.get(linkToParentProperty.getName()); + String parentNodeIdStr = null; + if (parentNodeId instanceof String) { + parentNodeIdStr = (String) parentNodeId; + } else if (parentNodeId instanceof BaseOBObject) { + parentNodeIdStr = ((BaseOBObject) parentNodeId).getId().toString(); + } + try { + json.put("nodeId", nodeIdStr); + if (parentNodeIdStr == null) { + json.put("parentId", ROOT_NODE_CLIENT); + } else { + json.put("parentId", parentNodeIdStr); + } + } catch (JSONException e) { + logger.error("Error on tree datasource", e); + } + + parentList.add(json); + count++; + if (count % 100 == 0) { + OBDal.getInstance().getSession().clear(); + } + } - - Object parentNodeId = bob.get(linkToParentProperty.getName()); - String parentNodeIdStr = null; - if (parentNodeId instanceof String) { - parentNodeIdStr = (String) parentNodeId; - } else if (parentNodeId instanceof BaseOBObject) { - parentNodeIdStr = ((BaseOBObject) parentNodeId).getId().toString(); - } - try { - json.put("nodeId", nodeIdStr); - if (parentNodeIdStr == null) { - json.put("parentId", ROOT_NODE_CLIENT); - } else { - json.put("parentId", parentNodeIdStr); - } - } catch (JSONException e) { - logger.error("Error on tree datasource", e); - } - - parentList.add(json); - count++; - if (count % 100 == 0) { - OBDal.getInstance().getSession().clear(); - } - + } finally { + scrollableResults.close(); } return parentList; } ------------------------------------------------------------------------------ _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits