View Javadoc
1   package com.atlassian.plugin.manager;
2   
3   import com.atlassian.plugin.Plugin;
4   import com.atlassian.plugin.PluginDependencies;
5   import com.atlassian.plugin.PluginException;
6   import com.atlassian.plugin.PluginState;
7   import com.atlassian.plugin.impl.UnloadablePlugin;
8   import com.google.common.base.Function;
9   import com.google.common.collect.ImmutableSet;
10  
11  import javax.annotation.Nonnull;
12  import javax.annotation.Nullable;
13  
14  public class PluginWithDeps extends UnloadablePlugin {
15      private final PluginDependencies dependencies;
16      private int timesEnabled = 0;
17      private int timesDisabled = 0;
18  
19      public static final Function<Plugin, String> GET_KEY = new Function<Plugin, String>() {
20          @Nonnull
21          @Override
22          public String apply(@Nullable final Plugin input) {
23              return input.getKey();
24          }
25      };
26  
27      public PluginWithDeps(final String key) {
28          this(key, new PluginDependencies(null, null, null));
29      }
30  
31      public PluginWithDeps(final String key, final String... deps) {
32          this(key, new PluginDependencies(ImmutableSet.copyOf(deps), null, null));
33      }
34  
35      public PluginWithDeps(final String key, final PluginDependencies deps) {
36          setKey(key);
37          dependencies = deps;
38          setPluginState(PluginState.DISABLED);
39      }
40  
41      @Override
42      public void enable() {
43          super.enable();
44          timesEnabled++;
45      }
46  
47      public int getTimesEnabled() {
48          return timesEnabled;
49      }
50  
51      public int getTimesDisabled() {
52          return timesDisabled;
53      }
54  
55      @Override
56      protected void disableInternal() throws PluginException {
57          super.disableInternal();
58          timesDisabled++;
59      }
60  
61      @Nonnull
62      @Override
63      public PluginDependencies getDependencies() {
64          return dependencies;
65      }
66  }