[jbpm-commits] JBoss JBPM SVN: r3221 - in projects/balalaika/trunk: server/src/main/java/org/jboss/balalaika and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Dec 5 08:30:55 EST 2008


Author: heiko.braun at jboss.com
Date: 2008-12-05 08:30:54 -0500 (Fri, 05 Dec 2008)
New Revision: 3221

Added:
   projects/balalaika/trunk/server/src/main/java/org/jboss/balalaika/JMXServerConfig.java
Modified:
   projects/balalaika/trunk/core/src/main/java/org/jboss/balalaika/IntegrationConfig.java
   projects/balalaika/trunk/server/src/main/java/org/jboss/balalaika/ReportFacade.java
Log:
Adopt to JBoss server config (i.e. data directories)

Modified: projects/balalaika/trunk/core/src/main/java/org/jboss/balalaika/IntegrationConfig.java
===================================================================
--- projects/balalaika/trunk/core/src/main/java/org/jboss/balalaika/IntegrationConfig.java	2008-12-05 11:14:56 UTC (rev 3220)
+++ projects/balalaika/trunk/core/src/main/java/org/jboss/balalaika/IntegrationConfig.java	2008-12-05 13:30:54 UTC (rev 3221)
@@ -29,9 +29,9 @@
 public class IntegrationConfig
 {
    private String birtHome = "/Users/hbraun/dev/env/birt-runtime-2_2_2/ReportEngine/";
-   private String reportDir = "/Users/hbraun/dev/prj/jbpm/projects/gwt-console/trunk/server/src/main/resources/";   
-   private String outputDir = "/Users/hbraun/balalaika/";
-   private String imageBaseUrl = "http://localhost:8080/gwt-console-server/rs/report/view/image/";
+   private String reportDir = null;   
+   private String outputDir = null;
+   private String imageBaseUrl = null;
 
    public String getBirtHome()
    {
@@ -87,4 +87,5 @@
       else
          return name+"/";
    }
+   
 }

Added: projects/balalaika/trunk/server/src/main/java/org/jboss/balalaika/JMXServerConfig.java
===================================================================
--- projects/balalaika/trunk/server/src/main/java/org/jboss/balalaika/JMXServerConfig.java	                        (rev 0)
+++ projects/balalaika/trunk/server/src/main/java/org/jboss/balalaika/JMXServerConfig.java	2008-12-05 13:30:54 UTC (rev 3221)
@@ -0,0 +1,152 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.balalaika;
+
+import javax.management.*;
+import java.io.File;
+import java.util.Hashtable;
+import java.util.List;
+
+/**
+ * Hooks into JMX to get the JBoss AS configuration.
+ * (temp directories, etc)
+ *
+ * @author Heiko.Braun <heiko.braun at jboss.com>
+ */
+public class JMXServerConfig
+{
+   // The MBeanServer
+   private MBeanServer mbeanServer;
+
+   public JMXServerConfig()
+   {
+      this.mbeanServer = getDefaultMBeanServer();
+   }
+
+   public MBeanServer getMbeanServer()
+   {
+      return mbeanServer;
+   }
+
+   public void setMbeanServer(MBeanServer mbeanServer)
+   {
+      this.mbeanServer = mbeanServer;
+   }
+
+   public File getServerTempDir()
+   {
+      try
+      {
+         ObjectName oname = ObjectNameFactory.create("jboss.system:type=ServerConfig");
+         File dir = (File)getMbeanServer().getAttribute(oname, "ServerTempDir");
+         return dir;
+      }
+      catch (JMException e)
+      {
+         return null;
+      }
+   }
+
+   public File getHomeDir()
+   {
+      try
+      {
+         ObjectName oname = ObjectNameFactory.create("jboss.system:type=ServerConfig");
+         File dir = (File)getMbeanServer().getAttribute(oname, "HomeDir");
+         return dir;
+      }
+      catch (JMException e)
+      {
+         return null;
+      }
+   }
+
+   public File getServerDataDir()
+   {
+      try
+      {
+         ObjectName oname = ObjectNameFactory.create("jboss.system:type=ServerConfig");
+         File dir = (File)getMbeanServer().getAttribute(oname, "ServerDataDir");
+         return dir;
+      }
+      catch (JMException e)
+      {
+         return null;
+      }
+   }
+
+   public static MBeanServer getDefaultMBeanServer() {
+      return findMBeanServer("jboss");
+   }
+
+   private static MBeanServer findMBeanServer(String agentId) {
+      List servers = MBeanServerFactory.findMBeanServer(null);
+      if (servers != null && servers.size() > 0) {
+         for (Object object : servers) {
+            MBeanServer server = (MBeanServer) object;
+            if (server.getDefaultDomain().equals(agentId)) {
+               return server;
+            }
+         }
+      }
+      return null;
+   }
+
+   public static class ObjectNameFactory
+   {
+      public static ObjectName create(String name)
+      {
+         try
+         {
+            return new ObjectName(name);
+         }
+         catch (MalformedObjectNameException e)
+         {
+            throw new Error("Invalid ObjectName: " + name + "; " + e);
+         }
+      }
+
+      public static ObjectName create(String domain, String key, String value)
+      {
+         try
+         {
+            return new ObjectName(domain, key, value);
+         }
+         catch (MalformedObjectNameException e)
+         {
+            throw new Error("Invalid ObjectName: " + domain + "," + key + "," + value + "; " + e);
+         }
+      }
+
+      public static ObjectName create(String domain, Hashtable table)
+      {
+         try
+         {
+            return new ObjectName(domain, table);
+         }
+         catch (MalformedObjectNameException e)
+         {
+            throw new Error("Invalid ObjectName: " + domain + "," + table + "; " + e);
+         }
+      }
+   }
+}

Modified: projects/balalaika/trunk/server/src/main/java/org/jboss/balalaika/ReportFacade.java
===================================================================
--- projects/balalaika/trunk/server/src/main/java/org/jboss/balalaika/ReportFacade.java	2008-12-05 11:14:56 UTC (rev 3220)
+++ projects/balalaika/trunk/server/src/main/java/org/jboss/balalaika/ReportFacade.java	2008-12-05 13:30:54 UTC (rev 3221)
@@ -24,10 +24,12 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Response;
 import java.io.File;
 import java.io.FileInputStream;
@@ -44,14 +46,44 @@
 {
    private static final Log log = LogFactory.getLog(ReportFacade.class);
    private BirtService birtService;
+   private boolean isInitialized;
+ 
+   public void lazyInitialize(HttpServletRequest request)
+   {
+      if(!isInitialized)
+      {
+         JMXServerConfig jmxConfig = new JMXServerConfig();
+         IntegrationConfig iConfig = new IntegrationConfig();
 
+         File dataDir = jmxConfig.getServerDataDir();
+         String birtDataDir = dataDir.getAbsolutePath() + "/birt";
+         String outputDir = birtDataDir + "/output";
 
-   public ReportFacade()
-   {
-      // TODO: external configuration
-      IntegrationConfig iConfig = new IntegrationConfig();
-      this.birtService = new BirtService(iConfig);
-      this.birtService.create();
+         File birtOutput = new File(outputDir);
+         birtOutput.mkdirs(); // will create parent directoy as well
+
+         iConfig.setOutputDir(outputDir);
+         iConfig.setReportDir( birtDataDir );
+
+         StringBuffer sb = new StringBuffer();
+         sb.append("http://");
+         sb.append(request.getServerName()).append(":");
+         sb.append(request.getServerPort());
+         sb.append(request.getContextPath());
+         sb.append(request.getServletPath());
+         sb.append("/report/view/image");
+
+         iConfig.setImageBaseUrl(sb.toString());
+
+         log.info("BIRT home: " +iConfig.getBirtHome());
+         log.info("Output dir: " +iConfig.getOutputDir());
+         log.info("Report dir: " +iConfig.getReportDir());        
+
+         this.birtService = new BirtService(iConfig);
+         this.birtService.create();
+
+         isInitialized = true;
+      }
    }
 
    @GET
@@ -59,9 +91,13 @@
    @Produces("text/html")
    public Response viewReportHtml(
          @PathParam("fileName")
-         String fileName
-   )
+         String fileName,
+         @Context HttpServletRequest
+         request
+         )
    {
+      lazyInitialize(request);
+
       RenderMetaData renderMeta = new RenderMetaData();
       renderMeta.setReportName(fileName);
       renderMeta.setFormat(RenderMetaData.Format.HTML);
@@ -79,9 +115,13 @@
    @Path("view/image/{fileName}")
    public Response getImage(
          @PathParam("fileName")
-         String fileName
+         String fileName,
+         @Context HttpServletRequest
+         request
    )
    {
+      lazyInitialize(request);
+
       String imageDir = birtService.getIConfig().getImageDirectory();
       String absName = imageDir + fileName;
       File imageFile = new File(absName);




More information about the jbpm-commits mailing list