details:   https://code.openbravo.com/erp/devel/pi/rev/63a01ac3db46
changeset: 34774:63a01ac3db46
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Thu Sep 13 12:15:52 2018 +0200
summary:   fixed issue 39280: can't install reference data in test code

  When inserting reference data not running in a web container, data files
  are read from source.path.

diffstat:

 src/org/openbravo/erpCommon/businessUtility/InitialSetupUtility.java |  47 
+++++++--
 1 files changed, 35 insertions(+), 12 deletions(-)

diffs (86 lines):

diff -r 956f70249104 -r 63a01ac3db46 
src/org/openbravo/erpCommon/businessUtility/InitialSetupUtility.java
--- a/src/org/openbravo/erpCommon/businessUtility/InitialSetupUtility.java      
Wed Sep 12 19:33:31 2018 +0000
+++ b/src/org/openbravo/erpCommon/businessUtility/InitialSetupUtility.java      
Thu Sep 13 12:15:52 2018 +0200
@@ -18,7 +18,11 @@
  */
 package org.openbravo.erpCommon.businessUtility;
 
+import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -32,6 +36,8 @@
 import org.hibernate.criterion.Order;
 import org.hibernate.criterion.Restrictions;
 import org.openbravo.base.provider.OBProvider;
+import org.openbravo.base.session.OBPropertiesProvider;
+import org.openbravo.base.session.SessionFactoryController;
 import org.openbravo.client.kernel.RequestContext;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBCriteria;
@@ -85,6 +91,8 @@
 import org.openbravo.service.db.DataImportService;
 import org.openbravo.service.db.ImportResult;
 
+import com.google.common.base.Charsets;
+
 /**
  * @author David Alsasua
  * 
@@ -1686,18 +1694,7 @@
 
     OBContext.setAdminMode();
     try {
-      String xmlPath = "/WEB-INF/referencedata/standard/" + 
dataset.getModule().getJavaPackage()
-          + "/" + Utility.wikifiedName(dataset.getName()) + ".xml";
-
-      String strXml = null;
-      try (InputStream r = 
RequestContext.getServletContext().getResourceAsStream(xmlPath)) {
-        if (r == null) {
-          log4j.error("Could not find reference data resource " + xmlPath + " 
at "
-              + RequestContext.getServletContext().getRealPath(xmlPath));
-          return myResult;
-        }
-        strXml = IOUtils.toString(r);
-      }
+      String strXml = getDatasetContent(dataset);
 
       DataImportService myData = DataImportService.getInstance();
 
@@ -1722,6 +1719,32 @@
     return myResult;
   }
 
+  private static String getDatasetContent(DataSet dataset) throws IOException {
+    String fileName = Utility.wikifiedName(dataset.getName()) + ".xml";
+    if (SessionFactoryController.isRunningInWebContainer()) {
+      String xmlPath = "/WEB-INF/referencedata/standard/" + 
dataset.getModule().getJavaPackage()
+          + "/" + fileName;
+
+      try (InputStream r = 
RequestContext.getServletContext().getResourceAsStream(xmlPath)) {
+        if (r == null) {
+          log4j.error("Could not find reference data resource " + xmlPath + " 
at "
+              + RequestContext.getServletContext().getRealPath(xmlPath));
+          throw new FileNotFoundException(fileName);
+        }
+        return IOUtils.toString(r);
+      }
+    } else {
+      String xmlPath = 
OBPropertiesProvider.getInstance().getOpenbravoProperties()
+          .getProperty("source.path");
+      boolean isCore = dataset.getModule().getId().equals("0");
+      if (!isCore) {
+        xmlPath += "/modules/" + dataset.getModule().getJavaPackage();
+      }
+      xmlPath += "/referencedata/standard";
+      return new String(Files.readAllBytes(Paths.get(xmlPath, fileName)), 
Charsets.UTF_8);
+    }
+  }
+
   private static List<ADClientModule> getClientModuleList(Client client, 
Module module) {
     OBContext.setAdminMode();
     try {


_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to