[Yanel-commits] rev 29391 -
public/yanel/trunk/src/core/java/org/wyona/yanel/core/map
michi at wyona.com
michi at wyona.com
Fri Nov 30 15:33:02 CET 2007
Author: michi
Date: 2007-11-30 15:33:01 +0100 (Fri, 30 Nov 2007)
New Revision: 29391
Modified:
public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmManager.java
Log:
load custom realm
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmManager.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmManager.java 2007-11-30 14:32:07 UTC (rev 29390)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmManager.java 2007-11-30 14:33:01 UTC (rev 29391)
@@ -209,8 +209,23 @@
try {
if (log.isDebugEnabled()) log.debug("Reading realm config file for [" + realmId + "]: " + realmConfigFile);
- log.warn("TODO: Check on class attribute of realm config element and load custom realm implementation!");
- Realm realm = new Realm(name.getValue(), realmId, mountPoint, realmConfigFile);
+
+ Configuration realmConfig = builder.buildFromFile(realmConfigFile);
+ Realm realm;
+ try {
+ String customRealmImplClassName = realmConfig.getAttribute("class");
+ Class[] classArgs = new Class[]{String.class, String.class, String.class, File.class};
+ Object[] values = new Object[4];
+ values[0] = name.getValue();
+ values[1] = realmId;
+ values[2] = mountPoint;
+ values[3] = realmConfigFile;
+ java.lang.reflect.Constructor ct = Class.forName(customRealmImplClassName).getConstructor(classArgs);
+ realm = (Realm) ct.newInstance(values);
+ } catch(Exception e) {
+ log.info("Default realm implementation will be used.");
+ realm = new Realm(name.getValue(), realmId, mountPoint, realmConfigFile);
+ }
Configuration proxy = realmElements[i].getChild("reverse-proxy", false);
if (proxy != null) {
More information about the Yanel-commits
mailing list