Refactored InitializationHelper so it can take an InputStream

Also renamed it to PrivilegeInitializationHelper
This commit is contained in:
Robert von Burg 2013-08-12 11:04:21 +02:00
parent d7f10a731f
commit c4e6c5e65d
3 changed files with 36 additions and 13 deletions

View File

@ -17,9 +17,11 @@
* along with Privilege. If not, see <http://www.gnu.org/licenses/>.
*
*/
package ch.eitchnet.privilege.xml;
package ch.eitchnet.privilege.helper;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Map;
import org.slf4j.Logger;
@ -30,9 +32,9 @@ import ch.eitchnet.privilege.handler.DefaultPrivilegeHandler;
import ch.eitchnet.privilege.handler.EncryptionHandler;
import ch.eitchnet.privilege.handler.PersistenceHandler;
import ch.eitchnet.privilege.handler.PrivilegeHandler;
import ch.eitchnet.privilege.helper.ClassHelper;
import ch.eitchnet.privilege.model.internal.PrivilegeContainerModel;
import ch.eitchnet.privilege.policy.PrivilegePolicy;
import ch.eitchnet.privilege.xml.PrivilegeConfigSaxReader;
import ch.eitchnet.utils.helper.XmlHelper;
/**
@ -41,9 +43,9 @@ import ch.eitchnet.utils.helper.XmlHelper;
*
* @author Robert von Burg <eitch@eitchnet.ch>
*/
public class InitializationHelper {
public class PrivilegeInitializationHelper {
private static final Logger logger = LoggerFactory.getLogger(InitializationHelper.class);
private static final Logger logger = LoggerFactory.getLogger(PrivilegeInitializationHelper.class);
/**
* Initializes the {@link DefaultPrivilegeHandler} from the configuration file
@ -51,7 +53,8 @@ public class InitializationHelper {
* @param privilegeXmlFile
* a {@link File} reference to the XML file containing the configuration for Privilege
*
* @return the {@link PrivilegeHandler} instance loaded from the configuration file
* @return the initialized {@link PrivilegeHandler} where the {@link EncryptionHandler} and
* {@link PersistenceHandler} are set and initialized as well
*/
public static PrivilegeHandler initializeFromXml(File privilegeXmlFile) {
@ -60,10 +63,31 @@ public class InitializationHelper {
throw new PrivilegeException("Privilege file does not exist at path " + privilegeXmlFile.getAbsolutePath());
}
// delegate using input stream
try {
return initializeFromXml(new FileInputStream(privilegeXmlFile));
} catch (Exception e) {
PrivilegeInitializationHelper.logger.error(e.getMessage(), e);
throw new PrivilegeException("Failed to load configuration from " + privilegeXmlFile.getAbsolutePath());
}
}
/**
* Initializes the {@link PrivilegeHandler} by loading from the given input stream. This stream must be a valid XML
* source
*
* @param privilegeConfigInputStream
* the XML stream containing the privilege configuration
*
* @return the initialized {@link PrivilegeHandler} where the {@link EncryptionHandler} and
* {@link PersistenceHandler} are set and initialized as well
*/
public static PrivilegeHandler initializeFromXml(InputStream privilegeConfigInputStream) {
// parse configuration file
PrivilegeContainerModel containerModel = new PrivilegeContainerModel();
PrivilegeConfigSaxReader xmlHandler = new PrivilegeConfigSaxReader(containerModel);
XmlHelper.parseDocument(privilegeXmlFile, xmlHandler);
XmlHelper.parseDocument(privilegeConfigInputStream, xmlHandler);
// initialize encryption handler
String encryptionHandlerClassName = containerModel.getEncryptionHandlerClassName();
@ -72,7 +96,7 @@ public class InitializationHelper {
try {
encryptionHandler.initialize(parameterMap);
} catch (Exception e) {
InitializationHelper.logger.error(e.getMessage(), e);
PrivilegeInitializationHelper.logger.error(e.getMessage(), e);
throw new PrivilegeException("EncryptionHandler " + encryptionHandlerClassName
+ " could not be initialized");
}
@ -84,7 +108,7 @@ public class InitializationHelper {
try {
persistenceHandler.initialize(parameterMap);
} catch (Exception e) {
InitializationHelper.logger.error(e.getMessage(), e);
PrivilegeInitializationHelper.logger.error(e.getMessage(), e);
throw new PrivilegeException("PersistenceHandler " + persistenceHandlerClassName
+ " could not be initialized");
}
@ -96,7 +120,7 @@ public class InitializationHelper {
try {
privilegeHandler.initialize(parameterMap, encryptionHandler, persistenceHandler, policyMap);
} catch (Exception e) {
InitializationHelper.logger.error(e.getMessage(), e);
PrivilegeInitializationHelper.logger.error(e.getMessage(), e);
throw new PrivilegeException("PrivilegeHandler " + privilegeHandler.getClass().getName()
+ " could not be initialized");
}

View File

@ -36,6 +36,7 @@ import org.slf4j.LoggerFactory;
import ch.eitchnet.privilege.base.AccessDeniedException;
import ch.eitchnet.privilege.base.PrivilegeException;
import ch.eitchnet.privilege.handler.PrivilegeHandler;
import ch.eitchnet.privilege.helper.PrivilegeInitializationHelper;
import ch.eitchnet.privilege.model.Certificate;
import ch.eitchnet.privilege.model.PrivilegeContext;
import ch.eitchnet.privilege.model.PrivilegeRep;
@ -46,7 +47,6 @@ import ch.eitchnet.privilege.model.UserState;
import ch.eitchnet.privilege.test.model.TestRestrictable;
import ch.eitchnet.privilege.test.model.TestSystemUserAction;
import ch.eitchnet.privilege.test.model.TestSystemUserActionDeny;
import ch.eitchnet.privilege.xml.InitializationHelper;
import ch.eitchnet.utils.helper.ArraysHelper;
import ch.eitchnet.utils.helper.FileHelper;
@ -139,7 +139,7 @@ public class PrivilegeTest {
File privilegeConfigFile = new File(pwd + "/config/Privilege.xml");
// initialize privilege
privilegeHandler = InitializationHelper.initializeFromXml(privilegeConfigFile);
privilegeHandler = PrivilegeInitializationHelper.initializeFromXml(privilegeConfigFile);
} catch (Exception e) {
logger.error(e.getMessage(), e);

View File

@ -33,7 +33,6 @@ import java.util.Set;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
@ -81,7 +80,7 @@ public class XmlTest {
tmpDir.mkdirs();
}
@AfterClass
//@AfterClass
public static void destroy() throws Exception {
File tmpDir = new File("target/test");