com.basecmp.core.usecase
Class CommonUsecaseContext

java.lang.Object
  extended bycom.basecmp.core.usecase.CommonUsecaseContext
All Implemented Interfaces:
UsecaseContext
Direct Known Subclasses:
ServletRequestUsecaseContext

public class CommonUsecaseContext
extends java.lang.Object
implements UsecaseContext

Technologie-unabhängige Basis-Implementierung vom Interface UsecaseContext. Unterstützt keine Scopes!

Created on 13.09.2003

Author:
Wolfgang Schröder

Field Summary
protected  java.util.Map arguments
           
protected  java.util.Map attributes
           
protected  UsecaseCallStack callStack
           
protected  java.lang.Integer currentStepId
           
protected  int currentUnlockKey
           
protected  boolean errorFlag
           
protected  java.lang.Integer lastStepId
           
protected  int lastStepResult
           
protected  boolean locked
           
 
Fields inherited from interface com.basecmp.core.usecase.UsecaseContext
RESULT_ERROR, RESULT_NEXT
 
Constructor Summary
CommonUsecaseContext(UsecaseCallStack stack)
          Standard-Konstruktor.
 
Method Summary
 void addArgument(java.lang.String key, java.lang.Object value)
           
 void addArguments(java.lang.String key, java.lang.Object[] values)
           
 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 sich selbst zurück.
 java.lang.String getHeader(java.lang.String headerName)
          Liefert statisch null, da CommonUsecaseContext technologie-unabhängig ist!
 java.lang.String getHost()
          Liefert statisch null, da CommonUsecaseContext technologie-unabhängig ist!
 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 statisch null, da CommonUsecaseContext technologie-unabhängig ist!
 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 isLocked()
          Liefert den Zustand, ob der Context gesperrt ist zurück.
 boolean isUserInRole(java.lang.String roleName)
          Liefert statisch false, da CommonUsecaseContext technologie-unabhängig ist!
 int lock()
          Sperrt den Zugriff für alle anderen Steps, solange der sperrende Step nicht ein Ergebnis gesetzt hat.
 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 setArgument(java.lang.String key, java.lang.Object value)
           
 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)
          Leere Implementierung ohne jegliche Funktion, da CommonUsecaseContext technologie-unabhängig ist!
 void setStepResult(java.lang.Integer stepId, int stepResult, int unlockKey)
          Speichert das Ergebnis eines Jobs.
 void unlock(int unlockKey)
          Entriegelt den UsecaseContext wieder für allgemeinen Schreibzugriff.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

arguments

protected java.util.Map arguments

attributes

protected java.util.Map attributes

callStack

protected UsecaseCallStack callStack

currentStepId

protected java.lang.Integer currentStepId

currentUnlockKey

protected int currentUnlockKey

errorFlag

protected boolean errorFlag

lastStepId

protected java.lang.Integer lastStepId

lastStepResult

protected int lastStepResult

locked

protected boolean locked
Constructor Detail

CommonUsecaseContext

public CommonUsecaseContext(UsecaseCallStack stack)
Standard-Konstruktor. Initialisiert alle internen Datenstrukturen zur Verwaltung des UsecaseContext.

Ableitungen von CommonUsecaseContext sollten diese Konstruktor-Signatur als private deklarieren und müssen diesen als Super-Konstruktor intern aufrufen. Der abgeleitete UsecaseContext sollte in seiner Konstuktor-Signatur zusätzlich zum UsecaseCallStack ein technologie-abhängiges Datenobjekt entgegennehmen und als sogenannten Delegate intern speichern. ServletRequestUsecaseContext ist eine solche Ableitung und kann als Beispiel dienen.

Ableitungen von CommonUsecaseContext überschreiben normalerweise mehrere oder ggf alle Methoden der folgenden Liste:

Welche Methoden überschrieben werden hängt davon ab, ob das technologie-abhängige Datenobjekt die jeweiligen Konzepte Aufrufparameter (immutable), Laufzeit-Attribute, User, Rollen oder Hostdaten selbst in irgendeiner Form bietet. Wird eines der o.a. Konzepte geboten, müssen alle(!) damit zusamenhängenden Methoden überschrieben werden.

Da CommonUsecaseContext nur eine Basis-Implementierung darstellt, werden die Konzepte User, Rollen und Hostdaten nur mit statischen Rückgabewerten implementiert! Anders gesagt bietet CommonUsecaseContext KEINE verwendungfähige Eigenimplementierung dieser Konzepte, da diese Konzepte für sich genommen schon technologie-abhängig sind und CommonUsecaseContext unabhängig davon funktionieren soll!

See Also:
ServletRequestUsecaseContext, UsecaseCallStack
Method Detail

addArgument

public void addArgument(java.lang.String key,
                        java.lang.Object value)

addArguments

public void addArguments(java.lang.String key,
                         java.lang.Object[] values)

containsKey

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

Specified by:
containsKey in interface UsecaseContext
Parameters:
key -
Returns:

findAttribute

public java.lang.Object findAttribute(java.lang.String key)
Description copied from interface: UsecaseContext
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!

Specified by:
findAttribute in interface UsecaseContext
Parameters:
key -
Returns:

getArgument

public java.lang.Object getArgument(java.lang.String key)
Description copied from interface: UsecaseContext
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.

Specified by:
getArgument in interface UsecaseContext
Parameters:
key -

getArgumentArray

public java.lang.Object[] getArgumentArray(java.lang.String key)
Specified by:
getArgumentArray in interface UsecaseContext

getArgumentAsString

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

Specified by:
getArgumentAsString in interface UsecaseContext
Parameters:
key -

getArgumentMap

public java.util.Map getArgumentMap()
Description copied from interface: UsecaseContext
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.

Specified by:
getArgumentMap in interface UsecaseContext

getArgumentNames

public java.util.Iterator getArgumentNames()
Description copied from interface: UsecaseContext
Liefert einen Iterator über alle vorhandenen Argument-Namen.

Specified by:
getArgumentNames in interface UsecaseContext

getArgumentValues

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

Specified by:
getArgumentValues in interface UsecaseContext
Parameters:
key -

getAttribute

public java.lang.Object getAttribute(java.lang.String key)
Description copied from interface: UsecaseContext
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!

Specified by:
getAttribute in interface UsecaseContext
Parameters:
key -

getAttribute

public java.lang.Object getAttribute(java.lang.String key,
                                     int scope)
Description copied from interface: UsecaseContext
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!

Specified by:
getAttribute in interface UsecaseContext
Parameters:
key -
scope -
Returns:

getAttributeArray

public java.lang.Object[] getAttributeArray(java.lang.String key)
Specified by:
getAttributeArray in interface UsecaseContext

getAttributeNames

public java.util.Iterator getAttributeNames()
Description copied from interface: UsecaseContext
Liefert einen Iterator über alle vorhandenen Attribute-Namen.

Specified by:
getAttributeNames in interface UsecaseContext

getCallStack

public UsecaseCallStack getCallStack()
Description copied from interface: UsecaseContext
Liefert den zum UsecaseContext gehörigen, eindeutigen Callstack.

Specified by:
getCallStack in interface UsecaseContext

getContext

public java.lang.Object getContext()
Liefert sich selbst zurück.

Specified by:
getContext in interface UsecaseContext

getHeader

public java.lang.String getHeader(java.lang.String headerName)
Liefert statisch null, da CommonUsecaseContext technologie-unabhängig ist!

Specified by:
getHeader in interface UsecaseContext

getHost

public java.lang.String getHost()
Liefert statisch null, da CommonUsecaseContext technologie-unabhängig ist!

Specified by:
getHost in interface UsecaseContext

getLastStepId

public java.lang.Integer getLastStepId()
Description copied from interface: UsecaseContext
Liefert die Step-Id des zuletzt ausgeführten Steps

Specified by:
getLastStepId in interface UsecaseContext

getLastStepResult

public int getLastStepResult()
Description copied from interface: UsecaseContext
Liefert das Ergebnis des zuletzt ausgeführten Steps

Specified by:
getLastStepResult in interface UsecaseContext

getUsecaseName

public java.lang.String getUsecaseName()
Description copied from interface: UsecaseContext
Liefert den Namen des aktuell laufenden Usecase.

Specified by:
getUsecaseName in interface UsecaseContext

getUser

public java.lang.String getUser()
Liefert statisch null, da CommonUsecaseContext technologie-unabhängig ist!

Specified by:
getUser in interface UsecaseContext

initiateErrorUsecase

public void initiateErrorUsecase()
Description copied from interface: UsecaseContext
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.

Specified by:
initiateErrorUsecase in interface UsecaseContext

isErrorUsecaseInitiated

public boolean isErrorUsecaseInitiated()
Description copied from interface: UsecaseContext
Gibt den Zustand des Flag wieder.

Specified by:
isErrorUsecaseInitiated in interface UsecaseContext
Returns:
true, wenn als nächster Schritt der Error-Startnode/Usecase ausgeführt werden soll.

isLocked

public boolean isLocked()
Description copied from interface: UsecaseContext
Liefert den Zustand, ob der Context gesperrt ist zurück.

Specified by:
isLocked in interface UsecaseContext

isUserInRole

public boolean isUserInRole(java.lang.String roleName)
Liefert statisch false, da CommonUsecaseContext technologie-unabhängig ist!

Specified by:
isUserInRole in interface UsecaseContext

lock

public int lock()
Description copied from interface: UsecaseContext
Sperrt den Zugriff für alle anderen Steps, solange der sperrende Step nicht ein Ergebnis gesetzt hat. Rückgabewert ist ein eindeutiger int-Wert, der zum Entsperren benötigt wird (unlock-key). Die Step-Id reicht nicht, da ein Step theoretisch auch mehrfach nacheinander ausgeführt werden kann. Der nachfolgende Step darf aber nicht den selben unlock-key besitzen!

Specified by:
lock in interface UsecaseContext

removeAttribute

public void removeAttribute(java.lang.String key)
Description copied from interface: UsecaseContext
Löscht das Object aus dem UsecaseContext

Specified by:
removeAttribute in interface UsecaseContext

removeAttribute

public void removeAttribute(java.lang.String key,
                            int scope)
Description copied from interface: UsecaseContext
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!

Specified by:
removeAttribute in interface UsecaseContext

resetErrorUsecaseFlag

public void resetErrorUsecaseFlag()
Description copied from interface: UsecaseContext
Setzt das Flag zurück.

Specified by:
resetErrorUsecaseFlag in interface UsecaseContext

setArgument

public void setArgument(java.lang.String key,
                        java.lang.Object value)

setAttribute

public void setAttribute(java.lang.String key,
                         java.lang.Object value)
Description copied from interface: UsecaseContext
Speichert das Objekt im UsecaseContext.

Specified by:
setAttribute in interface UsecaseContext
Parameters:
key -

setAttribute

public void setAttribute(java.lang.String key,
                         java.lang.Object value,
                         int scope)
Description copied from interface: UsecaseContext
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!

Specified by:
setAttribute in interface UsecaseContext

setContext

public void setContext(java.lang.Object context)
Leere Implementierung ohne jegliche Funktion, da CommonUsecaseContext technologie-unabhängig ist!

Specified by:
setContext in interface UsecaseContext

setStepResult

public void setStepResult(java.lang.Integer stepId,
                          int stepResult,
                          int unlockKey)
                   throws UsecaseStepExecutionException
Description copied from interface: UsecaseContext
Speichert das Ergebnis eines Jobs. Jeder Job muss vor dem Verlassen der Execute-Methode setJobResult() aufrufen. Vor dem nächsten Job-Aufruf prüft der UsecaseMgr das hinterlassene Ergebnis und anhand dessen, welcher Job als nächstes zum Aufruf kommt. Fehlt das Ergebnis, kommt es zu einer JobExecutionException.

Hintergrund dieser Methode ist die Notwendigkeit der Threadsicherheit von Usecases.

Specified by:
setStepResult in interface UsecaseContext
Parameters:
stepId -
stepResult -
unlockKey -
Throws:
UsecaseStepExecutionException

unlock

public void unlock(int unlockKey)
Description copied from interface: UsecaseContext
Entriegelt den UsecaseContext wieder für allgemeinen Schreibzugriff.

Specified by:
unlock in interface UsecaseContext
Parameters:
unlockKey -


Copyright © 2004 by basecmp® - Professional Web Solutions