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  }