com.basecmp.core.usecase
Interface UsecaseContext

All Known Implementing Classes:
CommonUsecaseContext

public interface UsecaseContext

Ein UsecaseContext dient als gemeinsamer Daten-Container, der von den einzelnen Schritten (UsecaseStep) eines Usecase benutzt werden kann, um Datenobjekte jedweder Art daraus zu lesen oder darin abzulegen. Er wird außerdem dazu benutzt, Laufzeit-Verwaltungsinformationen darin zu speichern.

Vom Aspekt der Einsatzumgebung (Http-Request, Webservice, lokal) gesehen, dient UsecaseContext vor allem als Abstraktionsschicht, um die Business-Logik eines Usecase von der eingesetzten User-Interface-Technologie zu entkoppeln. Durch den Interface-Character ist ein UsecaseContext gegenüber der eingesetzen Umgebung eine "Daten-Durchreiche" mit genormten Zugriff, gleichgültig, welche Technologie verwendet wird.

Die Klasse CommonUsecaseContext liefert eine vollständige Implementierung von UsecaseContext. Konkrete Implementierungen können von CommonUsecaseContext ableiten und sollten alle Methoden überschreiben, die Abhängigkeiten zur eingesetzten Technologie haben, bzw nur als "Daten-Durchreiche" dienen (Delegate-Pattern).

UsecaseContext führt folgende Begriffe ein:

Created on 13.09.2003

See Also:
UsecaseMgr, UsecaseStep, CommonUsecaseContext
Author:
Wolfgang Schröder

Field Summary
static int RESULT_ERROR
          Symbolischer Wert für einen fehlerhaft beendeten Step-Result.
static int RESULT_NEXT
          Symbolischer Wert für einen normal beendeten Step-Result.
 
Method Summary
 boolean containsKey(java.lang.String key)
          Liefert true, wenn im UsecaseContext ein Attribute oder ein Argument unter dem angegebenen Key vorhanden ist.
 java.lang.Object findAttribute(java.lang.String key)
          Suche das Objekt in allen zur Verfügung stehenden Scope aus dem UsecaseContext.
 java.lang.Object getArgument(java.lang.String key)
          Liefert das (unmanipulierbare) Start-Argument des Usecase.
 java.lang.Object[] getArgumentArray(java.lang.String key)
           
 java.lang.String getArgumentAsString(java.lang.String key)
          Liefert eine String-Repräsentation des Argument-Objektes der Hauptfunktion getArgument(key).
 java.util.Map getArgumentMap()
          Liefert ein Map-Objekt mit allen Start-Argumenten des Usecase.
 java.util.Iterator getArgumentNames()
          Liefert einen Iterator über alle vorhandenen Argument-Namen.
 java.util.List getArgumentValues(java.lang.String key)
          Liefert eine ArrayList-Repräsentation des Argument-Objektes der Hauptfunktion getArgument(key).
 java.lang.Object getAttribute(java.lang.String key)
          Liefert das (zuvor gespeicherte) Objekt aus dem UsecaseContext.
 java.lang.Object getAttribute(java.lang.String key, int scope)
          Liefert das Objekt mit dem angegebenen Scope aus dem UsecaseContext.
 java.lang.Object[] getAttributeArray(java.lang.String key)
           
 java.util.Iterator getAttributeNames()
          Liefert einen Iterator über alle vorhandenen Attribute-Namen.
 UsecaseCallStack getCallStack()
          Liefert den zum UsecaseContext gehörigen, eindeutigen Callstack.
 java.lang.Object getContext()
          Liefert das zugrunde liegende Kontextobjekt.
 java.lang.String getHeader(java.lang.String headerName)
          Liefert den Remote Header des Contextes.
 java.lang.String getHost()
          Liefert den Remote Host, der den Usecase aufgerufen hat.
 java.lang.Integer getLastStepId()
          Liefert die Step-Id des zuletzt ausgeführten Steps
 int getLastStepResult()
          Liefert das Ergebnis des zuletzt ausgeführten Steps
 java.lang.String getUsecaseName()
          Liefert den Namen des aktuell laufenden Usecase.
 java.lang.String getUser()
          Liefert den Loginnamen des Users, der den Usecase aufgerufen hat.
 void initiateErrorUsecase()
          Stetzt im UsecaseContext ein Flag um zu signalisieren, das der als nächster Step der Fehler-Usecase gestartet werden muss.
 boolean isErrorUsecaseInitiated()
          Gibt den Zustand des Flag wieder.
 boolean isUserInRole(java.lang.String roleName)
          Liefert true, wenn der authentifizierte User Inhaber der angegebenen Rolle ist.
 void removeAttribute(java.lang.String key)
          Löscht das Object aus dem UsecaseContext
 void removeAttribute(java.lang.String key, int scope)
          Löscht das Objekt mit dem angegebenen Scope aus dem UsecaseContext.
 void resetErrorUsecaseFlag()
          Setzt das Flag zurück.
 void setAttribute(java.lang.String key, java.lang.Object value)
          Speichert das Objekt im UsecaseContext.
 void setAttribute(java.lang.String key, java.lang.Object value, int scope)
          Setzt das Objekt in dem angegebenen Scope im UsecaseContext.
 void setContext(java.lang.Object context)
          Bietet die Möglichkeit, das zugrunde liegende Kontextobjekt gegen ein neues auszutauschen.
 

Field Detail

RESULT_ERROR

public static final int RESULT_ERROR
Symbolischer Wert für einen fehlerhaft beendeten Step-Result.

See Also:
Constant Field Values

RESULT_NEXT

public static final int RESULT_NEXT
Symbolischer Wert für einen normal beendeten Step-Result.

See Also:
Constant Field Values
Method Detail

containsKey

public boolean containsKey(java.lang.String key)
Liefert true, wenn im UsecaseContext ein Attribute oder ein Argument unter dem angegebenen Key vorhanden ist.

Parameters:
key -
Returns:

findAttribute

public java.lang.Object findAttribute(java.lang.String key)
Suche das Objekt in allen zur Verfügung stehenden Scope aus dem UsecaseContext. Ob Scopes unterstützt werden ist von der vom Context gewrappten Umgebung abhängig!

Liefert null, wenn kein Attribut unter dem angegebenen Namen in allen Scopes existiert!

Parameters:
key -
Returns:

getArgument

public java.lang.Object getArgument(java.lang.String key)
Liefert das (unmanipulierbare) Start-Argument des Usecase. Die Quelle des Start-Argument ist nicht der Usecase-Context, sondern das Objekt, welches den Context instanziert und initialisiert. Eine konkrete Kontext-Implementierung für die Benutzung in einem Servlet-Container, würde z.B. sämtliche Request-Parameter über diese Methode durchreichen. Liefert null, wenn kein Argument unter dem angegebenen Namen existiert!

Eine benutzbare Grundimplementierung steht mit der Klasse CommonUsecaseContext zur Verfügung, welche sowohl direkt benutzt werden kann, als auch abgeleitet werden kann für Eigenimplementierungen.

Parameters:
key -

getArgumentArray

public java.lang.Object[] getArgumentArray(java.lang.String key)

getArgumentAsString

public java.lang.String getArgumentAsString(java.lang.String key)
Liefert eine String-Repräsentation des Argument-Objektes der Hauptfunktion getArgument(key). Liefert null für nicht-existente Argumente.

Parameters:
key -

getArgumentMap

public java.util.Map getArgumentMap()
Liefert ein Map-Objekt mit allen Start-Argumenten des Usecase. Die Key der Map entsprechen den Argumentnamen. Im Falle von mehrdeutigen Werten für einen Key, ist der Wert eine List (ArrayList) mit allen Werten des Keys.


getArgumentNames

public java.util.Iterator getArgumentNames()
Liefert einen Iterator über alle vorhandenen Argument-Namen.


getArgumentValues

public java.util.List getArgumentValues(java.lang.String key)
Liefert eine ArrayList-Repräsentation des Argument-Objektes der Hauptfunktion getArgument(key).

Parameters:
key -

getAttribute

public java.lang.Object getAttribute(java.lang.String key)
Liefert das (zuvor gespeicherte) Objekt aus dem UsecaseContext. Ist kein Attribut unter diesem Namen vorhanden, wird versucht, das gleichnamige Argument zu finden und zurückzuliefern.

Liefert null, wenn kein Attribut und kein Argument unter dem angegebenen Namen existiert!

Parameters:
key -

getAttribute

public java.lang.Object getAttribute(java.lang.String key,
                                     int scope)
Liefert das Objekt mit dem angegebenen Scope aus dem UsecaseContext. Ob der Scope unterstützt wird (oder das Scope-Konzept überhaupt) ist von der vom Context gewrappten Umgebung abhängig!

Liefert null, wenn kein Attribut unter dem angegebenen Namen/Scope existiert!

Parameters:
key -
scope -
Returns:

getAttributeArray

public java.lang.Object[] getAttributeArray(java.lang.String key)

getAttributeNames

public java.util.Iterator getAttributeNames()
Liefert einen Iterator über alle vorhandenen Attribute-Namen.


getCallStack

public UsecaseCallStack getCallStack()
Liefert den zum UsecaseContext gehörigen, eindeutigen Callstack.


getContext

public java.lang.Object getContext()
Liefert das zugrunde liegende Kontextobjekt. Bei der einfachen Implementierung CommonUsecaseContext liefert diese Funktion eine Referenz auf sich selbst. Im Fall von ServletRequestUsecaseContext wird der ServletRequest zurückgeliefert, welcher intern als Delegate benutzt wird. Diese Funktion wird immer dann benötigt, wenn es notwendig ist, direkt auf Methoden zuzugreifen, die nicht im Interface UsecaseContext definiert sind.


getHeader

public java.lang.String getHeader(java.lang.String headerName)
Liefert den Remote Header des Contextes. CommonUsecaseContext liefert z.Zt statisch null! ServletRequestUsecaseContext delegiert diese Methode an getHeader() des internen ServletRequest-Objektes.


getHost

public java.lang.String getHost()
Liefert den Remote Host, der den Usecase aufgerufen hat. CommonUsecaseContext liefert z.Zt statisch null! ServletRequestUsecaseContext delegiert diese Methode an getRemoteHost() des internen ServletRequest-Objektes.


getLastStepId

public java.lang.Integer getLastStepId()
Liefert die Step-Id des zuletzt ausgeführten Steps


getLastStepResult

public int getLastStepResult()
Liefert das Ergebnis des zuletzt ausgeführten Steps


getUsecaseName

public java.lang.String getUsecaseName()
Liefert den Namen des aktuell laufenden Usecase.


getUser

public java.lang.String getUser()
Liefert den Loginnamen des Users, der den Usecase aufgerufen hat. Hat keine Authentifizierung stattgefunden, wird null zurückgegeben. CommonUsecaseContext liefert z.Zt statisch null! ServletRequestUsecaseContext delegiert diese Methode an getRemoteUser() des internen ServletRequest-Objektes.


initiateErrorUsecase

public void initiateErrorUsecase()
Stetzt im UsecaseContext ein Flag um zu signalisieren, das der als nächster Step der Fehler-Usecase gestartet werden muss. Ist im aktuellen Usecase ein Startnode mit Namen "Error" vorhanden, wird dieser ein Jump auf diesen Node als nächster Schritt ausgeführt. Gibt es keinen Error-Startnode, wird die der Usercase mit Namen Error aufgerufen.


isErrorUsecaseInitiated

public boolean isErrorUsecaseInitiated()
Gibt den Zustand des Flag wieder.

Returns:
true, wenn als nächster Schritt der Error-Startnode/Usecase ausgeführt werden soll.

isUserInRole

public boolean isUserInRole(java.lang.String roleName)
Liefert true, wenn der authentifizierte User Inhaber der angegebenen Rolle ist. CommonUsecaseContext liefert z.Zt statisch false! ServletRequestUsecaseContext delegiert diese Methode an die gleichnamige Methode des internen ServletRequest-Objektes.


removeAttribute

public void removeAttribute(java.lang.String key)
Löscht das Object aus dem UsecaseContext


removeAttribute

public void removeAttribute(java.lang.String key,
                            int scope)
Löscht das Objekt mit dem angegebenen Scope aus dem UsecaseContext. Ob der Scope unterstützt wird (oder das Scope-Konzept überhaupt) ist von der vom Context gewrappten Umgebung abhängig!


resetErrorUsecaseFlag

public void resetErrorUsecaseFlag()
Setzt das Flag zurück.


setAttribute

public void setAttribute(java.lang.String key,
                         java.lang.Object value)
Speichert das Objekt im UsecaseContext.

Parameters:
key -

setAttribute

public void setAttribute(java.lang.String key,
                         java.lang.Object value,
                         int scope)
Setzt das Objekt in dem angegebenen Scope im UsecaseContext. Ob der Scope unterstützt wird (oder das Scope-Konzept überhaupt) ist von der vom Context gewrappten Umgebung abhängig!


setContext

public void setContext(java.lang.Object context)
Bietet die Möglichkeit, das zugrunde liegende Kontextobjekt gegen ein neues auszutauschen. Im Falle der ServletRequest-Implementierung wird diese Funktion für MultipartRequests benutzt.



Copyright © 2004 by basecmp® - Professional Web Solutions