Class ExtensionsFile.WriteableExtensionsFile

java.lang.Object
net.sf.basedb.util.extensions.manager.ExtensionsFile.WriteableExtensionsFile
Enclosing class:
ExtensionsFile

public static class ExtensionsFile.WriteableExtensionsFile
extends Object
An extensions file with additional methods that allows adding or modifying information in the underlying extensions file. This kind of view is usually handed out to ExtensionsFileProcessor implementations as a result of calling ExtensionsManager.processFiles(ExtensionsFileProcessor).

Note that the file starts out in read-only mode and that the processor has to call open() to aquire a write-lock before calling any writing methods. It is recommended that the lock is released as soon as possible by calling close().

  • Field Details

    • xtFile

      private final ExtensionsFile xtFile
    • isClosed

      private boolean isClosed
  • Constructor Details

    • WriteableExtensionsFile

      WriteableExtensionsFile​(ExtensionsFile xtFile)
      Creates a new writeable extensions file.
  • Method Details

    • getExtensionsFile

      public ExtensionsFile getExtensionsFile()
      Get the underlying extensions file (for readin information)
    • close

      public void close()
      Close the writeable file. This will release the lock and any further write operations are disallowed.
    • open

      public boolean open()
    • checkClosed

      private void checkClosed()
      Check if the file has been closed and throws an IllegalStateException if it has.
    • markAsProcessed

      public void markAsProcessed()
      Mark the file as fully processed by the extensions manager.
    • setUninstalled

      public void setUninstalled()
      Mark the file as uninstalled.
    • setInstalled

      public void setInstalled()
      Mark the file as installed.
    • setError

      public void setError​(boolean error)
      Sets the error status. This method can be called even on closed files, since it is important to error handling.
    • resetClassLoader

      public void resetClassLoader()
      Reset the classloader for this file, forcing a new instance in case the JAR file has been changed. This method should be called before re-installing an extension and the ExtensionsFile.checkModified() returns true.
      Throws:
      IllegalStateException - If the file has been closed
      Since:
      3.10
    • registerObject

      public <O> void registerObject​(ObjectKey<O> key, O obj)
      Register an object as "defined" by this extensions file.
      Parameters:
      key - The object key used to identify the object
      obj - The object to register
      Throws:
      IllegalStateException - If the file has been closed
    • unregisterObject

      public <O> void unregisterObject​(ObjectKey<O> key)
      Unregister an object that was "defined" by this extensions file.
      Parameters:
      key - The object key used to identify the object
      Throws:
      IllegalStateException - If the file has been closed
    • registerMetadata

      public <M> void registerMetadata​(ObjectKey<M> key, M metadata)
      Register metadata about an object. The difference between this method and the registerObject(ObjectKey, Object) method is that the registerObject method also registers the objects with the ExtensionsManager.
      Parameters:
      key - The object key used to identify the metadata
      metadata - The metadata to store under the key
    • unregisterMetadata

      public <M> void unregisterMetadata​(ObjectKey<M> key)
      Unregister metadata about an object.
      Parameters:
      key - The object key used to identify the metadata