Tapestry4.0 foloseste containerul IoC HiveMind1.1 pentru a-si defini infrastructura - serviciile sunt create prin parsarea tuturor fisierelor META-INF/hivemodule.xml gasite in classpath. De asemenea, un astfel de serviciu poate fi suprascris in alt modul. Si in plus, in modulul tapestry.page mai exista definit serviciul tapestry.page.PageSpecificationResolver care, dupa cum ii zice si numele, are rolul de a "rezolva" specificatiile paginilor Tapestry (toate modulele sunt descrise aici).
Bun, deci taskul de care vorbeam se poate realiza prin crearea unui nou jar care sa fie pus in classpath-ul aplicatiei si care sa contina in META-INF un fisier hivemodule.xml in care se redefineste serviciul tapestry.page.PageSpecificationResolver, ceva de genul:
<implementation service-id="tapestry.page.PageSpecificationResolver">
<invoke-factory model="threaded">
<construct class="application.resolver.MyCustomPageSpecificationResolver">
...
</construct>
</invoke-factory>
</implementation>
unde clasa MyCustomPageSpecificationResolver extinde PageSpecificationResolverImpl si suprascrie metoda resolve.
Acceasi treaba se poate face si pentru componente, prin suprascrierea serviciului tapestry.page.ComponentSpecificationResolver si extinderea ComponentSpecificationResolverImpl.
No comments:
Post a Comment