+++ /dev/null
-/*******************************************************************************\r
- * ============LICENSE_START====================================================\r
- * * org.onap.aaf\r
- * * ===========================================================================\r
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
- * * ===========================================================================\r
- * * Licensed under the Apache License, Version 2.0 (the "License");\r
- * * you may not use this file except in compliance with the License.\r
- * * You may obtain a copy of the License at\r
- * * \r
- * * http://www.apache.org/licenses/LICENSE-2.0\r
- * * \r
- * * Unless required by applicable law or agreed to in writing, software\r
- * * distributed under the License is distributed on an "AS IS" BASIS,\r
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * * See the License for the specific language governing permissions and\r
- * * limitations under the License.\r
- * * ============LICENSE_END====================================================\r
- * *\r
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
- * *\r
- ******************************************************************************/\r
-package org.onap.aaf.authz.org;\r
-\r
-import java.lang.reflect.Constructor;\r
-import java.lang.reflect.InvocationTargetException;\r
-import java.util.Map;\r
-import java.util.concurrent.ConcurrentHashMap;\r
-\r
-import org.onap.aaf.authz.env.AuthzEnv;\r
-import org.onap.aaf.authz.env.AuthzTrans;\r
-\r
-import org.onap.aaf.inno.env.APIException;\r
-import org.onap.aaf.inno.env.Slot;\r
-\r
-/**\r
- * Organization Plugin Mechanism\r
- * \r
- * Define a NameSpace for the company (i.e. com.att), and put in Properties as \r
- * "Organization.[your NS" and assign the supporting Class. \r
- * \r
- * Example:\r
- * Organization.com.att=org.onap.aaf.authz.org.att.ATT\r
- *\r
- *\r
- */\r
-public class OrganizationFactory {\r
- public static final String ORG_SLOT = "ORG_SLOT";\r
- private static Organization defaultOrg = null;\r
- private static Map<String,Organization> orgs = new ConcurrentHashMap<String,Organization>();\r
- private static Slot orgSlot;\r
- \r
- public static void setDefaultOrg(AuthzEnv env, String orgClass) throws APIException {\r
- orgSlot = env.slot(ORG_SLOT);\r
- try {\r
- @SuppressWarnings("unchecked")\r
- Class<Organization> cls = (Class<Organization>) Class.forName(orgClass);\r
- Constructor<Organization> cnst = cls.getConstructor(AuthzEnv.class);\r
- defaultOrg = cnst.newInstance(env);\r
- } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | \r
- InstantiationException | IllegalAccessException | IllegalArgumentException | \r
- InvocationTargetException e) {\r
- throw new APIException(e);\r
- }\r
- }\r
- \r
- public static Organization obtain(AuthzEnv env,String orgNS) throws OrganizationException {\r
- int at = orgNS.indexOf('@');\r
- if(at<0) {\r
- if(!orgNS.startsWith("com.")) {\r
- int dot1;\r
- if((dot1 = orgNS.lastIndexOf('.'))>-1) {\r
- int dot2;\r
- StringBuilder sb = new StringBuilder();\r
- if((dot2 = orgNS.lastIndexOf('.',dot1-1))>-1) {\r
- sb.append(orgNS,dot1+1,orgNS.length());\r
- sb.append('.');\r
- sb.append(orgNS,dot2+1,dot1);\r
- } else {\r
- sb.append(orgNS,dot1+1,orgNS.length());\r
- sb.append('.');\r
- sb.append(orgNS,at+1,dot1);\r
- }\r
- orgNS=sb.toString();\r
- }\r
- }\r
- } else {\r
- // Only use two places (Enterprise) of domain\r
- int dot;\r
- if((dot= orgNS.lastIndexOf('.'))>-1) {\r
- StringBuilder sb = new StringBuilder();\r
- int dot2;\r
- if((dot2 = orgNS.lastIndexOf('.',dot-1))>-1) {\r
- sb.append(orgNS.substring(dot+1));\r
- sb.append(orgNS.subSequence(dot2, dot));\r
- orgNS = sb.toString();\r
- } else {\r
- sb.append(orgNS.substring(dot+1));\r
- sb.append('.');\r
- sb.append(orgNS.subSequence(at+1, dot));\r
- orgNS = sb.toString();\r
- }\r
- }\r
- }\r
- Organization org = orgs.get(orgNS);\r
- if(org == null) {\r
- String orgClass = env.getProperty("Organization."+orgNS);\r
- if(orgClass == null) {\r
- env.warn().log("There is no Organization." + orgNS + " property");\r
- } else {\r
- for(Organization o : orgs.values()) {\r
- if(orgClass.equals(o.getClass().getName())) {\r
- org = o;\r
- }\r
- }\r
- if(org==null) {\r
- try {\r
- @SuppressWarnings("unchecked")\r
- Class<Organization> cls = (Class<Organization>) Class.forName(orgClass);\r
- Constructor<Organization> cnst = cls.getConstructor(AuthzEnv.class);\r
- org = cnst.newInstance(env);\r
- } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | \r
- InstantiationException | IllegalAccessException | IllegalArgumentException | \r
- InvocationTargetException e) {\r
- throw new OrganizationException(e);\r
- }\r
- }\r
- orgs.put(orgNS, org);\r
- }\r
- if(org==null && defaultOrg!=null) {\r
- org=defaultOrg;\r
- orgs.put(orgNS, org);\r
- }\r
- }\r
- \r
- return org;\r
- }\r
-\r
- public static void set(AuthzTrans trans, String orgNS) throws OrganizationException {\r
- Organization org = obtain(trans.env(),orgNS);\r
- trans.put(orgSlot, org);\r
- }\r
- \r
- public static Organization get(AuthzTrans trans) {\r
- return trans.get(orgSlot,defaultOrg);\r
- }\r
-\r
-}\r