1 package com.atlassian.user.impl.osuser.configuration;
2
3 import com.atlassian.user.configuration.*;
4 import com.atlassian.user.impl.osuser.OSUAccessor;
5 import com.atlassian.user.impl.osuser.config.xml.OSUConfigurationLoader;
6 import com.atlassian.user.util.ClassLoaderUtils;
7
8 import java.io.InputStream;
9
10 public class OSURepositoryProcessor extends DefaultRepositoryProcessor
11 {
12 public RepositoryAccessor process(RepositoryConfiguration config) throws ConfigurationException
13 {
14 OSUConfigurationLoader configLoader = (OSUConfigurationLoader) createBean("configLoader", config, false);
15 config.addComponent("configLoader", configLoader);
16
17 InputStream configFile = getConfigurationFile(config.getComponentClassName("configFile"));
18 configLoader.load(configFile);
19 OSUAccessor accessor = configLoader.getOSUAccessor();
20
21 config.addComponent(Configuration.ACCESSOR, accessor);
22 config.addComponent(Configuration.OSU_ACCESS_PROVIDER, accessor.getAccessProvider());
23 config.addComponent(Configuration.OSU_CREDENTIALS_PROVIDER, accessor.getCredentialsProvider());
24 config.addComponent(Configuration.OSU_PROFILE_PROVIDER, accessor.getProfileProvider());
25 config.addComponent(Configuration.OSU_CREDENTIALS_PROVIDER_LIST, configLoader.getCredentialProviders());
26
27 return super.process(config);
28 }
29
30 private InputStream getConfigurationFile(String configXMLFileName)
31 throws ConfigurationException
32 {
33 InputStream is = ClassLoaderUtils.getResourceAsStream(configXMLFileName, this.getClass());
34
35 if (is == null)
36 {
37 throw new ConfigurationException("Could not open InputStream on specified configuration file: " +
38 "[" + configXMLFileName + "]. Please ensure that the file is available on the classpath.");
39 }
40 return is;
41 }
42 }