From c4e6c5e65d4ac1d1bd63a096a01a56ae528f0272 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 12 Aug 2013 11:04:21 +0200 Subject: [PATCH] Refactored InitializationHelper so it can take an InputStream Also renamed it to PrivilegeInitializationHelper --- .../PrivilegeInitializationHelper.java} | 42 +++++++++++++++---- .../privilege/test/PrivilegeTest.java | 4 +- .../ch/eitchnet/privilege/test/XmlTest.java | 3 +- 3 files changed, 36 insertions(+), 13 deletions(-) rename src/main/java/ch/eitchnet/privilege/{xml/InitializationHelper.java => helper/PrivilegeInitializationHelper.java} (70%) diff --git a/src/main/java/ch/eitchnet/privilege/xml/InitializationHelper.java b/src/main/java/ch/eitchnet/privilege/helper/PrivilegeInitializationHelper.java similarity index 70% rename from src/main/java/ch/eitchnet/privilege/xml/InitializationHelper.java rename to src/main/java/ch/eitchnet/privilege/helper/PrivilegeInitializationHelper.java index e5d1a1a24..35529dde9 100644 --- a/src/main/java/ch/eitchnet/privilege/xml/InitializationHelper.java +++ b/src/main/java/ch/eitchnet/privilege/helper/PrivilegeInitializationHelper.java @@ -17,9 +17,11 @@ * along with Privilege. If not, see . * */ -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 */ -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"); } diff --git a/src/test/java/ch/eitchnet/privilege/test/PrivilegeTest.java b/src/test/java/ch/eitchnet/privilege/test/PrivilegeTest.java index 06ee3ca96..d3e58bb41 100644 --- a/src/test/java/ch/eitchnet/privilege/test/PrivilegeTest.java +++ b/src/test/java/ch/eitchnet/privilege/test/PrivilegeTest.java @@ -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); diff --git a/src/test/java/ch/eitchnet/privilege/test/XmlTest.java b/src/test/java/ch/eitchnet/privilege/test/XmlTest.java index 23db59a65..13c684834 100644 --- a/src/test/java/ch/eitchnet/privilege/test/XmlTest.java +++ b/src/test/java/ch/eitchnet/privilege/test/XmlTest.java @@ -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");