package Ġcom . air bnb . dee plink dispatch Ċ Ċ import Ġcom . air bnb . dee plink dispatch . test . Source Ċ import Ġcom . tsch uch ort . compile testing . Kotlin Compilation Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġorg . junit . Test Ċ Ċ class ĠDeep Link Processor Non Incremental Test Ġ: ĠBase Deep Link Processor Test () Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Processor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsample Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . Sample Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// example . com / deep Link ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Handler ({ ĠSample Module . class Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSAMPLE _ DE E PL INK _ MODULE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSAMPLE _ DE E PL INK _ MODULE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert GeneratedCode ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġresults , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistry ClassName Ġ= Ġ" com . example . Sample Module Registry ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Entries Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" air bnb :// example . com / deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Files Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Deep Link Delegate . java " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Base Deep Link Delegate ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util . Arrays ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util . Map ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠDeep Link Delegate Ġextends ĠBase Deep Link Delegate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠDeep Link Delegate ( Sample Module Registry Ġsample Module Registry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Module Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠDeep Link Delegate ( Sample Module Registry Ġsample Module Registry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap < String , ĠString > Ġconfigurable Path Segment Replacement s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Module Registry ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigurable Path Segment Replacement s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sample Module Registry . java " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Base Registry ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . base . Utils ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠSample Module Registry Ġextends ĠBase Registry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠSample Module Registry () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Utils . read Match Index From Strings ( Ġnew ĠString [] Ġ{ match Index 0 (), Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew ĠString []{ }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġstatic ĠString Ġmatch Index 0 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"\ u 0 0 0 1 \ u 0 0 0 1 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 mr \ u 0 0 0 2 \ u 0 0 0 6 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 _ air bnb \ u 0 0 0 4 \ u 0 0 0 b \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 L example . com \ b \ b \ u 0 0 0 0 < \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 deep Link \ u 0 0 0 0 \ u 0 0 1 da ir bnb :// example . com / deep Link \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 0 0 "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Processor WithDefault And Custom Annotations () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Annotation Web Link Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Web Deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Spec ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Spec ( prefix Ġ= Ġ{ Ġ" http :// ", Ġ" https :// "}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ@ interface ĠWeb Deep Link Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString [] Ġvalue (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcustom Annotation App Link Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . App Deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Spec ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Spec ( prefix Ġ= Ġ{ Ġ" example ://" Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ@ interface ĠApp Deep Link Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString [] Ġvalue (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsample Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . Sample Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// example . com / deep Link ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ App Deep Link ({" example . com / deep Link "," example . com / another "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Web Deep Link ({" example . com / deep Link "," example . com / another "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Handler ({ ĠSample Module . class Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults K apt Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Annotation App Link , Ġcustom Annotation Web Link , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSAMPLE _ DE E PL INK _ MODULE , Ġsample Activity , Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert GeneratedCode ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġresults K apt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistry ClassName Ġ= Ġ" com . example . Sample Module Registry ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Entries Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" air bnb :// example . com / deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" example :// example . com / another ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" example :// example . com / deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" http :// example . com / another ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" http :// example . com / deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" https :// example . com / another ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" https :// example . com / deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Files Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Deep Link Delegate . java " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Base Deep Link Delegate ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util . Arrays ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util . Map ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠDeep Link Delegate Ġextends ĠBase Deep Link Delegate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠDeep Link Delegate ( Sample Module Registry Ġsample Module Registry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Module Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠDeep Link Delegate ( Sample Module Registry Ġsample Module Registry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap < String , ĠString > Ġconfigurable Path Segment Replacement s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Module Registry ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigurable Path Segment Replacement s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sample Module Registry . java " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Base Registry ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . base . Utils ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠSample Module Registry Ġextends ĠBase Registry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠSample Module Registry () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Utils . read Match Index From Strings ( Ġnew ĠString [] Ġ{ match Index 0 (), Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew ĠString []{ }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġstatic ĠString Ġmatch Index 0 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"\ u 0 0 0 1 \ u 0 0 0 1 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 2 \ u 0 0 8 cr \ u 0 0 0 2 \ u 0 0 0 6 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 _ air bnb \ u 0 0 0 4 \ u 0 0 0 b \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 L example . com \ b \ b \ u 0 0 0 0 < \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 deep Link \ u 0 0 0 0 \ u 0 0 1 da ir bnb :// example . com / deep Link \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 0 0 \ u 0 0 0 2 \ u 0 0 0 7 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 Â « example \ u 0 0 0 4 \ u 0 0 0 b \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 9 8 example . com \ b \ u 0 0 0 7 \ u 0 0 0 0 < \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 another \ u 0 0 0 0 \ u 0 0 1 dex ample :// example . com / another \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 0 0 \ b \ b \ u 0 0 0 0 =\ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 deep Link \ u 0 0 0 0 \ u 0 0 1 e example :// example . com / deep Link \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 0 0 \ u 0 0 0 2 \ u 0 0 0 4 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 Â ¥ http \ u 0 0 0 4 \ u 0 0 0 b \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 9 2 example . com \ b \ u 0 0 0 7 \ u 0 0 0 0 9 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 another \ u 0 0 0 0 \ u 0 0 1 a http :// example . com / another \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 0 0 \ b \ b \ u 0 0 0 0 :\ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 deep Link \ u 0 0 0 0 \ u 0 0 1 b http :// example . com / deep Link \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 0 0 \ u 0 0 0 2 \ u 0 0 0 5 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 Â§ https \ u 0 0 0 4 \ u 0 0 0 b \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 9 4 example . com \ b \ u 0 0 0 7 \ u 0 0 0 0 :\ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 another \ u 0 0 0 0 \ u 0 0 1 b https :// example . com / another \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 0 0 \ b \ b \ u 0 0 0 0 ;\ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 deep Link \ u 0 0 0 0 \ u 0 0 1 ch ttp s :// example . com / deep Link \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 0 0 "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠK SP Ġdoes Ġnot Ġsupport Ġcustom Ġannotations Ġit Ġdoes Ġnot Ġknow Ġbefore Ġprocessing . ĠWhen Ġusing ĠK SP Ġthey Ġalways ĊĠĠĠĠĠĠĠ Ġ// Ġhave Ġto Ġbe Ġdefined Ġvia Ġthe Ġdeep Link . custom Annotations Ġgradle Ġconfig . ĊĠĠĠĠĠĠĠ Ġval Ġresults K sp Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Annotation App Link , Ġcustom Annotation Web Link , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSAMPLE _ DE E PL INK _ MODULE , Ġsample Activity , Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( results K sp , Ġ"[ k sp ] ĠUnable Ġto Ġfind Ġannotation Ġ' com . example . App Deep Link ' Ġyou Ġmust Ġupdate Ġ' deep Link . custom Annotations ' Ġwithin Ġthe Ġbuild . gradle ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest D uplicated Uri Match () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsample Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . content . Context ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . content . Intent ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . Sample Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Handler ({ ĠSample Module . class Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host /{ var }") ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From One Path With One Param ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host / path ") ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From One Path ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host / path 1 / path 2 ") ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From Two Path ( Context Ġcontext ){ ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host / path 1 / path 2 ? q ={ q }") ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From Two Path With Query ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host /{ var 1 }/{ var 2 }") ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From Two Path With Two Params ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Module ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Module Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule , Ġsample Activity , Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule , Ġsample Activity , Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġresults , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Internal Ġerror Ġduring Ġannotation Ġprocessing : Ġjava . lang . IllegalStateException : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Amb iguous ĠURI . ĠSame Ġmatch Ġfor Ġtwo ĠURIs " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġuppercase Package () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity With Upper case Package Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . Example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . Example . Sample Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// example . com / deep Link ") @ Deep Link Handler ({ ĠSample Module . class Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS IMP LE _ DE E PL INK _ MODULE _ UPPER CASE _ PACKAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity With Upper case Package , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS IMP LE _ DE E PL INK _ MODULE _ UPPER CASE _ PACKAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity With Upper case Package , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert GeneratedCode ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġresults , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistry ClassName Ġ= Ġ" com . Example . Sample Module Registry ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Entries Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" air bnb :// example . com / deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . Example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Files Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Deep Link Delegate . java " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . Example ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Base Deep Link Delegate ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util . Arrays ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util . Map ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠDeep Link Delegate Ġextends ĠBase Deep Link Delegate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠDeep Link Delegate ( Sample Module Registry Ġsample Module Registry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Module Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠDeep Link Delegate ( Sample Module Registry Ġsample Module Registry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap < String , ĠString > Ġconfigurable Path Segment Replacement s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Module Registry ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigurable Path Segment Replacement s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sample Module Registry . java " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . Example ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Base Registry ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . base . Utils ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠSample Module Registry Ġextends ĠBase Registry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠSample Module Registry () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Utils . read Match Index From Strings ( Ġnew ĠString [] Ġ{ match Index 0 (), Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew ĠString []{ }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġstatic ĠString Ġmatch Index 0 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"\ u 0 0 0 1 \ u 0 0 0 1 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 mr \ u 0 0 0 2 \ u 0 0 0 6 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 _ air bnb \ u 0 0 0 4 \ u 0 0 0 b \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 L example . com \ b \ b \ u 0 0 0 0 < \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 deep Link \ u 0 0 0 0 \ u 0 0 1 da ir bnb :// example . com / deep Link \ u 0 0 0 0 \ u 0 0 1 ac om . Example . Sample Activity \ u 0 0 0 0 "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Non Static Method Compile Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsample Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host /{ ar bitrary Number }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠIntent Ġintent From No Static ( Context Ġcontext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( sample Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( sample Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġresults , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Only Ġstatic Ġmethods Ġcan Ġbe Ġannotated " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Processor With Empty Custom Prefix Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġempty Prefix Link Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . My Deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Spec ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Spec ( prefix Ġ= Ġ{ Ġ" http :// ", Ġ"" Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ@ interface ĠMy Deep Link Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString [] Ġvalue (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsource Files Ġ= ĠlistOf ( empty Prefix Link , ĠS IMP LE _ DE E PL INK _ ACTIVITY , ĠSAMPLE _ DE E PL INK _ MODULE ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresults K apt Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= Ġsource Files , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġresults K apt , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Prefix Ġproperty Ġcannot Ġhave Ġnull Ġor Ġempty Ġstrings " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠK SP Ġdoes Ġnot Ġsupport Ġcustom Ġannotations Ġit Ġdoes Ġnot Ġknow Ġbefore Ġprocessing . ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġusing ĠK SP Ġthey Ġalways Ġhave Ġto Ġbe Ġdefined Ġvia Ġthe Ġdeep Link . custom Annotations ĊĠĠĠĠĠĠĠ Ġ// Ġgradle Ġconfig . ĊĠĠĠĠĠĠĠ Ġ// ĠBecause Ġof Ġthis Ġit Ġdoes Ġnot Ġsee Ġthe Ġerror Ġin Ġthe ĠSpec . ĊĠĠĠĠĠĠĠ Ġval Ġresults K sp Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= Ġsource Files , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( results K sp [ 0 ]. result . exit Code ). isEqualTo ( Kotlin Compilation . ExitCode . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Processor With Empty Deep Link Spec Prefixes Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġempty Prefix Array Link Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . My Deep Link ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Spec ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Spec ( prefix Ġ= Ġ{ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ@ interface ĠMy Deep Link Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString [] Ġvalue (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty Prefix Array Link , ĠS IMP LE _ DE E PL INK _ ACTIVITY , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSAMPLE _ DE E PL INK _ MODULE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= Ġsource Files , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( results , Ġ" Prefix Ġproperty Ġcannot Ġbe Ġempty ") ĊĠĠĠĠĠĠĠ Ġ// ĠK SP Ġdoes Ġnot Ġsupport Ġcustom Ġannotations Ġit Ġdoes Ġnot Ġknow Ġbefore Ġprocessing . ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġusing ĠK SP Ġthey Ġalways Ġhave Ġto Ġbe Ġdefined Ġvia Ġthe Ġdeep Link . custom Annotations ĊĠĠĠĠĠĠĠ Ġ// Ġgradle Ġconfig . ĊĠĠĠĠĠĠĠ Ġ// ĠBecause Ġof Ġthis Ġit Ġdoes Ġnot Ġsee Ġthe Ġerror Ġin Ġthe ĠSpec . ĊĠĠĠĠĠĠĠ Ġval Ġresults K sp Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= Ġsource Files , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( results K sp [ 0 ]. result . exit Code ). isEqualTo ( Kotlin Compilation . ExitCode . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Processor With Deep Link Sort Rule () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsample Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . content . Context ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . content . Intent ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . Sample Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Handler ({ ĠSample Module . class Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host /{ var }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From One Path With One Param ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host / path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From One Path ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host / path 1 / path 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From Two Path ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host / path 1 / path 3 ? q ={ q }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From Two Path With Query ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host /{ var 1 }/{ var 2 }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠIntent Ġintent From Two Path With Two Params ( Context Ġcontext ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠIntent (); ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSAMPLE _ DE E PL INK _ MODULE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSAMPLE _ DE E PL INK _ MODULE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake Base Dee plink Delegate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert GeneratedCode ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġresults , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistry ClassName Ġ= Ġ" com . example . Sample Module Registry ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Entries Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" air bnb :// host / path ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġ" intent From One Path " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" air bnb :// host / path 1 / path 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġ" intent From Two Path " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" air bnb :// host / path 1 / path 3 ? q ={ q }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġ" intent From Two Path With Query " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" air bnb :// host /{ var 1 }/{ var 2 }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġ" intent From Two Path With Two Params " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Template Ġ= Ġ" air bnb :// host /{ var }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġ" intent From One Path With One Param " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Files Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Deep Link Delegate . java " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Base Deep Link Delegate ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util . Arrays ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util . Map ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠDeep Link Delegate Ġextends ĠBase Deep Link Delegate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠDeep Link Delegate ( Sample Module Registry Ġsample Module Registry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Module Registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠDeep Link Delegate ( Sample Module Registry Ġsample Module Registry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap < String , ĠString > Ġconfigurable Path Segment Replacement s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Arrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Module Registry ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigurable Path Segment Replacement s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sample Module Registry . java " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Base Registry ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . base . Utils ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠSample Module Registry Ġextends ĠBase Registry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠSample Module Registry () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Utils . read Match Index From Strings ( Ġnew ĠString [] Ġ{ match Index 0 (), Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew ĠString []{ }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġstatic ĠString Ġmatch Index 0 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"\ u 0 0 0 1 \ u 0 0 0 1 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 2 \ u 0 0 0 0 r \ u 0 0 0 2 \ u 0 0 0 6 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 1 Ã² air bnb \ u 0 0 0 4 \ u 0 0 0 4 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 1 Ã¦ host \ b \ u 0 0 0 4 \ u 0 0 0 0 B \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 path \ u 0 0 0 0 \ u 0 0 1 2 air bnb :// host / path \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 1 1 intent From One Path \ b \ u 0 0 0 5 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 Â» path 1 \ b \ u 0 0 0 5 \ u 0 0 0 0 I \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 path 2 \ u 0 0 0 0 \ u 0 0 1 9 air bnb :// host / path 1 / path 2 \ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 1 1 intent From Two Path \ b \ u 0 0 0 5 \ u 0 0 0 0 X \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 path 3 \ u 0 0 0 0 \ u 0 0 1 fair bnb :// host / path 1 / path 3 ? q ={ q }\ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 1 aint ent From Two Path With Query \ u 0 0 1 8 \ u 0 0 0 6 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 f { var 1 }\ u 0 0 1 8 \ u 0 0 0 6 \ u 0 0 0 0 X \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 { var 2 }\ u 0 0 0 0 \ u 0 0 1 b air bnb :// host /{ var 1 }/{ var 2 }\ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 1 e intent From Two Path With Two Params \ u 0 0 1 8 \ u 0 0 0 5 \ u 0 0 0 0 O \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 \ u 0 0 0 0 { var }\ u 0 0 0 0 \ u 0 0 1 3 air bnb :// host /{ var }\ u 0 0 0 0 \ u 0 0 1 ac om . example . Sample Activity \ u 0 0 1 d intent From One Path With One Param "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Non AppCompat Task Stack Builder Class ErrorMessage () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsample Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . content . Context ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . app . Task Stack Builder ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . content . Intent ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// host /{ ar bitrary Number }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠTask Stack Builder Ġintent From No Static ( Context Ġcontext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTask Stack Builder . create ( context ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( sample Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( sample Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Only Ġ` Intent `, Ġ` android x . core . app . Task Stack Builder ` Ġor Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"' com . air bnb . dee plink dispatch . Deep Link MethodResult ' Ġare Ġsupported . ĠPlease Ġdouble Ġcheck Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" your Ġimports Ġand Ġtry Ġagain ." ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Invalid Component Param In Scheme ErrorMessage () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsample Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . Sample Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// example . com / d { eep Link ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Handler ({ ĠSample Module . class Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( SAMPLE _ DE E PL INK _ MODULE , Ġsample Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( SAMPLE _ DE E PL INK _ MODULE , Ġsample Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( results , Ġ" Invalid ĠURI Ġcomponent : Ġd { eep Link . Ġ{ Ġmust Ġcome Ġbefore Ġ} .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Invalid Component Param Path Segment ErrorMessage () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsample Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . Sample Module ; ĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// example . com / de }{ ep Link ") ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Handler ({ ĠSample Module . class Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( SAMPLE _ DE E PL INK _ MODULE , Ġsample Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( SAMPLE _ DE E PL INK _ MODULE , Ġsample Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( results , Ġ" Invalid ĠURI Ġcomponent : Ġde }{ ep Link . Ġ{ Ġmust Ġcome Ġbefore Ġ} .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmalformed Configurable Path Segment Fails With ErrorMessage () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple Activity Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . Example . Sample Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link (" air bnb :// example . com / deep L < ink ") @ Deep Link Handler ({ ĠSample Module . class Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( SAMPLE _ DE E PL INK _ MODULE , Ġsimple Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Files Ġ= ĠlistOf ( SAMPLE _ DE E PL INK _ MODULE , Ġsimple Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse K sp Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Compile Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Malformed Ġpath Ġsegment : Ġdeep L < ink ! ĠIf Ġit Ġcontains Ġ< Ġor Ġ>, Ġit Ġmust Ġstart " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġwith Ġ< Ġand Ġend Ġwith Ġ> ." ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠS IMP LE _ DE E PL INK _ ACTIVITY Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Handler ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . Sample Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ My Deep Link ({" example . com / deep Link "," example . com / another "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSAMPLE _ DE E PL INK _ MODULE Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . example . Sample Module ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Module Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠS IMP LE _ DE E PL INK _ MODULE _ UPPER CASE _ PACKAGE Ġ= ĠSource . Java Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . Example . Sample Module ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . Example ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . air bnb . dee plink dispatch . Deep Link Module ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deep Link Module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠSample Module Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ