Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
titleSekcja hook'ów

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
languagejava
titlePrzykł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
languagejava
titlePrzykł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
languagejava
titlePrzykład
@HookType( value = UserDelegationHookSubstitutionHook.class )
public class UserDelegationHookProcessorSubstitutionHookProcessor
	extends AbstractHookProcessor<UserDelegationHook>AbstractHookProcessor<SubstitutionHook>
    implements UserDelegationHookSubstitutionHook
{
	public boolean confirmCreateDelegationconfirmCreateSubstitution( String userName, UserDelegationSubstitution delegationsubstitution )
	{
		boolean confirm = true;
		for ( DelegationHookSubstitutionHook hook : getHooks() )
		{
			try
			{
				confirm = hook.confirmCreateDelegationconfirmCreateSubstitution( String userName, delegationsubstitution );
				if( confirm == false )
				{
					return false;
				}
			}
			catch ( HookExceptionException e )
			{
				throw new HookExecutorException( "Hook " + hook.getClass().getSimpleName() + " zwrócił następujący wyjątek: '" + e.getMessage() + "'" );
			}
		}
 
		return confirm;
	}
 
	public void delegationAddedsubstitutionAdded( final String userName, UserDelegationfinal delegationSubstitution substitution )
	{
		foreveryHooks( new HookCallback<SubstitutionHook>()
DelegationHook hook : getHooks() ) 		{ 			try
			{
				hook.delegationAdded( String userName, delegation );
			}
			catch ( HookException e )
			{
				throw new HookExecutorException( "Hook " + hook.getClass().getSimpleName() + " zwrócił następujący wyjątek: '" + e.getMessage() + "'" );
			}
		}
  {
            @Override
            public void doWithHook( SubstitutionHook hook )
            {
                hook.substitutionAdded( userName, substitution );
            }
        } );
	}
}
Note

Procesor powinien znaleźć się w projekcie CORE.

...

Code Block
languagejava
//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.