Improved multi Proxy DNSLocator based
[aaf/authz.git] / cadi / aaf / src / main / java / org / onap / aaf / cadi / aaf / v2_0 / AAFCon.java
index 4fe05f7..3b97883 100644 (file)
@@ -28,6 +28,7 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.onap.aaf.cadi.AbsUserCache;
 import org.onap.aaf.cadi.Access;
+import org.onap.aaf.cadi.Access.Level;
 import org.onap.aaf.cadi.CadiException;
 import org.onap.aaf.cadi.CadiWrap;
 import org.onap.aaf.cadi.Connector;
@@ -36,7 +37,6 @@ import org.onap.aaf.cadi.LocatorException;
 import org.onap.aaf.cadi.Lur;
 import org.onap.aaf.cadi.PropAccess;
 import org.onap.aaf.cadi.SecuritySetter;
-import org.onap.aaf.cadi.Access.Level;
 import org.onap.aaf.cadi.aaf.AAFPermission;
 import org.onap.aaf.cadi.aaf.marshal.CertsMarshal;
 import org.onap.aaf.cadi.client.Future;
@@ -56,6 +56,7 @@ import org.onap.aaf.misc.rosetta.env.RosettaDF;
 import org.onap.aaf.misc.rosetta.env.RosettaEnv;
 
 import aaf.v2_0.Certs;
+import aaf.v2_0.CredRequest;
 import aaf.v2_0.Error;
 import aaf.v2_0.Perms;
 import aaf.v2_0.Users;
@@ -69,6 +70,7 @@ public abstract class AAFCon<CLIENT> implements Connector {
     final public RosettaDF<Perms> permsDF;
     final public RosettaDF<Certs> certsDF;
     final public RosettaDF<Users> usersDF;
+    final public RosettaDF<CredRequest> credReqDF;
     final public RosettaDF<Error> errDF;
     private String realm;
     public final String app;
@@ -79,119 +81,125 @@ public abstract class AAFCon<CLIENT> implements Connector {
 
     final public RosettaEnv env;
     protected AAFCon(AAFCon<CLIENT> copy) {
-           access = copy.access;
-           apiVersion = access.getProperty(Config.AAF_API_VERSION, Config.AAF_DEFAULT_API_VERSION);
-           timeout = copy.timeout;
-           cleanInterval = copy.cleanInterval;
-           connTimeout = copy.connTimeout;
-           highCount = copy.highCount;
-           userExpires = copy.userExpires;
-           usageRefreshTriggerCount = copy.usageRefreshTriggerCount;
-           permsDF = copy.permsDF;
-           certsDF = copy.certsDF;
-           usersDF = copy.usersDF;
-           errDF = copy.errDF;
-           app = copy.app;
-           si = copy.si;
-           env = copy.env;
-           realm = copy.realm;
-       }
-       protected AAFCon(Access access, String tag, SecurityInfoC<CLIENT> si) throws CadiException{
-           apiVersion = access.getProperty(Config.AAF_API_VERSION, Config.AAF_DEFAULT_API_VERSION);
-           if (tag==null) {
-               throw new CadiException("AAFCon cannot be constructed without a property tag or URL");
-           } else {
-               String str = access.getProperty(tag,null);
-               if (str==null) {
-                   if (tag.contains("://")) { // assume a URL
-                       str = tag;
-                   } else {
-                       throw new CadiException("A URL or " + tag + " property is required.");
-                   }
-               }
-               try {
-                               RegistrationPropHolder rph = new RegistrationPropHolder(access, 0);
-                               str = rph.replacements(str, null,null);
-                       } catch (UnknownHostException e) {
-                               throw new CadiException(e);
-                       }
-               access.printf(Level.INFO, "AAFCon has URL of %s",str);
-               setInitURI(str);
-           }
-           try {
-               this.access = access;
-               this.si = si;
-               if (si.defSS.getID().equals(SecurityInfoC.DEF_ID)) { // it's the Preliminary SS, try to get a better one
-                   String mechid = access.getProperty(Config.AAF_APPID, null);
-                   if (mechid==null) {
-                       mechid=access.getProperty(Config.OAUTH_CLIENT_ID,null);
-                   }
-                   String encpass = access.getProperty(Config.AAF_APPPASS, null);
-                   if (encpass==null) {
-                       encpass = access.getProperty(Config.OAUTH_CLIENT_SECRET,null);
-                   }
-                   if (encpass==null) {
-                       String alias = access.getProperty(Config.CADI_ALIAS, mechid);
-                       if (alias==null) {
-                           access.printf(Access.Level.WARN,"%s, %s or %s required before use.", Config.CADI_ALIAS, Config.AAF_APPID, Config.OAUTH_CLIENT_ID);
-                           set(si.defSS);
-                       } else {
-                           si.defSS=x509Alias(alias);
-                           set(si.defSS);
-                       }
-                   } else {
-                       if (mechid!=null) {
-                           si.defSS=basicAuth(mechid, encpass);
-                           set(si.defSS);
-                       } else {
-                           si.defSS=new SecuritySetter<CLIENT>() {
-       
-                               @Override
-                               public String getID() {
-                                   return "";
-                               }
-       
-                               @Override
-                               public void setSecurity(CLIENT client) throws CadiException {
-                                   throw new CadiException("AAFCon has not been initialized with Credentials (SecuritySetter)");
-                               }
-       
-                               @Override
-                               public int setLastResponse(int respCode) {
-                                   return 0;
-                               }
-                           };
-                           set(si.defSS);
-                       }
-                   }
-               }
-               
-               timeout = Integer.parseInt(access.getProperty(Config.AAF_CALL_TIMEOUT, Config.AAF_CALL_TIMEOUT_DEF));
-               cleanInterval = Integer.parseInt(access.getProperty(Config.AAF_CLEAN_INTERVAL, Config.AAF_CLEAN_INTERVAL_DEF));
-               highCount = Integer.parseInt(access.getProperty(Config.AAF_HIGH_COUNT, Config.AAF_HIGH_COUNT_DEF).trim());
-               connTimeout = Integer.parseInt(access.getProperty(Config.AAF_CONN_TIMEOUT, Config.AAF_CONN_TIMEOUT_DEF).trim());
-               userExpires = Integer.parseInt(access.getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF).trim());
-               usageRefreshTriggerCount = Integer.parseInt(access.getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF).trim())-1; // zero based
-       
-               app=FQI.reverseDomain(si.defSS.getID());
-               //TODO Get Realm from AAF
-               realm="people.osaaf.org";
-       
-               env = new RosettaEnv();
-               permsDF = env.newDataFactory(Perms.class);
-               usersDF = env.newDataFactory(Users.class);
-               certsDF = env.newDataFactory(Certs.class);
-               certsDF.rootMarshal(new CertsMarshal()); // Speedier Marshaling
-               errDF = env.newDataFactory(Error.class);
-           } catch (APIException e) {
-               throw new CadiException("AAFCon cannot be configured",e);
-           }
-       }
-       protected abstract URI initURI();
+        access = copy.access;
+        apiVersion = access.getProperty(Config.AAF_API_VERSION, Config.AAF_DEFAULT_API_VERSION);
+        timeout = copy.timeout;
+        cleanInterval = copy.cleanInterval;
+        connTimeout = copy.connTimeout;
+        highCount = copy.highCount;
+        userExpires = copy.userExpires;
+        usageRefreshTriggerCount = copy.usageRefreshTriggerCount;
+        permsDF = copy.permsDF;
+        certsDF = copy.certsDF;
+        usersDF = copy.usersDF;
+        credReqDF = copy.credReqDF;
+        errDF = copy.errDF;
+        app = copy.app;
+        si = copy.si;
+        env = copy.env;
+        realm = copy.realm;
+    }
+    protected AAFCon(Access access, String tag, SecurityInfoC<CLIENT> si) throws CadiException{
+        apiVersion = access.getProperty(Config.AAF_API_VERSION, Config.AAF_DEFAULT_API_VERSION);
+        if (tag==null) {
+            throw new CadiException("AAFCon cannot be constructed without a property tag or URL");
+        } else {
+            String str = access.getProperty(tag,null);
+            if (str==null) {
+                if (tag.contains("://")) { // assume a URL
+                    str = tag;
+                } else {
+                    throw new CadiException("A URL or " + tag + " property is required.");
+                }
+            }
+            try {
+                RegistrationPropHolder rph = new RegistrationPropHolder(access, 0);
+                str = rph.replacements("AAFCon",str, null,null);
+            } catch (UnknownHostException e) {
+                throw new CadiException(e);
+            }
+            access.printf(Level.INFO, "AAFCon has URL of %s",str);
+            setInitURI(str);
+        }
+        try {
+            this.access = access;
+            this.si = si;
+            if (si.defSS.getID().equals(SecurityInfoC.DEF_ID)) { // it's the Preliminary SS, try to get a better one
+                String mechid = access.getProperty(Config.AAF_APPID, null);
+                if (mechid==null) {
+                    mechid=access.getProperty(Config.OAUTH_CLIENT_ID,null);
+                }
+                String alias = access.getProperty(Config.CADI_ALIAS, null);
+                if(alias != null) {
+                    si.defSS=x509Alias(alias);
+                    set(si.defSS);
+                } else {
+    
+                    String encpass = access.getProperty(Config.AAF_APPPASS, null);
+                    if (encpass==null) {
+                        encpass = access.getProperty(Config.OAUTH_CLIENT_SECRET,null);
+                    }
+                    
+                    if (encpass==null) {
+                        if (alias==null) {
+                            access.printf(Access.Level.WARN,"%s, %s or %s required before use.", Config.CADI_ALIAS, Config.AAF_APPID, Config.OAUTH_CLIENT_ID);
+                            set(si.defSS);
+                        }
+                    } else {
+                        if (mechid!=null) {
+                            si.defSS=basicAuth(mechid, encpass);
+                            set(si.defSS);
+                        } else {
+                            si.defSS=new SecuritySetter<CLIENT>() {
+        
+                                @Override
+                                public String getID() {
+                                    return "";
+                                }
+        
+                                @Override
+                                public void setSecurity(CLIENT client) throws CadiException {
+                                    throw new CadiException("AAFCon has not been initialized with Credentials (SecuritySetter)");
+                                }
+        
+                                @Override
+                                public int setLastResponse(int respCode) {
+                                    return 0;
+                                }
+                            };
+                            set(si.defSS);
+                        }
+                    }
+                }
+            }
+            
+            timeout = Integer.parseInt(access.getProperty(Config.AAF_CALL_TIMEOUT, Config.AAF_CALL_TIMEOUT_DEF));
+            cleanInterval = Integer.parseInt(access.getProperty(Config.AAF_CLEAN_INTERVAL, Config.AAF_CLEAN_INTERVAL_DEF));
+            highCount = Integer.parseInt(access.getProperty(Config.AAF_HIGH_COUNT, Config.AAF_HIGH_COUNT_DEF).trim());
+            connTimeout = Integer.parseInt(access.getProperty(Config.AAF_CONN_TIMEOUT, Config.AAF_CONN_TIMEOUT_DEF).trim());
+            userExpires = Integer.parseInt(access.getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF).trim());
+            usageRefreshTriggerCount = Integer.parseInt(access.getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF).trim())-1; // zero based
+    
+            app=FQI.reverseDomain(si.defSS.getID());
+            //TODO Get Realm from AAF
+            realm="people.osaaf.org";
+    
+            env = new RosettaEnv();
+            permsDF = env.newDataFactory(Perms.class);
+            usersDF = env.newDataFactory(Users.class);
+            certsDF = env.newDataFactory(Certs.class);
+            certsDF.rootMarshal(new CertsMarshal()); // Speedier Marshaling
+            credReqDF = env.newDataFactory(CredRequest.class);
+            errDF = env.newDataFactory(Error.class);
+        } catch (APIException e) {
+            throw new CadiException("AAFCon cannot be configured",e);
+        }
+    }
+    protected abstract URI initURI();
     protected abstract void setInitURI(String uriString) throws CadiException;
 
     public final String aafVersion() {
-       return apiVersion;
+        return apiVersion;
     }
     
     /**
@@ -203,8 +211,8 @@ public abstract class AAFCon<CLIENT> implements Connector {
      * @throws CadiException
      */
     public Rcli<CLIENT> client() throws CadiException {
-       return client(apiVersion);
-    }          
+        return client(apiVersion);
+    }        
 
     /**
      * Use this call to get the appropriate client based on configuration (HTTP, future)
@@ -214,7 +222,7 @@ public abstract class AAFCon<CLIENT> implements Connector {
      * @throws CadiException
      */
     public Rcli<CLIENT> client(final String apiVersion) throws CadiException {
-       Rcli<CLIENT> client = clients.get(apiVersion);
+        Rcli<CLIENT> client = clients.get(apiVersion);
         if (client==null) {
             client = rclient(initURI(),si.defSS);
             client.apiVersion(apiVersion)