SonarFix
[aaf/authz.git] / auth / auth-service / src / main / java / org / onap / aaf / auth / service / facade / AuthzFacadeImpl.java
index a2fb220..4a299e7 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -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;
@@ -78,7 +80,7 @@ import aaf.v2_0.Api;
 
 /**
  * AuthzFacade
- * 
+ *
  * This Service Facade encapsulates the essence of the API Service can do, and provides
  * a single created object for elements such as RosettaDF.
  *
@@ -89,14 +91,14 @@ import aaf.v2_0.Api;
  *         a) In the future, we may support multiple Response Formats, aka JSON or XML, based on User Request.
  * 4) Log Service info, warnings and exceptions as necessary
  * 5) When asked by the API layer, this will create and write Error content to the OutputStream
- * 
- * Note: This Class does NOT set the HTTP Status Code.  That is up to the API layer, so that it can be 
+ *
+ * Note: This Class does NOT set the HTTP Status Code.  That is up to the API layer, so that it can be
  * clearly coordinated with the API Documentation
- * 
+ *
  * @author Pavani & Jonathan
  *
  */
-public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DELGS,CERTS,KEYS,REQUEST,HISTORY,ERR,APPROVALS> extends FacadeImpl implements AuthzFacade 
+public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DELGS,CERTS,KEYS,REQUEST,HISTORY,ERR,APPROVALS> extends FacadeImpl implements AuthzFacade
     {
     private static final String FORBIDDEN = "Forbidden";
     private static final String NOT_FOUND = "Not Found";
@@ -133,7 +135,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         (nssDF                 = env.newDataFactory(service.mapper().getClass(API.NSS))).in(dataType).out(dataType);
         (permRequestDF         = env.newDataFactory(service.mapper().getClass(API.PERM_REQ))).in(dataType).out(dataType);
         (permsDF             = env.newDataFactory(service.mapper().getClass(API.PERMS))).in(dataType).out(dataType);
-//        (permKeyDF            = env.newDataFactory(service.mapper().getClass(API.PERM_KEY))).in(dataType).out(dataType);
+
         (roleDF             = env.newDataFactory(service.mapper().getClass(API.ROLES))).in(dataType).out(dataType);
         (roleRequestDF         = env.newDataFactory(service.mapper().getClass(API.ROLE_REQ))).in(dataType).out(dataType);
         (usersDF             = env.newDataFactory(service.mapper().getClass(API.USERS))).in(dataType).out(dataType);
@@ -153,14 +155,14 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         (errDF                 = env.newDataFactory(service.mapper().getClass(API.ERROR))).in(dataType).out(dataType);
         (apiDF                = env.newDataFactory(Api.class)).in(dataType).out(dataType);
     }
-    
+
     public Mapper<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DELGS,CERTS,KEYS,REQUEST,HISTORY,ERR,APPROVALS> mapper() {
         return service.mapper();
     }
-    
+
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#error(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, int)
-     * 
+     *
      * Note: Conforms to AT&T TSS RESTful Error Structure
      */
     @Override
@@ -169,15 +171,20 @@ 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<>();
+            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;
-        
         switch(result.status) {
             case ERR_ActionNotCompleted:
                 msgId = "SVC1202";
@@ -207,7 +214,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 detail[0] = msg;
                 response.setStatus(/*httpstatus=*/403);
                 break;
-                
+
             case ERR_NsNotFound:
                 msgId = "SVC2404";
                 detail[0] = NOT_FOUND;
@@ -254,25 +261,25 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 detail[0] = NOT_ACCEPTABLE;
                 response.setStatus(/*httpstatus=*/406);
                 break;
-                
+
             case ERR_ConflictAlreadyExists:
                 msgId = "SVC1409";
                 detail[0] = "Conflict Already Exists";
                 response.setStatus(/*httpstatus=*/409);
                 break;
-            
+
             case ERR_DependencyExists:
                 msgId = "SVC1424";
                 detail[0] = "Failed Dependency";
                 response.setStatus(/*httpstatus=*/424);
                 break;
-            
+
             case ERR_NotImplemented:
                 msgId = "SVC1501";
-                detail[0] = "Not Implemented"; 
+                detail[0] = "Not Implemented";
                 response.setStatus(/*httpstatus=*/501);
                 break;
-                
+
             case Status.ACC_Future:
                 msgId = "SVC1202";
                 detail[0] = "Accepted for Future, pending Approvals";
@@ -280,20 +287,17 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 break;
             case ERR_ChoiceNeeded:
                 msgId = "SVC1300";
-                detail = new String[result.variables.length];
-                for(int i=0; i<result.variables.length;++i) {
-                       detail[i]=result.variables[i].toString();
-                }
+                detail[0] = "Choice Needed";
                 response.setStatus(/*httpstatus=*/300);
                 break;
-            case ERR_Backend: 
+            case ERR_Backend:
                 msgId = "SVC2500";
                 detail[0] = GENERAL_SERVICE_ERROR;
                 response.setStatus(/*httpstatus=*/500);
                 hidemsg = true;
                 break;
 
-            default: 
+            default:
                 msgId = "SVC1500";
                 detail[0] = GENERAL_SERVICE_ERROR;
                 response.setStatus(/*httpstatus=*/500);
@@ -305,7 +309,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             StringBuilder holder = new StringBuilder();
             ERR em = service.mapper().errorFromMessage(holder,msgId,msg,detail);
             trans.checkpoint(
-                    "ErrResp [" + 
+                    "ErrResp [" +
                     msgId +
                     "] " +
                     holder.toString(),
@@ -319,7 +323,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             trans.error().log(e,"unable to send response for",msg);
         }
     }
-    
+
     ///////////////////////////
     // Namespace
     ///////////////////////////
@@ -335,7 +339,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     public static final String GET_NS_CHILDREN = "getNamespaceChildren";
     public static final String UPDATE_NS_DESC = "updateNamespaceDescription";
     public static final String DELETE_NS = "deleteNamespace";
-    
+
 
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#createNS(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
@@ -355,10 +359,10 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 trans.error().log("Invalid Input",IN,CREATE_NS);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
-            
+
             Result<Void> rp = service.createNS(trans,request,type);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,nsRequestDF.getOutType());
                     return Result.ok();
                 default:
@@ -381,7 +385,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.addAdminNS(trans,ns,id);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     //TODO Perms??
                     setContentType(resp,nsRequestDF.getOutType());
                     resp.getOutputStream().println();
@@ -406,7 +410,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.delAdminNS(trans, ns, id);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,nsRequestDF.getOutType());
                     return Result.ok();
                 default:
@@ -429,7 +433,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.addResponsibleNS(trans,ns,id);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,nsRequestDF.getOutType());
                     resp.getOutputStream().println();
                     return Result.ok();
@@ -453,7 +457,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.delResponsibleNS(trans, ns, id);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,nsRequestDF.getOutType());
                     resp.getOutputStream().println();
                     return Result.ok();
@@ -477,7 +481,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<NSS> rp = service.getNSbyName(trans, ns, full );
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -495,7 +499,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
 //    TODO: uncomment when on cassandra 2.1.2 for MyNamespace GUI page
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#getNSsByAdmin(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String)
@@ -506,7 +510,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<NSS> rp = service.getNSbyAdmin(trans, user, full);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -524,7 +528,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
 //    TODO: uncomment when on cassandra 2.1.2 for MyNamespace GUI page
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#getNSsByResponsible(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String)
@@ -535,7 +539,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<NSS> rp = service.getNSbyResponsible(trans, user, full);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -563,9 +567,9 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         TimeTaken tt = trans.start(GET_NS_BY_EITHER + ' ' + user, Env.SUB|Env.ALWAYS);
         try {
             Result<NSS> rp = service.getNSbyEither(trans, user, full);
-            
+
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -594,7 +598,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<NSS> rp = service.getNSsChildren(trans, parent);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<NSS> data = nssDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -631,7 +635,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             }
             Result<Void> rp = service.updateNsDescription(trans, rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,nsRequestDF.getOutType());
                     return Result.ok();
                 default:
@@ -644,7 +648,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     /*
      * (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#requestNS(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
@@ -655,7 +659,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.deleteNS(trans,ns);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,nsRequestDF.getOutType());
                     return Result.ok();
                 default:
@@ -673,7 +677,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     private final static String NS_UPDATE_ATTRIB = "nsUpdateAttrib";
     private final static String READ_NS_BY_ATTRIB = "readNsByAttrib";
     private final static String NS_DELETE_ATTRIB = "nsDeleteAttrib";
-    
+
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#createAttribForNS(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String, java.lang.String, java.lang.String)
      */
@@ -683,7 +687,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<?> rp = service.createNsAttrib(trans,ns,key,value);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp, keysDF.getOutType());
                     resp.getOutputStream().println();
                     return Result.ok();
@@ -707,7 +711,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<KEYS> rp = service.readNsByAttrib(trans, key);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<KEYS> data = keysDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -735,7 +739,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<?> rp = service.updateNsAttrib(trans,ns,key,value);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp, keysDF.getOutType());
                     resp.getOutputStream().println();
                     return Result.ok();
@@ -760,7 +764,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<?> rp = service.deleteNsAttrib(trans,ns,key);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp, keysDF.getOutType());
                     resp.getOutputStream().println();
                     return Result.ok();
@@ -790,14 +794,14 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     public static final String UPDATE_PERM_DESC = "updatePermissionDescription";
     public static final String SET_PERMISSION_ROLES_TO = "setPermissionRolesTo";
     public static final String DELETE_PERMISSION = "deletePermission";
-    
+
     /*
      * (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#createOrUpdatePerm(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean, java.lang.String, java.lang.String, java.lang.String)
      */
     @Override
     public Result<Void> createPerm(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) {
-        TimeTaken tt = trans.start( CREATE_PERMISSION, Env.SUB|Env.ALWAYS);    
+        TimeTaken tt = trans.start( CREATE_PERMISSION, Env.SUB|Env.ALWAYS);
         try {
             REQUEST rreq;
             try {
@@ -805,15 +809,15 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
-                rreq = data.asObject();            
+                rreq = data.asObject();
             } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,CREATE_PERMISSION);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
-            
+
             Result<Void> rp = service.createPerm(trans,rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -826,7 +830,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#getChildPerms(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String)
      */
@@ -834,7 +838,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     public Result<Void> getPermsByType(AuthzTrans trans, HttpServletResponse resp, String perm) {
         TimeTaken tt = trans.start(GET_PERMS_BY_TYPE + ' ' + perm, Env.SUB|Env.ALWAYS);
         try {
-            
+
             Result<PERMS> rp = service.getPermsByType(trans, perm);
             switch(rp.status) {
                 case OK:
@@ -856,15 +860,15 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
-    public Result<Void> getPermsByName(AuthzTrans trans, HttpServletResponse resp, 
+    public Result<Void> getPermsByName(AuthzTrans trans, HttpServletResponse resp,
             String type, String instance, String action) {
-        
+
         TimeTaken tt = trans.start(GET_PERMS_BY_NAME + ' ' + type
                 + '|' + instance + '|' + action, Env.SUB|Env.ALWAYS);
         try {
-            
+
             Result<PERMS> rp = service.getPermsByName(trans, type, instance, action);
             switch(rp.status) {
                 case OK:
@@ -896,7 +900,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<PERMS> rp = service.getPermsByUser(trans, user);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -915,7 +919,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#getPermissionByUser(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String)
      */
@@ -925,7 +929,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<PERMS> rp = service.getPermsByUserScope(trans, user, scopes);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -946,7 +950,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     }
 
 
-    
+
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#getPermissionByUser(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String)
      */
@@ -960,7 +964,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
-                perms = data.asObject();            
+                perms = data.asObject();
             } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,GET_PERMISSIONS_BY_USER_WITH_QUERY);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
@@ -968,7 +972,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
 
             Result<PERMS> rp = service.getPermsByUser(trans, perms, user);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<PERMS> data = permsDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -988,7 +992,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         }
     }
 
-    
+
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#getPermissionsForRole(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String)
      */
@@ -1017,7 +1021,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> getPermsByNS(AuthzTrans trans,HttpServletResponse resp,String ns) {
         TimeTaken tt = trans.start(GET_PERMISSIONS_BY_NS + ' ' + ns, Env.SUB|Env.ALWAYS);
@@ -1052,7 +1056,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     public Result<Void> renamePerm(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp,
             String origType, String origInstance, String origAction) {
         String cmdDescription = UPDATE_PERMISSION;
-        TimeTaken tt = trans.start( cmdDescription    + ' ' + origType + ' ' + origInstance + ' ' + origAction, Env.SUB|Env.ALWAYS);    
+        TimeTaken tt = trans.start( cmdDescription    + ' ' + origType + ' ' + origInstance + ' ' + origAction, Env.SUB|Env.ALWAYS);
         try {
             REQUEST rreq;
             try {
@@ -1060,15 +1064,15 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 if (Question.willSpecialLog(trans, trans.user())) {
                     Question.logEncryptTrace(trans,data.asString());
                 }
-                rreq = data.asObject();            
+                rreq = data.asObject();
             } catch (APIException e) {
                 trans.error().log("Invalid Input",IN,cmdDescription);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
-            
+
             Result<Void> rp = service.renamePerm(trans,rreq, origType, origInstance, origAction);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -1081,7 +1085,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> updatePermDescription(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) {
         TimeTaken tt = trans.start(UPDATE_PERM_DESC, Env.SUB|Env.ALWAYS);
@@ -1100,7 +1104,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             }
             Result<Void> rp = service.updatePermDescription(trans, rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permRequestDF.getOutType());
                     return Result.ok();
                 default:
@@ -1113,8 +1117,8 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
-    
+
+
     @Override
     public Result<Void> resetPermRoles(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) {
         TimeTaken tt = trans.start(SET_PERMISSION_ROLES_TO, Env.SUB|Env.ALWAYS);
@@ -1130,11 +1134,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 trans.error().log("Invalid Input",IN, SET_PERMISSION_ROLES_TO);
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
-            
+
             Result<Void> rp = service.resetPermRoles(trans, rreq);
-            
+
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -1147,7 +1151,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> deletePerm(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) {
         TimeTaken tt = trans.start(DELETE_PERMISSION, Env.SUB|Env.ALWAYS);
@@ -1167,7 +1171,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
 
             Result<Void> rp = service.deletePerm(trans,rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -1187,7 +1191,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.deletePerm(trans,type,instance,action);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -1207,7 +1211,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     public static final String GET_ROLES_BY_NAME_ONLY = "getRolesByNameOnly";
     public static final String GET_ROLES_BY_NAME = "getRolesByName";
     public static final String GET_ROLES_BY_PERM = "getRolesByPerm";
-    public static final String UPDATE_ROLE_DESC = "updateRoleDescription"; 
+    public static final String UPDATE_ROLE_DESC = "updateRoleDescription";
     public static final String ADD_PERM_TO_ROLE = "addPermissionToRole";
     public static final String DELETE_PERM_FROM_ROLE = "deletePermissionFromRole";
     public static final String UPDATE_MGTPERM_ROLE = "updateMgtPermRole";
@@ -1232,7 +1236,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             }
             Result<Void> rp = service.createRole(trans, rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,roleRequestDF.getOutType());
                     return Result.ok();
                 default:
@@ -1255,7 +1259,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<ROLES> rp = service.getRolesByName(trans, role);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -1284,7 +1288,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<ROLES> rp = service.getRolesByUser(trans, user);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -1313,7 +1317,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<ROLES> rp = service.getRolesByNS(trans, ns);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     if (!rp.isEmpty()) {
                         RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
                         if (Question.willSpecialLog(trans, trans.user())) {
@@ -1347,7 +1351,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<ROLES> rp = service.getRolesByNameOnly(trans, nameOnly);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     if (!rp.isEmpty()) {
                         RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
                         if (Question.willSpecialLog(trans, trans.user())) {
@@ -1380,7 +1384,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<ROLES> rp = service.getRolesByPerm(trans, type,instance,action);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<ROLES> data = roleDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -1422,7 +1426,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             }
             Result<Void> rp = service.updateRoleDescription(trans, rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,roleRequestDF.getOutType());
                     return Result.ok();
                 default:
@@ -1454,7 +1458,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             }
             Result<Void> rp = service.addPermToRole(trans, rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     resp.getOutputStream().println();
                     return Result.ok();
@@ -1487,7 +1491,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             }
             Result<Void> rp = service.delPermFromRole(trans, rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     resp.getOutputStream().println();
                     return Result.ok();
@@ -1512,7 +1516,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.delPermFromRole(trans, role, type, instance, action);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     resp.getOutputStream().println();
                     return Result.ok();
@@ -1533,7 +1537,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.deleteRole(trans, role);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -1565,7 +1569,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
 
             Result<Void> rp = service.deleteRole(trans, rreq);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -1593,7 +1597,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     @Override
     /**
      * Create Credential
-     * 
+     *
      */
     public Result<Void> createUserCred(AuthzTrans trans, HttpServletRequest req) {
         TimeTaken tt = trans.start(CREATE_CRED, Env.SUB|Env.ALWAYS);
@@ -1623,7 +1627,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
                 Question.logEncryptTrace(trans,data.asString());
             }
 
-            return service.changeUserCred(trans, data.asObject());
+            return service.resetUserCred(trans, data.asObject());
         } catch (APIException e) {
             trans.error().log(e,"Bad Input data");
             return Result.err(Status.ERR_BadData, e.getLocalizedMessage());
@@ -1662,11 +1666,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     @Override
     public Result<Void> getCredsByNS(AuthzTrans trans, HttpServletResponse resp, String ns) {
         TimeTaken tt = trans.start(GET_CREDS_BY_NS + ' ' + ns, Env.SUB|Env.ALWAYS);
-        
+
         try {
             Result<USERS> ru = service.getCredsByNS(trans,ns);
             switch(ru.status) {
-                case OK: 
+                case OK:
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
                     if (Question.willSpecialLog(trans,trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -1683,21 +1687,21 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         } finally {
             tt.done();
         }
-        
+
     }
-    
-    
+
+
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#getCredsByID(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String)
      */
     @Override
     public Result<Void> getCredsByID(AuthzTrans trans, HttpServletResponse resp, String id) {
         TimeTaken tt = trans.start(GET_CREDS_BY_ID + ' ' + id, Env.SUB|Env.ALWAYS);
-        
+
         try {
             Result<USERS> ru = service.getCredsByID(trans,id);
             switch(ru.status) {
-                case OK: 
+                case OK:
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -1714,7 +1718,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         } finally {
             tt.done();
         }
-        
+
     }
 
     @Override
@@ -1735,10 +1739,10 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             return Result.err(e);
         } finally {
             tt.done();
-        }    
+        }
     }
-    
-    
+
+
     @Override
     public Result<Date> doesCredentialMatch(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) {
         TimeTaken tt = trans.start(DOES_CRED_MATCH, Env.SUB|Env.ALWAYS);
@@ -1757,7 +1761,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             return Result.err(e);
         } finally {
             tt.done();
-        }    
+        }
     }
 
 
@@ -1786,11 +1790,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     @Override
     public Result<Void> getCertInfoByID(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp, String id) {
         TimeTaken tt = trans.start(GET_CERT_BY_ID, Env.SUB|Env.ALWAYS);
-        try {    
+        try {
             Result<CERTS> rci = service.getCertInfoByID(trans,req,id);
-            
+
             switch(rci.status) {
-                case OK: 
+                case OK:
                     if (Question.willSpecialLog(trans, trans.user())) {
                         RosettaData<CERTS> data = certsDF.newData(trans).load(rci.value);
                         Question.logEncryptTrace(trans,data.asString());
@@ -1816,11 +1820,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     public static final String DELETE_DELEGATE = "deleteDelegate";
     public static final String GET_DELEGATE_USER = "getDelegatesByUser";
     public static final String GET_DELEGATE_DELG = "getDelegatesByDelegate";
-    
+
     @Override
     public Result<Void> createDelegate(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) {
         TimeTaken tt = trans.start(CREATE_DELEGATE, Env.SUB|Env.ALWAYS);
-        try {    
+        try {
             Data<REQUEST> data = delgRequestDF.newData().load(req.getInputStream());
             if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
@@ -1834,11 +1838,11 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> updateDelegate(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) {
         TimeTaken tt = trans.start(UPDATE_DELEGATE, Env.SUB|Env.ALWAYS);
-        try {    
+        try {
             Data<REQUEST> data = delgRequestDF.newData().load(req.getInputStream());
             if (Question.willSpecialLog(trans, trans.user())) {
                 Question.logEncryptTrace(trans,data.asString());
@@ -1852,7 +1856,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> deleteDelegate(AuthzTrans trans,  HttpServletRequest req, HttpServletResponse resp) {
         TimeTaken tt = trans.start(DELETE_DELEGATE, Env.SUB|Env.ALWAYS);
@@ -1870,7 +1874,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> deleteDelegate(AuthzTrans trans, String userName) {
         TimeTaken tt = trans.start(DELETE_DELEGATE + ' ' + userName, Env.SUB|Env.ALWAYS);
@@ -1883,15 +1887,15 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> getDelegatesByUser(AuthzTrans trans, String user, HttpServletResponse resp) {
         TimeTaken tt = trans.start(GET_DELEGATE_USER, Env.SUB|Env.ALWAYS);
         try {
             Result<DELGS> rd = service.getDelegatesByUser(trans, user);
-            
+
             switch(rd.status) {
-                case OK: 
+                case OK:
                     RosettaData<DELGS> data = delgDF.newData(trans).load(rd.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -1916,7 +1920,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<DELGS> rd = service.getDelegatesByDelegate(trans, delegate);
             switch(rd.status) {
-                case OK: 
+                case OK:
                     RosettaData<DELGS> data = delgDF.newData(trans).load(rd.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -1939,8 +1943,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
@@ -1958,10 +1962,10 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             } catch (APIException e) {
                 return Result.err(Status.ERR_BadData,"Invalid Input");
             }
-            
+
             Result<Void> rp = service.createUserRole(trans,request);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -1974,14 +1978,14 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> getUserInRole(AuthzTrans trans, HttpServletResponse resp, String user, String role) {
         TimeTaken tt = trans.start(GET_USERROLES + ' ' + user + '|' + role, Env.SUB|Env.ALWAYS);
         try {
             Result<USERS> ru = service.getUserInRole(trans,user,role);
             switch(ru.status) {
-                case OK: 
+                case OK:
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2009,7 +2013,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<USERROLES> ru = service.getUserRolesByUser(trans,user);
             switch(ru.status) {
-                case OK: 
+                case OK:
                     RosettaData<USERROLES> data = userrolesDF.newData(trans).load(ru.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2030,14 +2034,14 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         }
 
     }
-    
+
     @Override
     public Result<Void> getUserRolesByRole(AuthzTrans trans, HttpServletResponse resp, String role) {
         TimeTaken tt = trans.start(GET_USERROLES_BY_ROLE + ' ' + role, Env.SUB|Env.ALWAYS);
         try {
             Result<USERROLES> ru = service.getUserRolesByRole(trans,role);
             switch(ru.status) {
-                case OK: 
+                case OK:
                     RosettaData<USERROLES> data = userrolesDF.newData(trans).load(ru.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2058,76 +2062,7 @@ 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)
@@ -2151,7 +2086,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<Void> rp = service.deleteUserRole(trans,user,role);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -2169,7 +2104,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     private static final String GET_APPROVALS_BY_USER = "getApprovalsByUser.";
     private static final String GET_APPROVALS_BY_TICKET = "getApprovalsByTicket.";
     private static final String GET_APPROVALS_BY_APPROVER = "getApprovalsByApprover.";
-    
+
     @Override
     public Result<Void> updateApproval(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) {
         TimeTaken tt = trans.start(UPDATE_APPROVAL, Env.SUB|Env.ALWAYS);
@@ -2180,9 +2115,9 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             }
 
             Result<Void> rp = service.updateApproval(trans, data.asObject());
-            
+
             switch(rp.status) {
-                case OK: 
+                case OK:
                     setContentType(resp,approvalDF.getOutType());
                     return Result.ok();
                 default:
@@ -2195,20 +2130,20 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
     @Override
     public Result<Void> getApprovalsByUser(AuthzTrans trans, HttpServletResponse resp, String user) {
         TimeTaken tt = trans.start(GET_APPROVALS_BY_USER + ' ' + user, Env.SUB|Env.ALWAYS);
         try {
             Result<APPROVALS> rp = service.getApprovalsByUser(trans, user);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<APPROVALS> data = approvalDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
                     }
                     data.to(resp.getOutputStream());
-                    
+
                     setContentType(resp,permsDF.getOutType());
                     return Result.ok();
                 default:
@@ -2228,7 +2163,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<APPROVALS> rp = service.getApprovalsByApprover(trans, approver);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<APPROVALS> data = approvalDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2254,7 +2189,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<APPROVALS> rp = service.getApprovalsByTicket(trans, ticket);
             switch(rp.status) {
-                case OK: 
+                case OK:
                     RosettaData<APPROVALS> data = approvalDF.newData(trans).load(rp.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2275,7 +2210,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     }
 
 
-    
+
     public static final String GET_USERS_PERMISSION = "getUsersByPermission";
     public static final String GET_USERS_ROLE = "getUsersByRole";
 
@@ -2288,7 +2223,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<USERS> ru = service.getUsersByRole(trans,role);
             switch(ru.status) {
-                case OK: 
+                case OK:
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2312,13 +2247,13 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
      * @see com.att.authz.facade.AuthzFacade#getUsersByPermission(org.onap.aaf.auth.env.test.AuthzTrans, javax.servlet.http.HttpServletResponse, java.lang.String, java.lang.String, java.lang.String)
      */
     @Override
-    public Result<Void> getUsersByPermission(AuthzTrans trans, HttpServletResponse resp, 
+    public Result<Void> getUsersByPermission(AuthzTrans trans, HttpServletResponse resp,
             String type, String instance, String action) {
         TimeTaken tt = trans.start(GET_USERS_PERMISSION + ' ' + type + ' ' + instance + ' ' +action, Env.SUB|Env.ALWAYS);
         try {
             Result<USERS> ru = service.getUsersByPermission(trans,type,instance,action);
             switch(ru.status) {
-                case OK: 
+                case OK:
                     RosettaData<USERS> data = usersDF.newData(trans).load(ru.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2338,11 +2273,12 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         }
     }
 
-    
+
     public static final String GET_HISTORY_USER = "getHistoryByUser";
     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)
      */
@@ -2367,7 +2303,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<HISTORY> rh = service.getHistoryByUser(trans,user,yyyymm,sort);
             switch(rh.status) {
-                case OK: 
+                case OK:
                     RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2410,7 +2346,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<HISTORY> rh = service.getHistoryByRole(trans,role,yyyymm,sort);
             switch(rh.status) {
-                case OK: 
+                case OK:
                     RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2453,7 +2389,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<HISTORY> rh = service.getHistoryByNS(trans,ns,yyyymm,sort);
             switch(rh.status) {
-                case OK: 
+                case OK:
                     RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2496,7 +2432,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         try {
             Result<HISTORY> rh = service.getHistoryByPerm(trans,perm,yyyymm,sort);
             switch(rh.status) {
-                case OK: 
+                case OK:
                     RosettaData<HISTORY> data = historyDF.newData(trans).load(rh.value);
                     if (Question.willSpecialLog(trans, trans.user())) {
                         Question.logEncryptTrace(trans,data.asString());
@@ -2516,9 +2452,53 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
         }
     }
 
-    public final static String CACHE_CLEAR = "cacheClear "; 
+    /* (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";
-    
+
     /* (non-Javadoc)
      * @see com.att.authz.facade.AuthzFacade#cacheClear(org.onap.aaf.auth.env.test.AuthzTrans, java.lang.String)
      */
@@ -2619,7 +2599,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
             tt.done();
         }
     }
-    
+
 
     public final static String API_EXAMPLE = "apiExample";
 
@@ -2630,7 +2610,7 @@ public abstract class AuthzFacadeImpl<NSS,PERMS,PERMKEY,ROLES,USERS,USERROLES,DE
     public Result<Void> getAPIExample(AuthzTrans trans, HttpServletResponse resp, String nameOrContentType, boolean optional) {
         TimeTaken tt = trans.start(API_EXAMPLE, Env.SUB);
         try {
-            String content =Examples.print(apiDF.getEnv(), nameOrContentType, optional); 
+            String content =Examples.print(apiDF.getEnv(), nameOrContentType, optional);
             resp.getOutputStream().print(content);
             setContentType(resp,content.contains("<?xml")?TYPE.XML:TYPE.JSON);
             return Result.ok();