Author: jleroux
Date: Fri Jun 8 20:37:32 2018 New Revision: 1833211 URL: http://svn.apache.org/viewvc?rev=1833211&view=rev Log: Fixed: streaming large content cause out of memory exception. (OFBIZ-10133) With r1821036 DataResourceWorker.getDataResourceStream() may return an InputStream (if the data resource is a file) instead of a ByteArrayInputStream which was expected in few places. This fixes it Modified: ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderEvents.java Modified: ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java?rev=1833211&r1=1833210&r2=1833211&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java (original) +++ ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataEvents.java Fri Jun 8 20:37:32 2018 @@ -18,7 +18,6 @@ *******************************************************************************/ package org.apache.ofbiz.content.data; -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -287,7 +286,7 @@ public class DataEvents { } OutputStream os = response.getOutputStream(); Map<String, Object> resourceData = DataResourceWorker.getDataResourceStream(dataResource, "", application.getInitParameter("webSiteId"), UtilHttp.getLocale(request), application.getRealPath("/"), false); - os.write(IOUtils.toByteArray((ByteArrayInputStream)resourceData.get("stream"))); + os.write(IOUtils.toByteArray((InputStream)resourceData.get("stream"))); os.flush(); } catch (GeneralException | IOException e) { String errMsg = "Error downloading digital product content: " + e.toString(); Modified: ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java?rev=1833211&r1=1833210&r2=1833211&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java (original) +++ ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java Fri Jun 8 20:37:32 2018 @@ -1136,7 +1136,7 @@ public class DataResourceWorker impleme public static ByteBuffer getContentAsByteBuffer(Delegator delegator, String dataResourceId, String https, String webSiteId, Locale locale, String rootDir) throws IOException, GeneralException { GenericValue dataResource = EntityQuery.use(delegator).from("DataResource").where("dataResourceId", dataResourceId).queryOne(); Map<String, Object> resourceData = DataResourceWorker.getDataResourceStream(dataResource, https, webSiteId, locale, rootDir, false); - ByteArrayInputStream stream = (ByteArrayInputStream) resourceData.get("stream"); + InputStream stream = (InputStream) resourceData.get("stream"); ByteBuffer byteBuffer = ByteBuffer.wrap(IOUtils.toByteArray(stream)); return byteBuffer; } Modified: ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderEvents.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderEvents.java?rev=1833211&r1=1833210&r2=1833211&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderEvents.java (original) +++ ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderEvents.java Fri Jun 8 20:37:32 2018 @@ -18,8 +18,8 @@ *******************************************************************************/ package org.apache.ofbiz.order.order; -import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import java.math.BigDecimal; import java.util.HashMap; @@ -80,7 +80,7 @@ public class OrderEvents { OutputStream os = response.getOutputStream(); GenericValue dataResource = EntityQuery.use(delegator).from("DataResource").where("dataResourceId", dataResourceId).cache().queryOne(); Map<String, Object> resourceData = DataResourceWorker.getDataResourceStream(dataResource, "", application.getInitParameter("webSiteId"), UtilHttp.getLocale(request), application.getRealPath("/"), false); - os.write(IOUtils.toByteArray((ByteArrayInputStream) resourceData.get("stream"))); + os.write(IOUtils.toByteArray((InputStream) resourceData.get("stream"))); os.flush(); } catch (GeneralException | IOException e) { String errMsg = "Error downloading digital product content: " + e.toString(); @@ -106,9 +106,9 @@ public class OrderEvents { if (selectedItems != null) { for (String selectedItem : selectedItems) { - String [] orderItemSeqIdAndOrderItemShipGrpId = selectedItem.split(":"); - String orderItemSeqId = orderItemSeqIdAndOrderItemShipGrpId[0]; - String shipGroupSeqId = orderItemSeqIdAndOrderItemShipGrpId[1]; + String [] orderItemSeqIdAndOrderItemShipGrpId = selectedItem.split(":"); + String orderItemSeqId = orderItemSeqIdAndOrderItemShipGrpId[0]; + String shipGroupSeqId = orderItemSeqIdAndOrderItemShipGrpId[1]; BigDecimal cancelQuantity = new BigDecimal(request.getParameter("iqm_"+orderItemSeqId+":"+shipGroupSeqId)); Map<String, Object> contextMap = new HashMap<>(); contextMap.put("orderId", orderId); |
Free forum by Nabble | Edit this page |