263. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 12/5/2017 12:06:44 PM Central 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.

263.1 Files compared

# Location File Last Modified
1 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\ImagingCommon\main\src\java\gov\va\med\server ServerAdapterImpl.java Mon Dec 4 21:34:24 2017 UTC
2 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\ImagingCommon\main\src\java\gov\va\med\server ServerAdapterImpl.java Mon Dec 4 22:02:09 2017 UTC

263.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 3 550
Changed 2 4
Inserted 0 0
Removed 0 0

263.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

263.4 Active regular expressions

No regular expressions were active.

263.5 Comparison detail

  1   /**
  2    * Package : MAG - Vi stA Imagin g
  3    * WARNING : Per VHA  Directive  2004-038,  this routi ne should  not be mod ified.
  4    * Date Cr eated: Oct  14, 2008
  5    * Site Na me:  Washi ngton OI F ield Offic e, Silver  Spring, MD
  6    * @author         
BECKEC
  7    * @versio n 1.0
  8    *
  9    * ------- ---------- ---------- ---------- ---------- ---------- -------
  10    * Propert y of the U S Governme nt.
  11    * No perm ission to  copy or re distribute  this soft ware is gi ven.
  12    * Use of  unreleased  versions  of this so ftware req uires the  user
  13    * to exec ute a writ ten test a greement w ith the Vi stA Imagin g
  14    * Develop ment Offic e of the D epartment  of Veteran s Affairs,
  15    * telepho ne (301) 7 34-0100.
  16    * 
  17    * The Foo d and Drug  Administr ation clas sifies thi s software  as
  18    * a Class  II medica l device.   As such,  it may not  be change d
  19    * in any  way.  Modi fications  to this so ftware may  result in  an
  20    * adulter ated medic al device  under 21CF R820, the  use of whi ch
  21    * is cons idered to  be a viola tion of US  Federal S tatutes.
  22    * ------- ---------- ---------- ---------- ---------- ---------- -------
  23    */
  24   package go v.va.med.s erver;
  25  
  26   import gov .va.med.im aging.Stac kTraceAnal yzer;
  27   import jav a.io.Seria lizable;
  28   import jav a.util.Has hSet;
  29   import jav a.util.Set ;
  30   import org .apache.lo gging.log4 j.LogManag er;
  31   import org .apache.lo gging.log4 j.Logger;
  32  
  33   /**
  34    * The cen tral gatew ay of the  server agn ostic mech anism.  Co mponents o f Visa
  35    * registe r interest  in events  here.  Se rver-speci fic lifecy cle classe s send mes sages 
  36    * to this  singleton .
  37    * This cl ass also p rovides ac cess to au thenticati on/authori zation ser vices.
  38    * 
  39    * @author         
BECKEC
  40    *
  41    */
  42   public cla ss ServerA dapterImpl  
  43   implements  ClusterEv entAdapter , ServerAd apter
  44   {
  45           pr ivate stat ic ServerA dapterImpl  singleton  = null;
  46           pu blic stati c synchron ized Serve rAdapter g etSingleto n()
  47           {
  48                    if(s ingleton = = null)
  49                             single ton = new  ServerAdap terImpl();
  50                    
  51                    retu rn singlet on;
  52           }
  53           
  54           pr ivate Set< ServerLife cycleListe ner> serve rEventList eners = ne w HashSet< ServerLife cycleListe ner>();
  55           pr ivate Set< ClusterEve ntListener > clusterE ventListen ers = new  HashSet<Cl usterEvent Listener>( );
  56           pr ivate Clus terMessage Sender clu sterMessag eSender =  null;
  57           pr ivate Glob alNamingSe rver globa lNamingSer ver = null ;
  58           pr ivate Serv erAuthenti cation ser verAuthent ication =  null;
  59           
  60           pr ivate fina l Logger l ogger = Lo gManager.g etLogger(t his.getCla ss());
  61  
  62           /* *
  63            *  
  64            * /
  65           pr ivate Serv erAdapterI mpl()
  66           {
  67                    Stac kTraceAnal yzer stack Analyzer =  new Stack TraceAnaly zer( (new  Throwable( )).getStac kTrace() ) ;
  68                    logg er.info(
  69                             "Insta nce '" + t his.hashCo de() + "'  of ServerA dapter has  been crea ted, proba bly by '" 
  70                             stackA nalyzer.ge tFirstElem entNotInPa ckage("gov .va.med.se rver") + 
  71                             "' by  class load er '" + th is.getClas s().hashCo de() + "'. " +
  72                             "' of  type '" +  this.getCl ass().getC lassLoader ().getClas s().getNam e() + "'." );
  73           }
  74           
  75           
  76           /* *
  77            *  @return t he logger
  78            * /
  79           pu blic Logge r getLogge r()
  80           {
  81                    retu rn this.lo gger;
  82           }
  83  
  84  
  85           /* *
  86            *  Add a new  listener  (on the ap plication  side) that  gets noti fied of cl uster stat us changes .
  87            *  
  88            *  @see gov. va.med.ser ver.Cluste rEventAdap ter#addClu sterEventL istener(go v.va.med.s erver.Clus terEventLi stener)
  89            * /
  90           @O verride
  91           pu blic void  addCluster EventListe ner(Cluste rEventList ener liste ner)
  92           {
  93                    clus terEventLi steners.ad d(listener );
  94           }
  95  
  96           /* *
  97            *  Remove a  listener ( on the app lication s ide) that  gets notif ied of clu ster statu s changes.
  98            *  
  99            *  @see gov. va.med.ser ver.Cluste rEventAdap ter#remove ClusterEve ntListener (gov.va.me d.server.C lusterEven tListener)
  100            * /
  101           @O verride
  102           pu blic void  removeClus terEventLi stener(Clu sterEventL istener li stener)
  103           {
  104                    clus terEventLi steners.re move(liste ner);
  105           }
  106  
  107           pu blic void  setCluster MessageSen der(Cluste rMessageSe nder sende r)
  108           {
  109                    if(s ender == t his.cluste rMessageSe nder)
  110                             return ;          // silentl y ignore
  111                    
  112                    if(s ender != n ull && clu sterMessag eSender !=  null)
  113                    {
  114                             getLog ger().erro r("Attempt  to change  cluster m essage sen der is bei ng ignored .");
  115                             return ;
  116                    }
  117                    
  118                    if(s ender == n ull && clu sterMessag eSender !=  null)
  119                    {
  120                             getLog ger().warn ("Setting  the cluste r message  sender to  null, allo wed but in tentional? .");
  121                             return ;
  122                    }
  123                    
  124                    clus terMessage Sender = s ender;
  125           }
  126           
  127           /*  (non-Java doc)
  128            *  @see gov. va.med.ser ver.Server Adapter#ge tClusterMe ssageSende r()
  129            * /
  130           pu blic Clust erMessageS ender getC lusterMess ageSender( )
  131           {
  132                    retu rn cluster MessageSen der;
  133           }
  134           
  135           /*  (non-Java doc)
  136            *  @see gov. va.med.ser ver.Server Adapter#ge tGlobalNam ingServer( )
  137            * /
  138           pu blic Globa lNamingSer ver getGlo balNamingS erver()
  139           {
  140                    retu rn this.gl obalNaming Server;
  141           }
  142  
  143           /* *
  144            *  @param gl obalNaming Server the  globalNam ingServer  to set
  145            * /
  146           pu blic void  setGlobalN amingServe r(GlobalNa mingServer  globalNam ingServer)
  147           {
  148                    // d isregard r epetitive  sets, avoi d logging  any change s
  149                    if(g lobalNamin gServer ==  this.glob alNamingSe rver)
  150                             return ;
  151                    
  152                    // d isallow re setting th e global n aming serv er
  153                    if(g lobalNamin gServer ==  null && t his.global NamingServ er != null )
  154                    {
  155                             getLog ger().erro r("Attempt  to reset  the global  naming se rver to nu ll is bein g disregar ded");
  156                    }
  157                    else  if(global NamingServ er != null  && this.g lobalNamin gServer !=  null)
  158                    {
  159                             getLog ger().warn ("Changing  the globa l naming s erver afte r it has b een set.") ;
  160                             this.g lobalNamin gServer =  globalNami ngServer;
  161                    }
  162                    else
  163                    {
  164                             getLog ger().info ("Setting  global nam ing server  for the f irst time. ");
  165                             this.g lobalNamin gServer =  globalNami ngServer;
  166                    }
  167           }
  168  
  169           /* *
  170            *  @return t he serverA uthenticat ion
  171            * /
  172           @O verride
  173           pu blic Serve rAuthentic ation getS erverAuthe ntication( )
  174           {
  175                    retu rn this.se rverAuthen tication;
  176           }
  177  
  178           /* *
  179            *  @param se rverAuthen tication t he serverA uthenticat ion to set
  180            * /
  181           @O verride
  182           pu blic void  setServerA uthenticat ion(Server Authentica tion serve rAuthentic ation)
  183           {
  184                    // d isregard r epetitive  sets, avoi d logging  any change s
  185                    if(s erverAuthe ntication  == this.se rverAuthen tication)
  186                             return ;
  187                    
  188                    // d isallow re setting th e global n aming serv er
  189                    if(s erverAuthe ntication  == null &&  this.serv erAuthenti cation !=  null)
  190                    {
  191                             getLog ger().erro r("Attempt  to reset  the server Authentica tion to nu ll is bein g disregar ded");
  192                    }
  193                    else  if(server Authentica tion != nu ll && this .serverAut henticatio n != null)
  194                    {
  195                             getLog ger().warn ("Changing  the serve rAuthentic ation afte r it has b een set.") ;
  196                             this.s erverAuthe ntication  = serverAu thenticati on;
  197                    }
  198                    else
  199                    {
  200                             getLog ger().info ("Setting  serverAuth entication  for the f irst time. ");
  201                             this.s erverAuthe ntication  = serverAu thenticati on;
  202                    }
  203           }
  204  
  205  
  206           /*  (non-Java doc)
  207            *  @see gov. va.med.ser ver.Server Adapter#ad dServerLif ecycleList ener(gov.v a.med.serv er.ServerL ifecycleLi stener)
  208            * /
  209           pu blic void  addServerL ifecycleLi stener(Ser verLifecyc leListener  listener)
  210           {
  211                    getL ogger().in fo("Adding  ServerLif eCycleList ener '" +  listener.t oString()  + "'.");
  212                    serv erEventLis teners.add (listener) ;
  213           }
  214  
  215           /*  (non-Java doc)
  216            *  @see gov. va.med.ser ver.Server Adapter#re moveServer LifecycleL istener(go v.va.med.s erver.Serv erLifecycl eListener)
  217            * /
  218           pu blic void  removeServ erLifecycl eListener( ServerLife cycleListe ner listen er)
  219           {
  220                    getL ogger().in fo("Removi ng ServerL ifeCycleLi stener '"  + listener .toString( ) + "'.");
  221                    serv erEventLis teners.rem ove(listen er);
  222           }
  223  
  224           /* *
  225            *  
  226            *  @param ev ent
  227            * /
  228           pu blic void  notifyClus terEventLi steners(Cl usterEvent  event)
  229           {
  230                    for( ClusterEve ntListener  listener  : clusterE ventListen ers)
  231                             listen er.cluster Event(even t);
  232           }
  233           
  234           pr ivate bool ean server Started =  false;
  235           /* *
  236            *  Called fr om the ser ver-specif ic adapter s to notif y us of a  server eve nt.
  237            *  @param ap plicationE vent
  238            * /
  239           pu blic synch ronized vo id serverL ifecycleEv ent(Server LifecycleE vent appli cationEven t)
  240           {
  241                    if(  applicatio nEvent.get EventType( ) == Serve rLifecycle Event.Even tType.AFTE R_START &&  !serverSt arted)
  242                    {
  243                             server Started =  true;
  244                    }
  245                    
  246                    if(  applicatio nEvent.get EventType( ) == Serve rLifecycle Event.Even tType.AFTE R_STOP &&  serverStar ted)
  247                    {
  248                             server Started =  false;
  249                    }
  250                    
  251                    noti fyServerLi fecycleLis teners(app licationEv ent);
  252           }
  253  
  254           /* *
  255            *  
  256            *  @param ev ent
  257            * /
  258           pr ivate void  notifySer verLifecyc leListener s(ServerLi fecycleEve nt event)
  259           {
  260                    getL ogger().in fo("Notify ing server  lifecycle  listeners , event is  '" + even t.toString () + "'.") ;
  261                    for( ServerLife cycleListe ner listen er : serve rEventList eners)
  262                             listen er.serverL ifecycleEv ent(event) ;
  263           }
  264           
  265           /* *
  266            *  
  267            *  @param ms g
  268            *  @return
  269            * /
  270           pu blic boole an sendMes sageToClus ter(Serial izable msg )
  271           {
  272                    getL ogger().in fo("Sendin g message  '" + msg.t oString()  + "' to cl uster.");
  273                    retu rn cluster MessageSen der.sendMe ssageToClu ster(msg);
  274           }
  275  
  276  
  277   }