remove jerasure-java from old src path
authorMaximilian Quellmalz <maximilian.quellmalz@mailbox.tu-dresden.de>
Wed, 28 May 2014 12:24:12 +0000 (14:24 +0200)
committerMaximilian Quellmalz <maximilian.quellmalz@mailbox.tu-dresden.de>
Wed, 28 May 2014 12:24:12 +0000 (14:24 +0200)
Splitter-ng-plugin-jerasure/.classpath
Splitter-ng-plugin-jerasure/.gitignore
Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/LibraryLoader.java [deleted file]
Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Cauchy.java [deleted file]
Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Galois.java [deleted file]
Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Jerasure.java [deleted file]
Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Liberation.java [deleted file]
Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/ReedSolomon.java [deleted file]
Splitter-ng-plugin-jerasure/src/jerasureplugin/JerasurePlugin.java

index 73c4630..4c9f161 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
        <classpathentry kind="src" path="src"/>
+       <classpathentry kind="src" path="Jerasure-1.2-java/java/src"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
                <attributes>
                        <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Splitter-ng-plugin-jerasure/lib"/>
index d3a455b..b13bcfc 100644 (file)
@@ -2,4 +2,5 @@
 *.swp
 lib/
 *.org
-*.*~
\ No newline at end of file
+*.*~
+/bin
diff --git a/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/LibraryLoader.java b/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/LibraryLoader.java
deleted file mode 100644 (file)
index 50b2072..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-package eu.vandertil.jerasure;
-import java.io.IOException;
-
-import cz.adamh.utils.NativeUtils;
-
-
-/**
- * This class loads the native library or throws an exception.
- *
- * @author Jos van der Til
- * @version 1.0
- * @since 1.0
- */
-public class LibraryLoader {
-    public static void load() {
-       try {
-               NativeUtils.loadLibraryFromJar("/Jerasure-1.2-java/lib/libJerasure.so");
-               NativeUtils.loadLibraryFromJar("/Jerasure-1.2-java/lib/libJerasure.jni.so");
-               } catch (IOException e) {
-                       e.printStackTrace();
-                       System.out.println("Loading Jerasure from JAR failed. Try to load from LD_LIBRARY_PATH");
-                       System.loadLibrary("Jerasure.jni");
-               }
-    }
-}
diff --git a/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Cauchy.java b/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Cauchy.java
deleted file mode 100644 (file)
index cc2790d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-package eu.vandertil.jerasure.jni;
-
-/**
- * This class provides access to the functions described in cauchy.h.
- *
- * See the documentation of Jerasure for a description of functionality and parameters.
- *
- * @author Jos van der Til
- * @version 1.0
- * @since 1.0
- */
-public class Cauchy {
-
-    public static native int[] cauchy_original_coding_matrix(int k, int m, int w);
-
-    public static native int[] cauchy_xy_coding_matrix(int k, int m, int w, int[] x, int[] y);
-
-    public static native void cauchy_improve_coding_matrix(int k, int m, int w, int[] matrix);
-
-    public static native int[] cauchy_good_general_coding_matrix(int k, int m, int w);
-
-    public static native int cauchy_n_ones(int n, int w);
-}
diff --git a/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Galois.java b/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Galois.java
deleted file mode 100644 (file)
index 0e8b9b0..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-package eu.vandertil.jerasure.jni;
-
-/**
- * This class provides access to the functions described in galois.h.
- *
- * See the documentation of Jerasure for a description of functionality and parameters.
- *
- * IMPORTANT:
- * THESE FUNCTIONS CAN AND WILL ALLOCATE TABLES FOR LOGARITHMS ETC. IN NATIVE MEMORY.
- * THIS IS NOT A MEMORY LEAK, HOWEVER I HAVE NO CONTROL OVER THIS.
- *
- * ALSO, SOME FUNCTIONS IN galois.c WILL CALL exit(1) ON FAILURE CAUSING A CRASH.
- * THESE ARE MOSTLY RELATED TO THE WORD SIZE, SO BE CAREFUL WITH THAT PARAMETER.
- * STICK TO 8/16/32 TO BE SAFE.
- *
- * YOU HAVE BEEN WARNED, PLEASE BE CAREFUL.
- *
- * @author Jos van der Til
- * @version 1.0
- * @since 1.0
- */
-public class Galois {
-    public static native int galois_single_multiply(int a, int b, int w);
-    public static native int galois_single_divide(int a, int b, int w);
-    public static native int galois_log(int value, int w);
-    public static native int galois_ilog(int value, int w);
-
-    public static native boolean galois_create_log_tables(int w);   /* Returns 0 on success, -1 on failure */
-    public static native int galois_logtable_multiply(int x, int y, int w);
-    public static native int galois_logtable_divide(int x, int y, int w);
-
-    public static native boolean galois_create_mult_tables(int w);   /* Returns 0 on success, -1 on failure */
-    public static native int galois_multtable_multiply(int x, int y, int w);
-    public static native int galois_multtable_divide(int x, int y, int w);
-
-    public static native int galois_shift_multiply(int x, int y, int w);
-    public static native int galois_shift_divide(int x, int y, int w);
-
-    public static native boolean galois_create_split_w8_tables(); /* Returns 0 on success, -1 on failure */
-    public static native int galois_split_w8_multiply(int x, int y);
-
-    public static native int galois_inverse(int x, int w);
-    public static native int galois_shift_inverse(int y, int w);
-
-    public static native void galois_region_xor(           byte []r1,         /* Region 1 */
-                                      byte []r2,         /* Region 2 */
-                                      byte []r3,         /* Sum region (r3 = r1 ^ r2) -- can be r1 or r2 */
-                                      int nbytes);      /* Number of bytes in region */
-
-/* These multiply regions in w=8, w=16 and w=32.  They are much faster
-   than calling galois_single_multiply.  The regions must be long word aligned. */
-
-    public static native void galois_w08_region_multiply(byte []region,       /* Region to multiply */
-                                    int multby,       /* Number to multiply by */
-                                    int nbytes,       /* Number of bytes in region */
-                                    byte []r2,         /* If r2 != NULL, products go here.
-                                                       Otherwise region is overwritten */
-                                    boolean add);         /* If (r2 != NULL && add) the produce is XOR'd with r2 */
-
-    public static native void galois_w16_region_multiply(byte[]region,       /* Region to multiply */
-                                    int multby,       /* Number to multiply by */
-                                    int nbytes,       /* Number of bytes in region */
-                                    byte []r2,         /* If r2 != NULL, products go here.
-                                                       Otherwise region is overwritten */
-                                    boolean add);         /* If (r2 != NULL && add) the produce is XOR'd with r2 */
-
-    public static native void galois_w32_region_multiply(byte []region,       /* Region to multiply */
-                                    int multby,       /* Number to multiply by */
-                                    int nbytes,       /* Number of bytes in region */
-                                    byte []r2,         /* If r2 != NULL, products go here.
-                                                       Otherwise region is overwritten */
-                                    boolean add);         /* If (r2 != NULL && add) the produce is XOR'd with r2 */
-}
diff --git a/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Jerasure.java b/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Jerasure.java
deleted file mode 100644 (file)
index dc2dd2c..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-package eu.vandertil.jerasure.jni;
-
-/**
- * This class provides access to the functions described in jerasure.h.
- *
- * See the documentation of Jerasure for a description of functionality and parameters.
- *
- * Not all functions from jerasure.h are supported.
- *
- * @author Jos van der Til
- * @version 1.0
- * @since 1.0
- */
-public class Jerasure {
-    /* ---------------------------------------------------------------  */
-/* Bitmatrices / schedules ---------------------------------------- */
-
-    /**
-     * This function turns a \f$m \times k\f$ matrix in \f$GF(2^w)\f$ into a \f$wm \times wk\f$ bitmatrix (in \f$GF(2)\f$).
-     * For a detailed explanation see: J. Blomer, M. Kalfane, M. Karpinski, R. Karp, M. Luby and D. Zuckerman:
-     * An XOR-based erasure-resilient coding scheme. Technical Report TR-95-048, International Computer Science
-     * Institute, August 1995
-     *
-     * @param k      Number of data devices
-     * @param m      Number of coding devices
-     * @param w      Word size
-     * @param matrix Array of k*m integers. It represents an m by k matrix. Element i,j is in matrix[i*k+j]
-     *
-     * @return bit-matrix (int*)
-     *
-     * @todo example code
-     */
-    public static native int[] jerasure_matrix_to_bitmatrix(int k, int m, int w, int[] matrix);
-
-/* ------------------------------------------------------------ */
-/* Encoding - these are all straightforward.  jerasure_matrix_encode only
-   works with w = 8|16|32.  */
-
-    /**
-     * This function calculates the parity of size bytes of data from each of k regions of memory accessed by data_ptrs. It put the result into the size pointed to by parity_ptr.
-     *
-     * @param k         Number of data devices
-     * @param data_ptrs Array of k pointers to data which is size bytes. Size must be a multiple of sizeof(long). Pointers must also be longword aligned.
-     * @param size      Size of memory allocated by data_ptrs in bytes.
-     *
-     * @todo fix
-     * @todo example code
-     */
-    public static native void jerasure_do_parity(int k, byte[][] data_ptrs, byte[] parity_ptr, int size);
-
-    /**
-     * This function encodes a matrix in \f$GF(2^w)\f$. \f$w\f$ must be either 8, 16 or 32.
-     *
-     * @param k           Number of data devices
-     * @param m           Number of coding devices
-     * @param w           Word size
-     * @param matrix      Array of k*m integers. It represents an m by k matrix. Element i,j is in matrix[i*k+j]
-     * @param data_ptrs   Array of k pointers to data which is size bytes. Size must be a multiple of sizeof(long). Pointers must also be longword aligned.
-     * @param coding_ptrs Array of m pointers to coding data which is size bytes
-     * @param size        Size of memory allocated by coding_ptrs in bytes.
-     *
-     */
-    public static native void jerasure_matrix_encode(int k, int m, int w, int[] matrix,
-                                                     byte[][] data_ptrs, byte[][] coding_ptrs, int size);
-
-    /**
-     * This function encodes a matrix with a bit-matrix in \f$GF(2^w)\f$. \f$w\f$ my be any number between 1 and 32.
-     *
-     * @param k           Number of data devices
-     * @param m           Number of coding devices
-     * @param w           Word size
-     * @param bitmatrix   Array of k*m*w*w integers. It represents an mw by kw matrix. Element i,j is in matrix[i*k*w+j]
-     * @param data_ptrs   Array of k pointers to data which is size bytes. Size must be a multiple of sizeof(long). Pointers must also be longword aligned.
-     * @param coding_ptrs Array of m pointers to coding data which is size bytes
-     * @param size        Size of memory allocated by data_ptrs in bytes.
-     * @param packetsize  The size of a coding block with bitmatrix coding. When you code with a bitmatrix, you will use w packets of size packetsize.
-     *
-     * @todo example code
-     */
-    public static native void jerasure_bitmatrix_encode(int k, int m, int w, int[] bitmatrix,
-                                                        byte[][] data_ptrs, byte[][] coding_ptrs, int size, int packetsize);
-
-/* ------------------------------------------------------------ */
-/* Decoding. -------------------------------------------------- */
-
-/* These return integers, because the matrix may not be invertible.
-
-   The parameter row_k_ones should be set to 1 if row k of the matrix
-   (or rows kw to (k+1)w+1) of th distribution matrix are all ones
-   (or all identity matrices).  Then you can improve the performance
-   of decoding when there is more than one failure, and the parity
-   device didn't fail.  You do it by decoding all but one of the data
-   devices, and then decoding the last data device from the data devices
-   and the parity device.
-
- */
-
-    /**
-     * This function decodes unsing a matrix in \f$GF(2^w)\f$, only when \f$w\f$ = 8|16|32.
-     *
-     * @param k           Number of data devices
-     * @param m           Number of coding devices
-     * @param w           Word size
-     * @param matrix      Array of k*m integers. It represents an m by k matrix. Element i,j is in matrix[i*k+j]
-     * @param erasures    Array of id's of erased devices. Id's are integers between 0 and k+m-1. Id's 0 to k-1 are id's of data devices. Id's k to k+m-1 are id's of coding devices: Coding device id = id-k. If there are e erasures, erasures[e] = -1.
-     * @param data_ptrs   Array of k pointers to data which is size bytes. Size must be a multiple of sizeof(long). Pointers must also be longword aligned.
-     * @param coding_ptrs Array of m pointers to coding data which is size bytes
-     * @param size        Size of memory allocated by data_ptrs/coding_ptrs in bytes.
-     *
-     * @return 0 if it worked, -1 if it failed
-     *
-     * @todo crossreferences
-     * @todo example code
-     */
-    public static native boolean jerasure_matrix_decode(int k, int m, int w,
-                                                    int[] matrix, boolean row_k_ones, int[] erasures,
-                                                    byte[][] data_ptrs, byte[][] coding_ptrs, int size);
-
-    /**
-     * This function
-     *
-     * @param k           Number of data devices
-     * @param m           Number of coding devices
-     * @param w           Word size
-     * @param bitmatrix   Array of k*m*w*w integers. It represents an mw by kw matrix. Element i,j is in matrix[i*k*w+j]
-     * @param erasures    Array of id's of erased devices. Id's are integers between 0 and k+m-1. Id's 0 to k-1 are id's of data devices. Id's k to k+m-1 are id's of coding devices: Coding device id = id-k. If there are e erasures, erasures[e] = -1.
-     * @param data_ptrs   Array of k pointers to data which is size bytes. Size must be a multiple of sizeof(long). Pointers must also be longword aligned.
-     * @param coding_ptrs Array of m pointers to coding data which is size bytes
-     * @param size        Size of memory allocated by coding_ptrs/data_ptrs in bytes.
-     * @param packetsize  The size of a coding block with bitmatrix coding. When you code with a bitmatrix, you will use w packets of size packetsize.
-     *
-     * @todo return data
-     * @todo formula
-     * @todo fix
-     * @todo example code
-     * @todo description
-     * @todo references
-     */
-    public static native boolean jerasure_bitmatrix_decode(int k, int m, int w,
-                                                       int[] bitmatrix, boolean row_k_ones, int[] erasures,
-                                                       byte[][] data_ptrs, byte[][] coding_ptrs, int size, int packetsize);
-
-    /**
-     * This function makes the k*k decoding matrix (or wk*wk bitmatrix) by taking the rows corresponding to k non-erased devices of the distribution matrix, and then inverting that matrix.
-     * You should already have allocated the decoding matrix and dm_ids, which is a vector of k integers.
-     * These will be filled in appropriately.  dm_ids[i] is the id of element i of the survivors vector.
-     * I.e. row i of the decoding matrix times dm_ids equals data drive i.
-     * Both of these routines take "erased" instead of "erasures".
-     * Erased is a vector with k+m elements, which has 0 or 1 for each device's id, according to whether the device is erased.
-     *
-     * @param k Number of data devices
-     * @param m Number of coding devices
-     * @param w Word size
-     *
-     * @todo fix
-     * @todo return data
-     * @todo example code
-     */
-    public static native boolean jerasure_make_decoding_matrix(int k, int m, int w, int[] matrix, boolean[] erased,
-                                                           int[] decoding_matrix, int[] dm_ids);
-
-    /**
-     * This function makes the k*k decoding matrix (or wk*wk bitmatrix) by taking the rows corresponding to k non-erased devices of the distribution matrix, and then inverting that matrix.
-     * You should already have allocated the decoding matrix and dm_ids, which is a vector of k integers.
-     * These will be filled in appropriately.
-     * dm_ids[i] is the id of element i of the survivors vector.
-     * I.e. row i of the decoding matrix times dm_ids equals data drive i.
-     * Both of these routines take "erased" instead of "erasures".
-     * Erased is a vector with k+m elements, which has 0 or 1 for each device's id, according to whether the device is erased.
-     *
-     * @param k      Number of data devices
-     * @param m      Number of coding devices
-     * @param w      Word size
-     * @param matrix Array of k*m integers. It represents an m by k matrix. Element i,j is in matrix[i*k+j]
-     *
-     * @todo fix
-     * @todo example code
-     */
-    public static native boolean jerasure_make_decoding_bitmatrix(int k, int m, int w, int[] matrix, boolean[] erased,
-                                                              int[] decoding_matrix, int[] dm_ids);
-
-    /**
-     * This function allocates and returns erased from erasures.
-     *
-     * @param k        Number of data devices
-     * @param m        Number of coding devices
-     * @param erasures Array of id's of erased devices.
-     *                 Id's are integers between 0 and k+m-1.
-     *                 Id's 0 to k-1 are id's of data devices.
-     *                 Id's k to k+m-1 are id's of coding devices: Coding device id = id-k.
-     *                 If there are e erasures, erasures[e] = -1.
-     *
-     * @todo return data
-     * @todo usage example
-     */
-    public static native boolean[] jerasure_erasures_to_erased(int k, int m, int[] erasures);
-}
diff --git a/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Liberation.java b/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/Liberation.java
deleted file mode 100644 (file)
index 9303501..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-package eu.vandertil.jerasure.jni;
-
-/**
- * This class provides access to the functions described in liberation.h.
- *
- * See the documentation of Jerasure for a description of functionality and parameters.
- *
- * @author Jos van der Til
- * @version 1.0
- * @since 1.0
- */
-public class Liberation {
-    public static native int[] liberation_coding_bitmatrix(int k, int w);
-    public static native int[] liber8tion_coding_bitmatrix(int k);
-    public static native int[] blaum_roth_coding_bitmatrix(int k, int w);
-}
diff --git a/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/ReedSolomon.java b/Splitter-ng-plugin-jerasure/src/eu/vandertil/jerasure/jni/ReedSolomon.java
deleted file mode 100644 (file)
index 2d70a60..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-package eu.vandertil.jerasure.jni;
-
-/**
- * This class provides access to the functions described in reed_sol.h.
- *
- * See the documentation of Jerasure for a description of functionality and parameters.
- *
- * @author Jos van der Til
- * @version 1.0
- * @since 1.0
- */
-public class ReedSolomon {
-    public static native int[] reed_sol_vandermonde_coding_matrix(int k, int m, int w);
-    public static native int[] reed_sol_extended_vandermonde_matrix(int rows, int cols, int w);
-    public static native int[] reed_sol_big_vandermonde_distribution_matrix(int rows, int cols, int w);
-
-    public static native boolean reed_sol_r6_encode(int k, int w, byte[][] data_ptrs, byte[][] coding_ptrs, int size);
-    public static native int[] reed_sol_r6_coding_matrix(int k, int w);
-
-    public static native void reed_sol_galois_w08_region_multby_2(byte[] region, int nbytes);
-    public static native void reed_sol_galois_w16_region_multby_2(byte[] region, int nbytes);
-    public static native void reed_sol_galois_w32_region_multby_2(byte[] region, int nbytes);
-}
index b5f116b..9ad693e 100644 (file)
@@ -1,7 +1,6 @@
 package jerasureplugin;
 
-
-
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.LinkedList;
@@ -12,7 +11,7 @@ import splitterng.plugin.PluginDescription;
 import splitterng.plugin.interfaces.Plugable;
 import splitterng.plugin.interfaces.PluginManager;
 import splitterng.plugin.interfaces.SplitterCodec;
-import eu.vandertil.jerasure.LibraryLoader;
+import cz.adamh.utils.NativeUtils;
 import eu.vandertil.jerasure.jni.Liberation;
 
 public class JerasurePlugin implements Plugable {
@@ -23,33 +22,35 @@ public class JerasurePlugin implements Plugable {
        private final String pluginName = "Jerasure Plugin";
        private final String pluginDescriptionText = "Stellt die Kodierungsverfahren von Jerasure zur Verfügung"
                        + "\n buffersize%(sizeof(int)*w*k) == 0 oder buffersize%(sizeof(int)*w*k*packetsize) == 0";
-       private final Collection <String> dependencies = Arrays.asList("libJerasure.so",
-                       "libJerasure.jni.so");
+       private final Collection<String> dependencies = Arrays.asList(
+                       "libJerasure.so", "libJerasure.jni.so");
 
        // private Map<String, SplitterCodec> codecMap;
-       private Collection <CodecDescription> codecDescriptions;
+       private Collection<CodecDescription> codecDescriptions;
        private PluginDescription pluginDescription;
 
        public JerasurePlugin() {
-               
-//             //Test if libJerasure already loaded;
-//             boolean libJerasureLoaded= false;
-//             final String[] libraries = ClassScope.getLoadedLibraries(ClassLoader.getSystemClassLoader()); //MyClassName.class.getClassLoader()
-//             for (String s:libraries){
-//                     if (s.contains("libJerasure.jni")){
-//                             libJerasureLoaded = true;
-//                             break;
-//                     }
-//             }
-               
+
+               // //Test if libJerasure already loaded;
+               // boolean libJerasureLoaded= false;
+               // final String[] libraries =
+               // ClassScope.getLoadedLibraries(ClassLoader.getSystemClassLoader());
+               // //MyClassName.class.getClassLoader()
+               // for (String s:libraries){
+               // if (s.contains("libJerasure.jni")){
+               // libJerasureLoaded = true;
+               // break;
+               // }
+               // }
+
                try {
-//                     if (!libJerasureLoaded){
-//                             System.out.println("Skip loading Jerasure");
-                               LibraryLoader.load();
-//                     }
+                       // if (!libJerasureLoaded){
+                       // System.out.println("Skip loading Jerasure");
+                       JerasurePlugin.loadJerasureJni();
+                       // }
                        try {
                                Liberation.liber8tion_coding_bitmatrix(3);
-                               //System.out.println("Correctly loaded libJerasure.so");
+                               // System.out.println("Correctly loaded libJerasure.so");
                        } catch (UnsatisfiedLinkError e) {
                                System.err
                                                .println("Native code library failed to load: libJerasure.so \n"
@@ -63,75 +64,74 @@ public class JerasurePlugin implements Plugable {
 
                // codecMap.put(JerasureCodecParity.getCodecDescription().getCodecID(),
                // JerasureCodecParity);
-               //System.out.println("codecDescriptions füllen: ");
+               // System.out.println("codecDescriptions füllen: ");
                this.codecDescriptions = new LinkedList<CodecDescription>();
                this.codecDescriptions.add(CodecCauchyGood.getCodecDescription());
                this.codecDescriptions.add(CodecCauchyOrg.getCodecDescription());
-               this.codecDescriptions.add(CodecReedSolomonVandermonde.getCodecDescription());
+               this.codecDescriptions.add(CodecReedSolomonVandermonde
+                               .getCodecDescription());
                this.codecDescriptions.add(CodecLiberation.getCodecDescription());
                this.codecDescriptions.add(CodecLiber8tion.getCodecDescription());
                this.codecDescriptions.add(CodecBlaumRoth.getCodecDescription());
-               this.pluginDescription = new PluginDescription(this.pluginID, this.pluginName,
-                               this.pluginDescriptionText,
-                               this.codecDescriptions,
-                               this.dependencies);
-               //System.out.println("Plugindescription gebaut: " + this.pluginDescription.toString());
-               //System.out.println("CodecDescriptions : " + this.pluginDescription.getCodecDescriptions());
-               
-               //codecDescriptionMap.put(JerasureCodecLiberation.getCodecDescription()
-                       //      .getCodecID(), JerasureCodecLiberation.getCodecDescription());
+               this.pluginDescription = new PluginDescription(this.pluginID,
+                               this.pluginName, this.pluginDescriptionText,
+                               this.codecDescriptions, this.dependencies);
+               // System.out.println("Plugindescription gebaut: " +
+               // this.pluginDescription.toString());
+               // System.out.println("CodecDescriptions : " +
+               // this.pluginDescription.getCodecDescriptions());
+
+               // codecDescriptionMap.put(JerasureCodecLiberation.getCodecDescription()
+               // .getCodecID(), JerasureCodecLiberation.getCodecDescription());
 
        }
 
-//     @Override
-//     public boolean start() {
-//             return true;
-//     }
-//
-//     @Override
-//     public boolean stop() {
-//             return true;
-//     }
-
-//     @Override
-//     public void setPluginManager(PluginManager manager) {
-//             this.pluginManager = manager;
-//
-//     }
-
-        @Override
-        public Collection<CodecDescription> getCodecDescriptions() {
-                return codecDescriptions;
-        }
+       public static void loadJerasureJni() {
+               try {
+                       NativeUtils
+                                       .loadLibraryFromJar("/Jerasure-1.2-java/lib/libJerasure.so");
+                       NativeUtils
+                                       .loadLibraryFromJar("/Jerasure-1.2-java/lib/libJerasure.jni.so");
+               } catch (IOException e) {
+                       e.printStackTrace();
+                       System.out
+                                       .println("Loading Jerasure from JAR failed. Try to load from LD_LIBRARY_PATH");
+                       System.loadLibrary("Jerasure.jni");
+               }
+       }
+
+       @Override
+       public Collection<CodecDescription> getCodecDescriptions() {
+               return codecDescriptions;
+       }
 
        @Override
        public SplitterCodec getNewSplitterCodec(String codecID,
-                       Map<String, Integer> codecParameter) throws IllegalArgumentException {
+                       Map<String, Integer> codecParameter)
+                       throws IllegalArgumentException {
                switch (codecID) {
                case CodecCauchyGood.codecID:
                        return new CodecCauchyGood(codecParameter);
-                       
+
                case CodecCauchyOrg.codecID:
                        return new CodecCauchyOrg(codecParameter);
-                       
+
                case CodecReedSolomonVandermonde.codecID:
                        return new CodecReedSolomonVandermonde(codecParameter);
-                       
+
                case CodecLiberation.codecID:
                        return new CodecLiberation(codecParameter);
-                       
+
                case CodecLiber8tion.codecID:
                        return new CodecLiber8tion(codecParameter);
-               
+
                case CodecBlaumRoth.codecID:
                        return new CodecLiber8tion(codecParameter);
-               
-                       
-                       
-               //TODO JerasurePlugin: Weitere Codecs hier erzeugen
-                       
+
+                       // TODO JerasurePlugin: Weitere Codecs hier erzeugen
+
                default:
-                       throw new IllegalArgumentException("CodecID not known: " + codecID );
+                       throw new IllegalArgumentException("CodecID not known: " + codecID);
                }
        }