Package org.mozilla.jss.util
Class NativeEnclosure
java.lang.Object
org.mozilla.jss.util.NativeEnclosure
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
CKAttribute
,JSSOAEPParameterSpec
,KBKDFDataParameter
,KBKDFDerivedKey
,KBKDFParameterSpec
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
FieldsModifier and TypeFieldDescriptionEnclosed NativeProxy reference.long
Size of enclosed mPointer. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
Allocate native resources, setting mPointer and mPointerSize as appropriate.final void
close()
Deinitialize and free mPointer.protected void
finalize()
Deprecated.final void
open()
Allocate and initialize mPointer with its enclosed value.protected abstract void
Called to deallocate native resources; note that mPointer.close() is called afterwards.
-
Field Details
-
mPointer
Enclosed NativeProxy reference. -
mPointerSize
public long mPointerSizeSize of enclosed mPointer.
-
-
Constructor Details
-
NativeEnclosure
public NativeEnclosure()
-
-
Method Details
-
open
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. -
close
Deinitialize and free mPointer. Must be called to prevent memory leaks.- Specified by:
close
in interfaceAutoCloseable
- Throws:
Exception
-
acquireNativeResources
Allocate native resources, setting mPointer and mPointerSize as appropriate.- Throws:
Exception
-
releaseNativeResources
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
-