Package org.mozilla.jss.util
Class NativeEnclosure
- java.lang.Object
-
- org.mozilla.jss.util.NativeEnclosure
-
- All Implemented Interfaces:
java.lang.AutoCloseable
- Direct Known Subclasses:
CKAttribute,KBKDFDataParameter,KBKDFDerivedKey,KBKDFParameterSpec
public abstract class NativeEnclosure extends java.lang.Object implements java.lang.AutoCloseableClasses 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 NativeProxymPointerEnclosed NativeProxy reference.longmPointerSizeSize of enclosed mPointer.
-
Constructor Summary
Constructors Constructor Description NativeEnclosure()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected abstract voidacquireNativeResources()Allocate native resources, setting mPointer and mPointerSize as appropriate.voidclose()Deinitialize and free mPointer.protected voidfinalize()Deprecated.voidopen()Allocate and initialize mPointer with its enclosed value.protected abstract voidreleaseNativeResources()Called to deallocate native resources; note that mPointer.close() is called afterwards.
-
-
-
Field Detail
-
mPointer
public NativeProxy mPointer
Enclosed NativeProxy reference.
-
mPointerSize
public long mPointerSize
Size of enclosed mPointer.
-
-
Method Detail
-
open
public final void open() throws java.lang.ExceptionAllocate 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:
java.lang.Exception
-
finalize
@Deprecated protected void finalize() throws java.lang.ThrowableDeprecated.- Overrides:
finalizein classjava.lang.Object- Throws:
java.lang.Throwable
-
close
public final void close() throws java.lang.ExceptionDeinitialize and free mPointer. Must be called to prevent memory leaks.- Specified by:
closein interfacejava.lang.AutoCloseable- Throws:
java.lang.Exception
-
acquireNativeResources
protected abstract void acquireNativeResources() throws java.lang.ExceptionAllocate native resources, setting mPointer and mPointerSize as appropriate.- Throws:
java.lang.Exception
-
releaseNativeResources
protected abstract void releaseNativeResources() throws java.lang.ExceptionCalled 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:
java.lang.Exception
-
-