Remove Tabs, per Jococo
[aaf/authz.git] / auth / auth-service / src / main / java / org / onap / aaf / auth / service / facade / AuthzFacadeImpl.java
index 0e1479c..10138d2 100644 (file)
@@ -44,7 +44,9 @@ import static org.onap.aaf.auth.layer.Result.OK;
 
 import java.io.IOException;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -66,9 +68,9 @@ import org.onap.aaf.auth.service.mapper.Mapper.API;
 import org.onap.aaf.cadi.aaf.client.Examples;
 import org.onap.aaf.misc.env.APIException;
 import org.onap.aaf.misc.env.Data;
+import org.onap.aaf.misc.env.Data.TYPE;
 import org.onap.aaf.misc.env.Env;
 import org.onap.aaf.misc.env.TimeTaken;
-import org.onap.aaf.misc.env.Data.TYPE;
 import org.onap.aaf.misc.env.util.Chrono;
 import org.onap.aaf.misc.rosetta.Marshal;
 import org.onap.aaf.misc.rosetta.env.RosettaDF;
@@ -169,12 +171,19 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         String msgId;
         String[] detail;
         boolean hidemsg = false;
-        if(result.variables==null) {
+        if (result.variables==null || result.variables.length<1) {
             detail = new String[1];
         } else {
-            int l = result.variables.length;
-            detail=new String[l+1];
-            System.arraycopy(result.variables, 0, detail, 1, l);
+            List<String> dlist = new ArrayList<String>();
+            dlist.add(null);
+            String os;
+            for(Object s : result.variables) {
+                if(s!=null && (os=s.toString()).length()>0) {
+                    dlist.add(os);
+                }
+            }
+            detail = new String[dlist.size()];
+            dlist.toArray(detail);
         }
         //int httpstatus;
         
@@ -280,7 +289,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 break;
             case ERR_ChoiceNeeded:
                 msgId = "SVC1300";
-                detail = result.variables;
+                detail[0] = "Choice Needed";
                 response.setStatus(/*httpstatus=*/300);
                 break;
             case ERR_Backend: 
@@ -307,7 +316,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                     "] " +
                     holder.toString(),
                     Env.ALWAYS);
-            if(hidemsg) {
+            if (hidemsg) {
                 holder.setLength(0);
                 em = mapper().errorFromMessage(holder, msgId, "Server had an issue processing this request");
             }
@@ -344,11 +353,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST request;
             try {
                 Data<REQUEST> rd = nsRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,rd.asString());
                 }
                 request = rd.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,CREATE_NS);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
@@ -469,14 +478,14 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
      * @see com.att.authz.facade.AuthzFacade#getNSsByName(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String)
      */
     @Override
-    public Result<Void> getNSsByName(AuthzTrans trans, HttpServletResponse resp, String ns) {
+    public Result<Void> getNSsByName(AuthzTrans trans, HttpServletResponse resp, String ns, boolean full) {
         TimeTaken tt = trans.start(GET_NS_BY_NAME + ' ' + ns, Env.SUB|Env.ALWAYS);
         try {
-            Result<NSS> rp = service.getNSbyName(trans, ns);
+            Result<NSS> rp = service.getNSbyName(trans, ns, full );
             switch(rp.status) {
                 case OK: 
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -505,7 +514,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -534,7 +543,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -564,7 +573,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -593,7 +602,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -617,11 +626,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = nsRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,UPDATE_NS_DESC);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
 
@@ -706,7 +715,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<KEYS> data = keysDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -799,11 +808,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = permRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();            
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,CREATE_PERMISSION);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
@@ -836,7 +845,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK:
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -866,7 +875,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK:
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -895,7 +904,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -924,7 +933,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -954,11 +963,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             PERMS perms;
             try {
                 RosettaData<PERMS> data = permsDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 perms = data.asObject();            
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,GET_PERMISSIONS_BY_USER_WITH_QUERY);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
@@ -967,7 +976,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -997,7 +1006,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK:
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1023,7 +1032,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK:
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1054,11 +1063,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = permRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();            
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,cmdDescription);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
@@ -1086,11 +1095,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = permRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,UPDATE_PERM_DESC);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
 
@@ -1119,11 +1128,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = rolePermRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN, SET_PERMISSION_ROLES_TO);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
@@ -1152,11 +1161,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = permRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,DELETE_PERMISSION);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
 
@@ -1218,11 +1227,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = roleRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,CREATE_ROLE);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
 
@@ -1254,7 +1263,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1283,7 +1292,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1311,9 +1320,9 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             Result<ROLES> rp = service.getRolesByNS(trans, ns);
             switch(rp.status) {
                 case OK: 
-                    if(!rp.isEmpty()) {
+                    if (!rp.isEmpty()) {
                         RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
-                        if(Question.willSpecialLog(trans, trans.user())) {
+                        if (Question.willSpecialLog(trans, trans.user())) {
                             Question.logEncryptTrace(trans,data.asString());
                         }
                         data.to(resp.getOutputStream());
@@ -1345,9 +1354,9 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             Result<ROLES> rp = service.getRolesByNameOnly(trans, nameOnly);
             switch(rp.status) {
                 case OK: 
-                    if(!rp.isEmpty()) {
+                    if (!rp.isEmpty()) {
                         RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
-                        if(Question.willSpecialLog(trans, trans.user())) {
+                        if (Question.willSpecialLog(trans, trans.user())) {
                             Question.logEncryptTrace(trans,data.asString());
                         }
                         data.to(resp.getOutputStream());
@@ -1379,7 +1388,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1408,11 +1417,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = roleRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,UPDATE_ROLE_DESC);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
 
@@ -1440,11 +1449,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = rolePermRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,ADD_PERM_TO_ROLE);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
 
@@ -1473,11 +1482,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = rolePermRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,DELETE_PERM_FROM_ROLE);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
 
@@ -1551,11 +1560,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST rreq;
             try {
                 RosettaData<REQUEST> data = roleRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
                 rreq = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,CREATE_ROLE);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
@@ -1596,11 +1605,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(CREATE_CRED, Env.SUB|Env.ALWAYS);
         try {
             RosettaData<REQUEST> data = credRequestDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
             return service.createUserCred(trans, data.asObject());
-        } catch(APIException e) {
+        } catch (APIException e) {
             trans.error().log(e,"Bad Input data");
             return Result.err(Status.ERR_BadData, e.getLocalizedMessage());
         } catch (Exception e) {
@@ -1616,12 +1625,12 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(UPDATE_CRED, Env.SUB|Env.ALWAYS);
         try {
             RosettaData<REQUEST> data = credRequestDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
 
-            return service.changeUserCred(trans, data.asObject());
-        } catch(APIException e) {
+            return service.resetUserCred(trans, data.asObject());
+        } catch (APIException e) {
             trans.error().log(e,"Bad Input data");
             return Result.err(Status.ERR_BadData, e.getLocalizedMessage());
         } catch (Exception e) {
@@ -1640,12 +1649,12 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(EXTEND_CRED, Env.SUB|Env.ALWAYS);
         try {
             RosettaData<REQUEST> data = credRequestDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
 
             return service.extendUserCred(trans, data.asObject(), days);
-        } catch(APIException e) {
+        } catch (APIException e) {
             trans.error().log(e,"Bad Input data");
             return Result.err(Status.ERR_BadData, e.getLocalizedMessage());
         } catch (Exception e) {
@@ -1665,7 +1674,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(ru.status) {
                 case OK: 
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
-                    if(Question.willSpecialLog(trans,trans.user())) {
+                    if (Question.willSpecialLog(trans,trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1696,7 +1705,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(ru.status) {
                 case OK: 
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1719,12 +1728,12 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(DELETE_CRED, Env.SUB|Env.ALWAYS);
         try {
             RosettaData<REQUEST> data = credRequestDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
 
             return service.deleteUserCred(trans, data.asObject());
-        } catch(APIException e) {
+        } catch (APIException e) {
             trans.error().log(e,"Bad Input data");
             return Result.err(Status.ERR_BadData, e.getLocalizedMessage());
         } catch (Exception e) {
@@ -1741,12 +1750,12 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(DOES_CRED_MATCH, Env.SUB|Env.ALWAYS);
         try {
             RosettaData<REQUEST> data = credRequestDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
 
             return service.doesCredentialMatch(trans, data.asObject());
-        } catch(APIException e) {
+        } catch (APIException e) {
             trans.error().log(e,"Bad Input data");
             return Result.err(Status.ERR_BadData, e.getLocalizedMessage());
         } catch (IOException e) {
@@ -1788,7 +1797,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             
             switch(rci.status) {
                 case OK: 
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         RosettaData<CERTS> data = certsDF.newData(trans).load(rci.value);
                         Question.logEncryptTrace(trans,data.asString());
                         data.to(resp.getOutputStream());
@@ -1819,7 +1828,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(CREATE_DELEGATE, Env.SUB|Env.ALWAYS);
         try {    
             Data<REQUEST> data = delgRequestDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
 
@@ -1837,7 +1846,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(UPDATE_DELEGATE, Env.SUB|Env.ALWAYS);
         try {    
             Data<REQUEST> data = delgRequestDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
 
@@ -1855,7 +1864,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(DELETE_DELEGATE, Env.SUB|Env.ALWAYS);
         try {
             Data<REQUEST> data = delgRequestDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
 
@@ -1890,7 +1899,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rd.status) {
                 case OK: 
                     RosettaData<DELGS> data = delgDF.newData(trans).load(rd.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1915,7 +1924,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rd.status) {
                 case OK: 
                     RosettaData<DELGS> data = delgDF.newData(trans).load(rd.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -1936,8 +1945,8 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     private static final String GET_USERROLES = "getUserRoles";
     private static final String GET_USERROLES_BY_ROLE = "getUserRolesByRole";
     private static final String GET_USERROLES_BY_USER = "getUserRolesByUser";
-    private static final String SET_ROLES_FOR_USER = "setRolesForUser";
-    private static final String SET_USERS_FOR_ROLE = "setUsersForRole";
+//    private static final String SET_ROLES_FOR_USER = "setRolesForUser";
+//    private static final String SET_USERS_FOR_ROLE = "setUsersForRole";
     private static final String EXTEND_USER_ROLE = "extendUserRole";
     private static final String DELETE_USER_ROLE = "deleteUserRole";
     @Override
@@ -1947,12 +1956,12 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             REQUEST request;
             try {
                 Data<REQUEST> data = userRoleRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
+                if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
 
                 request = data.asObject();
-            } catch(APIException e) {
+            } catch (APIException e) {
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
             
@@ -1980,7 +1989,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(ru.status) {
                 case OK: 
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2008,7 +2017,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(ru.status) {
                 case OK: 
                     RosettaData<USERROLES> data = userrolesDF.newData(trans).load(ru.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2036,7 +2045,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(ru.status) {
                 case OK: 
                     RosettaData<USERROLES> data = userrolesDF.newData(trans).load(ru.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2057,75 +2066,6 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     }
     
 
-    @Override
-    public Result<Void> resetUsersForRole(AuthzTrans trans, HttpServletResponse resp, HttpServletRequest req) {
-        TimeTaken tt = trans.start(SET_USERS_FOR_ROLE, Env.SUB|Env.ALWAYS);
-        try {
-            REQUEST rreq;
-            try {
-                RosettaData<REQUEST> data = userRoleRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
-                    Question.logEncryptTrace(trans,data.asString());
-                }
-                rreq = data.asObject();
-            } catch(APIException e) {
-                trans.error().log("Invalid Input",IN, SET_USERS_FOR_ROLE);
-                return Result.err(Status.ERR_BadData,"Invalid Input");
-            }
-            
-            Result<Void> rp = service.resetUsersForRole(trans, rreq);
-            
-            switch(rp.status) {
-                case OK: 
-                    setContentType(resp,permsDF.getOutType());
-                    return Result.ok();
-                default:
-                    return Result.err(rp);
-            }
-        } catch (Exception e) {
-            trans.error().log(e,IN,SET_USERS_FOR_ROLE);
-            return Result.err(e);
-        } finally {
-            tt.done();
-        }
-        
-    }
-
-    @Override
-    public Result<Void> resetRolesForUser(AuthzTrans trans, HttpServletResponse resp, HttpServletRequest req) {
-        TimeTaken tt = trans.start(SET_ROLES_FOR_USER, Env.SUB|Env.ALWAYS);
-        try {
-            REQUEST rreq;
-            try {
-                RosettaData<REQUEST> data = userRoleRequestDF.newData().load(req.getInputStream());
-                if(Question.willSpecialLog(trans, trans.user())) {
-                    Question.logEncryptTrace(trans,data.asString());
-                }
-
-                rreq = data.asObject();
-            } catch(APIException e) {
-                trans.error().log("Invalid Input",IN, SET_ROLES_FOR_USER);
-                return Result.err(Status.ERR_BadData,"Invalid Input");
-            }
-            
-            Result<Void> rp = service.resetRolesForUser(trans, rreq);
-            
-            switch(rp.status) {
-                case OK: 
-                    setContentType(resp,permsDF.getOutType());
-                    return Result.ok();
-                default:
-                    return Result.err(rp);
-            }
-        } catch (Exception e) {
-            trans.error().log(e,IN,SET_ROLES_FOR_USER);
-            return Result.err(e);
-        } finally {
-            tt.done();
-        }
-        
-    }
-
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#extendUserRoleExpiration(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String, java.lang.String)
      */
@@ -2172,7 +2112,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(UPDATE_APPROVAL, Env.SUB|Env.ALWAYS);
         try {
             Data<APPROVALS> data = approvalDF.newData().load(req.getInputStream());
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }
 
@@ -2201,7 +2141,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<APPROVALS> data = approvalDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
@@ -2227,7 +2167,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<APPROVALS> data = approvalDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2253,7 +2193,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rp.status) {
                 case OK: 
                     RosettaData<APPROVALS> data = approvalDF.newData(trans).load(rp.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2287,7 +2227,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(ru.status) {
                 case OK: 
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2317,7 +2257,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(ru.status) {
                 case OK: 
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2340,6 +2280,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     public static final String GET_HISTORY_ROLE = "getHistoryByRole";
     public static final String GET_HISTORY_PERM = "getHistoryByPerm";
     public static final String GET_HISTORY_NS = "getHistoryByNS";
+    public static final String GET_HISTORY_SUBJECT = "getHistoryBySubject";
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#getHistoryByUser(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
      */
@@ -2351,8 +2292,8 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         sb.append(user);
         sb.append(" for ");
         boolean first = true;
-        for(int i : yyyymm) {
-            if(first) {
+        for (int i : yyyymm) {
+            if (first) {
                 first = false;
             } else {
                 sb.append(',');
@@ -2366,7 +2307,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rh.status) {
                 case OK: 
                     RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2395,8 +2336,8 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         sb.append(role);
         sb.append(" for ");
         boolean first = true;
-        for(int i : yyyymm) {
-            if(first) {
+        for (int i : yyyymm) {
+            if (first) {
                 first = false;
             } else {
                 sb.append(',');
@@ -2409,7 +2350,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rh.status) {
                 case OK: 
                     RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2438,8 +2379,8 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         sb.append(ns);
         sb.append(" for ");
         boolean first = true;
-        for(int i : yyyymm) {
-            if(first) {
+        for (int i : yyyymm) {
+            if (first) {
                 first = false;
             } else {
                 sb.append(',');
@@ -2452,7 +2393,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rh.status) {
                 case OK: 
                     RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2481,8 +2422,8 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         sb.append(perm);
         sb.append(" for ");
         boolean first = true;
-        for(int i : yyyymm) {
-            if(first) {
+        for (int i : yyyymm) {
+            if (first) {
                 first = false;
             } else {
                 sb.append(',');
@@ -2495,7 +2436,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             switch(rh.status) {
                 case OK: 
                     RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
-                    if(Question.willSpecialLog(trans, trans.user())) {
+                    if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
 
@@ -2513,6 +2454,50 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         }
     }
 
+    /* (non-Javadoc)
+     * @see com.att.authz.facade.AuthzFacade#getHistoryByUser(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+     */
+    @Override
+    public Result<Void> getHistoryBySubject(AuthzTrans trans, HttpServletResponse resp, String subject, String target, int[] yyyymm, final int sort) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(GET_HISTORY_SUBJECT);
+        sb.append(' ');
+        sb.append(subject);
+        sb.append(" for ");
+        boolean first = true;
+        for (int i : yyyymm) {
+            if (first) {
+                first = false;
+            } else {
+                sb.append(',');
+            }
+            sb.append(i);
+        }
+        TimeTaken tt = trans.start(sb.toString(), Env.SUB|Env.ALWAYS);
+
+        try {
+            Result<HISTORY> rh = service.getHistoryBySubject(trans,subject,target,yyyymm,sort);
+            switch(rh.status) {
+                case OK: 
+                    RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
+                    if (Question.willSpecialLog(trans, trans.user())) {
+                        Question.logEncryptTrace(trans,data.asString());
+                    }
+
+                    data.to(resp.getOutputStream());
+                    setContentType(resp,historyDF.getOutType());
+                    return Result.ok();
+                default:
+                    return Result.err(rh);
+            }
+        } catch (Exception e) {
+            trans.error().log(e,IN,GET_HISTORY_USER);
+            return Result.err(e);
+        } finally {
+            tt.done();
+        }
+    }
+
     public final static String CACHE_CLEAR = "cacheClear "; 
 //    public final static String CACHE_VALIDATE = "validateCache";
     
@@ -2541,10 +2526,10 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             String[] segs = segments.split("\\s*,\\s*");
             int isegs[] = new int[segs.length];
-            for(int i=0;i<segs.length;++i) {
+            for (int i=0;i<segs.length;++i) {
                 try {
                     isegs[i] = Integer.parseInt(segs[i]);
-                } catch(NumberFormatException nfe) {
+                } catch (NumberFormatException nfe) {
                     isegs[i] = -1;
                 }
             }
@@ -2576,32 +2561,32 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             Api api = new Api();
             Api.Route ar;
             Method[] meths = AuthzCassServiceImpl.class.getDeclaredMethods();
-            for(RouteReport rr : rservlet.routeReport()) {
+            for (RouteReport rr : rservlet.routeReport()) {
                 api.getRoute().add(ar = new Api.Route());
                 ar.setMeth(rr.meth.name());
                 ar.setPath(rr.path);
                 ar.setDesc(rr.desc);
                 ar.getContentType().addAll(rr.contextTypes);
-                for(Method m : meths) {
+                for (Method m : meths) {
                     ApiDoc ad;
-                    if((ad = m.getAnnotation(ApiDoc.class))!=null &&
+                    if ((ad = m.getAnnotation(ApiDoc.class))!=null &&
                             rr.meth.equals(ad.method()) &&
                             rr.path.equals(ad.path())) {
-                        for(String param : ad.params()) {
+                        for (String param : ad.params()) {
                             ar.getParam().add(param);
                         }
-                        for(String text : ad.text()) {
+                        for (String text : ad.text()) {
                             ar.getComments().add(text);
                         }
                         ar.setExpected(ad.expectedCode());
-                        for(int ec : ad.errorCodes()) {
+                        for (int ec : ad.errorCodes()) {
                             ar.getExplicitErr().add(ec);
                         }
                     }
                 }
             }
             RosettaData<Api> data = apiDF.newData(trans).load(api);
-            if(Question.willSpecialLog(trans, trans.user())) {
+            if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
             }