KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mr > kernel > security > impl > ACLStorageConnectorFactory


1 package org.mr.kernel.security.impl;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.mr.kernel.security.MantaSecurityException;
6 import org.mr.kernel.security.SecurityConfigurationPaths;
7 import org.mr.MantaAgent;
8
9 import java.lang.reflect.Constructor JavaDoc;
10
11 /**
12  * This class is a factory class for instances of ACLStorageConnector.
13  * It creates an instance of ACLStorageConnector object according to the configuration name supplied.
14  *
15  * The configuration name should exist in default_config.xml under security.acl.configurations.
16  *
17  * @author Shirley Sasson
18  * @version 1.0
19  * @since May 23, 2006
20  */

21 public class ACLStorageConnectorFactory implements SecurityConfigurationPaths {
22
23     private static ACLStorageConnectorFactory _instance;
24     private Log _logger;
25
26     /**
27       * Returns the single instance of ACLStorageConnectorFactory.
28       *
29       * @return the single instance of ACLStorageConnectorFactory
30       */

31     public static ACLStorageConnectorFactory getInstance(){
32         if (_instance == null){
33             synchronized(ACLStorageConnectorFactory.class){
34                 if (_instance == null)
35                     _instance = new ACLStorageConnectorFactory();
36             }
37         }
38         return _instance;
39     }
40
41     private ACLStorageConnectorFactory(){}
42
43     /**
44      * Returns an instance of ACLStorageConnector according to the configuration name supplied.
45      *
46      * @param name the configuration name
47      * @return an instance of ACLStorageConnector
48      * @throws MantaSecurityException if an error occured
49      */

50     public ACLStorageConnector getACLStorageConnector(String JavaDoc name) throws MantaSecurityException {
51         ACLStorageConnector storage;
52         try {
53             String JavaDoc aclStorageImplementationClass = MantaAgent.getInstance().getSingletonRepository().getConfigManager().getStringProperty(ACL_CONFIGURATIONS + "." + name + "." + STORAGE_IMPLEMENTATION);
54             Class JavaDoc[] parameters = {String JavaDoc.class};
55             Constructor JavaDoc constructor = Class.forName(aclStorageImplementationClass).getConstructor(parameters);
56             String JavaDoc[] args = {name};
57             storage = (ACLStorageConnector) constructor.newInstance(args);
58         }
59         catch (Exception JavaDoc e){
60             if (getLogger().isErrorEnabled())
61                 getLogger().error("[getACLStorageConnector] Error instantiating ACLStorageConnector class for configuration with name " + name);
62             throw new MantaSecurityException("Error instantiating ACLStorageConnector class for configuration with name " + name);
63         }
64         return storage;
65     }
66
67     /**
68      * Returns the instance of the logger for this class
69      *
70      * @return the instance of the logger
71      */

72     public Log getLogger(){
73         if (_logger == null){
74             _logger = LogFactory.getLog(getClass().getName());
75         }
76         return _logger;
77     }
78
79 }
80
Popular Tags