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");