- String orgClass = env.getProperty(ORGANIZATION_DOT+orgNS);
- if(orgClass == null) {
- env.warn().log("There is no Organization." + orgNS + " property");
- } else {
- try {
- Class<?> orgCls = Class.forName(orgClass);
- for(Organization o : orgs.values()) {
- if(o.getClass().isAssignableFrom(orgCls)) {
- org = o;
- }
- }
- } catch (ClassNotFoundException e1) {
- env.error().log(e1, orgClass + " is not on the Classpath.");
- throw new OrganizationException(e1);
- }
- 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);
- } catch (ClassNotFoundException | NoSuchMethodException | SecurityException |
- InstantiationException | IllegalAccessException | IllegalArgumentException |
- InvocationTargetException e) {
- env.error().log(e, "Error on Organization Construction");
- throw new OrganizationException(e);
- }
- }
- orgs.put(orgNS, org);
- 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) {
- org=defaultOrg;
- orgs.put(orgNS, org);
- }
- }
- }
-
- return org;
- }
+ String orgClass = env.getProperty(ORGANIZATION_DOT+orgNS);
+ 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)) {
+ org = o;
+ }
+ }
+ } catch (ClassNotFoundException e1) {
+ env.error().log(e1, orgClass + " is not on the Classpath.");
+ throw new OrganizationException(e1);
+ }
+ 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)) {
+ org.addSupportedRealm(r);
+ }
+ }
+ } catch (ClassNotFoundException | NoSuchMethodException | SecurityException |
+ InstantiationException | IllegalAccessException | IllegalArgumentException |
+ InvocationTargetException e) {
+ env.error().log(e, "Error on Organization Construction");
+ throw new OrganizationException(e);
+ }
+ }
+ orgs.put(orgNS, org);
+ boolean isDefault;
+ if ((isDefault="true".equalsIgnoreCase(env.getProperty(orgNS+".default")))) {
+ defaultOrg = org;
+ }
+ env.init().printf("Instantiated %s with %s%s",orgNS,orgClass,(isDefault?" as default":""));
+ }
+ if (org==null) {
+ if (defaultOrg!=null) {
+ org=defaultOrg;
+ orgs.put(orgNS, org);
+ }
+ }
+ }
+
+ return org;
+ }