+++ /dev/null
-package org.argeo.catalina.start;
-
-import java.io.File;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Properties;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.osgi.framework.BundleContext;
-import org.springframework.osgi.web.tomcat.internal.Activator;
-
-/** Starts Catalina (hacked from Spring OSGi 1.0) */
-public class CatalinaActivator extends Activator {
- private final static Log log = LogFactory.getLog(CatalinaActivator.class);
-
- private final static String ARGEO_OSGI_DATA_DIR = "argeo.osgi.data.dir";
- /** System properties used to override Tomcat XML config URL */
- public final static String ARGEO_SERVER_TOMCAT_CONFIG = "argeo.server.tomcat.config";
-
- public void start(BundleContext context) throws Exception {
- if (!System.getProperties().containsKey(ARGEO_OSGI_DATA_DIR)) {
- String osgiInstanceArea = System.getProperty("osgi.instance.area");
- String osgiInstanceAreaDefault = System
- .getProperty("osgi.instance.area.default");
- String tempDir = System.getProperty("java.io.tmpdir");
-
- File dataDir = null;
- if (osgiInstanceArea != null) {
- // within OSGi with -data specified
- osgiInstanceArea = removeFilePrefix(osgiInstanceArea);
- dataDir = new File(osgiInstanceArea);
- } else if (osgiInstanceAreaDefault != null) {
- // within OSGi without -data specified
- osgiInstanceAreaDefault = removeFilePrefix(osgiInstanceAreaDefault);
- dataDir = new File(osgiInstanceAreaDefault);
- } else {// outside OSGi
- dataDir = new File(tempDir + File.separator + "osgiData");
- }
-
- System.setProperty(ARGEO_OSGI_DATA_DIR, dataDir.getAbsolutePath());
- }
-
- // Load config properties and put them in system properties so that they
- // can be used in tomcat conf
- Properties confProps = new Properties();
- URL propsUrl = context.getBundle().getResource("tomcat.properties");
- if (propsUrl != null) {
- InputStream in = null;
- try {
- in = propsUrl.openStream();
- confProps.load(in);
- } catch (Exception e) {
- throw new RuntimeException("Cannot read catalina properties.",
- e);
- } finally {
- IOUtils.closeQuietly(in);
- }
-
- for (Object key : confProps.keySet()) {
- // System properties have priority
- if (!System.getProperties().containsKey(key)) {
- System.setProperty(key.toString(),
- confProps.getProperty(key.toString()));
- }
- }
- }
-
- // calling Catalina.setCatalinaHome(String) or
- // Catalina.setCatalinaBase(String) does the same
- if (System.getProperty("catalina.home") == null)
- System.setProperty("catalina.home",
- System.getProperty(ARGEO_OSGI_DATA_DIR) + "/tomcat");
- if (System.getProperty("catalina.base") == null)
- System.setProperty("catalina.base",
- System.getProperty(ARGEO_OSGI_DATA_DIR) + "/tomcat");
-
- // Make sure directories are created
- File catalinaDir = new File(System.getProperty("catalina.home"));
- if (!catalinaDir.exists()) {
- catalinaDir.mkdirs();
- if (log.isDebugEnabled())
- log.debug("Created Tomcat directory " + catalinaDir);
- }
-
- // Call Spring starter
- super.start(context);
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- super.stop(context);
- }
-
- protected String removeFilePrefix(String url) {
- if (url.startsWith("file:"))
- return url.substring("file:".length());
- else if (url.startsWith("reference:file:"))
- return url.substring("reference:file:".length());
- else
- return url;
- }
-
-}