1 package com.atlassian.refapp.sal.pluginsettings;
2
3 import com.atlassian.plugin.spring.scanner.annotation.export.ExportAsService;
4 import com.atlassian.refapp.sal.FileBackedSettingsFileFactory;
5 import com.atlassian.refapp.sal.FileBackedSettingsService;
6 import com.atlassian.sal.api.ApplicationProperties;
7 import com.atlassian.sal.api.pluginsettings.PluginSettings;
8 import com.atlassian.sal.api.pluginsettings.PluginSettingsFactory;
9 import org.apache.log4j.Logger;
10
11 import javax.inject.Inject;
12 import javax.inject.Named;
13 import java.util.List;
14
15
16
17
18
19
20 @ExportAsService
21 @Named("pluginSettingsFactory")
22 public class RefimplPluginSettingsFactory extends FileBackedSettingsService implements PluginSettingsFactory {
23 private static final String CHARLIE_KEYS = "charlie.keys";
24
25 private static final Logger log = Logger.getLogger(RefimplPluginSettingsFactory.class);
26
27 @Inject
28 public RefimplPluginSettingsFactory(ApplicationProperties applicationProperties) {
29 super(FileBackedSettingsFileFactory.getFileAndProperties("sal.com.atlassian.refapp.sal.pluginsettings.store", "com.atlassian.refapp.sal.pluginsettings.xml", Boolean.valueOf(System.getProperty("sal.com.atlassian.refapp.sal.pluginsettings.usememorystore", "false")), applicationProperties));
30 }
31
32 public PluginSettings createSettingsForKey(String key) {
33 if (key != null) {
34 List<String> charlies = (List<String>) new RefimplPluginSettings(new SettingsMap(null)).get(CHARLIE_KEYS);
35 if (charlies == null || !charlies.contains(key)) {
36 throw new IllegalArgumentException("No Charlie with key " + key + " exists.");
37 }
38 }
39 return new RefimplPluginSettings(new SettingsMap(key));
40 }
41
42 public PluginSettings createGlobalSettings() {
43 return createSettingsForKey(null);
44 }
45
46 }