mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-23 16:20:57 +08:00
HDFFV-10143 Add plugin APIs to Java interface
This commit is contained in:
parent
399060c17a
commit
f9199536d0
@ -7202,6 +7202,78 @@ public class H5 implements java.io.Serializable {
|
||||
**/
|
||||
public synchronized static native int H5PLget_loading_state() throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5PLappend inserts the plugin path at the end of the table.
|
||||
*
|
||||
* @param plugin_path
|
||||
* IN: Path for location of filter plugin libraries.
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
**/
|
||||
public synchronized static native void H5PLappend(String plugin_path) throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5PLprepend inserts the plugin path at the beginning of the table.
|
||||
*
|
||||
* @param plugin_path
|
||||
* IN: Path for location of filter plugin libraries.
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
**/
|
||||
public synchronized static native void H5PLprepend(String plugin_path) throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5PLreplace replaces the plugin path at the specified index.
|
||||
*
|
||||
* @param plugin_path
|
||||
* IN: Path for location of filter plugin libraries.
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
**/
|
||||
public synchronized static native void H5PLreplace(String plugin_path, int index) throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5PLinsert inserts the plugin path at the specified index.
|
||||
*
|
||||
* @param plugin_path
|
||||
* IN: Path for location of filter plugin libraries.
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
**/
|
||||
public synchronized static native void H5PLinsert(String plugin_path, int index) throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5PLremove removes the plugin path at the specified index.
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
**/
|
||||
public synchronized static native void H5PLremove(int index) throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5PLget retrieves the plugin path at the specified index.
|
||||
*
|
||||
* @return the current path at the index in plugin path table
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
**/
|
||||
public synchronized static native String H5PLget(int index) throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5PLsize retrieves the size of the current list of plugin paths.
|
||||
*
|
||||
* @return the current number of paths in the plugin path table
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
**/
|
||||
public synchronized static native int H5PLsize() throws HDF5LibraryException;
|
||||
|
||||
// ////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// H5R: HDF5 1.8 Reference API Functions //
|
||||
|
@ -61,6 +61,167 @@ Java_hdf_hdf5lib_H5_H5PLget_1loading_1state
|
||||
return (jint)plugin_type;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5PLget_1loading_1state */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLappend
|
||||
* Signature: (Ljava/lang/String;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLappend
|
||||
(JNIEnv *env, jclass clss, jobjectArray plugin_path)
|
||||
{
|
||||
char *aName;
|
||||
herr_t retVal = -1;
|
||||
|
||||
PIN_JAVA_STRING(plugin_path, aName);
|
||||
if (aName != NULL) {
|
||||
retVal = H5PLappend(aName);
|
||||
|
||||
UNPIN_JAVA_STRING(plugin_path, aName);
|
||||
|
||||
if (retVal < 0)
|
||||
h5libraryError(env);
|
||||
}
|
||||
} /* end Java_hdf_hdf5lib_H5_H5PLappend */
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLprepend
|
||||
* Signature: (Ljava/lang/String;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLprepend
|
||||
(JNIEnv *env, jclass clss, jobjectArray plugin_path)
|
||||
{
|
||||
char *aName;
|
||||
herr_t retVal = -1;
|
||||
|
||||
PIN_JAVA_STRING(plugin_path, aName);
|
||||
if (aName != NULL) {
|
||||
retVal = H5PLprepend(aName);
|
||||
|
||||
UNPIN_JAVA_STRING(plugin_path, aName);
|
||||
|
||||
if (retVal < 0)
|
||||
h5libraryError(env);
|
||||
}
|
||||
} /* end Java_hdf_hdf5lib_H5_H5PLprepend */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLreplace
|
||||
* Signature: (Ljava/lang/String;I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLreplace
|
||||
(JNIEnv *env, jclass clss, jobjectArray plugin_path, jint index)
|
||||
{
|
||||
char *aName;
|
||||
herr_t retVal = -1;
|
||||
|
||||
PIN_JAVA_STRING(plugin_path, aName);
|
||||
if (aName != NULL) {
|
||||
retVal = H5PLreplace(aName, index);
|
||||
|
||||
UNPIN_JAVA_STRING(plugin_path, aName);
|
||||
|
||||
if (retVal < 0)
|
||||
h5libraryError(env);
|
||||
}
|
||||
} /* end Java_hdf_hdf5lib_H5_H5PLreplace */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLinsert
|
||||
* Signature: (Ljava/lang/String;I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLinsert
|
||||
(JNIEnv *env, jclass clss, jobjectArray plugin_path, jint index)
|
||||
{
|
||||
char *aName;
|
||||
herr_t retVal = -1;
|
||||
|
||||
PIN_JAVA_STRING(plugin_path, aName);
|
||||
if (aName != NULL) {
|
||||
retVal = H5PLinsert(aName, index);
|
||||
|
||||
UNPIN_JAVA_STRING(plugin_path, aName);
|
||||
|
||||
if (retVal < 0)
|
||||
h5libraryError(env);
|
||||
}
|
||||
} /* end Java_hdf_hdf5lib_H5_H5PLinsert */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLremove
|
||||
* Signature: (I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLremove
|
||||
(JNIEnv *env, jclass clss, jint index)
|
||||
{
|
||||
if (H5PLremove(index) < 0)
|
||||
h5libraryError(env);
|
||||
} /* end Java_hdf_hdf5lib_H5_H5PLremove */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLget
|
||||
* Signature: (I)Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLget
|
||||
(JNIEnv *env, jclass clss, jint index)
|
||||
{
|
||||
char *aName;
|
||||
jstring str = NULL;
|
||||
ssize_t buf_size;
|
||||
|
||||
/* get the length of the name */
|
||||
buf_size = H5PLget(index, NULL, 0);
|
||||
|
||||
if (buf_size <= 0) {
|
||||
h5badArgument(env, "H5PLget: buf_size <= 0");
|
||||
} /* end if */
|
||||
else {
|
||||
buf_size++; /* add extra space for the null terminator */
|
||||
aName = (char*)HDmalloc(sizeof(char) * (size_t)buf_size);
|
||||
if (aName == NULL) {
|
||||
h5outOfMemory(env, "H5PLget: malloc failed");
|
||||
} /* end if */
|
||||
else {
|
||||
buf_size = H5PLget(index, aName, (size_t)buf_size);
|
||||
if (buf_size < 0) {
|
||||
h5libraryError(env);
|
||||
} /* end if */
|
||||
else {
|
||||
str = ENVPTR->NewStringUTF(ENVPAR aName);
|
||||
}
|
||||
HDfree(aName);
|
||||
}
|
||||
}
|
||||
return str;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5PLget */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLsize
|
||||
* Signature: (V)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLsize
|
||||
(JNIEnv *env, jclass clss)
|
||||
{
|
||||
int retVal = -1;
|
||||
|
||||
retVal = H5PLsize();
|
||||
if (retVal < 0)
|
||||
h5libraryError(env);
|
||||
|
||||
return (jint)retVal;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5PLsize */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* end extern "C" */
|
||||
#endif /* __cplusplus */
|
||||
|
@ -41,6 +41,69 @@ JNIEXPORT jint JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLget_1loading_1state
|
||||
(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLappend
|
||||
* Signature: (Ljava/lang/String;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLappend
|
||||
(JNIEnv *, jclass, jobjectArray);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLprepend
|
||||
* Signature: (Ljava/lang/String;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLprepend
|
||||
(JNIEnv *, jclass, jobjectArray);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLreplace
|
||||
* Signature: (Ljava/lang/String;I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLreplace
|
||||
(JNIEnv *, jclass, jobjectArray, jint);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLinsert
|
||||
* Signature: (Ljava/lang/String;I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLinsert
|
||||
(JNIEnv *, jclass, jobjectArray, jint);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLremove
|
||||
* Signature: (I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLremove
|
||||
(JNIEnv *, jclass, jint);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLget
|
||||
* Signature: (I)Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLget
|
||||
(JNIEnv *, jclass, jint);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5PLsize
|
||||
* Signature: (V)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5PLsize
|
||||
(JNIEnv *, jclass);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* end extern "C" */
|
||||
#endif /* __cplusplus */
|
||||
|
@ -633,13 +633,14 @@ JUnit version 4.11
|
||||
.testH5Ocomment_clear
|
||||
.testH5Ocopy_cur_not_exists
|
||||
.TestH5PLplugins
|
||||
.TestH5PLpaths
|
||||
.testH5Zfilter_avail
|
||||
.testH5Zunregister_predefined
|
||||
.testH5Zget_filter_info
|
||||
|
||||
Time: XXXX
|
||||
|
||||
OK (637 tests)
|
||||
OK (638 tests)
|
||||
|
||||
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
|
||||
#000: (file name) line (number) in H5Fopen(): can't set access and transfer property lists
|
||||
|
@ -69,6 +69,36 @@ public class TestH5PL {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void TestH5PLpaths() {
|
||||
try {
|
||||
int original_entries = H5.H5PLsize();
|
||||
H5.H5PLappend("path_one");
|
||||
int plugin_entries = H5.H5PLsize();
|
||||
assertTrue("H5.H5PLsize: "+plugin_entries, (original_entries+1) == plugin_entries);
|
||||
H5.H5PLprepend("path_two");
|
||||
plugin_entries = H5.H5PLsize();
|
||||
assertTrue("H5.H5PLsize: "+plugin_entries, (original_entries+2) == plugin_entries);
|
||||
H5.H5PLinsert("path_three", original_entries);
|
||||
plugin_entries = H5.H5PLsize();
|
||||
assertTrue("H5.H5PLsize: "+plugin_entries, (original_entries+3) == plugin_entries);
|
||||
String first_path = H5.H5PLget(original_entries);
|
||||
assertTrue("First path was : "+first_path + " ",first_path.compareToIgnoreCase("path_three")==0);
|
||||
H5.H5PLreplace("path_four", original_entries);
|
||||
first_path = H5.H5PLget(original_entries);
|
||||
assertTrue("First path changed to : "+first_path + " ",first_path.compareToIgnoreCase("path_four")==0);
|
||||
H5.H5PLremove(original_entries);
|
||||
first_path = H5.H5PLget(original_entries);
|
||||
assertTrue("First path now : "+first_path + " ",first_path.compareToIgnoreCase("path_two")==0);
|
||||
plugin_entries = H5.H5PLsize();
|
||||
assertTrue("H5.H5PLsize: "+plugin_entries, (original_entries+2) == plugin_entries);
|
||||
}
|
||||
catch (Throwable err) {
|
||||
err.printStackTrace();
|
||||
fail("TestH5PLpaths " + err);
|
||||
}
|
||||
}
|
||||
|
||||
@Ignore
|
||||
public void TestH5PLdlopen() {
|
||||
long file_id = -1;
|
||||
|
Loading…
Reference in New Issue
Block a user