Author: gnodet Date: Mon Oct 12 09:19:40 2009 New Revision: 824271 URL: http://svn.apache.org/viewvc?rev=824271&view=rev Log: FELIX-1626: Configurations loaded from the etc/ directory are only available after a delay
Modified: felix/trunk/karaf/assembly/src/main/filtered-resources/etc/config.properties felix/trunk/karaf/assembly/src/main/filtered-resources/etc/startup.properties felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java Modified: felix/trunk/karaf/assembly/src/main/filtered-resources/etc/config.properties URL: http://svn.apache.org/viewvc/felix/trunk/karaf/assembly/src/main/filtered-resources/etc/config.properties?rev=824271&r1=824270&r2=824271&view=diff ============================================================================== --- felix/trunk/karaf/assembly/src/main/filtered-resources/etc/config.properties (original) +++ felix/trunk/karaf/assembly/src/main/filtered-resources/etc/config.properties Mon Oct 12 09:19:40 2009 @@ -57,6 +57,7 @@ felix.fileinstall.dir = ${karaf.base}/etc felix.fileinstall.filter = .*\\.cfg felix.fileinstall.poll = 1000 +felix.fileinstall.noInitialDelay = true # # Hack for FELIX-1628 Modified: felix/trunk/karaf/assembly/src/main/filtered-resources/etc/startup.properties URL: http://svn.apache.org/viewvc/felix/trunk/karaf/assembly/src/main/filtered-resources/etc/startup.properties?rev=824271&r1=824270&r2=824271&view=diff ============================================================================== --- felix/trunk/karaf/assembly/src/main/filtered-resources/etc/startup.properties (original) +++ felix/trunk/karaf/assembly/src/main/filtered-resources/etc/startup.properties Mon Oct 12 09:19:40 2009 @@ -23,13 +23,13 @@ # # Startup core services like logging # -org/apache/felix/org.apache.felix.fileinstall/${felix.fileinstall.version}/org.apache.felix.fileinstall-${felix.fileinstall.version}.jar=5 org/ops4j/pax/url/pax-url-mvn/${pax.url.version}/pax-url-mvn-${pax.url.version}.jar=5 org/ops4j/pax/url/pax-url-wrap/${pax.url.version}/pax-url-wrap-${pax.url.version}.jar=5 org/ops4j/pax/logging/pax-logging-api/${pax.logging.version}/pax-logging-api-${pax.logging.version}.jar=8 org/ops4j/pax/logging/pax-logging-service/${pax.logging.version}/pax-logging-service-${pax.logging.version}.jar=8 org/apache/felix/org.apache.felix.configadmin/${felix.configadmin.version}/org.apache.felix.configadmin-${felix.configadmin.version}.jar=10 org/apache/felix/org.apache.felix.prefs/${felix.prefs.version}/org.apache.felix.prefs-${felix.prefs.version}.jar=10 +org/apache/felix/org.apache.felix.fileinstall/${felix.fileinstall.version}/org.apache.felix.fileinstall-${felix.fileinstall.version}.jar=11 # # The rest of the services.. Modified: felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java URL: http://svn.apache.org/viewvc/felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java?rev=824271&r1=824270&r2=824271&view=diff ============================================================================== --- felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java (original) +++ felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java Mon Oct 12 09:19:40 2009 @@ -470,7 +470,6 @@ Bundle b = context.installBundle(parts[0], new URL(parts[1]).openStream()); if (b != null) { b.start(); - checkCmProperties(b); } } catch (Exception ex) { @@ -484,59 +483,6 @@ } } - /** - * TODO: remove this hack when FELIX-1628 is properly implemented - * Hack for FELIX-1626. - * FileInstall has some delay before installing the configurations which can cause some problems - * - * @param b - */ - private void checkCmProperties(final Bundle b) { - final String cmDir = (String) configProps.get(PROPERTY_CM_DIRECTORY); - if (cmProcessed || cmDir == null) { - return; - } - try { - // Try to load fileinstall internal classes. - // Those are not exported, so this mean if the load succeeds, we have the fileinstall bundle - final Class ciClass = b.loadClass("org.apache.felix.fileinstall.internal.ConfigInstaller"); - final Class fiClass = b.loadClass("org.apache.felix.fileinstall.internal.FileInstall"); - // If we have been able to load the classes, start a thread that will wait until - // fileinstall is correctly configured using config admin and push all configs. - new Thread() { - public void run() { - for (int i = 0; !cmProcessed && i < 100; i++) { - try { - Thread.sleep(50); - Method mth = fiClass.getDeclaredMethod("getConfigurationAdmin", long.class); - mth.setAccessible(true); - if (mth.invoke(null, 0) != null) { - Constructor cns = ciClass.getDeclaredConstructor(BundleContext.class); - cns.setAccessible(true); - Object ci = cns.newInstance(b.getBundleContext()); - mth = ciClass.getDeclaredMethod("setConfig", File.class); - mth.setAccessible(true); - cmProcessed = true; -// System.err.println("Found ready FileInstall"); - for (File f : new File(cmDir).listFiles()) { - if (f.getName().endsWith(".cfg")) { -// System.err.println("Processing: " + f.getName()); - mth.invoke(ci, f); - } - } - } - } catch (Throwable t) { - if (cmProcessed) { - t.printStackTrace(); - } - } - } - } - }.start(); - } catch (Throwable t) { - } - } - private static String[] convertToMavenUrlsIfNeeded(String location, boolean convertToMavenUrls) { String[] parts = location.split("\\|"); if (convertToMavenUrls) {