Class NativeEnclosure

java.lang.Object
org.mozilla.jss.util.NativeEnclosure
All Implemented Interfaces:
AutoCloseable
Direct Known Subclasses:
CKAttribute, JSSOAEPParameterSpec, KBKDFDataParameter, KBKDFDerivedKey, KBKDFParameterSpec

public abstract class NativeEnclosure extends Object implements AutoCloseable
Classes extending NativeEnclsoure wrap a single NativeProxy instance, allowing it to be accessed from the JNI layer but be allocated and scoped from the Java layer. Because this class implements AutoCloseable, it is suggested to add constructors to derived classes which call open; this'll allow a single try-with-resources block to scope the lifetime of this object:
 try (NEC obj = new NEC(...)) {
      // ... do something with obj ...
 }
 
Extending classes implement acquireNativeResources() and releaseNativeResources(). Before this instance is passed to the JNI layer, open() should be called, allocating all necessary resources. After making all necessary JNI calls, close() should be called to free resources. Ideally, open() and close() should be called close to the JNI calls, wrapped by the developer to limit accidental memory leaks.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    Enclosed NativeProxy reference.
    long
    Size of enclosed mPointer.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract void
    Allocate native resources, setting mPointer and mPointerSize as appropriate.
    final void
    Deinitialize and free mPointer.
    protected void
    Deprecated.
    final void
    Allocate and initialize mPointer with its enclosed value.
    protected abstract void
    Called to deallocate native resources; note that mPointer.close() is called afterwards.

    Methods inherited from class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • mPointer

      public NativeProxy mPointer
      Enclosed NativeProxy reference.
    • mPointerSize

      public long mPointerSize
      Size of enclosed mPointer.
  • Constructor Details

    • NativeEnclosure

      public NativeEnclosure()
  • Method Details

    • open

      public final void open() throws Exception
      Allocate and initialize mPointer with its enclosed value. Note that this method prevents you from accidentally leaking memory; to call open() twice, call close() first.
      Throws:
      Exception
    • finalize

      @Deprecated protected void finalize() throws Throwable
      Deprecated.
      Overrides:
      finalize in class Object
      Throws:
      Throwable
    • close

      public final void close() throws Exception
      Deinitialize and free mPointer. Must be called to prevent memory leaks.
      Specified by:
      close in interface AutoCloseable
      Throws:
      Exception
    • acquireNativeResources

      protected abstract void acquireNativeResources() throws Exception
      Allocate native resources, setting mPointer and mPointerSize as appropriate.
      Throws:
      Exception
    • releaseNativeResources

      protected abstract void releaseNativeResources() throws Exception
      Called to deallocate native resources; note that mPointer.close() is called afterwards. If mPointer.close() should be a no-op, extend from StaticVoidRef and do any required cleanup here.
      Throws:
      Exception