Merge "AAF-876-Block of commented files are removed from the file"
[aaf/authz.git] / auth / auth-cass / src / main / java / org / onap / aaf / auth / dao / cached / CachedCredDAO.java
index 76fd553..6bdc22b 100644 (file)
@@ -26,41 +26,86 @@ import java.util.List;
 import org.onap.aaf.auth.dao.CIDAO;
 import org.onap.aaf.auth.dao.CachedDAO;
 import org.onap.aaf.auth.dao.cass.CredDAO;
+import org.onap.aaf.auth.dao.cass.CredDAO.Data;
 import org.onap.aaf.auth.dao.cass.Status;
 import org.onap.aaf.auth.env.AuthzTrans;
 import org.onap.aaf.auth.layer.Result;
 
 public class CachedCredDAO extends CachedDAO<AuthzTrans, CredDAO, CredDAO.Data> {
-       public CachedCredDAO(CredDAO dao, CIDAO<AuthzTrans> info, long expiresIn) {
-               super(dao, info, CredDAO.CACHE_SEG, expiresIn);
-       }
-       
-       /**
-        * Pass through Cred Lookup
-        * 
-        * Unlike Role and Perm, we don't need or want to cache these elements... Only used for NS Delete.
-        * 
-        * @param trans
-        * @param ns
-        * @return
-        */
-       public Result<List<CredDAO.Data>> readNS(AuthzTrans trans, final String ns) {
-               
-               return dao().readNS(trans, ns);
-       }
-       
-       public Result<List<CredDAO.Data>> readID(AuthzTrans trans, final String id) {
-               DAOGetter getter = new DAOGetter(trans,dao()) {
-                       public Result<List<CredDAO.Data>> call() {
-                               return dao().readID(trans, id);
-                       }
-               };
-               
-               Result<List<CredDAO.Data>> lurd = get(trans, id, getter);
-               if(lurd.isOK() && lurd.isEmpty()) {
-                       return Result.err(Status.ERR_UserNotFound,"No User Cred found");
-               }
-               return lurd;
-       }
+    private final ReadID readID;
+    private final ReadID readIDBath;
+    
+    public CachedCredDAO(CredDAO dao, CIDAO<AuthzTrans> info, long expiresIn) {
+        super(dao, info, CredDAO.CACHE_SEG, expiresIn);
+        if(FileGetter.isLoaded) {
+            readID = new ReadID() {
+                @Override
+                public Result<List<Data>> read(AuthzTrans trans, final String id) {
+                    return FileGetter.singleton(null).getter(id).get();
+                }
+            };
+            // Both are the same... File read in only does BAth
+            readIDBath = readID;
+        } else {
+            readID = new ReadID() {
+                @Override
+                public Result<List<Data>> read(AuthzTrans trans, final String id) {
+                    DAOGetter getter = new DAOGetter(trans,dao()) {
+                        public Result<List<CredDAO.Data>> call() {
+                            return dao().readID(trans, id);
+                        }
+                    };
+                    
+                    Result<List<CredDAO.Data>> lurd = get(trans, id, getter);
+                    if (lurd.isOK() && lurd.isEmpty()) {
+                        return Result.err(Status.ERR_UserNotFound,"No User Cred found");
+                    }
+                    return lurd;
+                }
+            };
+            
+            readIDBath = new ReadID() {
+                @Override
+                public Result<List<Data>> read(AuthzTrans trans, final String id) {
+                     DAOGetter getter = new DAOGetter(trans,dao()) {
+                         public Result<List<CredDAO.Data>> call() {
+                             return dao().readIDBAth(trans, id);
+                         }
+                     };
+                     
+                     Result<List<CredDAO.Data>> lurd = get(trans, id, getter);
+                     if (lurd.isOK() && lurd.isEmpty()) {
+                         return Result.err(Status.ERR_UserNotFound,"No User Cred found");
+                     }
+                     return lurd;
+                }
+            };
+        }
+    }
+    
+    /**
+     * Pass through Cred Lookup
+     * 
+     * Unlike Role and Perm, we don't need or want to cache these elements... Only used for NS Delete.
+     * 
+     * @param trans
+     * @param ns
+     * @return
+     */
+    public Result<List<CredDAO.Data>> readNS(AuthzTrans trans, final String ns) {
+        
+        return dao().readNS(trans, ns);
+    }
 
+    public Result<List<CredDAO.Data>> readID(AuthzTrans trans, final String id) {
+        return readID.read(trans, id);
+    }
+
+    public Result<List<Data>> readIDBAth(AuthzTrans trans, String id) {
+        return readIDBath.read(trans,id);
+    }
+
+    private interface ReadID {
+        public Result<List<CredDAO.Data>> read(final AuthzTrans trans, final String id);
+    }
 }