/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC . Ċ Ġ* Ċ Ġ* ĠThis Ġcode Ġmay Ġonly Ġbe Ġused Ġunder Ġthe ĠBSD Ġstyle Ġlicense Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / LICENSE . txt Ċ Ġ* Ċ Ġ* ĠCode Ġdistributed Ġby ĠGoogle Ġas Ġpart Ġof Ġthis Ġproject Ġis Ġalso Ġsubject Ġto Ġan Ġadditional ĠIP Ġrights Ċ Ġ* Ġgrant Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / PAT ENTS . txt Ċ Ġ*/ Ċ Ċ package Ġar cs . core . storage Ċ Ċ /** ĠLoc ator Ġfor Ġa Ġspecific Ġpiece Ġof Ġdata Ġwithin Ġthe Ġstorage Ġlayer . Ġ*/ Ċ abstract Ġclass ĠStorage Key ( val Ġprotocol : ĠStorage Key Protocol ) Ġ{ ĊĊĠ Ġabstract Ġfun Ġto Key String (): ĠString ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCreates Ġa Ġnew Ġ[ Storage Key ] Ġof Ġthe Ġsame Ġtype , Ġreplacing Ġthe Ġcomponent Ġwith Ġthe Ġgiven Ġone . ĊĠĠ Ġ* ĠCall ers Ġmust Ġensure Ġthat Ġthe Ġcomponent Ġis Ġunique Ġ( or Ġsufficient ly Ġrandom ) Ġif Ġthey Ġwant Ġthe ĊĠĠ Ġ* Ġreturned Ġstorage Ġkey Ġto Ġbe Ġunique . ĠOther , Ġnon - component , Ġproperties Ġof Ġthe Ġ[ Storage Key ] Ġwill Ġbe ĊĠĠ Ġ* Ġpreserved Ġ( if Ġany Ġexist Ġfor Ġthe Ġrelevant Ġ[ Storage Key ] Ġsubclass ). ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġfun Ġnew Key With Component ( component : ĠString ): ĠStorage Key ĊĊĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ"${ protocol . protocol }${ to Key String () }" ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġother :: class Ġ!= Ġthis :: class ) Ġreturn Ġfalse ĊĠĠĠ Ġreturn ĠtoString () Ġ== Ġother . toString () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠhashCode () Ġ= ĠtoString (). hashCode () Ċ } Ċ Ċ /** Ċ Ġ* ĠThis Ġdescribes Ġthe Ġmetadata Ġrelated Ġto Ġa Ġ[ Storage Key ] Ġtype . ĠThe Ġ[ comp anion ] Ġobject Ġof Ġa Ċ Ġ* Ġ[ Storage Key ] Ġimplementation Ġshould Ġimplement Ġthis Ġinterface . Ċ Ġ*/ Ċ interface ĠStorage KeySpec < T Ġ: ĠStorage Key > Ġ: ĠStorage Key Parser < T > Ċ