Class DafAccessControlManager
- java.lang.Object
-
- de.bsvrz.dav.daf.accessControl.internal.DafAccessControlManager
-
- All Implemented Interfaces:
AccessControlManager
,RegionManager
,java.io.Closeable
,java.lang.AutoCloseable
public class DafAccessControlManager extends java.lang.Object implements AccessControlManager, RegionManager, java.io.Closeable
AccessControlManager-Implementierung, die die Benutzerrechteverwaltung und Rechteprüfung durchführt.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.HashMap<SystemObject,AccessControlUnit>
_authenticationClassHashMap
Map, die Berechtigungsklassen den kapselnden AccessControlUnit-Klassen zuordnetprotected ClientDavInterface
_connection
Datenverteilerverbindungprotected static de.bsvrz.sys.funclib.debug.Debug
_debug
Debugprotected boolean
_isUsingNewDataModel
Ob das neue Datenmodell (sieheExtendedUserInfo
) benutzt wirdprotected java.util.HashMap<SystemObject,Region>
_regionHashMap
Map, die Regionen den kapselnden Region-Klassen zuordnetprotected java.util.HashMap<SystemObject,Role>
_roleHashMap
Map, die Rollen den kapselnden Role-Klassen zuordnetprotected boolean
_useImplicitUserManagement
Ob implizite Benutzerverwaltung durchgeführt wird, oder Benutzer mit addUser erstellt werden müssenprotected java.util.HashMap<java.lang.Long,UserInfoInternal>
_userInfoHashMap
Map, die BenutzerIds den Benutzerobjekten zuordnetprotected java.util.concurrent.locks.ReentrantReadWriteLock
_userMapLock
Lock-Objekt für_userInfoHashMap
-
Constructor Summary
Constructors Constructor Description DafAccessControlManager(boolean useNewDataModel, ClientDavInterface connection, boolean useImplicitUserManagement)
-
Method Summary
Modifier and Type Method Description void
addChangeListener(AccessControlChangeListener listener)
Meldet einen Listener auf geänderte Nutzerrechte anvoid
addUser(long userId)
Fügt eine Benutzerinformation zu der Benutzertabelle hinzu, wenn der Datenverteiler die Benutzerrechte prüfen soll.void
close()
AccessControlUnit
getAuthenticationClass(SystemObject systemObject)
Gibt die AuthenticationClass-Klasse zurück die zu dem angeforderten Systemobjekt gehört.Region
getRegion(SystemObject systemObject)
Gibt die Region-Klasse zurück die zu dem angeforderten Systemobjekt gehört.Role
getRole(SystemObject systemObject)
Gibt die Role-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
getUserPermissions()
Gibt die Benutzerrechte zum aktuell angemeldeten Benutzer zurück.UserInfo
getUserPermissions(long userId)
Gibt das gespeicherte BenutzerObjekt mit der angegebenen ID zurückboolean
isUsingNewDataModel()
Fragt ab, ob das neue Datenmodell benutzt wird.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
removeChangeListener(AccessControlChangeListener listener)
Entfernt einen Listener auf geänderte Benutzerrechte-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface de.bsvrz.dav.daf.accessControl.AccessControlManager
getUserPermissions, getUserPermissions
-
-
-
-
Field Detail
-
_debug
protected static final de.bsvrz.sys.funclib.debug.Debug _debug
Debug
-
_userInfoHashMap
protected final java.util.HashMap<java.lang.Long,UserInfoInternal> _userInfoHashMap
Map, die BenutzerIds den Benutzerobjekten zuordnet
-
_authenticationClassHashMap
protected final java.util.HashMap<SystemObject,AccessControlUnit> _authenticationClassHashMap
Map, die Berechtigungsklassen den kapselnden AccessControlUnit-Klassen zuordnet
-
_roleHashMap
protected final java.util.HashMap<SystemObject,Role> _roleHashMap
Map, die Rollen den kapselnden Role-Klassen zuordnet
-
_regionHashMap
protected final java.util.HashMap<SystemObject,Region> _regionHashMap
Map, die Regionen den kapselnden Region-Klassen zuordnet
-
_connection
protected final ClientDavInterface _connection
Datenverteilerverbindung
-
_isUsingNewDataModel
protected final boolean _isUsingNewDataModel
Ob das neue Datenmodell (sieheExtendedUserInfo
) benutzt wird
-
_useImplicitUserManagement
protected final boolean _useImplicitUserManagement
Ob implizite Benutzerverwaltung durchgeführt wird, oder Benutzer mit addUser erstellt werden müssen
-
_userMapLock
protected final java.util.concurrent.locks.ReentrantReadWriteLock _userMapLock
Lock-Objekt für_userInfoHashMap
-
-
Constructor Detail
-
DafAccessControlManager
public DafAccessControlManager(boolean useNewDataModel, ClientDavInterface connection, boolean useImplicitUserManagement)
-
-
Method Detail
-
addChangeListener
public void addChangeListener(AccessControlChangeListener listener)
Description copied from interface:AccessControlManager
Meldet einen Listener auf geänderte Nutzerrechte an- Specified by:
addChangeListener
in interfaceAccessControlManager
- Parameters:
listener
- Listener
-
removeChangeListener
public void removeChangeListener(AccessControlChangeListener listener)
Description copied from interface:AccessControlManager
Entfernt einen Listener auf geänderte Benutzerrechte- Specified by:
removeChangeListener
in interfaceAccessControlManager
- Parameters:
listener
- Listener
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
-
addUser
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.- Parameters:
userId
- BenutzerID
-
isUsingNewDataModel
public 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.- Returns:
- True wenn das neue Modell benutzt wird, sonst false
-
notifyInfiniteRecursion
public 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.- Parameters:
node
- Der Knoten, der sich selbst referenziertparent
- Der Knoten, der den problematischen Knoten referenzierttrace
- Komplette Hierarchie vom Benutzer zum problematischen Objekt.
-
getAuthenticationClass
public AccessControlUnit getAuthenticationClass(SystemObject systemObject)
Gibt die AuthenticationClass-Klasse zurück die zu dem angeforderten Systemobjekt gehört.- Parameters:
systemObject
- Systemobjekt, das eine Berechtigungsklasse repräsentiert- Returns:
- AuthenticationClass-Klasse die Abfragen auf eine Berechtigungsklasse ermöglicht
-
getRegion
public Region getRegion(SystemObject systemObject)
Gibt die Region-Klasse zurück die zu dem angeforderten Systemobjekt gehört.- Specified by:
getRegion
in interfaceRegionManager
- Parameters:
systemObject
- Systemobjekt, das eine Region repräsentiert- Returns:
- Region-Klasse die Abfragen auf eine Region ermöglicht
-
getRole
public Role getRole(SystemObject systemObject)
Gibt die Role-Klasse zurück die zu dem angeforderten Systemobjekt gehört.- Parameters:
systemObject
- Systemobjekt, das eine Rolle repräsentiert- Returns:
- Role-Klasse die Abfragen auf eine Rolle ermöglicht
-
getUserPermissions
public UserInfo getUserPermissions(long userId)
Gibt das gespeicherte BenutzerObjekt mit der angegebenen ID zurück- Specified by:
getUserPermissions
in interfaceAccessControlManager
- Parameters:
userId
- Angegebene BenutzerId- Returns:
- Das geforderte UserInfo-Objekt
-
getUserPermissions
public UserInfo getUserPermissions()
Description copied from interface:AccessControlManager
Gibt die Benutzerrechte zum aktuell angemeldeten Benutzer zurück.- Specified by:
getUserPermissions
in interfaceAccessControlManager
- Returns:
- Ein UserInfo-Objekt
-
getUpdateLock
public 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- Specified by:
getUpdateLock
in interfaceRegionManager
- Returns:
- Objekt auf das Synchronisiert werden soll
-
objectChanged
public 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 eine Benachrichtigung senden, dass sich die Rechte des Benutzers geändert haben und eventuelle vorhandene Anmeldungen entfernt werden müssen.- Specified by:
objectChanged
in interfaceRegionManager
- Parameters:
object
- Objekt das sich geändert hat
-
-