Merge "Annotate the "Visitor" interface with the @FunctionalInterface annotation"
[aaf/authz.git] / auth / auth-cmd / src / main / java / org / onap / aaf / auth / cmd / user / ListForPermission.java
index 3293810..b40c96c 100644 (file)
@@ -21,6 +21,8 @@
 
 package org.onap.aaf.auth.cmd.user;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.util.Collections;
 import java.util.Comparator;
 
@@ -33,6 +35,7 @@ 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.config.Config;
 import org.onap.aaf.misc.env.APIException;
 
 import aaf.v2_0.Users;
@@ -44,60 +47,62 @@ import aaf.v2_0.Users.User;
  *
  */
 public class ListForPermission extends Cmd {
-       private static final String HEADER = "List Users for Permission";
-       public ListForPermission(List parent) {
-               super(parent,"perm", 
-                               new Param("type",true),
-                               new Param("instance",true),
-                               new Param("action",true)); 
-       }
+    private static final String HEADER = "List Users for Permission";
+    public ListForPermission(List parent) {
+        super(parent,"perm", 
+                new Param("type",true),
+                new Param("instance",true),
+                new Param("action",true)); 
+    }
 
-       @Override
-       public int _exec(final int index, final String ... args) throws CadiException, APIException, LocatorException {
-               return same(new Retryable<Integer>() {
-                       @Override
-                       public Integer code(Rcli<?> client) throws CadiException, APIException {
-                               int idx = index;
-                               String type = args[idx++];
-                               String instance = args[idx++];
-                               if("\\*".equals(instance))instance="*";
-                               String action = args[idx++];
-                               if("\\*".equals(action))action="*";
-                               Future<Users> fp = client.read(
-                                               "/authz/users/perm/"+type+'/'+instance+'/'+action, 
-                                               getDF(Users.class)
-                                               );
-                               if(fp.get(AAFcli.timeout())) {
-                                       if (aafcli.isTest())
-                                               Collections.sort(fp.value.getUser(), new Comparator<User>() {
-                                                       @Override
-                                                       public int compare(User u1, User u2) {
-                                                               return u1.getId().compareTo(u2.getId());
-                                                       }                       
-                                               });
-                                       ((org.onap.aaf.auth.cmd.user.List)parent).report(fp.value,false,HEADER,type+"|"+instance+"|"+action);
-                                       if(fp.code()==404)return 200;
-                               } else {
-                                       error(fp);
-                               }
-                               return fp.code();
-                       }
-               });
-       }
-       
-       @Override
-       public void detailedHelp(int _indent, StringBuilder sb) {
-               int indent = _indent;
-               detailLine(sb,indent,HEADER);
-               indent+=2;
-               detailLine(sb,indent,"This report lists the users associated to Permissions.  Since Users");
-               detailLine(sb,indent,"are associated to Roles, and Roles have Permissions, this report");
-               detailLine(sb,indent,"accomodates all these linkages.");
-               sb.append('\n');
-               detailLine(sb,indent,"The URL must contain the Permission's type,instance and action, and ");
-               detailLine(sb,indent,"may include \"*\"s (type in as \\\\*).");
-               detailLine(sb,indent,"See Perm Create Documentation for definitions.");
-               indent-=2;
-               api(sb,indent,HttpMethods.GET,"authz/users/perm/<type>/<instance>/<action>",Users.class,true);
-       }
+    @Override
+    public int _exec(final int index, final String ... args) throws CadiException, APIException, LocatorException {
+        return same(new Retryable<Integer>() {
+            @Override
+            public Integer code(Rcli<?> client) throws CadiException, APIException {
+                int idx = index;
+                String type = args[idx++];
+                String instance = args[idx++];
+                if ("\\*".equals(instance))instance="*";
+                String action = args[idx++];
+                if ("\\*".equals(action))action="*";
+                try {
+                    Future<Users> fp = client.read(
+                            "/authz/users/perm/" + 
+                                type + '/' +
+                                URLEncoder.encode(instance,Config.UTF_8) + '/' + 
+                                action, 
+                            getDF(Users.class)
+                            );
+                    if (fp.get(AAFcli.timeout())) {
+                        if (aafcli.isTest())
+                            Collections.sort(fp.value.getUser(), (Comparator<User>) (u1, u2) -> u1.getId().compareTo(u2.getId()));
+                        ((org.onap.aaf.auth.cmd.user.List)parent).report(fp.value,false,HEADER,type+"|"+instance+"|"+action);
+                        if (fp.code()==404)return 200;
+                    } else {
+                        error(fp);
+                    }
+                    return fp.code();
+                } catch (UnsupportedEncodingException e) {
+                    throw new CadiException(e);
+                }
+            }
+        });
+    }
+    
+    @Override
+    public void detailedHelp(int _indent, StringBuilder sb) {
+            int indent = _indent;
+        detailLine(sb,indent,HEADER);
+        indent+=2;
+        detailLine(sb,indent,"This report lists the users associated to Permissions.  Since Users");
+        detailLine(sb,indent,"are associated to Roles, and Roles have Permissions, this report");
+        detailLine(sb,indent,"accomodates all these linkages.");
+        sb.append('\n');
+        detailLine(sb,indent,"The URL must contain the Permission's type,instance and action, and ");
+        detailLine(sb,indent,"may include \"*\"s (type in as \\\\*).");
+        detailLine(sb,indent,"See Perm Create Documentation for definitions.");
+        indent-=2;
+        api(sb,indent,HttpMethods.GET,"authz/users/perm/<type>/<instance>/<action>",Users.class,true);
+    }
 }