Cred delete fixes
[aaf/authz.git] / auth / auth-cmd / src / main / java / org / onap / aaf / auth / cmd / role / ListByUser.java
index bdcf1e5..2471c21 100644 (file)
@@ -21,6 +21,9 @@
 
 package org.onap.aaf.auth.cmd.role;
 
+import java.util.Map;
+import java.util.TreeMap;
+
 import org.onap.aaf.auth.cmd.AAFcli;
 import org.onap.aaf.auth.cmd.Cmd;
 import org.onap.aaf.auth.cmd.Param;
@@ -30,10 +33,14 @@ import org.onap.aaf.cadi.LocatorException;
 import org.onap.aaf.cadi.client.Future;
 import org.onap.aaf.cadi.client.Rcli;
 import org.onap.aaf.cadi.client.Retryable;
+import org.onap.aaf.cadi.util.Split;
 import org.onap.aaf.misc.env.APIException;
 
+import aaf.v2_0.Perm;
 import aaf.v2_0.Perms;
+import aaf.v2_0.Role;
 import aaf.v2_0.Roles;
+import aaf.v2_0.UserRole;
 import aaf.v2_0.UserRoles;
 
 /**
@@ -60,33 +67,63 @@ public class ListByUser extends Cmd {
             public Integer code(Rcli<?> client) throws CadiException, APIException {
                 Perms perms=null;
                 UserRoles urs=null;
-                Future<Roles> fr = client.read(
-                        "/authz/roles/user/"+user+(aafcli.isDetailed()?"?ns":""), 
-                        getDF(Roles.class)
-                        );
+                Roles roles = null;
+                int code;
                 Future<UserRoles> fur = client.read(
                         "/authz/userRoles/user/"+user,
                         getDF(UserRoles.class)
                     );
-                if (fr.get(AAFcli.timeout())) {
-                    if (aafcli.isDetailed()) {
-                        Future<Perms> fp = client.read(
-                                "/authz/perms/user/"+user+(aafcli.isDetailed()?"?ns":""), 
-                                getDF(Perms.class)
-                            );
-                        if (fp.get(AAFcli.timeout())) {
-                            perms = fp.value;
+                if (fur.get(AAFcli.timeout())) {
+                    urs = fur.value;
+                    code = fur.code();
+                } else {
+                       error(fur);
+                       return fur.code();
+                }
+
+                if (aafcli.isDetailed()) {
+                    roles = new Roles();
+                    Future<Perms> fp = client.read(
+                            "/authz/perms/user/"+user+"?ns&force", 
+                            getDF(Perms.class)
+                        );
+                    if (fp.get(AAFcli.timeout())) {
+                       Map<String, Role> rs = new TreeMap<>();
+                        perms = fp.value;
+                        for( Perm p : perms.getPerm()) {
+                               for(String sr : p.getRoles()) {
+                                       Role r = rs.get(sr);
+                                       if(r==null) {
+                                               r = new Role();
+                                               String[] split = Split.split('|', sr);
+                                               if(split.length>1) {
+                                                       r.setNs(split[0]);
+                                                       r.setName(split[1]);
+                                               } else {
+                                                       r.setName(sr);
+                                               }
+                                               rs.put(sr, r);
+                                               roles.getRole().add(r);
+                                       }
+                                       r.getPerms().add(p);
+                               }
                         }
-                    }
-                    if (fur.get(AAFcli.timeout())) {
-                        urs = fur.value;
-                    }
-                    
-                    ((List)parent).report(fr.value,perms,urs,HEADER,user);
+                    } 
+                    code = fp.code();
                 } else {
-                    error(fr);
+                       roles = new Roles();
+                       java.util.List<Role> lr = roles.getRole();
+                       Role r;
+                       for(UserRole ur : urs.getUserRole()) {
+                               r = new Role();
+                               r.setName(ur.getRole());
+                               lr.add(r);
+                       }
                 }
-                return fr.code();
+                
+                
+                ((List)parent).report(roles,perms,urs,HEADER,user);
+                return code;
             }
         });
     }