Author: pgil
Date: Thu Apr 14 21:12:37 2016
New Revision: 1739196

URL: http://svn.apache.org/viewvc?rev=1739196&view=rev
Log:
OFBIZ-6944 : streamDataResource do not manage OTHER_OBJECT dataResourceTypeId

Fix an old TODO replacing streamDataResource with getDataResourceStream 
DataResourceWorker method, this fixing OTHER_OBJECT stream dataResource 
management.

Thanks Jacques for the feedback

Modified:
    
ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataEvents.java
    
ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java
    
ofbiz/branches/release15.12/applications/order/src/org/ofbiz/order/order/OrderEvents.java

Modified: 
ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataEvents.java
URL: 
http://svn.apache.org/viewvc/ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataEvents.java?rev=1739196&r1=1739195&r2=1739196&view=diff
==============================================================================
--- 
ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataEvents.java
 (original)
+++ 
ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataEvents.java
 Thu Apr 14 21:12:37 2016
@@ -18,6 +18,7 @@
  
*******************************************************************************/
 package org.ofbiz.content.data;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -29,6 +30,7 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
+import org.apache.commons.io.IOUtils;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
 import org.ofbiz.base.util.UtilHttp;
@@ -43,7 +45,6 @@ import org.ofbiz.entity.util.EntityUtilP
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ServiceUtil;
-import org.ofbiz.webapp.website.WebSiteWorker;
 
 /**
  * DataEvents Class
@@ -283,7 +284,8 @@ public class DataEvents {
                 response.setContentType(mimeType);
             }
             OutputStream os = response.getOutputStream();
-            DataResourceWorker.streamDataResource(os, delegator, 
dataResourceId, "", WebSiteWorker.getWebSiteId(request), 
UtilHttp.getLocale(request), application.getRealPath("/"));
+            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.flush();
         } catch (GenericEntityException e) {
             String errMsg = "Error downloading digital product content: " + 
e.toString();

Modified: 
ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java
URL: 
http://svn.apache.org/viewvc/ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java?rev=1739196&r1=1739195&r2=1739196&view=diff
==============================================================================
--- 
ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java
 (original)
+++ 
ofbiz/branches/release15.12/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java
 Thu Apr 14 21:12:37 2016
@@ -26,7 +26,6 @@ import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.net.URL;
@@ -49,6 +48,8 @@ import org.apache.commons.fileupload.Fil
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.tika.Tika;
 import org.ofbiz.base.location.FlexibleLocation;
 import org.ofbiz.base.util.Debug;
@@ -83,7 +84,6 @@ import org.ofbiz.widget.renderer.macro.M
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 
-import freemarker.template.Template;
 import freemarker.template.TemplateException;
 
 /**
@@ -1040,7 +1040,7 @@ public class DataResourceWorker  impleme
             String objectInfo = dataResource.getString("objectInfo");
             if (UtilValidate.isNotEmpty(objectInfo)) {
                 File file = 
DataResourceWorker.getContentFile(dataResourceTypeId, objectInfo, contextRoot);
-                return UtilMisc.toMap("stream", new FileInputStream(file), 
"length", Long.valueOf(file.length()));
+                return UtilMisc.toMap("stream", new 
ByteArrayInputStream(FileUtils.readFileToByteArray(file)), "length", 
Long.valueOf(file.length()));
             } else {
                 throw new GeneralException("No objectInfo found for FILE type 
[" + dataResourceTypeId + "]; cannot stream");
             }
@@ -1070,69 +1070,11 @@ public class DataResourceWorker  impleme
         throw new GeneralException("The dataResourceTypeId [" + 
dataResourceTypeId + "] is not supported in getDataResourceStream");
     }
 
-    // TODO: remove this method in favor of getDataResourceStream
-    public static void streamDataResource(OutputStream os, Delegator 
delegator, String dataResourceId, String https, String webSiteId, Locale 
locale, String rootDir) throws IOException, GeneralException {
-        try {
-            GenericValue dataResource = 
EntityQuery.use(delegator).from("DataResource").where("dataResourceId", 
dataResourceId).cache().queryOne();
-            if (dataResource == null) {
-                throw new GeneralException("Error in streamDataResource: 
DataResource with ID [" + dataResourceId + "] was not found.");
-            }
-            String dataResourceTypeId = 
dataResource.getString("dataResourceTypeId");
-            if (UtilValidate.isEmpty(dataResourceTypeId)) {
-                dataResourceTypeId = "SHORT_TEXT";
-            }
-            String mimeTypeId = dataResource.getString("mimeTypeId");
-            if (UtilValidate.isEmpty(mimeTypeId)) {
-                mimeTypeId = "text/html";
-            }
-
-            if (dataResourceTypeId.equals("SHORT_TEXT")) {
-                String text = dataResource.getString("objectInfo");
-                os.write(text.getBytes());
-            } else if (dataResourceTypeId.equals("ELECTRONIC_TEXT")) {
-                GenericValue electronicText = 
EntityQuery.use(delegator).from("ElectronicText").where("dataResourceId", 
dataResourceId).cache().queryOne();
-                if (electronicText != null) {
-                    String text = electronicText.getString("textData");
-                    if (text != null) os.write(text.getBytes());
-                }
-            } else if (dataResourceTypeId.equals("IMAGE_OBJECT")) {
-                byte[] imageBytes = acquireImage(delegator, dataResource);
-                if (imageBytes != null) os.write(imageBytes);
-            } else if (dataResourceTypeId.equals("LINK")) {
-                String text = dataResource.getString("objectInfo");
-                os.write(text.getBytes());
-            } else if (dataResourceTypeId.equals("URL_RESOURCE")) {
-                URL url = new URL(dataResource.getString("objectInfo"));
-                if (url.getHost() == null) { // is relative
-                    String prefix = buildRequestPrefix(delegator, locale, 
webSiteId, https);
-                    String sep = "";
-                    //String s = "";
-                    if (url.toString().indexOf("/") != 0 && 
prefix.lastIndexOf("/") != (prefix.length() - 1)) {
-                        sep = "/";
-                    }
-                    String s2 = prefix + sep + url.toString();
-                    url = new URL(s2);
-                }
-                InputStream in = url.openStream();
-                UtilIO.copy(in, true, os, false);
-            } else if (dataResourceTypeId.indexOf("_FILE") >= 0) {
-                String objectInfo = dataResource.getString("objectInfo");
-                File inputFile = getContentFile(dataResourceTypeId, 
objectInfo, rootDir);
-                //long fileSize = inputFile.length();
-                FileInputStream fis = new FileInputStream(inputFile);
-                UtilIO.copy(fis, true, os, false);
-            } else {
-                throw new GeneralException("The dataResourceTypeId [" + 
dataResourceTypeId + "] is not supported in streamDataResource");
-            }
-        } catch (GenericEntityException e) {
-            throw new GeneralException("Error in streamDataResource", e);
-        }
-    }
-
     public static ByteBuffer getContentAsByteBuffer(Delegator delegator, 
String dataResourceId, String https, String webSiteId, Locale locale, String 
rootDir) throws IOException, GeneralException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        streamDataResource(baos, delegator, dataResourceId, https, webSiteId, 
locale, rootDir);
-        ByteBuffer byteBuffer = ByteBuffer.wrap(baos.toByteArray());
+        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");
+        ByteBuffer byteBuffer = ByteBuffer.wrap(IOUtils.toByteArray(stream));
         return byteBuffer;
     }
 

Modified: 
ofbiz/branches/release15.12/applications/order/src/org/ofbiz/order/order/OrderEvents.java
URL: 
http://svn.apache.org/viewvc/ofbiz/branches/release15.12/applications/order/src/org/ofbiz/order/order/OrderEvents.java?rev=1739196&r1=1739195&r2=1739196&view=diff
==============================================================================
--- 
ofbiz/branches/release15.12/applications/order/src/org/ofbiz/order/order/OrderEvents.java
 (original)
+++ 
ofbiz/branches/release15.12/applications/order/src/org/ofbiz/order/order/OrderEvents.java
 Thu Apr 14 21:12:37 2016
@@ -18,6 +18,7 @@
  
*******************************************************************************/
 package org.ofbiz.order.order;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.HashMap;
@@ -30,9 +31,11 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
+import org.apache.commons.io.IOUtils;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
 import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.content.data.DataResourceWorker;
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericEntityException;
@@ -41,7 +44,6 @@ import org.ofbiz.entity.util.EntityQuery
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ServiceUtil;
-import org.ofbiz.webapp.website.WebSiteWorker;
 
 /**
  * Order Events
@@ -78,7 +80,9 @@ public class OrderEvents {
                 
response.setContentType(orderRoleAndProductContentInfo.getString("mimeTypeId"));
             }
             OutputStream os = response.getOutputStream();
-            DataResourceWorker.streamDataResource(os, delegator, 
dataResourceId, "", WebSiteWorker.getWebSiteId(request), 
UtilHttp.getLocale(request), application.getRealPath("/"));
+            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.flush();
         } catch (GenericEntityException e) {
             String errMsg = "Error downloading digital product content: " + 
e.toString();


Reply via email to