Support Multiple Realms for DefaultOrg
[aaf/authz.git] / auth / auth-core / src / main / java / org / onap / aaf / auth / org / OrganizationFactory.java
index d12345a..57d37d0 100644 (file)
@@ -29,6 +29,7 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.onap.aaf.auth.env.AuthzTrans;
 import org.onap.aaf.cadi.util.FQI;
+import org.onap.aaf.cadi.util.Split;
 import org.onap.aaf.misc.env.Env;
 import org.onap.aaf.misc.env.impl.BasicEnv;
 
@@ -75,6 +76,8 @@ public class OrganizationFactory {
                }
                Organization org = orgs.get(orgNS);
                if(org == null) {
+                       env.debug().printf("Attempting to instantiate Organization %s\n",orgNS);
+
                        String orgClass = env.getProperty(ORGANIZATION_DOT+orgNS);
                        if(orgClass == null) {
                                env.warn().log("There is no Organization." + orgNS + " property");
@@ -96,6 +99,13 @@ public class OrganizationFactory {
                                                Class<Organization> cls = (Class<Organization>) Class.forName(orgClass);
                                                Constructor<Organization> cnst = cls.getConstructor(Env.class,String.class);
                                                org = cnst.newInstance(env,orgNS);
+                                               String other_realms = env.getProperty(orgNS+".also_supports");
+                                               if(other_realms!=null) {
+                                                       for(String r : Split.splitTrim(',', other_realms)) {
+                                                               org.addSupportedRealm(r);
+                                                       }
+                                               }
+                                               
                                        } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | 
                                                        InstantiationException | IllegalAccessException | IllegalArgumentException | 
                                                        InvocationTargetException e) {
@@ -104,10 +114,11 @@ public class OrganizationFactory {
                                        }
                                }
                                orgs.put(orgNS, org);
-                               if("true".equalsIgnoreCase(env.getProperty(orgNS+".default"))) {
+                               boolean isDefault;
+                               if((isDefault="true".equalsIgnoreCase(env.getProperty(orgNS+".default")))) {
                                        defaultOrg = org;
                                }
-
+                               env.init().printf("Instantiated %s with %s%s\n",orgNS,orgClass,(isDefault?" as default":""));
                        }
                        if(org==null) {
                                if(defaultOrg!=null) {