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 ; 10 11 21 public class ACLStorageConnectorFactory implements SecurityConfigurationPaths { 22 23 private static ACLStorageConnectorFactory _instance; 24 private Log _logger; 25 26 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 50 public ACLStorageConnector getACLStorageConnector(String name) throws MantaSecurityException { 51 ACLStorageConnector storage; 52 try { 53 String aclStorageImplementationClass = MantaAgent.getInstance().getSingletonRepository().getConfigManager().getStringProperty(ACL_CONFIGURATIONS + "." + name + "." + STORAGE_IMPLEMENTATION); 54 Class [] parameters = {String .class}; 55 Constructor constructor = Class.forName(aclStorageImplementationClass).getConstructor(parameters); 56 String [] args = {name}; 57 storage = (ACLStorageConnector) constructor.newInstance(args); 58 } 59 catch (Exception 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 72 public Log getLogger(){ 73 if (_logger == null){ 74 _logger = LogFactory.getLog(getClass().getName()); 75 } 76 return _logger; 77 } 78 79 } 80 | Popular Tags |