[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