2. Araxis Merge File Comparison Report

Produced by Araxis Merge on 11/20/2017 2:16:16 PM GMT Standard 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.

2.1 Files compared

# Location File Last Modified
1 Mon Nov 20 14:16:16 2017 UTC
2 C:\Merge Test Files\8.5.23\java\org\apache\catalina\authenticator\jaspic CallbackHandlerImpl.java Thu Sep 28 11:32:16 2017 UTC

2.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 0 0
Changed 0 0
Inserted 1 119
Removed 0 0

2.3 Comparison options

Whitespace Consecutive whitespace is treated as a single space
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

2.4 Active regular expressions

No regular expressions were active.

2.5 Comparison detail

        1   /*
        2    * License d to the A pache Soft ware Found ation (ASF ) under on e or more
        3    * contrib utor licen se agreeme nts.  See  the NOTICE  file dist ributed wi th
        4    * this wo rk for add itional in formation  regarding  copyright  ownership.
        5    * The ASF  licenses  this file  to You und er the Apa che Licens e, Version  2.0
        6    * (the "L icense");  you may no t use this  file exce pt in comp liance wit h
        7    * the Lic ense.  You  may obtai n a copy o f the Lice nse at
        8    *
        9    *      ht tp://www.a pache.org/ licenses/L ICENSE-2.0
        10    *
        11    * Unless  required b y applicab le law or  agreed to  in writing , software
        12    * distrib uted under  the Licen se is dist ributed on  an "AS IS " BASIS,
        13    * WITHOUT  WARRANTIE S OR CONDI TIONS OF A NY KIND, e ither expr ess or imp lied.
        14    * See the  License f or the spe cific lang uage gover ning permi ssions and
        15    * limitat ions under  the Licen se.
        16    */
        17   package or g.apache.c atalina.au thenticato r.jaspic;
        18  
        19   import jav a.io.IOExc eption;
        20   import jav a.security .Principal ;
        21   import jav a.util.Arr ays;
        22   import jav a.util.Col lections;
        23   import jav a.util.Lis t;
        24  
        25   import jav ax.securit y.auth.Sub ject;
        26   import jav ax.securit y.auth.cal lback.Call back;
        27   import jav ax.securit y.auth.cal lback.Call backHandle r;
        28   import jav ax.securit y.auth.cal lback.Unsu pportedCal lbackExcep tion;
        29   import jav ax.securit y.auth.mes sage.callb ack.Caller PrincipalC allback;
        30   import jav ax.securit y.auth.mes sage.callb ack.GroupP rincipalCa llback;
        31  
        32   import org .apache.ca talina.rea lm.Generic Principal;
        33   import org .apache.ju li.logging .Log;
        34   import org .apache.ju li.logging .LogFactor y;
        35   import org .apache.to mcat.util. res.String Manager;
        36  
        37   /**
        38    * Impleme nted as a  singleton  since the  class is s tateless.
        39    */
        40   public cla ss Callbac kHandlerIm pl impleme nts Callba ckHandler  {
        41  
        42       privat e static f inal Log l og = LogFa ctory.getL og(Callbac kHandlerIm pl.class);
        43       privat e static f inal Strin gManager s m = String Manager.ge tManager(C allbackHan dlerImpl.c lass);
        44  
        45       privat e static C allbackHan dler insta nce;
        46  
        47  
        48       static  {
        49           in stance = n ew Callbac kHandlerIm pl();
        50       }
        51  
        52  
        53       public  static Ca llbackHand ler getIns tance() {
        54           re turn insta nce;
        55       }
        56  
        57  
        58       privat e  Callbac kHandlerIm pl() {
        59           //  Hide defa ult constr uctor
        60       }
        61  
        62  
        63       @Overr ide
        64       public  void hand le(Callbac k[] callba cks) throw s IOExcept ion, Unsup portedCall backExcept ion {
        65  
        66           St ring name  = null;
        67           Pr incipal pr incipal =  null;
        68           Su bject subj ect = null ;
        69           St ring[] gro ups = null ;
        70  
        71           if  (callback s != null)  {
        72                // Need  to combine  data from  multiple  callbacks  so use thi s to hold
        73                // the d ata
        74                // Proce ss the cal lbacks
        75                for (Cal lback call back : cal lbacks) {
        76                    if ( callback i nstanceof  CallerPrin cipalCallb ack) {
        77                         CallerPrin cipalCallb ack cpc =  (CallerPri ncipalCall back) call back;
        78                         name = cpc .getName() ;
        79                         principal  = cpc.getP rincipal() ;
        80                         subject =  cpc.getSub ject();
        81                    } el se if (cal lback inst anceof Gro upPrincipa lCallback)  {
        82                         GroupPrinc ipalCallba ck gpc = ( GroupPrinc ipalCallba ck) callba ck;
        83                         groups = g pc.getGrou ps();
        84                    } el se {
        85                         log.error( sm.getStri ng("callba ckHandlerI mpl.jaspic CallbackMi ssing",
        86                                 ca llback.get Class().ge tName()));
        87                    }
        88                }
        89  
        90                // Creat e the Gene ricPrincip al
        91                Principa l gp = get Principal( principal,  name, gro ups);
        92                if (subj ect != nul l && gp !=  null) {
        93                    subj ect.getPri vateCreden tials().ad d(gp);
        94                }
        95           }
        96       }
        97  
        98  
        99       privat e Principa l getPrinc ipal(Princ ipal princ ipal, Stri ng name, S tring[] gr oups) {
        100           //  If the Pr incipal is  cached in  the sessi on JASPIC  may simply  return it
        101           if  (principa l instance of Generic Principal)  {
        102                return p rincipal;
        103           }
        104           if  (name ==  null && pr incipal !=  null) {
        105                name = p rincipal.g etName();
        106           }
        107           if  (name ==  null) {
        108                return n ull;
        109           }
        110           Li st<String>  roles;
        111           if  (groups = = null ||  groups.len gth == 0)  {
        112                roles =  Collection s.emptyLis t();
        113           }  else {
        114                roles =  Arrays.asL ist(groups );
        115           }
        116  
        117           re turn new G enericPrin cipal(name , null, ro les, princ ipal);
        118       }
        119   }