HDFFV-10143 Add plugin APIs to Java interface

This commit is contained in:
Allen Byrne 2017-04-03 14:06:47 -05:00
parent 399060c17a
commit f9199536d0
5 changed files with 328 additions and 1 deletions

View File

@ -7202,6 +7202,78 @@ public class H5 implements java.io.Serializable {
**/ **/
public synchronized static native int H5PLget_loading_state() throws HDF5LibraryException; 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 // // H5R: HDF5 1.8 Reference API Functions //

View File

@ -61,6 +61,167 @@ Java_hdf_hdf5lib_H5_H5PLget_1loading_1state
return (jint)plugin_type; return (jint)plugin_type;
} /* end Java_hdf_hdf5lib_H5_H5PLget_1loading_1state */ } /* 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 #ifdef __cplusplus
} /* end extern "C" */ } /* end extern "C" */
#endif /* __cplusplus */ #endif /* __cplusplus */

View File

@ -41,6 +41,69 @@ JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5PLget_1loading_1state Java_hdf_hdf5lib_H5_H5PLget_1loading_1state
(JNIEnv *, jclass); (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 #ifdef __cplusplus
} /* end extern "C" */ } /* end extern "C" */
#endif /* __cplusplus */ #endif /* __cplusplus */

View File

@ -633,13 +633,14 @@ JUnit version 4.11
.testH5Ocomment_clear .testH5Ocomment_clear
.testH5Ocopy_cur_not_exists .testH5Ocopy_cur_not_exists
.TestH5PLplugins .TestH5PLplugins
.TestH5PLpaths
.testH5Zfilter_avail .testH5Zfilter_avail
.testH5Zunregister_predefined .testH5Zunregister_predefined
.testH5Zget_filter_info .testH5Zget_filter_info
Time: XXXX Time: XXXX
OK (637 tests) OK (638 tests)
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs): 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 #000: (file name) line (number) in H5Fopen(): can't set access and transfer property lists

View File

@ -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 @Ignore
public void TestH5PLdlopen() { public void TestH5PLdlopen() {
long file_id = -1; long file_id = -1;