...
Info |
---|
|
Jest to interfejs zawierający hook'i dla danej sekcji systemu. Sekcją taką mogą być zastępstwa użytkownika. Tworzony jest jeden interfejs UserDelegationHook SubstitutionHook, który zawiera zbiór metod (hook'ów) związanych z zastępstwami. |
...
Code Block |
---|
language | java |
---|
title | Przykład |
---|
|
public interface UserDelegationHookSubstitutionHook
{
public boolean confirmCreateDelegationconfirmCreateSubstitution( String userName, UserDelegationSubstitution delegationsubstitution );
public void delegationAddedsubstitutionAdded( String userName, UserDelegationSubstitution delegationsubstitution );
} |
Interfejs UserDelegationHook SubstitutionHook definiuje dwa hook'i. Pierwszy jest wywoływany przed utworzeniem zastępstwa, w zależności jaka wartość będzie zwrócona, od tego będzie zależeć, czy zastępstwo powinno zostać utworzone. Drugi hook wywoływany jest już po pomyślnym dodaniu zastępstwa.
...
Code Block |
---|
language | java |
---|
title | Przykład |
---|
|
public abstract class UserDelegationHookAdapterSubstitutionHookAdapter
implements UserDelegationHookSubstitutionHook, Ordered
{
public boolean confirmCreateDelegationconfirmCreateSubstitution( String userName, UserDelegationSubstitution delegationsubstitution )
{
return true;
}
public void delegationAddedsubstitutionAdded( String userName, UserDelegationSubstitution delegationsubstitution )
{
}
public int getOrder()
{
return Ordered.LOWEST_PRECEDENCE;
}
} |
...
Code Block |
---|
language | java |
---|
title | Przykład |
---|
|
@HookType( value = UserDelegationHookSubstitutionHook.class )
public class UserDelegationHookProcessorSubstitutionHookProcessor
extends AbstractHookProcessor<UserDelegationHook>AbstractHookProcessor<SubstitutionHook>
implements UserDelegationHookSubstitutionHook
{
public boolean confirmCreateDelegation( String userName, UserDelegationSubstitution delegationsubstitution )
{
boolean confirm = true;
for ( DelegationHookSubstitutionHook hook : getHooks() )
{
try
{
confirm = hook.confirmCreateDelegationconfirmCreateSubstitution( String userName, delegationsubstitution );
if( confirm == false )
{
return false;
}
}
catch ( HookException e )
{
throw new HookExecutorException( "Hook " + hook.getClass().getSimpleName() + " zwrócił następujący wyjątek: '" + e.getMessage() + "'" );
}
}
return confirm;
}
public void delegationAddedsubstitutionAdded( String userName, UserDelegationSubstitution delegationsubstitution )
{
for ( DelegationHookSubstitution hook : getHooks() )
{
try
{
hook.delegationAddedsubstitutionAdded( String userName, delegationsubstitution );
}
catch ( HookException e )
{
throw new HookExecutorException( "Hook " + hook.getClass().getSimpleName() + " zwrócił następujący wyjątek: '" + e.getMessage() + "'" );
}
}
}
} |
...
Code Block |
---|
|
//dla hook'a confirmCreateDelegationconfirmCreateSubstitution
boolean confirm = hr.invoke( UserDelegationHookSubstitutionHook.class ).confirmCreateDelegationconfirmCreateSubstitution( userName, delegationsubstitution );
//dla hook'a delegationAddedsubstitutionAdded
hr.invoke( UserDelegationHookSubstitutionHook.class ).delegationAddedsubstitutionAdded( userName, delegationsubstitution ); |
Metoda invoke( UserDelegationHookSubstitutionHook.class ) zwraca procesor zarejestrowany dla sekcji hook'ów UserDelegationHook SubstitutionHook. Następnie w procesorze wywoływana jest odpowiednia metoda dla hook'a. Jeżeli nie ma utworzonej żadnej implementacji hook'a, to procesor niczego nie wykona.