View Javadoc
1   package com.atlassian.activeobjects.config.internal;
2   
3   import com.atlassian.activeobjects.spi.ActiveObjectsPluginConfiguration;
4   import org.slf4j.Logger;
5   import org.slf4j.LoggerFactory;
6   
7   import static com.google.common.base.Preconditions.checkNotNull;
8   
9   /**
10   * This is the default active objects plugin configuration, which will delegate to another configuration and nicely
11   * fallback onto default configurations if the delegate is not available (in the case of an OSGi service, configured
12   * through spring)
13   */
14  public final class DefaultActiveObjectsPluginConfiguration implements ActiveObjectsPluginConfiguration {
15      private static final String DEFAULT_BASE_DIR = "data/plugins/activeobjects";
16  
17      private final Logger logger = LoggerFactory.getLogger(this.getClass());
18  
19      private final ActiveObjectsPluginConfiguration delegate;
20  
21      public DefaultActiveObjectsPluginConfiguration(ActiveObjectsPluginConfiguration delegate) {
22          this.delegate = checkNotNull(delegate);
23      }
24  
25      public String getDatabaseBaseDirectory() {
26          try {
27              return delegate.getDatabaseBaseDirectory();
28          } catch (RuntimeException e) {
29              if (e.getClass().getSimpleName().equals("ServiceUnavailableException")) {
30                  logger.debug("Active objects plugin configuration service not present, so using default base directory <{}>", DEFAULT_BASE_DIR);
31                  return DEFAULT_BASE_DIR;
32              }
33              throw e;
34          }
35      }
36  }