schmitzm.data.property
Class Access

java.lang.Object
  extended by schmitzm.data.property.Access
Direct Known Subclasses:
PropertyReadAccess

public abstract class Access
extends Object

Diese Klasse stellt ein allgemeines Zugriffsrecht fuer eine Eigenschaft (Property) dar. Dieses dient dazu, nur bestimmten Zugriff auf das jeweilige Objekt zu erlauben (z.B. nur Lesezugriff). Aus diesem Grund gibt es auch keine getObject()-Methode, ueber welche ein direkter (kompletter) Zugriff auf das Objekt moeglich waere.
Welche und vor allem wie viele (gleichzeitige) Zugriffsrechte ein Objekt erlaubt, wird von der jeweiligen Objektklasse selbst definiert.
Ein Zugriffsrecht kann vom Besitzer zurueckgegeben werden (release()) oder auch von einem globaler Rechteverwalter entzogen werden (dispose()). In beiden Faellen sollen saemtliche folgenden Zugriffsmethoden auf das Objekt mit Exceptions abgebrochen werden.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
protected  int accessTimes
          Speichert, wie of ein Objekt das Zugrifsrecht bereits benutzt hat.
protected  boolean disposed
          Gibt an, ob das Recht noch gueltig ist
protected  int maxAccessTimes
          Speichert, wie of ein Objekt das Zugrifsrecht nutzen darf.
protected  Accessible object
          Speichert das Objekt, ueber das das Zugriffsrecht ausgesprochen wurde.
protected  Object owner
          Speichert den Besitzer des Zugriffsrechts
static int UNLIMITED_ACCESSTIMES
          Diese Konstante steht fuer unbegrenzte Anzahl an Zugriffen auf das Recht
 
Constructor Summary
Access(Accessible object, Object owner)
          Erzeugt ein neues Zugriffsrecht.
Access(Accessible object, Object owner, int maxAccessTimes)
          Erzeugt ein neues Zugriffsrecht.
 
Method Summary
 void checkDisposed()
          Wirft eine AccessViolationException, wenn das Zugriffsrecht nicht mehr gueltig ist.
 void dispose()
          Macht das Recht ungueltig.
 boolean equals(Object access)
          Vergleicht das Zugriffsrecht mit einem anderen.
 int getAccessTimes()
          Liefert die Anzahl an Zugriffen, die der Besitzer bereits (ueber eine Methode) getaetigt hat.
 int getMaxAccessTimes()
          Liefert die Anzahl, die der Besitzer berechtigt ist, das Zugriffsrecht (ueber eine Methode) einzusetzen.
 Object getOwner()
          Liefert den Besitzer des Rechts.
protected  void incAndCheckMaxAccessTimesReached()
          Erhoeht die Anzahl an (Methoden-)Zugriffen auf das Recht und prueft, ob die maximal erlaubte Anzahl erreicht/ueberschritten ist.
 boolean isDisposed()
          Prueft, ob das Recht noch gueltig ist.
 void release()
          Gibt das Recht auf.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

owner

protected Object owner
Speichert den Besitzer des Zugriffsrechts


object

protected Accessible object
Speichert das Objekt, ueber das das Zugriffsrecht ausgesprochen wurde.


disposed

protected boolean disposed
Gibt an, ob das Recht noch gueltig ist


UNLIMITED_ACCESSTIMES

public static final int UNLIMITED_ACCESSTIMES
Diese Konstante steht fuer unbegrenzte Anzahl an Zugriffen auf das Recht

See Also:
Constant Field Values

accessTimes

protected int accessTimes
Speichert, wie of ein Objekt das Zugrifsrecht bereits benutzt hat.


maxAccessTimes

protected int maxAccessTimes
Speichert, wie of ein Objekt das Zugrifsrecht nutzen darf.

Constructor Detail

Access

public Access(Accessible object,
              Object owner,
              int maxAccessTimes)
Erzeugt ein neues Zugriffsrecht.

Parameters:
object - Objekt auf das sich das Recht bezieht
owner - Besitzer des Rechts
maxAccessTimes - Anzahl an (Methoden-)Zugriffen, die der Rechtebesitzer taetigen darf, bevor das Recht automatisch entzogen wird

Access

public Access(Accessible object,
              Object owner)
Erzeugt ein neues Zugriffsrecht. Der Besitzer kann dieses Recht beliebig oft einsetzen.

Parameters:
object - Objekt auf das sich das Recht bezieht
owner - Besitzer des Rechts
Method Detail

getOwner

public Object getOwner()
Liefert den Besitzer des Rechts.


isDisposed

public boolean isDisposed()
Prueft, ob das Recht noch gueltig ist.


checkDisposed

public void checkDisposed()
Wirft eine AccessViolationException, wenn das Zugriffsrecht nicht mehr gueltig ist. Andernfalls passiert nichts.


dispose

public void dispose()
Macht das Recht ungueltig. Entspricht release().


release

public void release()
Gibt das Recht auf. Das betroffene Objekt wird informiert und sollte entsprechend reagieren.
Alle Referenzen auf das betroffene Objekt und auf den Besitzer des Rechts werden entfernt!! getOwner() liefert im folgenden also null.

See Also:
Accessible.releaseAccess(Access)

equals

public boolean equals(Object access)
Vergleicht das Zugriffsrecht mit einem anderen. Zwei Rechte sind gleich, wenn:
  1. Die Klassen identisch sind.
  2. Die Rechtebesitzer identisch sind.
  3. Die Rechte sich auf dasselbe Objekt beziehen.

Overrides:
equals in class Object
Parameters:
access - Ein Zugriffsrecht

getMaxAccessTimes

public int getMaxAccessTimes()
Liefert die Anzahl, die der Besitzer berechtigt ist, das Zugriffsrecht (ueber eine Methode) einzusetzen.

See Also:
UNLIMITED_ACCESSTIMES

getAccessTimes

public int getAccessTimes()
Liefert die Anzahl an Zugriffen, die der Besitzer bereits (ueber eine Methode) getaetigt hat.


incAndCheckMaxAccessTimesReached

protected void incAndCheckMaxAccessTimesReached()
Erhoeht die Anzahl an (Methoden-)Zugriffen auf das Recht und prueft, ob die maximal erlaubte Anzahl erreicht/ueberschritten ist. Ist dies der Fall wird das Zugriffsrecht ungueltig gemacht.

See Also:
dispose()