# HG changeset patch
# User Asier Lostalé <asier.lostale@openbravo.com>
# Date 1458546635 -3600
#      Mon Mar 21 08:50:35 2016 +0100
# Node ID 702f1c0a63e0c276e69cd8d8db5767cd55498767
# Parent  70df4e4c5cab6d37f10eceee6b66be039c381556
[jboss] read templates as stream instead of as URL

  Reading templates as a URL resource from classpath is problematic when
  deploying in wildfly (returs vfs:/// protocol instead of file:///).

  This is fixed by reading the resource as a stream.

diff -r 70df4e4c5cab -r 702f1c0a63e0 modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/BaseTemplateProcessor.java
--- a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/BaseTemplateProcessor.java	Mon Feb 29 04:46:02 2016 +0000
+++ b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/BaseTemplateProcessor.java	Mon Mar 21 08:50:35 2016 +0100
@@ -11,20 +11,19 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2010-2011 Openbravo SLU 
+ * All portions are Copyright (C) 2010-2016 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
  */
 package org.openbravo.client.kernel;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.net.URL;
+import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.commons.io.IOUtils;
 import org.openbravo.dal.core.DalUtil;
 import org.openbravo.service.json.JsonConstants;
 
@@ -159,22 +158,17 @@
    * @return the read template
    */
   protected String readTemplateSourceFromClasspath(String path) {
+    InputStream input = null;
     try {
-      final URL url = this.getClass().getResource(path.trim().replace(" ", "+"));
-      final File file = new File(url.toURI());
-      return readFileAsString(file);
+      input = this.getClass().getResourceAsStream(path.trim().replace(" ", "+"));
+      return IOUtils.toString(input);
     } catch (Exception e) {
       throw new IllegalArgumentException("Exception for path " + path, e);
+    } finally {
+      IOUtils.closeQuietly(input);
     }
   }
 
-  private String readFileAsString(File file) throws java.io.IOException {
-    byte[] buffer = new byte[(int) file.length()];
-    FileInputStream f = new FileInputStream(file);
-    f.read(buffer);
-    return new String(buffer);
-  }
-
   /*
    * (non-Javadoc)
    * 
# HG changeset patch
# User Asier Lostalé <asier.lostale@openbravo.com>
# Date 1458548765 -3600
#      Mon Mar 21 09:26:05 2016 +0100
# Node ID e58cbd8a7f8cf059d158caf25b586aafec8b42ff
# Parent  702f1c0a63e0c276e69cd8d8db5767cd55498767
[jboss] read BeanManager from jndi if not present in ServletContext


  Tomcat stores BeanManager in ServletContext whereas wildfly does not, it saves
  it in as a jdni resource.

diff -r 702f1c0a63e0 -r e58cbd8a7f8c modules/org.openbravo.base.weld/src/org/openbravo/base/weld/WeldUtils.java
--- a/modules/org.openbravo.base.weld/src/org/openbravo/base/weld/WeldUtils.java	Mon Mar 21 08:50:35 2016 +0100
+++ b/modules/org.openbravo.base.weld/src/org/openbravo/base/weld/WeldUtils.java	Mon Mar 21 09:26:05 2016 +0100
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2010-2011 Openbravo SLU
+ * All portions are Copyright (C) 2010-2016 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -26,9 +26,14 @@
 import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.util.AnnotationLiteral;
 import javax.inject.Inject;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 
 import org.jboss.weld.environment.servlet.Listener;
+import org.openbravo.base.exception.OBException;
 import org.openbravo.dal.core.DalContextListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Provides weld utilities.
@@ -39,11 +44,27 @@
 public class WeldUtils {
 
   private static BeanManager staticBeanManager = null;
+  private static final Logger log = LoggerFactory.getLogger(WeldUtils.class);
 
   public static BeanManager getStaticInstanceBeanManager() {
     if (staticBeanManager == null) {
       staticBeanManager = (BeanManager) DalContextListener.getServletContext().getAttribute(
           Listener.BEAN_MANAGER_ATTRIBUTE_NAME);
+
+      if (staticBeanManager == null) {
+        // In wildfly, bean manager is not saved in servlet context.
+        log.debug("BeanManager not prsent in ServletContext, trying to get it with a jndi lookup");
+
+        InitialContext ic = null;
+        try {
+          ic = new InitialContext();
+          String name = "java:comp/" + BeanManager.class.getSimpleName();
+          staticBeanManager = (BeanManager) ic.lookup(name);
+        } catch (NamingException e) {
+          log.error("Couldn't get beanManager trhough jndi lookup in InitialContext {}", ic, e);
+          throw new OBException(e);
+        }
+      }
     }
     return staticBeanManager;
   }
