package Ġcom . we ed ow . search y . mongodb . query . query type Ċ Ċ import Ġcom . query dsl . core . types . Path Ċ import Ġcom . query dsl . core . types . Path Metadata Ċ import Ġcom . query dsl . core . types . Path Metadata Factory Ċ import Ġcom . query dsl . core . types . Visitor Ċ import Ġcom . query dsl . core . types . dsl . Expressions Ċ import Ġcom . query dsl . core . types . dsl . Path Builder Ċ import Ġcom . query dsl . core . types . dsl . Simple Expression Ċ import Ġcom . we ed ow . search y . query . query type .* Ċ import Ġcom . we ed ow . search y . utils . MAP _ KEY Ċ import Ġcom . we ed ow . search y . utils . MAP _ VALUE Ċ import Ġjava . lang . reflect . Annotated Element Ċ Ċ /** Ċ Ġ* Ġ[ Q Entity Join ] Ġimplementation . Ċ Ġ* Ċ Ġ* Ġ@ param Ġq Entity Ġ[ Q Entity ] Ċ Ġ* Ġ@ param Ġproperty Infos Ġ[ Property Infos ] Ċ Ġ*/ Ċ class ĠQ Entity Join Impl < T >( ĊĠĠĠ Ġprivate Ġval Ġq Entity : ĠQ Entity < out ĠT >, ĊĠĠĠ Ġprivate Ġval Ġproperty Infos : ĠProperty Infos Ċ ) Ġ: ĠQ Entity Join < T > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget ( fieldName : ĠString ): ĠQ Path < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( property Infos . elementType Ġ== ĠElementType . MAP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( fieldName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMAP _ KEY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ Path Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Map Path Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Infos . parameter ized Types [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Infos . parameter ized Types [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq Entity . metadata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElementType . MAP _ KEY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Parameterized Property Infos ( property Infos . parameter ized Types [ 0 ], ĠElementType . MAP _ KEY , Ġproperty Infos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMAP _ VALUE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ Path Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Map Path Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Infos . parameter ized Types [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Infos . parameter ized Types [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath Metadata Factory . for Property ( q Entity , ĠfieldName ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElementType . MAP _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Parameterized Property Infos ( property Infos . parameter ized Types [ 1 ], ĠElementType . MAP _ VALUE , Ġproperty Infos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġq Entity . get ( fieldName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( property Infos . elementType Ġ== ĠElementType . MAP _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġq Path Ġ= Ġq Entity . get ( fieldName ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ Path Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath Wrapper Impl ( q Path . path , ĠElementType . MAP _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Parameterized Property Infos ( q Path . property Infos . type , ĠElementType . MAP _ VALUE , Ġq Path . property Infos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq Entity . get ( fieldName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< R Ġ: ĠAny ?, ĠC Ġ: ĠAny ?> Ġaccept ( v : ĠVisitor < R , ĠC > ?, Ġcontext : ĠC ?): ĠR ? Ġ= Ġq Entity . accept ( v , Ġcontext ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetType (): ĠClass < out ĠT > Ġ= Ġq Entity . type ĊĊĠĠĠ Ġoverride Ġfun Ġget Metadata ( property : ĠPath < *> ?): ĠAny Ġ= Ġq Entity . getMetadata ( property ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Metadata (): ĠPath Metadata Ġ= Ġq Entity . metadata ĊĊĠĠĠ Ġoverride Ġfun Ġget Root (): ĠPath < *> Ġ= Ġq Entity . root ĊĊĠĠĠ Ġoverride Ġfun Ġget Annotated Element (): ĠAnnot ated Element Ġ= Ġq Entity . annotated Element ĊĊĠĠĠ Ġprivate Ġfun Ġ< K , ĠV , ĠE Ġ: ĠSimple Expression < V >> Ġcreate Map Path Wrapper ( ĊĠĠĠĠĠĠĠ Ġkey Type : ĠClass < K >, ĊĠĠĠĠĠĠĠ Ġvalue Type : ĠClass < V >, ĊĠĠĠĠĠĠĠ Ġmetadata : ĠPath Metadata , ĊĠĠĠĠĠĠĠ Ġelement Type : ĠElementType ĊĠĠĠ Ġ) Ġ= ĠMap Path Wrapper Impl < K , ĠV , ĠE >( Expressions . map Path ( key Type , Ġvalue Type , ĠPath Builder :: class . java Ġas ĠClass < E >, Ġmetadata ), Ġelement Type ) ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġget Parameterized Property Infos ( parameter ized Type : ĠClass <* >, Ġelement Type : ĠElementType , Ġproperty Infos : ĠProperty Infos ): ĠProperty Infos Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproperty Infos . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Class Ġ= Ġproperty Infos . parent Class , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfieldName Ġ= Ġproperty Infos . fieldName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Type Ġ= Ġelement Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġparameter ized Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameter ized Types Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotations Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Type Ġ= Ġelement Type . path Class Ġas ĠClass < out ĠSimple Expression <* >> ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ }