Class DafAccessControlManager

java.lang.Object
de.bsvrz.dav.daf.accessControl.internal.DafAccessControlManager
All Implemented Interfaces:
AccessControlManager, RegionManager, Closeable, AutoCloseable

public class DafAccessControlManager extends Object implements AccessControlManager, RegionManager, Closeable
AccessControlManager-Implementierung, die die Benutzerrechteverwaltung und Rechteprüfung durchführt.
  • Field Details

    • _debug

      protected static final de.bsvrz.sys.funclib.debug.Debug _debug
      Debug
    • _userInfoHashMap

      protected final HashMap<Long,UserInfoInternal> _userInfoHashMap
      Map, die BenutzerIds den Benutzerobjekten zuordnet
    • _authenticationClassHashMap

      protected final HashMap<SystemObject,AccessControlUnit> _authenticationClassHashMap
      Map, die Berechtigungsklassen den kapselnden AccessControlUnit-Klassen zuordnet
    • _roleHashMap

      protected final HashMap<SystemObject,Role> _roleHashMap
      Map, die Rollen den kapselnden Role-Klassen zuordnet
    • _regionHashMap

      protected final 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 (siehe ExtendedUserInfo) benutzt wird
    • _useImplicitUserManagement

      protected final boolean _useImplicitUserManagement
      Ob implizite Benutzerverwaltung durchgeführt wird, oder Benutzer mit addUser erstellt werden müssen
    • _userMapLock

      protected final ReentrantReadWriteLock _userMapLock
      Lock-Objekt für _userInfoHashMap
  • Constructor Details

    • DafAccessControlManager

      public DafAccessControlManager(boolean useNewDataModel, ClientDavInterface connection, boolean useImplicitUserManagement)
  • Method Details

    • addChangeListener

      public void addChangeListener(AccessControlChangeListener listener)
      Description copied from interface: AccessControlManager
      Meldet einen Listener auf geänderte Nutzerrechte an
      Specified by:
      addChangeListener in interface AccessControlManager
      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 interface AccessControlManager
      Parameters:
      listener - Listener
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface 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, 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 referenziert
      parent - Der Knoten, der den problematischen Knoten referenziert
      trace - 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 interface RegionManager
      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 interface AccessControlManager
      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 interface AccessControlManager
      Returns:
      Ein UserInfo-Objekt
    • getUpdateLock

      public 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 interface RegionManager
      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 interface RegionManager
      Parameters:
      object - Objekt das sich geändert hat