From 0fc52ec1046f5007437794cb0ec4529dbd58d4bd Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sat, 12 Mar 2011 11:59:33 +0100 Subject: [PATCH] fix some bugs and improve logging --- .../scm/plugin/BackendConfiguration.java | 3 +++ .../scm/plugin/DefaultPluginBackend.java | 4 +++ .../sonia/scm/plugin/ScmBackendModule.java | 2 +- .../plugin/scanner/DefaultPluginScanner.java | 18 ++++++++++--- .../scanner/PluginScannerTimerTask.java | 5 ++++ .../scanner/TimerPluginScannerScheduler.java | 9 +++++-- .../src/main/resources/logback.xml | 27 +++++++++++++++++++ 7 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 scm-plugin-backend/src/main/resources/logback.xml diff --git a/scm-plugin-backend/src/main/java/sonia/scm/plugin/BackendConfiguration.java b/scm-plugin-backend/src/main/java/sonia/scm/plugin/BackendConfiguration.java index a3e463f15c..e6da1d891a 100644 --- a/scm-plugin-backend/src/main/java/sonia/scm/plugin/BackendConfiguration.java +++ b/scm-plugin-backend/src/main/java/sonia/scm/plugin/BackendConfiguration.java @@ -39,6 +39,8 @@ import java.io.File; import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @@ -47,6 +49,7 @@ import javax.xml.bind.annotation.XmlRootElement; * * @author Sebastian Sdorra */ +@XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "configuration") public class BackendConfiguration { diff --git a/scm-plugin-backend/src/main/java/sonia/scm/plugin/DefaultPluginBackend.java b/scm-plugin-backend/src/main/java/sonia/scm/plugin/DefaultPluginBackend.java index 24be753ca7..90499d1d1e 100644 --- a/scm-plugin-backend/src/main/java/sonia/scm/plugin/DefaultPluginBackend.java +++ b/scm-plugin-backend/src/main/java/sonia/scm/plugin/DefaultPluginBackend.java @@ -96,6 +96,10 @@ public class DefaultPluginBackend implements PluginBackend (PluginBackendStore) storeContext.createUnmarshaller().unmarshal( storeFile); } + else + { + pluginStore = new PluginBackendStore(); + } } catch (JAXBException ex) { diff --git a/scm-plugin-backend/src/main/java/sonia/scm/plugin/ScmBackendModule.java b/scm-plugin-backend/src/main/java/sonia/scm/plugin/ScmBackendModule.java index ff60d526f5..772387e4e0 100644 --- a/scm-plugin-backend/src/main/java/sonia/scm/plugin/ScmBackendModule.java +++ b/scm-plugin-backend/src/main/java/sonia/scm/plugin/ScmBackendModule.java @@ -95,7 +95,7 @@ public class ScmBackendModule extends ServletModule configurationFile.getPath())); } - BackendConfiguration configuration = JAXB.unmarshal(baseDirectory, + BackendConfiguration configuration = JAXB.unmarshal(configurationFile, BackendConfiguration.class); bind(File.class).annotatedWith(Names.named(DIRECTORY_PROPERTY)).toInstance( diff --git a/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/DefaultPluginScanner.java b/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/DefaultPluginScanner.java index 982d493de9..536a71714a 100644 --- a/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/DefaultPluginScanner.java +++ b/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/DefaultPluginScanner.java @@ -101,13 +101,18 @@ public class DefaultPluginScanner implements PluginScanner @Override public void scannDirectory(PluginBackend backend, File directory) { + if (logger.isDebugEnabled()) + { + logger.debug("scann directory {}", directory.getPath()); + } + File[] files = directory.listFiles(); for (File file : files) { if (file.isDirectory()) { - scannDirectory(backend, directory); + scannDirectory(backend, file); } else if (file.getName().endsWith(PLUGIN_EXTENSION)) { @@ -125,6 +130,11 @@ public class DefaultPluginScanner implements PluginScanner */ private void scannFile(PluginBackend backend, File file) { + if (logger.isDebugEnabled()) + { + logger.debug("scann file {}", file.getPath()); + } + JarInputStream inputStream = null; try @@ -142,15 +152,17 @@ public class DefaultPluginScanner implements PluginScanner if (plugin != null) { - if ( logger.isInfoEnabled() ) + if (logger.isInfoEnabled()) { - logger.info( "add plugin {} to backend", file.getPath() ); + logger.info("add plugin {} to backend", file.getPath()); } backend.addPlugin(plugin.getInformation()); } break; + } else { + entry.getCompressedSize(); } inputStream.closeEntry(); diff --git a/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/PluginScannerTimerTask.java b/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/PluginScannerTimerTask.java index 0f4a6c7f49..6a6bfc5d20 100644 --- a/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/PluginScannerTimerTask.java +++ b/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/PluginScannerTimerTask.java @@ -73,6 +73,7 @@ public class PluginScannerTimerTask extends TimerTask PluginScannerFactory scannerFactory) { this.backend = backend; + this.configuration = configuration; this.scannerFactory = scannerFactory; } @@ -92,6 +93,10 @@ public class PluginScannerTimerTask extends TimerTask for (File directory : configuration.getDirectories()) { + if ( logger.isDebugEnabled() ) + { + logger.info("scann directory {}", directory.getPath()); + } PluginScanner scanner = scannerFactory.createScanner(); if (configuration.isMultithreaded()) diff --git a/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/TimerPluginScannerScheduler.java b/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/TimerPluginScannerScheduler.java index 42b7449a24..69da744139 100644 --- a/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/TimerPluginScannerScheduler.java +++ b/scm-plugin-backend/src/main/java/sonia/scm/plugin/scanner/TimerPluginScannerScheduler.java @@ -69,7 +69,9 @@ public class TimerPluginScannerScheduler implements PluginScannerScheduler BackendConfiguration configuration, PluginScannerFactory scannerFactory) { + this.backend = backend; this.configuration = configuration; + this.scannerFactory = scannerFactory; timer = new Timer(TIMER_NAME); } @@ -92,8 +94,11 @@ public class TimerPluginScannerScheduler implements PluginScannerScheduler @Override public void start() { - PluginScannerTimerTask task = new PluginScannerTimerTask(backend, configuration, scannerFactory); - timer.schedule(task, configuration.getScannInterval()); + PluginScannerTimerTask task = new PluginScannerTimerTask(backend, + configuration, scannerFactory); + + // wait 5 seconds and start with first run + timer.schedule(task, 5000l, configuration.getScannInterval()); } //~--- fields --------------------------------------------------------------- diff --git a/scm-plugin-backend/src/main/resources/logback.xml b/scm-plugin-backend/src/main/resources/logback.xml new file mode 100644 index 0000000000..d0ce050084 --- /dev/null +++ b/scm-plugin-backend/src/main/resources/logback.xml @@ -0,0 +1,27 @@ + + + + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n + + + + + + + + + + \ No newline at end of file