import java.util.concurrent.ConcurrentHashMap;
import org.onap.aaf.auth.env.AuthzTrans;
+import org.onap.aaf.cadi.config.Config;
import org.onap.aaf.cadi.util.FQI;
import org.onap.aaf.cadi.util.Split;
import org.onap.aaf.misc.env.Env;
int idx = ORGANIZATION_DOT.length();
Organization org,firstOrg = null;
- for(Entry<Object, Object> es : env.getProperties().entrySet()) {
+ for (Entry<Object, Object> es : env.getProperties().entrySet()) {
String key = es.getKey().toString();
- if(key.startsWith(ORGANIZATION_DOT)) {
+ if (key.startsWith(ORGANIZATION_DOT)) {
org = obtain(env,key.substring(idx));
- if(firstOrg==null) {
+ if (firstOrg==null) {
firstOrg = org;
}
}
}
- if(defaultOrg == null) {
+ if(firstOrg==null) { // attempt to load DefaultOrg
+ try {
+ Class<?> cls = Class.forName("org.onap.aaf.org.DefaultOrg");
+ @SuppressWarnings("unchecked")
+ Constructor<Organization> cnst = (Constructor<Organization>)cls.getConstructor(Env.class,String.class);
+ String realm = env.getProperty(Config.AAF_DEFAULT_REALM,"people.osaaf.org");
+ defaultOrg = cnst.newInstance(env,realm);
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException | IllegalArgumentException | InvocationTargetException e) {
+ env.warn().log("Default Organization Module not linked in",e);
+ }
+ }
+ if (defaultOrg == null) {
defaultOrg = firstOrg;
}
return defaultOrg;
}
public static Organization obtain(Env env,final String theNS) throws OrganizationException {
String orgNS;
- if(theNS.indexOf('@')>=0) {
+ if (theNS.indexOf('@')>=0) {
orgNS=FQI.reverseDomain(theNS);
} else {
orgNS=theNS;
}
Organization org = orgs.get(orgNS);
- if(org == null) {
- env.debug().printf("Attempting to instantiate Organization %s\n",orgNS);
+ if (org == null) {
+ env.debug().printf("Attempting to instantiate Organization %s",orgNS);
String orgClass = env.getProperty(ORGANIZATION_DOT+orgNS);
- if(orgClass == null) {
- env.warn().log("There is no Organization." + orgNS + " property");
+ if (orgClass == null) {
+ env.warn().printf("There is no Organization.%s property",orgNS);
} else {
try {
Class<?> orgCls = Class.forName(orgClass);
- for(Organization o : orgs.values()) {
- if(o.getClass().isAssignableFrom(orgCls)) {
+ for (Organization o : orgs.values()) {
+ if (o.getClass().isAssignableFrom(orgCls)) {
org = o;
}
}
env.error().log(e1, orgClass + " is not on the Classpath.");
throw new OrganizationException(e1);
}
- if(org==null) {
+ if (org==null) {
try {
@SuppressWarnings("unchecked")
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)) {
+ if (other_realms!=null) {
+ for (String r : Split.splitTrim(',', other_realms)) {
org.addSupportedRealm(r);
}
}
}
orgs.put(orgNS, org);
boolean isDefault;
- if((isDefault="true".equalsIgnoreCase(env.getProperty(orgNS+".default")))) {
+ if ((isDefault="true".equalsIgnoreCase(env.getProperty(orgNS+".default")))) {
defaultOrg = org;
}
- env.init().printf("Instantiated %s with %s%s\n",orgNS,orgClass,(isDefault?" as default":""));
+ env.init().printf("Instantiated %s with %s%s",orgNS,orgClass,(isDefault?" as default":""));
}
- if(org==null) {
- if(defaultOrg!=null) {
+ if (org==null) {
+ if (defaultOrg!=null) {
org=defaultOrg;
orgs.put(orgNS, org);
}
public static Organization get(AuthzTrans trans) throws OrganizationException {
String domain = FQI.reverseDomain(trans.user());
Organization org = orgs.get(domain);
- if(org==null) {
+ if (org==null) {
org = defaultOrg; // can be null, btw, unless set.
}
return org;