[Yanel-commits] rev 23852 - public/yanel/trunk/src/core/java/org/wyona/yanel/core/map

josias at wyona.com josias at wyona.com
Wed Apr 18 21:35:46 CEST 2007


Author: josias
Date: 2007-04-18 21:35:45 +0200 (Wed, 18 Apr 2007)
New Revision: 23852

Modified:
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java
Log:
refactoring: move configuration code of a realm into the realm class

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java	2007-04-18 19:21:52 UTC (rev 23851)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java	2007-04-18 19:35:45 UTC (rev 23852)
@@ -17,13 +17,21 @@
 package org.wyona.yanel.core.map;
 
 import java.io.File;
+import java.io.IOException;
 
+import org.wyona.commons.io.FileUtil;
 import org.wyona.commons.io.Path;
+import org.wyona.security.core.IdentityManagerFactory;
+import org.wyona.security.core.PolicyManagerFactory;
 import org.wyona.security.core.api.IdentityManager;
 import org.wyona.security.core.api.PolicyManager;
+import org.wyona.yanel.core.Yanel;
 import org.wyona.yarep.core.Repository;
+import org.wyona.yarep.core.RepositoryFactory;
+import org.xml.sax.SAXException;
 
 import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
 
 import org.apache.log4j.Category;
@@ -52,13 +60,76 @@
     /**
      *
      */
-    public Realm(String name, String id, String mountPoint, File configFile) {
+    public Realm(String name, String id, String mountPoint, File configFile) throws Exception {
         this.name = name;
         this.id = id;
         this.mountPoint = mountPoint;
         this.configFile = configFile;
+        
+        if (configFile != null) {
+            DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+            Configuration config;
+            try {
+                config = builder.buildFromFile(configFile);
+                configure(config);
+            } catch (SAXException e) {
+                // TODO: CascadingSAXException cse = new CascadingSAXException(e);
+                String errorMsg = "Could not read config file: " + configFile + ": " + e.getMessage();
+                log.error(errorMsg, e);
+                throw new Exception(errorMsg, e);
+            } catch (Exception e) {
+                String errorMsg = "Could not configure realm [" + id + "] with config file: " + 
+                        configFile + ": " + e.toString();
+                throw new Exception(errorMsg, e);
+            }
+        }
     }
 
+    protected void configure(Configuration config) throws Exception {
+
+        Yanel yanel = Yanel.getInstance();
+        
+        PolicyManagerFactory pmFactory = (PolicyManagerFactory) yanel.getBeanFactory().getBean("PolicyManagerFactory");
+        IdentityManagerFactory imFactory = (IdentityManagerFactory) yanel.getBeanFactory().getBean("IdentityManagerFactory");
+
+        RepositoryFactory repoFactory = yanel.getRepositoryFactory("DefaultRepositoryFactory");
+        RepositoryFactory rtiRepoFactory = yanel.getRepositoryFactory("RTIRepositoryFactory");
+        RepositoryFactory policiesRepoFactory = yanel.getRepositoryFactory("ACPoliciesRepositoryFactory");
+        RepositoryFactory identitiesRepoFactory = yanel.getRepositoryFactory("ACIdentitiesRepositoryFactory");
+
+        String repoConfigSrc = config.getChild("data", false).getValue();
+        File repoConfig = FileUtil.resolve(getConfigFile(), new File(repoConfigSrc));
+        setRepository(repoFactory.newRepository(getID(), repoConfig));
+        
+        repoConfigSrc = config.getChild("rti", false).getValue();
+        repoConfig = FileUtil.resolve(getConfigFile(), new File(repoConfigSrc));
+        setRTIRepository(rtiRepoFactory.newRepository(getID(), repoConfig));
+        
+        Configuration repoConfigElement = config.getChild("ac-policies", false);
+        if (repoConfigElement != null) {
+            repoConfig = FileUtil.resolve(getConfigFile(), new File(repoConfigElement.getValue()));
+            Repository policiesRepo = policiesRepoFactory.newRepository(getID(), repoConfig);
+            PolicyManager policyManager = pmFactory.newPolicyManager(policiesRepo);
+            setPolicyManager(policyManager);
+        }
+        
+        repoConfigElement = config.getChild("ac-identities", false);
+        if (repoConfigElement != null) {
+            repoConfig = FileUtil.resolve(getConfigFile(), new File(repoConfigElement.getValue()));
+            Repository identitiesRepo = identitiesRepoFactory.newRepository(getID(), repoConfig);
+            IdentityManager identityManager = imFactory.newIdentityManager(identitiesRepo);
+            setIdentityManager(identityManager);
+        }
+        
+        repoConfigElement = config.getChild("default-language", false);
+        if (repoConfigElement != null) {                       
+            setDefaultLanguage(repoConfigElement.getValue());
+        } else {
+            //Maintain backwards compatibility with realms
+            setDefaultLanguage("en");
+        }
+    }
+
     /**
      * Name of realm
      */

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java	2007-04-18 19:21:52 UTC (rev 23851)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java	2007-04-18 19:35:45 UTC (rev 23852)
@@ -200,45 +200,11 @@
                 log.debug("Reading realm config file for [" + realmId + "]: " + realmConfigFile);
                 try {
                     Realm realm = new Realm(name.getValue(), realmId, mountPoint, realmConfigFile);
+                    
                     if (proxy != null) {
                         realm.setProxy(proxy.getChild("host-name").getValue(), proxy.getChild("port").getValue(""), proxy.getChild("prefix").getValue());
                     }
-                    Configuration realmConfig = builder.buildFromFile(realmConfigFile);
                     
-                    String repoConfigSrc = realmConfig.getChild("data", false).getValue();
-                    File repoConfig = resolveFile(new File(repoConfigSrc), realmConfigFile);
-                    realm.setRepository(repoFactory.newRepository(realmId, repoConfig));
-                    
-                    repoConfigSrc = realmConfig.getChild("rti", false).getValue();
-                    repoConfig = resolveFile(new File(repoConfigSrc), realmConfigFile);
-                    realm.setRTIRepository(rtiRepoFactory.newRepository(realmId, repoConfig));
-                    
-                    Configuration repoConfigElement = realmConfig.getChild("ac-policies", false);
-                    if (repoConfigElement != null) {
-                        repoConfig = resolveFile(new File(repoConfigElement.getValue()), realmConfigFile);
-                        Repository policiesRepo = policiesRepoFactory.newRepository(realmId, repoConfig);
-                        PolicyManager policyManager = pmFactory.newPolicyManager(policiesRepo);
-                        realm.setPolicyManager(policyManager);
-                    }
-                    
-                    repoConfigElement = realmConfig.getChild("ac-identities", false);
-                    if (repoConfigElement != null) {
-                        repoConfig = resolveFile(new File(repoConfigElement.getValue()), realmConfigFile);
-                        Repository identitiesRepo = identitiesRepoFactory.newRepository(realmId, repoConfig);
-                        IdentityManager identityManager = imFactory.newIdentityManager(identitiesRepo);
-                        realm.setIdentityManager(identityManager);
-                    }
-                    
-                    repoConfigElement = realmConfig.getChild("default-language", false);
-                    if (repoConfigElement != null) {                       
-                        realm.setDefaultLanguage(repoConfigElement.getValue());
-                    } else {
-                        //Maintain backwards compatibility with realms
-                        realm.setDefaultLanguage("en");
-                    }
-                    
-                    
-                    
                     log.info("Realm: " + realm);
                     
                     hm.put(realmId, realm);




More information about the Yanel-commits mailing list