Jeżeli w systemie jest zdefiniowany hook, to aby się do niego "wpiąć" należy go zaimplementować. W tym celu należy stworzyć klasę, która posiada adnotację @Hook oraz rozszerza abstrakcyjną klasę stworzoną dla danej sekcji hook'ów.
Należy unikać implementowania interfejsu dla sekcji hook'ów, a w zamian tego rozszerzać klasę abstrakcyjną dla tej sekcji. Pozwoli to uniknąć w przyszłości błędów kompilacji w momencie, gdy do interfejsu zostanie dodany nowy hook. Dodatkowo dzięki temu nie ma przymusu implementacji wszystkich hook'ów należących do danej sekcji.
@Hook
public class UserDelegationHookImpl
extends DelegationHookAdapter
{
@Override
public boolean confirmCreateDelegation( String userName, UserDelegation delegation )
{
//implementacja metody
}
@Override
public int getOrder()
{
return 0;
}
}
W powyższym przykładzie został zaimplementowany tylko hook confirmCreateDelegation. Dodatkowo została ustawiona kolejność wykonywania hook'a poprzez nadpisanie metody getOrder(). Jeżeli zaimplementowany byłby ten sam hook z inną logiką i order miałby ustawiony na wyższą wartość, np.: 1, to wtedy zawsze ten hook będzie wykonywany po hooku z orderem 0.
@Hook
public class UserDelegationHookSecond
extends DelegationHookAdapter
{
@Override
public boolean confirmCreateDelegation( String userName, UserDelegation delegation )
{
//implementacja metody
}
@Override
public int getOrder()
{
return 1;
}
}
