[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