package Ġai . plat on . pulsar . common . urls Ċ Ċ import Ġai . plat on . pulsar . common . config . App Constants Ċ import Ġai . plat on . pulsar . common . config . Volatile Config Ċ import Ġai . plat on . pulsar . common . options . Load Options Ċ import Ġjava . net . Malformed URLException Ċ import Ġjava . net . URL Ċ Ċ /** Ċ Ġ* ĠA Ġnormalized Ġurl . Ċ Ġ* Ċ Ġ* ĠEvery ĠNorm Url Ġcontains Ġtwo Ġurls : Ġurl Ġand Ġhref , Ġurl Ġstands Ġfor ĠUniform ĠResource ĠLoc ator , Ċ Ġ* Ġboth Ġfor Ġexternal Ġwebpage Ġand Ġinternal Ġdatabase , Ġand Ġhref Ġstands Ġfor ĠHyper link ĠReference , Ċ Ġ* Ġwhich Ġis Ġa Ġurl Ġextracted Ġfrom Ġa ĠHTML Ġdocument . Ċ Ġ* Ċ Ġ* ĠThe Ġhref Ġis Ġthe Ġfirst Ġchoice Ġto Ġlocate Ġa Ġresource , Ġbecause Ġit 's Ċ Ġ* Ġextracted Ġfrom Ġa ĠHTML Ġdocument Ġwithout Ġmodification Ġwhile Ġthe Ġurl Ġmight Ġbe Ġnormalized . Ċ Ġ* Ġ*/ Ċ open Ġclass ĠNorm Url Ġconstructor ( ĊĠĠĠ Ġval Ġurl : ĠURL , ĊĠĠĠ Ġval Ġoptions : ĠLoad Options , ĊĠĠĠ Ġvar Ġhref : ĠURL ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġdetail : ĠUrl Aware ? Ġ= Ġnull Ċ ): ĠComparable < Norm Url > Ġ{ ĊĊĠĠĠ Ġ@ Throws ( Malformed URLException :: class ) ĊĠĠĠ Ġconstructor ( spec : ĠString , Ġoptions : ĠLoad Options , Ġhref Spec : ĠString ? Ġ= Ġnull , Ġdetail : ĠUrl Aware ? Ġ= Ġnull ): ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ( URL ( spec ), Ġoptions , Ġhref Spec ?. let Ġ{ ĠURL ( href Spec ) Ġ}, Ġdetail ) ĊĊĠĠĠ Ġval Ġspec Ġ= Ġurl . toString () ĊĠĠĠ Ġval Ġhref Spec Ġ= Ġhref ?. toString () ĊĠĠĠ Ġval Ġargs Ġ= Ġoptions . toString () ĊĠĠĠ Ġval Ġconfigured Url Ġ= Ġ"$ spec Ġ$ args " ĊĊĠĠĠ Ġval ĠisEmpty Ġget () Ġ= Ġspec . isEmpty () ĊĠĠĠ Ġval Ġis NotEmpty Ġget () Ġ= Ġ! isEmpty ĊĠĠĠ Ġval Ġis Nil Ġget () Ġ= Ġthis Ġ== ĠNIL ĊĠĠĠ Ġval Ġis NotNil Ġget () Ġ= Ġ! is Nil ĊĊĠĠĠ Ġoperator Ġfun Ġcomponent 1 () Ġ= Ġspec ĊĠĠĠ Ġoperator Ġfun Ġcomponent 2 () Ġ= Ġoptions ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconfigured Url . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġother Ġis ĠNorm Url Ġ&& Ġconfigured Url Ġ== Ġother . configured Url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠNorm Url ) Ġ= Ġconfigured Url . compareTo ( other . configured Url ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġconfigured Url ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠNIL Ġ= ĠNorm Url ( App Constants . NIL _ PAGE _ URL , ĠLoad Options . default ) ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( configured Url : ĠString , Ġvolatile Config : ĠVol atile Config ): ĠNorm Url Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( url , Ġargs ) Ġ= ĠUrl s . split Url Args ( configured Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠLoad Options . parse ( args , Ġvolatile Config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNorm Url ( url , Ġoptions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ