public final class AccessControlManager extends java.lang.Object implements RegionManager, java.io.Closeable
Klasse, die im Datenmodell Abfragen nach Benutzerberechtigungen erlaubt.
Modifier and Type | Field and Description |
---|---|
static int |
MessageSenderInterval
Interval zwischen 2 Betriebsmeldungen wegen fehlenden Parametern.
|
Constructor and Description |
---|
AccessControlManager(ClientDavInterface connection,
UserRightsChangeHandler userRightsChangeHandler,
boolean useNewDataModel)
Erstellt eine neue Instanz des AccessControlManagers mit impliziter Benutzerverwaltung
|
AccessControlManager(ClientDavInterface connection,
UserRightsChangeHandler userRightsChangeHandler,
boolean useImplicitUserManagement,
boolean useNewDataModel)
Erstellt eine neue Instanz des AccessControlManagers
|
Modifier and Type | Method and Description |
---|---|
void |
addUser(long userId)
Fügt eine Benutzerinformation zu der Benutzertabelle hinzu, wenn der Datenverteiler die Benutzerrechte prüfen soll.
|
void |
close() |
Region |
getRegion(SystemObject systemObject)
Gibt die Region-Klasse zurück die zu dem angeforderten Systemobjekt gehört.
|
java.lang.Object |
getUpdateLock()
Um immer einen konsistenten Zustand zu haben, darf immer nur ein DataLoader gleichzeitig pro AccessControlManager geupdatet werden.
|
UserInfo |
getUser(long userId)
Gibt das gespeicherte BenutzerObjekt mit der angegebenen ID zurück
|
boolean |
isUsingNewDataModel()
Fragt ab, ob das neue Datenmodell benutzt wird.
|
protected void |
notifyInfiniteRecursion(DataLoader node,
DataLoader parent,
java.util.List<DataLoader> trace)
Wird aufgerufen, wenn eine Rekursion in den Systemobjekten gefunden wurde.
|
void |
objectChanged(DataLoader object)
Wird aufgerufen un dem AccessControlManager zu informieren, dass ein verwaltetes Objekt sich geändert hat.
|
void |
removeUser(long userId)
Löscht einen Benutzer aus der Benutzertabelle, wenn der Datenverteiler die Benutzerrechte prüfen soll.
|
java.lang.String |
toString() |
public static final int MessageSenderInterval
Interval zwischen 2 Betriebsmeldungen wegen fehlenden Parametern. Außerdem die Zeit, die mindestens vergangen sein muss, bis ein fehlender Parameterdatensatz gemeldet wird. Bei der Anpassung der Zeit muss möglicherweise der Wortlaut der Betriebsmeldung geändert werden.
public AccessControlManager(ClientDavInterface connection, UserRightsChangeHandler userRightsChangeHandler, boolean useNewDataModel)
Erstellt eine neue Instanz des AccessControlManagers mit impliziter Benutzerverwaltung
connection
- Verbindung zum DatenverteileruserRightsChangeHandler
- Klasse, die über Änderungen an den Benutzerrechten informiert werden soll. Das ist im allgemeinen der HighLevelSubscriptionsManager
, der bei sich ändernden Rechten eventuell ungültig gewordene Anmeldungen deaktiviert, kann aber für Testfälle und andere Anwendungen auch ein anderes (möglicherweise deutlich kleineres) Objekt sein.useNewDataModel
- Sollen die neuen Zugriffsrechte benutzt werden?public AccessControlManager(ClientDavInterface connection, UserRightsChangeHandler userRightsChangeHandler, boolean useImplicitUserManagement, boolean useNewDataModel)
Erstellt eine neue Instanz des AccessControlManagers
connection
- Verbindung zum DatenverteileruserRightsChangeHandler
- Klasse, die über Änderungen an den Benutzerrechten informiert werden soll. Das ist im allgemeinen der HighLevelSubscriptionsManager
, der bei sich ändernden Rechten eventuell ungültig gewordene Anmeldungen deaktiviert, kann aber für Testfälle und andere Anwendungen auch ein anderes (möglicherweise deutlich kleineres) Objekt sein.useImplicitUserManagement
- Wenn false, werden nur Benutzer berücksichtigt, die mit addUser und removeUser in diese Klasse eingefügt werden.useNewDataModel
- Sollen die neuen Zugriffsrechte benutzt werden?public void close()
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
public java.lang.String toString()
toString
in class java.lang.Object
public final void addUser(long userId)
Fügt eine Benutzerinformation zu der Benutzertabelle hinzu, wenn der Datenverteiler die Benutzerrechte prüfen soll. Existiert der Benutzer bereits, wird lediglich die interne Referenz inkrementiert.
userId
- BenutzerIDpublic boolean isUsingNewDataModel()
Fragt ab, ob das neue Datenmodell benutzt wird. Das neue Datenmodell enthält eine neue Struktur der Region und Rollen-Objekten und ermöglicht Beschränkungen bei der Erstellung von dynamischen Objekten.
protected void notifyInfiniteRecursion(DataLoader node, DataLoader parent, java.util.List<DataLoader> trace)
Wird aufgerufen, wenn eine Rekursion in den Systemobjekten gefunden wurde. Dabei wird eine _Debug-Meldung ausgegeben und das Elternelement angewiesen die Referenz auf das Kindobjekt zu deaktivieren.
node
- Der Knoten, der sich selbst referenziertparent
- Der Knoten, der den problematischen Knoten referenzierttrace
- Komplette Hierarchie vom Benutzer zum problematischen Objekt.public Region getRegion(SystemObject systemObject)
Gibt die Region-Klasse zurück die zu dem angeforderten Systemobjekt gehört.
getRegion
in interface RegionManager
systemObject
- Systemobjekt, das eine Region repräsentiertpublic UserInfo getUser(long userId)
Gibt das gespeicherte BenutzerObjekt mit der angegebenen ID zurück
userId
- Angegebene BenutzerIdpublic final void removeUser(long userId)
Löscht einen Benutzer aus der Benutzertabelle, wenn der Datenverteiler die Benutzerrechte prüfen soll. Wenn die interne Referenz eines Benutzers 0 ist, dann wird die Benutzerinformation aus der Tabelle entfernt.
userId
- BenutzerIDpublic void objectChanged(DataLoader object)
Wird aufgerufen un dem AccessControlManager zu informieren, dass ein verwaltetes Objekt sich geändert hat. Der AccessControlManager wird daraufhin nach Benutzer-Objekten suchen, die dieses Objekt verwenden und an den HighLevelSubscriptionsManager
eine Benachrichtigung senden, dass sich die Rechte des Benutzers geändert haben und eventuelle vorhandene Anmeldungen entfernt werden müssen.
objectChanged
in interface RegionManager
object
- Objekt das sich geändert hatpublic java.lang.Object getUpdateLock()
Um immer einen konsistenten Zustand zu haben, darf immer nur ein DataLoader gleichzeitig pro AccessControlManager geupdatet werden. Dazu wird auf dieses dummy-Objekt synchronisiert
getUpdateLock
in interface RegionManager