You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2018/06/08 20:37:32 UTC
svn commit: r1833211 - in /ofbiz/ofbiz-framework/trunk/applications:
content/src/main/java/org/apache/ofbiz/content/data/
order/src/main/java/org/apache/ofbiz/order/order/
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);