1 package com.atlassian.plugin.manager;
2
3 import com.atlassian.plugin.PluginArtifact;
4 import com.atlassian.plugin.PluginInformation;
5 import com.atlassian.plugin.jmx.AbstractJmxBridge;
6 import com.atlassian.plugin.jmx.JmxUtil;
7 import com.atlassian.plugin.jmx.PluginManagerMXBean;
8
9 import java.util.Date;
10 import java.util.concurrent.atomic.AtomicInteger;
11
12
13
14
15
16
17
18
19
20
21
22
23 class DefaultPluginManagerJmxBridge extends AbstractJmxBridge<PluginManagerMXBean> implements PluginManagerMXBean {
24
25
26
27 private static final AtomicInteger nextJmxInstance = new AtomicInteger();
28
29 private final DefaultPluginManager defaultPluginManager;
30
31 DefaultPluginManagerJmxBridge(final DefaultPluginManager defaultPluginManager) {
32 super(JmxUtil.objectName(nextJmxInstance, "PluginManager"), PluginManagerMXBean.class);
33 this.defaultPluginManager = defaultPluginManager;
34 }
35
36 @Override
37 protected PluginManagerMXBean getMXBean() {
38 return this;
39 }
40
41 @Override
42 public PluginData[] getPlugins() {
43 return defaultPluginManager.getPlugins().stream()
44 .map(plugin -> new PluginData() {
45 @Override
46 public String getKey() {
47 return plugin.getKey();
48 }
49
50 @Override
51 public String getVersion() {
52 final PluginInformation pluginInformation = plugin.getPluginInformation();
53
54
55 return (null == pluginInformation) ? null : pluginInformation.getVersion();
56 }
57
58 @Override
59 public String getLocation() {
60 final PluginArtifact pluginArtifact = plugin.getPluginArtifact();
61
62 return (null == pluginArtifact) ? null : pluginArtifact.toFile().getAbsolutePath();
63 }
64
65 @Override
66 public Long getDateLoaded() {
67 final Date dateLoaded = plugin.getDateLoaded();
68
69 return (null == dateLoaded) ? null : dateLoaded.getTime();
70 }
71
72 @Override
73 public Long getDateInstalled() {
74 final Date dateInstalled = plugin.getDateInstalled();
75
76 return (null == dateInstalled) ? null : dateInstalled.getTime();
77 }
78
79 @Override
80 public boolean isEnabled() {
81 return defaultPluginManager.isPluginEnabled(plugin.getKey());
82 }
83
84 @Override
85 public boolean isEnabledByDefault() {
86 return plugin.isEnabledByDefault();
87 }
88
89 @Override
90 public boolean isBundledPlugin() {
91 return plugin.isBundledPlugin();
92 }
93 })
94 .toArray(PluginData[]::new);
95 }
96
97 @Override
98 public int scanForNewPlugins() {
99 return defaultPluginManager.scanForNewPlugins();
100 }
101 }