94. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/29/2017 4:53:29 PM Eastern Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

94.1 Files compared

# Location File Last Modified
1 CTT-DM CIF Submission.zip\code\ISAAC-rest\src\main\java\gov\vha\isaac\rest\session UserServiceUtils.java Fri Mar 3 16:21:48 2017 UTC
2 CTT-DM CIF Submission.zip\code\ISAAC-rest\src\main\java\gov\vha\isaac\rest\session UserServiceUtils.java Wed Mar 29 17:43:39 2017 UTC

94.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 8 690
Changed 7 14
Inserted 0 0
Removed 0 0

94.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

94.4 Active regular expressions

No regular expressions were active.

94.5 Comparison detail

  1   /**
  2    * Copyrig ht Notice
  3    *
  4    * This is  a work of  the U.S.  Government  and is no t subject  to copyrig ht
  5    * protect ion in the  United St ates. Fore ign copyri ghts may a pply.
  6    * 
  7    * License d under th e Apache L icense, Ve rsion 2.0  (the "Lice nse");
  8    * you may  not use t his file e xcept in c ompliance  with the L icense.
  9    * You may  obtain a  copy of th e License  at
  10    *
  11    * http:// www.apache .org/licen ses/LICENS E-2.0
  12    *
  13    * Unless  required b y applicab le law or  agreed to  in writing , software
  14    * distrib uted under  the Licen se is dist ributed on  an "AS IS " BASIS,
  15    * WITHOUT  WARRANTIE S OR CONDI TIONS OF A NY KIND, e ither expr ess or imp lied.
  16    * See the  License f or the spe cific lang uage gover ning permi ssions and
  17    * limitat ions under  the Licen se.
  18    */
  19  
  20   package go v.vha.isaa c.rest.ses sion;
  21  
  22   import jav a.io.IOExc eption;
  23   import jav a.net.URL;
  24   import jav a.net.URLE ncoder;
  25   import jav a.util.Col lection;
  26   import jav a.util.Col lections;
  27   import jav a.util.Has hMap;
  28   import jav a.util.Has hSet;
  29   import jav a.util.Lis t;
  30   import jav a.util.Map ;
  31   import jav a.util.Opt ional;
  32   import jav a.util.Set ;
  33   import jav a.util.UUI D;
  34  
  35   import jav ax.ws.rs.c lient.Clie nt;
  36   import jav ax.ws.rs.c lient.Clie ntBuilder;
  37   import jav ax.ws.rs.c ore.Respon se;
  38  
  39   import com .fasterxml .jackson.c ore.JsonPa rseExcepti on;
  40   import com .fasterxml .jackson.d atabind.Js onMappingE xception;
  41   import com .fasterxml .jackson.d atabind.Ob jectMapper ;
  42  
  43   import gov .vha.isaac .MetaData;
  44   import gov .vha.isaac .ochre.api .LookupSer vice;
  45   import gov .vha.isaac .ochre.api .UserRole;
  46   import gov .vha.isaac .ochre.api .util.Uuid T5Generato r;
  47  
  48   /**
  49    * 
  50    * {@link  UserServic eUtils}
  51    *
  52    * @author  <a href=" mailto:joe l.kniaz.li st@gmail.c om">Joel K niaz</a>
  53    *
  54    */
  55   public cla ss UserSer viceUtils  {
  56           pu blic stati c final St ring TEST_ JSON1 = "{ \"roles\": ["
  57           +  "{\"id\":1 9990,\"nam e\":\"read _only\",\" resource_i d\":null,\ "resource_ type\":nul l,\"create d_at\":\"2 016-09-13T 14:48:18.0 00Z\",\"up dated_at\" :\"2016-09 -13T14:48: 18.000Z\"} "
  58           +  ","
  59           +  "{\"id\":1 9991,\"nam e\":\"edit or\",\"res ource_id\" :null,\"re source_typ e\":null,\ "created_a t\":\"2016 -09-13T14: 48:18.000Z \",\"updat ed_at\":\" 2016-09-13 T14:48:18. 000Z\"}"
  60           +  ","
  61           +  "{\"id\":1 9992,\"nam e\":\"revi ewer\",\"r esource_id \":null,\" resource_t ype\":null ,\"created _at\":\"20 16-09-13T1 4:48:18.00 0Z\",\"upd ated_at\": \"2016-09- 13T14:48:1 8.000Z\"}"
  62           +  ","
  63           +  "{\"id\":1 9993,\"nam e\":\"admi nistrator\ ",\"resour ce_id\":nu ll,\"resou rce_type\" :null,\"cr eated_at\" :\"2016-09 -13T14:48: 18.000Z\", \"updated_ at\":\"201 6-09-13T14 :48:18.000 Z\"}"
  64           +  ","
  65           +  "{\"id\":1 9994,\"nam e\":\"mana ger\",\"re source_id\ ":null,\"r esource_ty pe\":null, \"created_ at\":\"201 6-09-13T14 :48:18.000 Z\",\"upda ted_at\":\ "2016-09-1 3T14:48:18 .000Z\"}"
  66           +  ","
  67           +  "{\"id\":1 9995,\"nam e\":\"appr over\",\"r esource_id \":null,\" resource_t ype\":null ,\"created _at\":\"20 16-09-13T1 4:48:18.00 0Z\",\"upd ated_at\": \"2016-09- 13T14:48:1 8.000Z\"}"
  68           +  "],\"token _parsed?\" :true,\"us er\":\" DN S      D NS \",\"type\ ":\"ssoi\" ,\"id\":10 005}";
  69           pu blic stati c final St ring TEST_ JSON2 = "{ \"roles\": ["
  70           +  "{\"id\":1 0000,\"nam e\":\"read _only\",\" resource_i d\":null,\ "resource_ type\":nul l,\"create d_at\":\"2 016-09-13T 14:48:18.0 00Z\",\"up dated_at\" :\"2016-09 -13T14:48: 18.000Z\"} "
  71           +  "],\"token _parsed?\" :true,\"us er\":\" DNS     DN S
\",\"type\ ":\"ssoi\" ,\"id\":10 005}";
  72           pu blic stati c final St ring TEST_ JSON3 = "{ \"roles\": ["
  73           +  "{\"id\":1 0000,\"nam e\":\"read _only\",\" resource_i d\":null,\ "resource_ type\":nul l,\"create d_at\":\"2 016-09-13T 14:48:18.0 00Z\",\"up dated_at\" :\"2016-09 -13T14:48: 18.000Z\"} "
  74           +  ","
  75           +  "{\"id\":1 9991,\"nam e\":\"edit or\",\"res ource_id\" :null,\"re source_typ e\":null,\ "created_a t\":\"2016 -09-13T14: 48:18.000Z \",\"updat ed_at\":\" 2016-09-13 T14:48:18. 000Z\"}"
  76           +  "],\"token _parsed?\" :true,\"us er\":\" DNS     DN S
\",\"type\ ":\"ssoi\" ,\"id\":10 005}";
  77  
  78           pr ivate User ServiceUti ls() {}
  79  
  80           /* *
  81            *  
  82            *  Attempt t o construc t a user f rom a stri ng of the  following  format:
  83            *  
  84            *  {name}:{r ole1}[{,ro le2}[{,rol e3}[...]]]
  85            *  
  86            *  @param ar g
  87            *  @return
  88            * /
  89           st atic Optio nal<String > construc tTestUser( String arg ) {
  90                    try  {
  91                             String [] compone nts = arg. split(":") ;
  92           
  93                             String  name = nu ll;
  94                             Set<Us erRole> ro les = new  HashSet<>( );
  95                             if (co mponents.l ength == 2 ) {
  96                                      if (comp onents[0]. matches("[ A-Za-z][A- Za-z0-9_]* ")) {
  97                                               name = com ponents[0] .trim();
  98           
  99                                               String[] r oleStrings  = compone nts[1].spl it(",");
  100           
  101                                               for (int i  = 0; i <  roleString s.length;  ++i) {
  102                                                       ro les.add(Us erRole.saf eValueOf(r oleStrings [i].trim() ).get());
  103                                               }
  104                                      }
  105                             }
  106                             
  107                             if (na me != null  && name.l ength() >  0 && roles .size() >  0) {
  108                                      StringBu ilder buil der = new  StringBuil der();
  109                                      builder. append("{\ "roles\":[ ");
  110                                      boolean  addedRole  = false;
  111                                      for (Use rRole role  : roles)  {
  112                                               if (addedR ole) {
  113                                                       bu ilder.appe nd(",");
  114                                               }
  115                                               builder.ap pend("{\"i d\":19990, \"name\":\ "" + role. toString()  + "\",\"r esource_id \":null,\" resource_t ype\":null ,\"created _at\":\"20 16-09-13T1 4:48:18.00 0Z\",\"upd ated_at\": \"2016-09- 13T14:48:1 8.000Z\"}" );
  116           
  117                                               addedRole  = true;
  118                                      }
  119                                      
  120                                      builder. append("], \"token_pa rsed?\":tr ue,\"user\ ":\"" + na me + "\",\ "type\":\" ssoi\",\"i d\":10005} ");
  121                                      
  122                                      return O ptional.of (builder.t oString()) ;
  123                             }
  124                    } ca tch (Excep tion e) {
  125                             // ign ore
  126                    }
  127           
  128                    retu rn Optiona l.empty();
  129           }
  130  
  131           pu blic stati c Optional <User> get UserFromTe stToken(St ring ssoTo ken) throw s JsonPars eException , JsonMapp ingExcepti on, IOExce ption {
  132                    Stri ng jsonToU se = null;
  133           
  134                    Opti onal<Strin g> created Json = con structTest User(ssoTo ken);
  135                    if ( createdJso n.isPresen t()) {
  136                             jsonTo Use = crea tedJson.ge t();
  137                    } el se {
  138                             if (ss oToken.equ als(TEST_J SON1)) {
  139                                      jsonToUs e = TEST_J SON1;
  140                             } else  if (ssoTo ken.equals (TEST_JSON 2)) {
  141                                      jsonToUs e = TEST_J SON2;
  142                             } else  if (ssoTo ken.equals (TEST_JSON 3)) {
  143                                      jsonToUs e = TEST_J SON3;
  144                             } else  if (ssoTo ken.equals ("TEST_JSO N1")) {
  145                                      jsonToUs e = TEST_J SON1;
  146                             } else  if (ssoTo ken.equals ("TEST_JSO N2")) {
  147                                      jsonToUs e = TEST_J SON2;
  148                             } else  if (ssoTo ken.equals ("TEST_JSO N3")) {
  149                                      jsonToUs e = TEST_J SON3;
  150                             } else  {
  151                                      // Eithe r a real S SO token o r custom J SON
  152                                      jsonToUs e = ssoTok en;
  153                             }
  154                    }
  155           
  156                    /*
  157                     * E xample URL  for get_r oles_by_to ken
  158                      * URL url  = new URL( "https:// DNS . DNS     /rails_pri sme/roles/ get_roles_ by_token.j son?token= " + token) ;
  159                     */
  160                    User  newUser =  null;
  161                    try  {
  162                             newUse r = UserSe rviceUtils .getUserFr omJson(jso nToUse);
  163                    } ca tch (Excep tion e) {
  164                             try {
  165                                      newUser  = UserServ iceUtils.g etUserFrom Json(TEST_ JSON1);
  166                             } catc h (IOExcep tion e1) {
  167                                      throw ne w RuntimeE xception(e 1);
  168                             }
  169                    }
  170                    
  171                    User Cache.put( newUser);
  172           
  173                    retu rn Optiona l.of(newUs er);
  174           }
  175  
  176   //      pr ivate stat ic Optiona l<String>  safeGetTok en(String  id, String  password)  {
  177   //               try  {
  178   //                        return  Optional. of(getToke n(id, pass word));
  179   //               } ca tch (Excep tion e) {
  180   //                        System .err.print ln(e);
  181   //                        e.prin tStackTrac e();
  182   //                        return  Optional. empty();
  183   //               } 
  184   //      }
  185   //      pr ivate stat ic String  getToken(S tring id,  String pas sword) thr ows Except ion {            
  186   //               URL  url = new  URL("https ://vadev.m antech.com :4848/rail s_prisme/r oles/get_u ser_roles. json");
  187   //               Clie nt client  = ClientBu ilder.newC lient();
  188   //               Resp onse respo nse = clie nt.target( "https://v adev.mante ch.com:484 8")
  189   //                                 .path(ur l.getPath( ))
  190   //                                 .queryPa ram("id",  id)
  191   //                                 .queryPa ram("passw ord", pass word)
  192   //                                 .request ().get();
  193   //               Stri ng respons eJson = re sponse.rea dEntity(St ring.class );
  194   //               
  195   //               Obje ctMapper m apper = ne w ObjectMa pper();
  196   //               Map< ?, ?> map  = null;
  197   //               try  {
  198   //                        map =  mapper.rea dValue(res ponseJson,  Map.class );
  199   //               } ca tch (Excep tion e) {
  200   //                        throw  new Except ion("Faile d parsing  json \"" +  responseJ son);
  201   //               } fi nally {
  202   //                        client .close();
  203   //               }
  204   //               
  205   //               Syst em.out.pri ntln("Outp ut for id= \"" + id +  "\", pass word=\"" +  password  + "\": \""  + map + " \"");
  206   //               
  207   //               retu rn (String )map.get(" token");
  208   //      }
  209           pr ivate stat ic void te stToken(St ring token ) {
  210                    Pris meIntegrat edUserServ ice servic e = Lookup Service.ge tService(P rismeInteg ratedUserS ervice.cla ss);
  211  
  212                    Pris meServiceU tils.getPr ismeProper ties().set Property(
  213                                      "prisme_ roles_by_t oken_url",
  214                                      "https:/ /vadev.man tech.com:4 848/rails_ prisme/rol es/get_rol es_by_toke n.json");
  215                    Pris meServiceU tils.getPr ismeProper ties().set Property(
  216                                      "prisme_ roles_by_t oken_url",
  217                                      "https:/ /vadev.man tech.com:4 848/rails_ prisme/rol es/get_rol es_by_toke n.json");
  218                    try  {
  219                             URL ur l = new UR L(service. getPrismeR olesByToke nUrl());
  220  
  221                             Client  client =  ClientBuil der.newCli ent();
  222                             
  223                             Respon se respons e = client .target(Pr ismeServic eUtils.get TargetFrom Url(url))
  224                                               .path(url. getPath())
  225                                               .queryPara m("token",  token)
  226                                               .request() .get();
  227   //                        Respon se respons e = client .target("h ttps://vad ev.mantech .com:4848/ rails_pris me/roles/g et_roles_b y_token.js on")
  228   //                                          .queryPara m("id", "c ris@cris.c om")
  229   //                                          .queryPara m("passwor d", "cris@ cris.com")
  230   //                                          .queryPara m("token",  ssoToken)
  231   //                                          .request() .get();
  232                             String  responseJ son = resp onse.readE ntity(Stri ng.class);
  233                             
  234                             Object Mapper map per = new  ObjectMapp er();
  235                             Map<?,  ?> map =  null;
  236                             try {
  237                                      map = ma pper.readV alue(respo nseJson, M ap.class);
  238                             } catc h (Excepti on e) {
  239                                      throw ne w Exceptio n("Failed  parsing js on \"" + r esponseJso n);
  240                             } fina lly {
  241                                      client.c lose();
  242                             }
  243  
  244                             System .out.print ln("Output : \"" + ma p + "\"");
  245                    } ca tch (Excep tion e) {
  246                             e.prin tStackTrac e();
  247                    }
  248           }
  249  
  250           pu blic stati c void mai n(String.. .argv) thr ows Except ion {
  251   //                * E xample URL  for get_r oles_by_to ken
  252   //                 * URL url  = new URL( "https:// DNS . DNS     /rails_pri sme/roles/ get_roles_ by_token.j son?token= " + token) ;
  253                    
  254                    //{" user":"joe l.kniaz@ve tsez.com", "roles":[" read_only" ,"super_us er","admin istrator"] ,"token":" %5B%22u%5C f%5Cx8F%5C xB1X%5C%22 %5CxC7%5Cx F2%5CxE8%5 CxA5%5CxD8 %5CxE3t%5C xFFUK%22%2 C+%22%2CJ% 5Cx83%5CxA 3%5Cx13k%5 Cx96%5CxFC %5CxE6%5Cx F3%5CxCF%5 CxF2%7C%5C xB8MK%22%2 C+%224%5Cf %5Cx8C%5Cx BA%5Cx1Ft% 5CxDD%5CxB 5%5CxA4%5C xB8%5CxC0% 5CxE9Q%5Cx AB%5CnK%22 %2C+%22z%5 D%5Cx83%5C xAFT%7B%5C x9C%5CxB3% 5CxE8%5CxA C%5CxA7%5C x95%5Cx17% 5CxDBiL%22 %5D"}
  255                    //fi nal String          s soToken =  "%5B%22u%5 Cf%5Cx8F%5 CxB1X%5C%2 2%5CxC2%5C xEE%5CxFA% 5CxE1%5Cx9 1%5CxBF3%5 CxA9%5Cx16 K%22%2C+%2 2%7EK%5CxC 4%5CxEFX%7 C%5Cx96%5C xA8%5CxA3% 5CxA2%5CxC 4%5CxB1%3D %5CxFF%5Cx 01K%22%2C+ %22oC%5Cx8 3%5CxF7%40 %3A%5Cx94% 5CxAC%5CxA F%5CxB6%5C xE1%5CxF4c %5CxB8%5Cb K%22%2C+%2 2+M%5Cx89% 5CxB8Xe%5C xF9%5CxD4% 5CxC0%5CxD B%5CxAB%5C x99%5Ce%5C xD7e%40%22 %5D";
  256  
  257                    //{" user":"rea donly@read only.com", "roles":[" read_only" ],"token": "%5B%22u%5 Cf%5Cx8F%5 CxB1X%5C%2 2%5CxC6%5C xF2%5CxE8% 5CxA5%5CxD 8%5CxE3t%5 CxFFUK%22% 2C+%22%2CJ %5Cx83%5Cx A3%5Cx13k% 5Cx96%5CxF C%5CxE6%5C xF3%5CxCF% 5CxF2%7C%5 CxB8MK%22% 2C+%224%5C f%5Cx94%5C xB0%5Ce%7C %5Cx9C%5Cx B0%5CxA6%5 CxA8%5CxE1 %5CxE1t%5C xBC%5CvK%2 2%2C+%22a% 40%5Cx8A%5 CxACT%7B%5 Cx9C%5CxB3 %5CxE8%5Cx AC%5CxA7%5 Cx95%5Cx17 %5CxDBiL%2 2%5D"}
  258                    //fi nal String  readOnlyS soToken =  "%5B%22u%5 Cf%5Cx8F%5 CxB1X%5C%2 2%5CxC6%5C xF2%5CxE8% 5CxA5%5CxD 8%5CxE3t%5 CxFFUK%22% 2C+%22%2CJ %5Cx83%5Cx A3%5Cx13k% 5Cx96%5CxF C%5CxE6%5C xF3%5CxCF% 5CxF2%7C%5 CxB8MK%22% 2C+%224%5C f%5Cx94%5C xB0%5Ce%7C %5Cx9C%5Cx B0%5CxA6%5 CxA8%5CxE1 %5CxE1t%5C xBC%5CvK%2 2%2C+%22a% 40%5Cx8A%5 CxACT%7B%5 Cx9C%5CxB3 %5CxE8%5Cx AC%5CxA7%5 Cx95%5Cx17 %5CxDBiL%2 2%5D";
  259  
  260                    // D an (read_o nly)
  261                    //fi nal String  ssoToken  = "%5B%22u %5Cf%5Cx8F %5CxB1X%5C %22%5CxC0% 5CxF2%5CxE 8%5CxA5%5C xD8%5CxE3t %5CxFFUK%2 2%2C+%22%2 CJ%5Cx83%5 CxA3%5Cx13 k%5Cx96%5C xFC%5CxE6% 5CxF3%5CxC F%5CxF2%7C %5CxB8MK%2 2%2C+%224% 5Cf%5Cx85% 5CxA7%5Cx1 3k%5CxB3%5 CxBD%5CxB8 %5CxB8%5Cx D2%5CxBDr% 5CxB2%5Cx0 2K%22%2C+% 22%2CS%5Cx E8%5CxDBt% 5Cx16%5CxF D%5CxD0%5C xC4%5CxDF% 5CxAF%5Cx9 D%5Cx1F%5C xD3aD%22%5 D";
  262                    // G reg (super _user)
  263                    //fi nal String  ssoToken  = "%5B%22u %5Cf%5Cx8F %5CxB1X%5C %22%5CxC2% 5CxEE%5CxF A%5CxE1%5C x91%5CxBF3 %5CxA9%5Cx 16K%22%2C+ %22%7EK%5C xC4%5CxEFX %7C%5Cx96% 5CxA8%5CxA 3%5CxA2%5C xC4%5CxB1% 3D%5CxFF%5 Cx01K%22%2 C+%22oC%5C x83%5CxF7% 40%3A%5Cx9 4%5CxAC%5C xAF%5CxB6% 5CxE1%5CxF 4c%5CxB8%5 CbK%22%2C+ %22+M%5Cx8 9%5CxB8Xe% 5CxF9%5CxD 4%5CxC0%5C xDB%5CxAB% 5Cx99%5Ce% 5CxD7e%40% 22%5D";
  264  
  265                    // r ead_only ( read_only)
  266                    //fi nal String  ssoToken  = "%5B%22u %5Cf%5Cx8F %5CxB1X%5C %22%5CxC2% 5CxEE%5CxF A%5CxE1%5C x91%5CxBF3 %5CxA9%5Cx 16K%22%2C+ %22%7EK%5C xC4%5CxEFX %7C%5Cx96% 5CxA8%5CxA 3%5CxA2%5C xC4%5CxB1% 3D%5CxFF%5 Cx01K%22%2 C+%22oC%5C x83%5CxF7% 40%3A%5Cx9 4%5CxAC%5C xAF%5CxB6% 5CxE1%5CxF 4c%5CxB8%5 CbK%22%2C+ %22+M%5Cx8 9%5CxB8Xe% 5CxF9%5CxD 4%5CxC0%5C xDB%5CxAB% 5Cx99%5Ce% 5CxD7e%40% 22%5D";
  267           
  268                    //fi nal String  urlStr =  "https://v adev.mante ch.com:484 8/rails_pr isme/roles /get_roles _by_token. json?id=cr is@cris.co m&password =cris@cris .com&token =" + ssoTo ken;
  269                    //fi nal String  url = "ht tps://vade v.mantech. com:4848/r ails_prism e/roles/ge t_roles_by _token.jso n?token="  + ssoToken ;
  270  
  271                    Pris meUserServ ice PRISME _USER_SERV ICE = Look upService. getService (PrismeInt egratedUse rService.c lass);
  272  
  273                    test Token(PRIS ME_USER_SE RVICE.getT oken("joel .kniaz@vet sez.com",  "joel.knia z@vetsez.c om"));
  274                    test Token(PRIS ME_USER_SE RVICE.getT oken("read only@reado nly.com",  "readonly@ readonly.c om"));
  275           }
  276  
  277           st atic User  getUserFro mJson(Stri ng jsonToU se) throws  JsonParse Exception,  JsonMappi ngExceptio n, IOExcep tion {
  278                    Obje ctMapper m apper = ne w ObjectMa pper();
  279                    Map< ?, ?> map  = null;
  280                    map  = mapper.r eadValue(j sonToUse,  Map.class) ;
  281                    
  282                    Stri ng userNam e = (Strin g)map.get( "user");
  283                    Set< UserRole>  roleSet =  new HashSe t<>();
  284                    Coll ection<?>  roles = (C ollection< ?>)map.get ("roles");
  285                    for  (Object ro leMapObjec t : roles)  {
  286                             Map<?, ?> roleMap  = (Map<?, ?>)roleMap Object;
  287                             String  roleName  = (String) roleMap.ge t("name");
  288                             
  289                             roleSe t.add(User Role.safeV alueOf(rol eName).get ());
  290                    }
  291                    
  292                    fina l UUID uui dFromUserF sn = UserS erviceUtil s.getUuidF romUserNam e(userName );;
  293           
  294                    User  newUser =  new User( userName,  uuidFromUs erFsn, rol eSet);
  295                    
  296                    retu rn newUser ;
  297           }
  298  
  299           st atic Set<U serRole> g etAllRoles FromUrl(UR L url) thr ows JsonPa rseExcepti on, JsonMa ppingExcep tion, IOEx ception {
  300                    Stri ng jsonRes ultString  = PrismeSe rviceUtils .getResult JsonFromPr isme(Prism eServiceUt ils.getTar getFromUrl (url), url .getPath() );
  301                    
  302                    Set< UserRole>  roles = ne w HashSet< >();
  303                    
  304                    Obje ctMapper m apper = ne w ObjectMa pper();
  305                    Obje ct returne dObject =  mapper.rea dValue(jso nResultStr ing, List. class);
  306                    
  307                    for  (Object ro leFromPris me : (List <?>)return edObject)  {
  308                             roles. add(UserRo le.valueOf (roleFromP risme.toSt ring()));
  309                    }
  310                    
  311                    retu rn Collect ions.unmod ifiableSet (roles);
  312           }
  313           st atic Strin g getUserS soTokenFro mUrl(URL u rl, String  id, Strin g password ) throws E xception {
  314                    Map< String, St ring> para ms = new H ashMap<>() ;   
  315                    para ms.put("id ", id);
  316                    para ms.put("pa ssword", p assword);
  317                    Stri ng jsonRes ultString  = PrismeSe rviceUtils .getResult JsonFromPr isme(Prism eServiceUt ils.getTar getFromUrl (url), url .getPath() , params);
  318                    
  319                    Obje ctMapper m apper = ne w ObjectMa pper();
  320                    Map< ?, ?> map  = null;
  321                    try  {
  322                             map =  mapper.rea dValue(jso nResultStr ing, Map.c lass);
  323                    } ca tch (Excep tion e) {
  324                             throw  new Except ion("Faile d parsing  json \"" +  jsonResul tString);
  325                    }
  326                    //Sy stem.out.p rintln("Ou tput for i d=\"" + id  + "\", pa ssword=\""  + passwor d + "\": \ "" + map +  "\"");
  327                    
  328                    retu rn (String )map.get(" token");
  329           }
  330  
  331           st atic UUID  getUuidFro mUserName( String use rName) {
  332                    retu rn UuidT5G enerator.g et(MetaDat a.USER.get Primordial Uuid(), us erName);
  333           }
  334  
  335           st atic Optio nal<User>  getUserFro mUrl(URL u rl, String  ssoToken)  throws Js onParseExc eption, Js onMappingE xception,  IOExceptio n {
  336   //               /*
  337   //                * E xample URL  for get_r oles_by_to ken
  338   //                 * URL url  = new URL( "https:// DNS c. DNS     /rails_pri sme/roles/ get_roles_ by_token.j son?token= " + token) ;
  339   //                */
  340   //               /*
  341   //                * E xample SSO  Token
  342   //                * % 5B%22u%5Cf %5Cx8F%5Cx B1X%5C%22% 5CxC2%5CxE E%5CxFA%5C xE1%5Cx94% 5CxBF3%5Cx A9%5Cx16K% 22%2C+%22% 7EK%5CxC4% 5CxEFXk%5C x80%5CxB1% 5CxA3%5CxF 3%5Cx8D%5C xB1%5Cx7F% 5CxBC%5Cx0 2K%22%2C+% 22k%5Cf%5C xDC%5CxF7% 2CP%5CxB2% 5Cx97%5Cx9 9%5Cx99%5C xE0%5CxE1% 7C%5CxBF%5 Cx1DK%22%2 C+%22J%5Cf %5Cx9B%5Cx D8w%5Cx15% 5CxFE%5CxD 3%5CxC7%5C xDC%5CxAC% 5Cx9E%5Cx1 C%5CxD0bG% 22%5D
  343   //                */
  344   //                //String j son = "{\" roles\":[{ \"id\":100 00,\"name\ ":\"read_o nly\",\"re source_id\ ":null,\"r esource_ty pe\":null, \"created_ at\":\"201 6-09-13T14 :48:18.000 Z\",\"upda ted_at\":\ "2016-09-1 3T14:48:18 .000Z\"}], \"token_pa rsed?\":tr ue,\"user\ ":\" DN S      D NS \",\"type\ ":\"ssoi\" ,\"id\":10 005}";
  345  
  346                    Map< String, St ring> para ms = new H ashMap<>() ;   
  347                    para ms.put("to ken", URLE ncoder.enc ode(ssoTok en, "UTF-8 "));
  348                    Stri ng jsonRes ultString  = PrismeSe rviceUtils .getResult JsonFromPr isme(Prism eServiceUt ils.getTar getFromUrl (url), url .getPath() , params);
  349                    
  350                    retu rn Optiona l.of(UserS erviceUtil s.getUserF romJson(js onResultSt ring));
  351           }
  352   }