1 package com.atlassian.plugin.osgi.bridge;
2
3 import com.atlassian.plugin.Plugin;
4 import com.atlassian.plugin.PluginAccessor;
5 import com.atlassian.plugin.osgi.bridge.external.PluginRetrievalService;
6 import org.osgi.framework.Bundle;
7 import org.osgi.framework.ServiceFactory;
8 import org.osgi.framework.ServiceRegistration;
9
10
11
12
13
14
15 public class PluginRetrievalServiceFactory implements ServiceFactory {
16 private final PluginAccessor pluginAccessor;
17
18 public PluginRetrievalServiceFactory(PluginAccessor pluginAccessor) {
19 this.pluginAccessor = pluginAccessor;
20 }
21
22 public Object getService(Bundle bundle, ServiceRegistration serviceRegistration) {
23 return new PluginRetrievalServiceImpl(pluginAccessor, bundle);
24 }
25
26 public void ungetService(Bundle bundle, ServiceRegistration serviceRegistration, Object o) {
27 }
28
29 private static class PluginRetrievalServiceImpl implements PluginRetrievalService {
30 private final Plugin plugin;
31
32 public PluginRetrievalServiceImpl(PluginAccessor pluginAccessor, Bundle bundle) {
33 String pluginKey = PluginBundleUtils.getPluginKey(bundle);
34 plugin = pluginAccessor.getPlugin(pluginKey);
35 }
36
37 public Plugin getPlugin() {
38 return plugin;
39 }
40 }
41 }