1 package com.atlassian.plugin.manager;
2
3 import com.atlassian.plugin.ModuleDescriptorFactory;
4 import com.atlassian.plugin.PluginAccessor;
5 import com.atlassian.plugin.PluginRegistry;
6 import com.atlassian.plugin.event.PluginEventManager;
7 import org.junit.runner.RunWith;
8 import org.junit.runners.Parameterized;
9
10 import java.util.Arrays;
11 import java.util.Collection;
12
13 @RunWith(Parameterized.class)
14 public class TestDefaultPluginManagerWithProductPluginAccessor extends TestDefaultPluginManager {
15
16 private interface PluginAccessorSupplier {
17 PluginAccessor supply(final PluginRegistry.ReadOnly pluginRegistry,
18 final PluginPersistentStateStore store,
19 final ModuleDescriptorFactory moduleDescriptorFactory,
20 final PluginEventManager pluginEventManager);
21 }
22
23 @Parameterized.Parameters(name = "{0}")
24 public static Collection<Object[]> data() {
25 return Arrays.asList(new Object[][]{
26 {"ProductPluginAccessor", new PluginAccessorSupplier() {
27 @Override
28 public PluginAccessor supply(final PluginRegistry.ReadOnly pluginRegistry,
29 final PluginPersistentStateStore store,
30 final ModuleDescriptorFactory moduleDescriptorFactory,
31 final PluginEventManager pluginEventManager) {
32 return new ProductPluginAccessor(pluginRegistry, store, moduleDescriptorFactory, pluginEventManager);
33 }
34 }},
35 {"ProductPluginAccessorBase", new PluginAccessorSupplier() {
36 @Override
37 public PluginAccessor supply(final PluginRegistry.ReadOnly pluginRegistry,
38 final PluginPersistentStateStore store,
39 final ModuleDescriptorFactory moduleDescriptorFactory,
40 final PluginEventManager pluginEventManager) {
41 return new ProductPluginAccessorBase(pluginRegistry, store, moduleDescriptorFactory, pluginEventManager);
42 }
43 }}
44 });
45 }
46
47 @Parameterized.Parameter
48 public String testName;
49
50 @Parameterized.Parameter(1)
51 public PluginAccessorSupplier pluginAccessorSupplier;
52
53 private PluginAccessor pluginAccessor;
54
55
56
57
58
59 @Override
60 protected DefaultPluginManager newDefaultPluginManager(DefaultPluginManager.Builder builder) {
61 final PluginRegistry.ReadWrite pluginRegistry = new PluginRegistryImpl();
62
63 pluginAccessor = pluginAccessorSupplier.supply(pluginRegistry, pluginStateStore, moduleDescriptorFactory, pluginEventManager);
64
65 builder
66 .withPluginRegistry(pluginRegistry)
67 .withPluginAccessor(pluginAccessor);
68 manager = super.newDefaultPluginManager(builder);
69
70 return manager;
71 }
72
73
74
75
76 @Override
77 protected PluginAccessor getPluginAccessor() {
78 return pluginAccessor;
79 }
80 }