You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/12/03 21:40:50 UTC
svn commit: r600677 - in /servicemix/branches/servicemix-4.0/runtime:
filemonitor/src/main/java/org/apache/servicemix/runtime/filemonitor/
main/src/main/java/org/apache/servicemix/main/
minimum/src/main/descriptors/ minimum/src/main/release/bin/ minimu...
Author: gnodet
Date: Mon Dec 3 12:40:49 2007
New Revision: 600677
URL: http://svn.apache.org/viewvc?rev=600677&view=rev
Log:
Change config dir to etc to align with gshell which is not extensible
Added:
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties (contents, props changed)
- copied, changed from r600637, servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/conf/config.properties
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/org.apache.servicemix.management.cfg
- copied unchanged from r600637, servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/conf/org.apache.servicemix.management.cfg
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/org.apache.servicemix.shell.cfg (props changed)
- copied unchanged from r600637, servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/conf/org.apache.servicemix.shell.cfg
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/org.ops4j.pax.logging.cfg (props changed)
- copied unchanged from r600637, servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/conf/org.ops4j.pax.logging.cfg
Removed:
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/conf/
Modified:
servicemix/branches/servicemix-4.0/runtime/filemonitor/src/main/java/org/apache/servicemix/runtime/filemonitor/FileMonitor.java
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/unix-bin.xml
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/windows-bin.xml
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh
Modified: servicemix/branches/servicemix-4.0/runtime/filemonitor/src/main/java/org/apache/servicemix/runtime/filemonitor/FileMonitor.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/filemonitor/src/main/java/org/apache/servicemix/runtime/filemonitor/FileMonitor.java?rev=600677&r1=600676&r2=600677&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/filemonitor/src/main/java/org/apache/servicemix/runtime/filemonitor/FileMonitor.java (original)
+++ servicemix/branches/servicemix-4.0/runtime/filemonitor/src/main/java/org/apache/servicemix/runtime/filemonitor/FileMonitor.java Mon Dec 3 12:40:49 2007
@@ -54,7 +54,7 @@
public final static String SCAN_INTERVAL = "org.apache.servicemix.filemonitor.scanInterval";
protected static final String ALIAS_KEY = "_alias_factory_pid";
private FileMonitorActivator activator;
- private File configDir = new File("./conf");
+ private File configDir = new File("./etc");
private File deployDir = new File("./deploy");
private File generateDir = new File("./data/generated-bundles");
private Scanner scanner = new Scanner();
Modified: servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java?rev=600677&r1=600676&r2=600677&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java (original)
+++ servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java Mon Dec 3 12:40:49 2007
@@ -1,600 +1,600 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.servicemix.main;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-
-import org.apache.felix.framework.Felix;
-import org.apache.felix.framework.cache.BundleCache;
-import org.apache.felix.framework.util.StringMap;
-
-/**
- * <p>
- * This class is the default way to instantiate and execute the framework. It is not
- * intended to be the only way to instantiate and execute the framework; rather, it is
- * one example of how to do so. When embedding the framework in a host application,
- * this class can serve as a simple guide of how to do so. It may even be
- * worthwhile to reuse some of its property handling capabilities. This class
- * is completely static and is only intended to start a single instance of
- * the framework.
- * </p>
-**/
-public class Main
-{
- /**
- * The system property name used to specify an URL to the system
- * property file.
- **/
- public static final String SYSTEM_PROPERTIES_PROP = "felix.system.properties";
- /**
- * The default name used for the system properties file.
- **/
- public static final String SYSTEM_PROPERTIES_FILE_VALUE = "system.properties";
- /**
- * The system property name used to specify an URL to the configuration
- * property file to be used for the created the framework instance.
- **/
- public static final String CONFIG_PROPERTIES_PROP = "felix.config.properties";
- /**
- * The default name used for the configuration properties file.
- **/
- public static final String CONFIG_PROPERTIES_FILE_VALUE = "config.properties";
- /*
- * The property for auto-discovering the bundles
- */
- public static final String PROPERTY_AUTO_START = "felix.auto.start";
-
- private static Felix m_felix = null;
-
- /**
- * <p>
- * This method performs the main task of constructing an framework instance
- * and starting its execution. The following functions are performed
- * when invoked:
- * </p>
- * <ol>
- * <li><i><b>Read the system properties file.<b></i> This is a file
- * containing properties to be pushed into <tt>System.setProperty()</tt>
- * before starting the framework. This mechanism is mainly shorthand
- * for people starting the framework from the command line to avoid having
- * to specify a bunch of <tt>-D</tt> system property definitions.
- * The only properties defined in this file that will impact the framework's
- * behavior are the those concerning setting HTTP proxies, such as
- * <tt>http.proxyHost</tt>, <tt>http.proxyPort</tt>, and
- * <tt>http.proxyAuth</tt>.
- * </li>
- * <li><i><b>Perform system property variable substitution on system
- * properties.</b></i> Any system properties in the system property
- * file whose value adheres to <tt>${<system-prop-name>}</tt>
- * syntax will have their value substituted with the appropriate
- * system property value.
- * </li>
- * <li><i><b>Read the framework's configuration property file.</b></i> This is
- * a file containing properties used to configure the framework
- * instance and to pass configuration information into
- * bundles installed into the framework instance. The configuration
- * property file is called <tt>config.properties</tt> by default
- * and is located in the <tt>conf/</tt> directory of the Felix
- * installation directory, which is the parent directory of the
- * directory containing the <tt>felix.jar</tt> file. It is possible
- * to use a different location for the property file by specifying
- * the desired URL using the <tt>felix.config.properties</tt>
- * system property; this should be set using the <tt>-D</tt> syntax
- * when executing the JVM. Refer to the
- * <a href="Felix.html#Felix(java.util.Map, java.util.List)">
- * <tt>Felix</tt></a> constructor documentation for more
- * information on the framework configuration options.
- * </li>
- * <li><i><b>Perform system property variable substitution on configuration
- * properties.</b></i> Any configuration properties whose value adheres to
- * <tt>${<system-prop-name>}</tt> syntax will have their value
- * substituted with the appropriate system property value.
- * </li>
- * <li><i><b>Ensure the default bundle cache has sufficient information to
- * initialize.</b></i> The default implementation of the bundle cache
- * requires either a profile name or a profile directory in order to
- * start. The configuration properties are checked for at least one
- * of the <tt>felix.cache.profile</tt> or <tt>felix.cache.profiledir</tt>
- * properties. If neither is found, the user is asked to supply a profile
- * name that is added to the configuration property set. See the
- * <a href="cache/DefaultBundleCache.html"><tt>DefaultBundleCache</tt></a>
- * documentation for more details its configuration options.
- * </li>
- * <li><i><b>Creates and starts a framework instance.</b></i> A
- * case insensitive
- * <a href="util/StringMap.html"><tt>StringMap</tt></a>
- * is created for the configuration property file and is passed
- * into the framework.
- * </li>
- * </ol>
- * <p>
- * It should be noted that simply starting an instance of the framework is not enough
- * to create an interactive session with it. It is necessary to install
- * and start bundles that provide an interactive impl; this is generally
- * done by specifying an "auto-start" property in the framework configuration
- * property file. If no interactive impl bundles are installed or if
- * the configuration property file cannot be found, the framework will appear to
- * be hung or deadlocked. This is not the case, it is executing correctly,
- * there is just no way to interact with it. Refer to the
- * <a href="Felix.html#Felix(java.util.Map, java.util.List)">
- * <tt>Felix</tt></a> constructor documentation for more information on
- * framework configuration options.
- * </p>
- * @param argv An array of arguments, all of which are ignored.
- * @throws Exception If an error occurs.
- **/
- public static void main(String[] argv) throws Exception
- {
- // Load system properties.
- Main.loadSystemProperties();
-
- // Read configuration properties.
- Properties configProps = Main.loadConfigProperties();
-
- // Copy framework properties from the system properties.
- Main.copySystemProperties(configProps);
-
- // See if the profile name property was specified.
- String profileName = configProps.getProperty(BundleCache.CACHE_PROFILE_PROP);
-
- // See if the profile directory property was specified.
- String profileDirName = configProps.getProperty(BundleCache.CACHE_PROFILE_DIR_PROP);
-
- // Print welcome banner.
- System.out.println("\nWelcome to ServiceMix.");
- System.out.println("=====================\n");
-
- // If no profile or profile directory is specified in the
- // properties, then ask for a profile name.
- if ((profileName == null) && (profileDirName == null))
- {
- System.out.print("Enter profile name: ");
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- try
- {
- profileName = in.readLine();
- }
- catch (IOException ex)
- {
- System.err.println("Could not read input.");
- System.exit(-1);
- }
- System.out.println("");
- if (profileName.length() != 0)
- {
- configProps.setProperty(BundleCache.CACHE_PROFILE_PROP, profileName);
- }
- }
-
- // A profile directory or name must be specified.
- if ((profileDirName == null) && (profileName.length() == 0))
- {
- System.err.println("You must specify a profile name or directory.");
- System.exit(-1);
- }
-
- try
- {
- // Now create an instance of the framework.
- m_felix = new Felix(new StringMap(configProps, false), null);
- m_felix.start();
- }
- catch (Exception ex)
- {
- System.err.println("Could not create framework: " + ex);
- ex.printStackTrace();
- System.exit(-1);
- }
- }
-
- /**
- * <p>
- * Loads the properties in the system property file associated with the
- * framework installation into <tt>System.setProperty()</tt>. These properties
- * are not directly used by the framework in anyway. By default, the system
- * property file is located in the <tt>conf/</tt> directory of the Felix
- * installation directory and is called "<tt>system.properties</tt>". The
- * installation directory of Felix is assumed to be the parent directory of
- * the <tt>felix.jar</tt> file as found on the system class path property.
- * The precise file from which to load system properties can be set by
- * initializing the "<tt>felix.system.properties</tt>" system property to an
- * arbitrary URL.
- * </p>
- **/
- public static void loadSystemProperties()
- {
- // The system properties file is either specified by a system
- // property or it is in the same directory as the Felix JAR file.
- // Try to load it from one of these places.
-
- // See if the property URL was specified as a property.
- URL propURL = null;
- String custom = System.getProperty(SYSTEM_PROPERTIES_PROP);
- if (custom != null)
- {
- try
- {
- propURL = new URL(custom);
- }
- catch (MalformedURLException ex)
- {
- System.err.print("Main: " + ex);
- return;
- }
- }
- else
- {
- // Determine where the configuration directory is by figuring
- // out where felix.jar is located on the system class path.
- File confDir = null;
- String classpath = System.getProperty("java.class.path");
- int index = classpath.toLowerCase().indexOf("servicemix.jar");
- int start = classpath.lastIndexOf(File.pathSeparator, index) + 1;
- if (index >= start)
- {
- // Get the path of the felix.jar file.
- String jarLocation = classpath.substring(start, index);
- // Calculate the conf directory based on the parent
- // directory of the felix.jar directory.
- confDir = new File(
- new File(new File(jarLocation).getAbsolutePath()).getParent(),
- "conf");
- }
- else
- {
- // Can't figure it out so use the current directory as default.
- confDir = new File(System.getProperty("user.dir"));
- }
-
- try
- {
- propURL = new File(confDir, SYSTEM_PROPERTIES_FILE_VALUE).toURL();
- }
- catch (MalformedURLException ex)
- {
- System.err.print("Main: " + ex);
- return;
- }
- }
-
- // Read the properties file.
- Properties props = new Properties();
- InputStream is = null;
- try
- {
- is = propURL.openConnection().getInputStream();
- props.load(is);
- is.close();
- }
- catch (FileNotFoundException ex)
- {
- // Ignore file not found.
- }
- catch (Exception ex)
- {
- System.err.println(
- "Main: Error loading system properties from " + propURL);
- System.err.println("Main: " + ex);
- try
- {
- if (is != null) is.close();
- }
- catch (IOException ex2)
- {
- // Nothing we can do.
- }
- return;
- }
-
- // Perform variable substitution on specified properties.
- for (Enumeration e = props.propertyNames(); e.hasMoreElements(); )
- {
- String name = (String) e.nextElement();
- System.setProperty(name,
- substVars(props.getProperty(name), name, null, null));
- }
- }
-
- /**
- * <p>
- * Loads the configuration properties in the configuration property file
- * associated with the framework installation; these properties
- * are accessible to the framework and to bundles and are intended
- * for configuration purposes. By default, the configuration property
- * file is located in the <tt>conf/</tt> directory of the Felix
- * installation directory and is called "<tt>config.properties</tt>".
- * The installation directory of Felix is assumed to be the parent
- * directory of the <tt>felix.jar</tt> file as found on the system class
- * path property. The precise file from which to load configuration
- * properties can be set by initializing the "<tt>felix.config.properties</tt>"
- * system property to an arbitrary URL.
- * </p>
- * @return A <tt>Properties</tt> instance or <tt>null</tt> if there was an error.
- **/
- public static Properties loadConfigProperties()
- {
- // The config properties file is either specified by a system
- // property or it is in the conf/ directory of the Felix
- // installation directory. Try to load it from one of these
- // places.
-
- File bundleDir = null;
-
- // See if the property URL was specified as a property.
- URL propURL = null;
- String custom = System.getProperty(CONFIG_PROPERTIES_PROP);
- if (custom != null)
- {
- try
- {
- propURL = new URL(custom);
- }
- catch (MalformedURLException ex)
- {
- System.err.print("Main: " + ex);
- return null;
- }
- }
- else
- {
- // Determine where the configuration directory is by figuring
- // out where felix.jar is located on the system class path.
- File confDir = null;
- String classpath = System.getProperty("java.class.path");
- int index = classpath.toLowerCase().indexOf("servicemix.jar");
- int start = classpath.lastIndexOf(File.pathSeparator, index) + 1;
- if (index >= start)
- {
- // Get the path of the felix.jar file.
- String jarLocation = classpath.substring(start, index);
- // Calculate the conf directory based on the parent
- // directory of the servicemix.jar directory.
- confDir = new File(
- new File(new File(jarLocation).getAbsolutePath()).getParent(),
- "conf");
- bundleDir = new File(
- new File(new File(jarLocation).getAbsolutePath()).getParent(),
- "system");
- }
- else
- {
- // Can't figure it out so use the current directory as default.
- confDir = new File(System.getProperty("user.dir"));
- bundleDir = new File(System.getProperty("user.dir"));
- }
-
- try
- {
- propURL = new File(confDir, CONFIG_PROPERTIES_FILE_VALUE).toURL();
- }
- catch (MalformedURLException ex)
- {
- System.err.print("Main: " + ex);
- return null;
- }
- }
-
- // Read the properties file.
- Properties props = new Properties();
- InputStream is = null;
- try
- {
- is = propURL.openConnection().getInputStream();
- props.load(is);
- is.close();
- }
- catch (FileNotFoundException ex)
- {
- // Ignore file not found.
- }
- catch (Exception ex)
- {
- System.err.println(
- "Error loading config properties from " + propURL);
- System.err.println("Main: " + ex);
- try
- {
- if (is != null) is.close();
- }
- catch (IOException ex2)
- {
- // Nothing we can do.
- }
- return null;
- }
-
- // Perform variable substitution for system properties.
- for (Enumeration e = props.propertyNames(); e.hasMoreElements(); )
- {
- String name = (String) e.nextElement();
- props.setProperty(name,
- substVars(props.getProperty(name), name, null, props));
- }
-
- // Mutate properties
- Main.processConfigurationProperties(props, bundleDir);
-
- return props;
- }
-
- public static void copySystemProperties(Properties configProps)
- {
- for (Enumeration e = System.getProperties().propertyNames();
- e.hasMoreElements(); )
- {
- String key = (String)e.nextElement();
- if (key.startsWith("felix.") ||
- key.equals("org.osgi.framework.system.packages") ||
- key.equals("org.osgi.framework.bootdelegation"))
- {
- configProps.setProperty(key, System.getProperty(key));
- }
- }
- }
-
- /**
- * Process properties to customize default felix behavior
- */
- protected static void processConfigurationProperties(Properties props, File bundleDir) {
- if (Boolean.parseBoolean(props.getProperty(PROPERTY_AUTO_START)) && bundleDir != null) {
- File[] bundles = bundleDir.listFiles(new FileFilter() {
- public boolean accept(File pathname) {
- return pathname.toString().endsWith(".jar");
- }
- });
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < bundles.length; i++) {
- try {
- sb.append("\"").append(bundles[i].toURL().toString()).append("\" ");
- } catch (MalformedURLException e) {
- System.err.print( "Ignoring " + bundles[i].toString() + " (" + e + ")" );
- }
- }
- props.setProperty("felix.auto.start.1", sb.toString());
- props.remove(PROPERTY_AUTO_START);
- }
- }
-
- private static final String DELIM_START = "${";
- private static final String DELIM_STOP = "}";
-
- /**
- * <p>
- * This method performs property variable substitution on the
- * specified value. If the specified value contains the syntax
- * <tt>${<prop-name>}</tt>, where <tt><prop-name></tt>
- * refers to either a configuration property or a system property,
- * then the corresponding property value is substituted for the variable
- * placeholder. Multiple variable placeholders may exist in the
- * specified value as well as nested variable placeholders, which
- * are substituted from inner most to outer most. Configuration
- * properties override system properties.
- * </p>
- * @param val The string on which to perform property substitution.
- * @param currentKey The key of the property being evaluated used to
- * detect cycles.
- * @param cycleMap Map of variable references used to detect nested cycles.
- * @param configProps Set of configuration properties.
- * @return The value of the specified string after system property substitution.
- * @throws IllegalArgumentException If there was a syntax error in the
- * property placeholder syntax or a recursive variable reference.
- **/
- public static String substVars(String val, String currentKey,
- Map cycleMap, Properties configProps)
- throws IllegalArgumentException
- {
- // If there is currently no cycle map, then create
- // one for detecting cycles for this invocation.
- if (cycleMap == null)
- {
- cycleMap = new HashMap();
- }
-
- // Put the current key in the cycle map.
- cycleMap.put(currentKey, currentKey);
-
- // Assume we have a value that is something like:
- // "leading ${foo.${bar}} middle ${baz} trailing"
-
- // Find the first ending '}' variable delimiter, which
- // will correspond to the first deepest nested variable
- // placeholder.
- int stopDelim = val.indexOf(DELIM_STOP);
-
- // Find the matching starting "${" variable delimiter
- // by looping until we find a start delimiter that is
- // greater than the stop delimiter we have found.
- int startDelim = val.indexOf(DELIM_START);
- while (stopDelim >= 0)
- {
- int idx = val.indexOf(DELIM_START, startDelim + DELIM_START.length());
- if ((idx < 0) || (idx > stopDelim))
- {
- break;
- }
- else if (idx < stopDelim)
- {
- startDelim = idx;
- }
- }
-
- // If we do not have a start or stop delimiter, then just
- // return the existing value.
- if ((startDelim < 0) && (stopDelim < 0))
- {
- return val;
- }
- // At this point, we found a stop delimiter without a start,
- // so throw an exception.
- else if (((startDelim < 0) || (startDelim > stopDelim))
- && (stopDelim >= 0))
- {
- throw new IllegalArgumentException(
- "stop delimiter with no start delimiter: "
- + val);
- }
-
- // At this point, we have found a variable placeholder so
- // we must perform a variable substitution on it.
- // Using the start and stop delimiter indices, extract
- // the first, deepest nested variable placeholder.
- String variable =
- val.substring(startDelim + DELIM_START.length(), stopDelim);
-
- // Verify that this is not a recursive variable reference.
- if (cycleMap.get(variable) != null)
- {
- throw new IllegalArgumentException(
- "recursive variable reference: " + variable);
- }
-
- // Get the value of the deepest nested variable placeholder.
- // Try to configuration properties first.
- String substValue = (configProps != null)
- ? configProps.getProperty(variable, null)
- : null;
- if (substValue == null)
- {
- // Ignore unknown property values.
- substValue = System.getProperty(variable, "");
- }
-
- // Remove the found variable from the cycle map, since
- // it may appear more than once in the value and we don't
- // want such situations to appear as a recursive reference.
- cycleMap.remove(variable);
-
- // Append the leading characters, the substituted value of
- // the variable, and the trailing characters to get the new
- // value.
- val = val.substring(0, startDelim)
- + substValue
- + val.substring(stopDelim + DELIM_STOP.length(), val.length());
-
- // Now perform substitution again, since there could still
- // be substitutions to make.
- val = substVars(val, currentKey, cycleMap, configProps);
-
- // Return the value.
- return val;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.servicemix.main;
+
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.*;
+
+import org.apache.felix.framework.Felix;
+import org.apache.felix.framework.cache.BundleCache;
+import org.apache.felix.framework.util.StringMap;
+
+/**
+ * <p>
+ * This class is the default way to instantiate and execute the framework. It is not
+ * intended to be the only way to instantiate and execute the framework; rather, it is
+ * one example of how to do so. When embedding the framework in a host application,
+ * this class can serve as a simple guide of how to do so. It may even be
+ * worthwhile to reuse some of its property handling capabilities. This class
+ * is completely static and is only intended to start a single instance of
+ * the framework.
+ * </p>
+**/
+public class Main
+{
+ /**
+ * The system property name used to specify an URL to the system
+ * property file.
+ **/
+ public static final String SYSTEM_PROPERTIES_PROP = "felix.system.properties";
+ /**
+ * The default name used for the system properties file.
+ **/
+ public static final String SYSTEM_PROPERTIES_FILE_VALUE = "system.properties";
+ /**
+ * The system property name used to specify an URL to the configuration
+ * property file to be used for the created the framework instance.
+ **/
+ public static final String CONFIG_PROPERTIES_PROP = "felix.config.properties";
+ /**
+ * The default name used for the configuration properties file.
+ **/
+ public static final String CONFIG_PROPERTIES_FILE_VALUE = "config.properties";
+ /*
+ * The property for auto-discovering the bundles
+ */
+ public static final String PROPERTY_AUTO_START = "felix.auto.start";
+
+ private static Felix m_felix = null;
+
+ /**
+ * <p>
+ * This method performs the main task of constructing an framework instance
+ * and starting its execution. The following functions are performed
+ * when invoked:
+ * </p>
+ * <ol>
+ * <li><i><b>Read the system properties file.<b></i> This is a file
+ * containing properties to be pushed into <tt>System.setProperty()</tt>
+ * before starting the framework. This mechanism is mainly shorthand
+ * for people starting the framework from the command line to avoid having
+ * to specify a bunch of <tt>-D</tt> system property definitions.
+ * The only properties defined in this file that will impact the framework's
+ * behavior are the those concerning setting HTTP proxies, such as
+ * <tt>http.proxyHost</tt>, <tt>http.proxyPort</tt>, and
+ * <tt>http.proxyAuth</tt>.
+ * </li>
+ * <li><i><b>Perform system property variable substitution on system
+ * properties.</b></i> Any system properties in the system property
+ * file whose value adheres to <tt>${<system-prop-name>}</tt>
+ * syntax will have their value substituted with the appropriate
+ * system property value.
+ * </li>
+ * <li><i><b>Read the framework's configuration property file.</b></i> This is
+ * a file containing properties used to configure the framework
+ * instance and to pass configuration information into
+ * bundles installed into the framework instance. The configuration
+ * property file is called <tt>config.properties</tt> by default
+ * and is located in the <tt>conf/</tt> directory of the Felix
+ * installation directory, which is the parent directory of the
+ * directory containing the <tt>felix.jar</tt> file. It is possible
+ * to use a different location for the property file by specifying
+ * the desired URL using the <tt>felix.config.properties</tt>
+ * system property; this should be set using the <tt>-D</tt> syntax
+ * when executing the JVM. Refer to the
+ * <a href="Felix.html#Felix(java.util.Map, java.util.List)">
+ * <tt>Felix</tt></a> constructor documentation for more
+ * information on the framework configuration options.
+ * </li>
+ * <li><i><b>Perform system property variable substitution on configuration
+ * properties.</b></i> Any configuration properties whose value adheres to
+ * <tt>${<system-prop-name>}</tt> syntax will have their value
+ * substituted with the appropriate system property value.
+ * </li>
+ * <li><i><b>Ensure the default bundle cache has sufficient information to
+ * initialize.</b></i> The default implementation of the bundle cache
+ * requires either a profile name or a profile directory in order to
+ * start. The configuration properties are checked for at least one
+ * of the <tt>felix.cache.profile</tt> or <tt>felix.cache.profiledir</tt>
+ * properties. If neither is found, the user is asked to supply a profile
+ * name that is added to the configuration property set. See the
+ * <a href="cache/DefaultBundleCache.html"><tt>DefaultBundleCache</tt></a>
+ * documentation for more details its configuration options.
+ * </li>
+ * <li><i><b>Creates and starts a framework instance.</b></i> A
+ * case insensitive
+ * <a href="util/StringMap.html"><tt>StringMap</tt></a>
+ * is created for the configuration property file and is passed
+ * into the framework.
+ * </li>
+ * </ol>
+ * <p>
+ * It should be noted that simply starting an instance of the framework is not enough
+ * to create an interactive session with it. It is necessary to install
+ * and start bundles that provide an interactive impl; this is generally
+ * done by specifying an "auto-start" property in the framework configuration
+ * property file. If no interactive impl bundles are installed or if
+ * the configuration property file cannot be found, the framework will appear to
+ * be hung or deadlocked. This is not the case, it is executing correctly,
+ * there is just no way to interact with it. Refer to the
+ * <a href="Felix.html#Felix(java.util.Map, java.util.List)">
+ * <tt>Felix</tt></a> constructor documentation for more information on
+ * framework configuration options.
+ * </p>
+ * @param argv An array of arguments, all of which are ignored.
+ * @throws Exception If an error occurs.
+ **/
+ public static void main(String[] argv) throws Exception
+ {
+ // Load system properties.
+ Main.loadSystemProperties();
+
+ // Read configuration properties.
+ Properties configProps = Main.loadConfigProperties();
+
+ // Copy framework properties from the system properties.
+ Main.copySystemProperties(configProps);
+
+ // See if the profile name property was specified.
+ String profileName = configProps.getProperty(BundleCache.CACHE_PROFILE_PROP);
+
+ // See if the profile directory property was specified.
+ String profileDirName = configProps.getProperty(BundleCache.CACHE_PROFILE_DIR_PROP);
+
+ // Print welcome banner.
+ System.out.println("\nWelcome to ServiceMix.");
+ System.out.println("=====================\n");
+
+ // If no profile or profile directory is specified in the
+ // properties, then ask for a profile name.
+ if ((profileName == null) && (profileDirName == null))
+ {
+ System.out.print("Enter profile name: ");
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+ try
+ {
+ profileName = in.readLine();
+ }
+ catch (IOException ex)
+ {
+ System.err.println("Could not read input.");
+ System.exit(-1);
+ }
+ System.out.println("");
+ if (profileName.length() != 0)
+ {
+ configProps.setProperty(BundleCache.CACHE_PROFILE_PROP, profileName);
+ }
+ }
+
+ // A profile directory or name must be specified.
+ if ((profileDirName == null) && (profileName.length() == 0))
+ {
+ System.err.println("You must specify a profile name or directory.");
+ System.exit(-1);
+ }
+
+ try
+ {
+ // Now create an instance of the framework.
+ m_felix = new Felix(new StringMap(configProps, false), null);
+ m_felix.start();
+ }
+ catch (Exception ex)
+ {
+ System.err.println("Could not create framework: " + ex);
+ ex.printStackTrace();
+ System.exit(-1);
+ }
+ }
+
+ /**
+ * <p>
+ * Loads the properties in the system property file associated with the
+ * framework installation into <tt>System.setProperty()</tt>. These properties
+ * are not directly used by the framework in anyway. By default, the system
+ * property file is located in the <tt>conf/</tt> directory of the Felix
+ * installation directory and is called "<tt>system.properties</tt>". The
+ * installation directory of Felix is assumed to be the parent directory of
+ * the <tt>felix.jar</tt> file as found on the system class path property.
+ * The precise file from which to load system properties can be set by
+ * initializing the "<tt>felix.system.properties</tt>" system property to an
+ * arbitrary URL.
+ * </p>
+ **/
+ public static void loadSystemProperties()
+ {
+ // The system properties file is either specified by a system
+ // property or it is in the same directory as the Felix JAR file.
+ // Try to load it from one of these places.
+
+ // See if the property URL was specified as a property.
+ URL propURL = null;
+ String custom = System.getProperty(SYSTEM_PROPERTIES_PROP);
+ if (custom != null)
+ {
+ try
+ {
+ propURL = new URL(custom);
+ }
+ catch (MalformedURLException ex)
+ {
+ System.err.print("Main: " + ex);
+ return;
+ }
+ }
+ else
+ {
+ // Determine where the configuration directory is by figuring
+ // out where felix.jar is located on the system class path.
+ File confDir = null;
+ String classpath = System.getProperty("java.class.path");
+ int index = classpath.toLowerCase().indexOf("servicemix.jar");
+ int start = classpath.lastIndexOf(File.pathSeparator, index) + 1;
+ if (index >= start)
+ {
+ // Get the path of the felix.jar file.
+ String jarLocation = classpath.substring(start, index);
+ // Calculate the conf directory based on the parent
+ // directory of the felix.jar directory.
+ confDir = new File(
+ new File(new File(jarLocation).getAbsolutePath()).getParent(),
+ "conf");
+ }
+ else
+ {
+ // Can't figure it out so use the current directory as default.
+ confDir = new File(System.getProperty("user.dir"));
+ }
+
+ try
+ {
+ propURL = new File(confDir, SYSTEM_PROPERTIES_FILE_VALUE).toURL();
+ }
+ catch (MalformedURLException ex)
+ {
+ System.err.print("Main: " + ex);
+ return;
+ }
+ }
+
+ // Read the properties file.
+ Properties props = new Properties();
+ InputStream is = null;
+ try
+ {
+ is = propURL.openConnection().getInputStream();
+ props.load(is);
+ is.close();
+ }
+ catch (FileNotFoundException ex)
+ {
+ // Ignore file not found.
+ }
+ catch (Exception ex)
+ {
+ System.err.println(
+ "Main: Error loading system properties from " + propURL);
+ System.err.println("Main: " + ex);
+ try
+ {
+ if (is != null) is.close();
+ }
+ catch (IOException ex2)
+ {
+ // Nothing we can do.
+ }
+ return;
+ }
+
+ // Perform variable substitution on specified properties.
+ for (Enumeration e = props.propertyNames(); e.hasMoreElements(); )
+ {
+ String name = (String) e.nextElement();
+ System.setProperty(name,
+ substVars(props.getProperty(name), name, null, null));
+ }
+ }
+
+ /**
+ * <p>
+ * Loads the configuration properties in the configuration property file
+ * associated with the framework installation; these properties
+ * are accessible to the framework and to bundles and are intended
+ * for configuration purposes. By default, the configuration property
+ * file is located in the <tt>conf/</tt> directory of the Felix
+ * installation directory and is called "<tt>config.properties</tt>".
+ * The installation directory of Felix is assumed to be the parent
+ * directory of the <tt>felix.jar</tt> file as found on the system class
+ * path property. The precise file from which to load configuration
+ * properties can be set by initializing the "<tt>felix.config.properties</tt>"
+ * system property to an arbitrary URL.
+ * </p>
+ * @return A <tt>Properties</tt> instance or <tt>null</tt> if there was an error.
+ **/
+ public static Properties loadConfigProperties()
+ {
+ // The config properties file is either specified by a system
+ // property or it is in the conf/ directory of the Felix
+ // installation directory. Try to load it from one of these
+ // places.
+
+ File bundleDir = null;
+
+ // See if the property URL was specified as a property.
+ URL propURL = null;
+ String custom = System.getProperty(CONFIG_PROPERTIES_PROP);
+ if (custom != null)
+ {
+ try
+ {
+ propURL = new URL(custom);
+ }
+ catch (MalformedURLException ex)
+ {
+ System.err.print("Main: " + ex);
+ return null;
+ }
+ }
+ else
+ {
+ // Determine where the configuration directory is by figuring
+ // out where felix.jar is located on the system class path.
+ File confDir = null;
+ String classpath = System.getProperty("java.class.path");
+ int index = classpath.toLowerCase().indexOf("servicemix.jar");
+ int start = classpath.lastIndexOf(File.pathSeparator, index) + 1;
+ if (index >= start)
+ {
+ // Get the path of the felix.jar file.
+ String jarLocation = classpath.substring(start, index);
+ // Calculate the conf directory based on the parent
+ // directory of the servicemix.jar directory.
+ confDir = new File(
+ new File(new File(jarLocation).getAbsolutePath()).getParent(),
+ "etc");
+ bundleDir = new File(
+ new File(new File(jarLocation).getAbsolutePath()).getParent(),
+ "system");
+ }
+ else
+ {
+ // Can't figure it out so use the current directory as default.
+ confDir = new File(System.getProperty("user.dir"));
+ bundleDir = new File(System.getProperty("user.dir"));
+ }
+
+ try
+ {
+ propURL = new File(confDir, CONFIG_PROPERTIES_FILE_VALUE).toURL();
+ }
+ catch (MalformedURLException ex)
+ {
+ System.err.print("Main: " + ex);
+ return null;
+ }
+ }
+
+ // Read the properties file.
+ Properties props = new Properties();
+ InputStream is = null;
+ try
+ {
+ is = propURL.openConnection().getInputStream();
+ props.load(is);
+ is.close();
+ }
+ catch (FileNotFoundException ex)
+ {
+ // Ignore file not found.
+ }
+ catch (Exception ex)
+ {
+ System.err.println(
+ "Error loading config properties from " + propURL);
+ System.err.println("Main: " + ex);
+ try
+ {
+ if (is != null) is.close();
+ }
+ catch (IOException ex2)
+ {
+ // Nothing we can do.
+ }
+ return null;
+ }
+
+ // Perform variable substitution for system properties.
+ for (Enumeration e = props.propertyNames(); e.hasMoreElements(); )
+ {
+ String name = (String) e.nextElement();
+ props.setProperty(name,
+ substVars(props.getProperty(name), name, null, props));
+ }
+
+ // Mutate properties
+ Main.processConfigurationProperties(props, bundleDir);
+
+ return props;
+ }
+
+ public static void copySystemProperties(Properties configProps)
+ {
+ for (Enumeration e = System.getProperties().propertyNames();
+ e.hasMoreElements(); )
+ {
+ String key = (String)e.nextElement();
+ if (key.startsWith("felix.") ||
+ key.equals("org.osgi.framework.system.packages") ||
+ key.equals("org.osgi.framework.bootdelegation"))
+ {
+ configProps.setProperty(key, System.getProperty(key));
+ }
+ }
+ }
+
+ /**
+ * Process properties to customize default felix behavior
+ */
+ protected static void processConfigurationProperties(Properties props, File bundleDir) {
+ if (Boolean.parseBoolean(props.getProperty(PROPERTY_AUTO_START)) && bundleDir != null) {
+ File[] bundles = bundleDir.listFiles(new FileFilter() {
+ public boolean accept(File pathname) {
+ return pathname.toString().endsWith(".jar");
+ }
+ });
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < bundles.length; i++) {
+ try {
+ sb.append("\"").append(bundles[i].toURL().toString()).append("\" ");
+ } catch (MalformedURLException e) {
+ System.err.print( "Ignoring " + bundles[i].toString() + " (" + e + ")" );
+ }
+ }
+ props.setProperty("felix.auto.start.1", sb.toString());
+ props.remove(PROPERTY_AUTO_START);
+ }
+ }
+
+ private static final String DELIM_START = "${";
+ private static final String DELIM_STOP = "}";
+
+ /**
+ * <p>
+ * This method performs property variable substitution on the
+ * specified value. If the specified value contains the syntax
+ * <tt>${<prop-name>}</tt>, where <tt><prop-name></tt>
+ * refers to either a configuration property or a system property,
+ * then the corresponding property value is substituted for the variable
+ * placeholder. Multiple variable placeholders may exist in the
+ * specified value as well as nested variable placeholders, which
+ * are substituted from inner most to outer most. Configuration
+ * properties override system properties.
+ * </p>
+ * @param val The string on which to perform property substitution.
+ * @param currentKey The key of the property being evaluated used to
+ * detect cycles.
+ * @param cycleMap Map of variable references used to detect nested cycles.
+ * @param configProps Set of configuration properties.
+ * @return The value of the specified string after system property substitution.
+ * @throws IllegalArgumentException If there was a syntax error in the
+ * property placeholder syntax or a recursive variable reference.
+ **/
+ public static String substVars(String val, String currentKey,
+ Map cycleMap, Properties configProps)
+ throws IllegalArgumentException
+ {
+ // If there is currently no cycle map, then create
+ // one for detecting cycles for this invocation.
+ if (cycleMap == null)
+ {
+ cycleMap = new HashMap();
+ }
+
+ // Put the current key in the cycle map.
+ cycleMap.put(currentKey, currentKey);
+
+ // Assume we have a value that is something like:
+ // "leading ${foo.${bar}} middle ${baz} trailing"
+
+ // Find the first ending '}' variable delimiter, which
+ // will correspond to the first deepest nested variable
+ // placeholder.
+ int stopDelim = val.indexOf(DELIM_STOP);
+
+ // Find the matching starting "${" variable delimiter
+ // by looping until we find a start delimiter that is
+ // greater than the stop delimiter we have found.
+ int startDelim = val.indexOf(DELIM_START);
+ while (stopDelim >= 0)
+ {
+ int idx = val.indexOf(DELIM_START, startDelim + DELIM_START.length());
+ if ((idx < 0) || (idx > stopDelim))
+ {
+ break;
+ }
+ else if (idx < stopDelim)
+ {
+ startDelim = idx;
+ }
+ }
+
+ // If we do not have a start or stop delimiter, then just
+ // return the existing value.
+ if ((startDelim < 0) && (stopDelim < 0))
+ {
+ return val;
+ }
+ // At this point, we found a stop delimiter without a start,
+ // so throw an exception.
+ else if (((startDelim < 0) || (startDelim > stopDelim))
+ && (stopDelim >= 0))
+ {
+ throw new IllegalArgumentException(
+ "stop delimiter with no start delimiter: "
+ + val);
+ }
+
+ // At this point, we have found a variable placeholder so
+ // we must perform a variable substitution on it.
+ // Using the start and stop delimiter indices, extract
+ // the first, deepest nested variable placeholder.
+ String variable =
+ val.substring(startDelim + DELIM_START.length(), stopDelim);
+
+ // Verify that this is not a recursive variable reference.
+ if (cycleMap.get(variable) != null)
+ {
+ throw new IllegalArgumentException(
+ "recursive variable reference: " + variable);
+ }
+
+ // Get the value of the deepest nested variable placeholder.
+ // Try to configuration properties first.
+ String substValue = (configProps != null)
+ ? configProps.getProperty(variable, null)
+ : null;
+ if (substValue == null)
+ {
+ // Ignore unknown property values.
+ substValue = System.getProperty(variable, "");
+ }
+
+ // Remove the found variable from the cycle map, since
+ // it may appear more than once in the value and we don't
+ // want such situations to appear as a recursive reference.
+ cycleMap.remove(variable);
+
+ // Append the leading characters, the substituted value of
+ // the variable, and the trailing characters to get the new
+ // value.
+ val = val.substring(0, startDelim)
+ + substValue
+ + val.substring(stopDelim + DELIM_STOP.length(), val.length());
+
+ // Now perform substitution again, since there could still
+ // be substitutions to make.
+ val = substVars(val, currentKey, cycleMap, configProps);
+
+ // Return the value.
+ return val;
+ }
+}
Modified: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/unix-bin.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/unix-bin.xml?rev=600677&r1=600676&r2=600677&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/unix-bin.xml (original)
+++ servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/unix-bin.xml Mon Dec 3 12:40:49 2007
@@ -131,30 +131,16 @@
<include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.aopalliance</include>
<include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.cglib</include>
- </includes>
- </dependencySet>
-
- <!-- GShell -->
- <dependencySet>
- <outputDirectory>/system</outputDirectory>
- <unpack>false</unpack>
- <scope>runtime</scope>
- <includes>
+ <!-- GShell -->
<include>org.apache.geronimo.specs:geronimo-stax-api_1.0_spec</include>
<include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.xstream</include>
<include>org.apache.servicemix.gshell:org.apache.servicemix.gshell.core</include>
<include>org.apache.servicemix.gshell:org.apache.servicemix.gshell.osgi</include>
- </includes>
- </dependencySet>
- <!-- OBR + GShell command -->
- <dependencySet>
- <outputDirectory>/system</outputDirectory>
- <unpack>false</unpack>
- <scope>runtime</scope>
- <includes>
+ <!-- OBR + GShell command -->
<include>org.apache.felix:org.apache.felix.bundlerepository</include>
<include>org.apache.servicemix.gshell:org.apache.servicemix.gshell.obr</include>
+
</includes>
</dependencySet>
Modified: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/windows-bin.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/windows-bin.xml?rev=600677&r1=600676&r2=600677&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/windows-bin.xml (original)
+++ servicemix/branches/servicemix-4.0/runtime/minimum/src/main/descriptors/windows-bin.xml Mon Dec 3 12:40:49 2007
@@ -131,29 +131,16 @@
<include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.aopalliance</include>
<include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.cglib</include>
- </includes>
- </dependencySet>
-
- <!-- GShell -->
- <dependencySet>
- <outputDirectory>/system</outputDirectory>
- <unpack>false</unpack>
- <scope>runtime</scope>
- <includes>
+ <!-- GShell -->
+ <include>org.apache.geronimo.specs:geronimo-stax-api_1.0_spec</include>
<include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.xstream</include>
<include>org.apache.servicemix.gshell:org.apache.servicemix.gshell.core</include>
<include>org.apache.servicemix.gshell:org.apache.servicemix.gshell.osgi</include>
- </includes>
- </dependencySet>
- <!-- OBR + GShell command -->
- <dependencySet>
- <outputDirectory>/system</outputDirectory>
- <unpack>false</unpack>
- <scope>runtime</scope>
- <includes>
+ <!-- OBR + GShell command -->
<include>org.apache.felix:org.apache.felix.bundlerepository</include>
<include>org.apache.servicemix.gshell:org.apache.servicemix.gshell.obr</include>
+
</includes>
</dependencySet>
Modified: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh?rev=600677&r1=600676&r2=600677&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh (original)
+++ servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh Mon Dec 3 12:40:49 2007
@@ -241,16 +241,11 @@
run() {
JAR=$SERVICEMIX_HOME/bin/servicemix.jar
- CLASSPATH=$SERVICEMIX_HOME/bin/bootstrapper.jar:$SERVICEMIX_HOME/bin/daemon.jar:$SERVICEMIX_HOME/bin/logger.jar:$SERVICEMIX_HOME/bin/servicemix.jar
if $cygwin; then
SERVICEMIX_HOME=`cygpath --path --windows "$SERVICEMIX_HOME"`
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
- CLASSWORLDS_CONF=`cygpath --path --windows "$CLASSWORLDS_CONF"`
- CYGHOME=`cygpath --windows "$HOME"`
- JAR=`cygpath --windows "$JAR"`
fi
cd "$SERVICEMIX_HOME"
- exec $JAVA $JAVA_OPTS -Dservicemix.home="$SERVICEMIX_HOME" -Dbundles.configuration.location="$SERVICEMIX_HOME/conf" -jar "$JAR" "$1"
+ exec $JAVA $JAVA_OPTS -Dservicemix.home="$SERVICEMIX_HOME" -Dbundles.configuration.location="$SERVICEMIX_HOME/etc" -jar "$JAR" "$1"
}
main() {
Copied: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties (from r600637, servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/conf/config.properties)
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties?p2=servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties&p1=servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/conf/config.properties&r1=600637&r2=600677&rev=600677&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/conf/config.properties (original)
+++ servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties Mon Dec 3 12:40:49 2007
@@ -45,7 +45,7 @@
#
# FileMonitor properties
#
-org.apache.servicemix.filemonitor.configDir = ./conf
+org.apache.servicemix.filemonitor.configDir = ./etc
org.apache.servicemix.filemonitor.monitorDir = ./deploy
org.apache.servicemix.filemonitor.generatedJarDir = ./data/generated-bundles
org.apache.servicemix.filemonitor.scanInterval = 500
Propchange: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/org.apache.servicemix.shell.cfg
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/org.ops4j.pax.logging.cfg
------------------------------------------------------------------------------
svn:eol-style = native