gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r4766 - in Extractor-java: . native org/gnunet/libextractor


From: gnunet
Subject: [GNUnet-SVN] r4766 - in Extractor-java: . native org/gnunet/libextractor
Date: Sat, 21 Apr 2007 17:14:32 -0600 (MDT)

Author: grothoff
Date: 2007-04-21 17:14:32 -0600 (Sat, 21 Apr 2007)
New Revision: 4766

Modified:
   Extractor-java/ChangeLog
   Extractor-java/README.debian
   Extractor-java/configure.ac
   Extractor-java/native/extractor.c
   Extractor-java/native/org_gnunet_libextractor_Extractor.h
   Extractor-java/org/gnunet/libextractor/Extractor.java
   Extractor-java/org/gnunet/libextractor/Xtract.java
Log:
API update, releasing 0.5.18

Modified: Extractor-java/ChangeLog
===================================================================
--- Extractor-java/ChangeLog    2007-04-20 03:47:47 UTC (rev 4765)
+++ Extractor-java/ChangeLog    2007-04-21 23:14:32 UTC (rev 4766)
@@ -1,3 +1,8 @@
+Sat Apr 21 17:09:03 MDT 2007
+       Added method to support extracting data from in-memory
+       byte array.  Changed API to use ArrayList instead of Vector.
+       Releasing libextractor-java 0.5.18.
+
 Mon Jul  4 16:58:53 CEST 2005
        Moved Java code out of main libextractor tree.
        This ChangeLog started.

Modified: Extractor-java/README.debian
===================================================================
--- Extractor-java/README.debian        2007-04-20 03:47:47 UTC (rev 4765)
+++ Extractor-java/README.debian        2007-04-21 23:14:32 UTC (rev 4766)
@@ -1,5 +1,7 @@
 This is a list of debian (sarge) packages that you may want to install
-prior to compiling libextractor-java.  
+prior to compiling libextractor-java.  You need a working Java
+installation (set JAVA_HOME and possibly JAVA and JAVAC environment
+variables).
 
 Naturally you also need libextractor itself.
 

Modified: Extractor-java/configure.ac
===================================================================
--- Extractor-java/configure.ac 2007-04-20 03:47:47 UTC (rev 4765)
+++ Extractor-java/configure.ac 2007-04-21 23:14:32 UTC (rev 4766)
@@ -1,8 +1,8 @@
 # Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.57)
-AC_INIT([libextractor-java], [0.5.6], address@hidden)
+AC_INIT([libextractor-java], [0.5.18], address@hidden)
 AC_REVISION($Revision: 1.67 $)
-AM_INIT_AUTOMAKE([libextractor-java], [0.5.6])
+AM_INIT_AUTOMAKE([libextractor-java], [0.5.18])
 AM_CONFIG_HEADER(native/config.h)
 
 AH_TOP([#define _GNU_SOURCE  1])

Modified: Extractor-java/native/extractor.c
===================================================================
--- Extractor-java/native/extractor.c   2007-04-20 03:47:47 UTC (rev 4765)
+++ Extractor-java/native/extractor.c   2007-04-21 23:14:32 UTC (rev 4766)
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with libextractor; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
  */
 
 #include "config.h"
@@ -74,15 +74,53 @@
   jlong ret;
 
   bo = JNI_FALSE;
-  fname = (*env)->GetStringUTFChars(env, f, &bo);
+  fname = (*env)->GetStringUTFChars(env, 
+                                   f, 
+                                   &bo);
+  if (fname == NULL)
+    return 0;
   ret = (jlong) (long) EXTRACTOR_getKeywords((EXTRACTOR_ExtractorList*) (long) 
arg,
                                             fname);
-  (*env)->ReleaseStringUTFChars(env, f, fname);
+  (*env)->ReleaseStringUTFChars(env, 
+                               f,
+                               fname);
   return ret;
 }
 
 /*
  * Class:     org_gnunet_libextractor_Extractor
+ * Method:    extractInternal
+ * Signature: (J[B)J
+ */
+JNIEXPORT jlong JNICALL 
+Java_org_gnunet_libextractor_Extractor_extractInternal2(JNIEnv * env,
+                                                       jclass c,
+                                                       jlong arg,
+                                                       jbyteArray f) {
+  void * data;
+  jboolean bo;
+  jlong ret;
+  jsize asize;
+
+  bo = JNI_FALSE;
+  asize = (*env)->GetArrayLength(env, f);
+  data = (*env)->GetPrimitiveArrayCritical(env, 
+                                          f,
+                                          &bo);
+  if (data == NULL)
+    return 0;
+  ret = (jlong) (long) EXTRACTOR_getKeywords2((EXTRACTOR_ExtractorList*) 
(long) arg,
+                                             data,
+                                             (size_t) asize);
+  (*env)->ReleasePrimitiveArrayCritical(env, 
+                                       f, 
+                                       data,
+                                       JNI_ABORT);
+  return ret;
+}
+
+/*
+ * Class:     org_gnunet_libextractor_Extractor
  * Method:    freeInternal
  * Signature: (J)V
  */

Modified: Extractor-java/native/org_gnunet_libextractor_Extractor.h
===================================================================
--- Extractor-java/native/org_gnunet_libextractor_Extractor.h   2007-04-20 
03:47:47 UTC (rev 4765)
+++ Extractor-java/native/org_gnunet_libextractor_Extractor.h   2007-04-21 
23:14:32 UTC (rev 4766)
@@ -28,11 +28,19 @@
  * Method:    extractInternal
  * Signature: (JLjava/lang/String;)J
  */
-JNIEXPORT jlong JNICALL Java_org_gnunet_libextractor_Extractor_extractInternal
+JNIEXPORT jlong JNICALL 
Java_org_gnunet_libextractor_Extractor_extractInternal__JLjava_lang_String_2
   (JNIEnv *, jclass, jlong, jstring);
 
 /*
  * Class:     org_gnunet_libextractor_Extractor
+ * Method:    extractInternal
+ * Signature: (J[B)J
+ */
+JNIEXPORT jlong JNICALL 
Java_org_gnunet_libextractor_Extractor_extractInternal__J_3B
+  (JNIEnv *, jclass, jlong, jbyteArray);
+
+/*
+ * Class:     org_gnunet_libextractor_Extractor
  * Method:    freeInternal
  * Signature: (J)V
  */

Modified: Extractor-java/org/gnunet/libextractor/Extractor.java
===================================================================
--- Extractor-java/org/gnunet/libextractor/Extractor.java       2007-04-20 
03:47:47 UTC (rev 4765)
+++ Extractor-java/org/gnunet/libextractor/Extractor.java       2007-04-21 
23:14:32 UTC (rev 4766)
@@ -1,6 +1,6 @@
 /*
      This file is part of libextractor.
-     (C) 2002, 2003, 2004 Vidyut Samanta and Christian Grothoff
+     (C) 2002, 2003, 2004, 2007 Vidyut Samanta and Christian Grothoff
 
      libextractor is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -19,7 +19,7 @@
  */
 package org.gnunet.libextractor;
 
-import java.util.Vector;
+import java.util.ArrayList;
 import java.io.File;
 
 /**
@@ -31,13 +31,13 @@
 public final class Extractor {
        
 
-    private static boolean warn_;
+    private static final boolean warn_;
 
     /**
      * LE version.  0 if LE was compiled without JNI/Java support, in which
      * case we better not call any native methods...
      */
-    private final static int version_;
+    private static final int version_;
 
     /**
      * Cached list of Strings describing keyword types.
@@ -103,8 +103,7 @@
     public static Extractor getDefault() {
        if (version_ > 0)
            return new Extractor(loadDefaultInternal());
-       else
-           return new Extractor(0);
+       return new Extractor(0);
     }
 
     /**
@@ -128,15 +127,16 @@
      */
     public static String getTypeAsString(int type) {
        if (version_ > 0) {
-           if ( (type >= 0) && (type <= typeCache_.length)) {
+           if ( (type >= 0) && 
+                (type <= typeCache_.length) ) {
                if (typeCache_[type] == null)
                    typeCache_[type]
                        = getTypeAsStringInternal(type);
                return typeCache_[type];
-           } else
-               throw new IllegalArgumentException("Type out of range 
[0,"+typeCache_.length+")");
-       } else
-           return "";
+           }
+           throw new IllegalArgumentException("Type out of range 
[0,"+typeCache_.length+")");
+       }
+       return "";
     }
 
     /**
@@ -152,7 +152,7 @@
      *   to the list of plugins.  0 means no plugins.
      */
     private Extractor(long pluginHandle) {
-       this.pluginHandle_ = pluginHandle;
+       pluginHandle_ = pluginHandle;
     }
 
     protected void finalize() {
@@ -161,10 +161,9 @@
     }
 
     public void unloadPlugin(String pluginName) {
-       if (pluginHandle_ != 0) {
+       if (pluginHandle_ != 0) 
            pluginHandle_ = unloadPlugin(pluginHandle_,
-                                        pluginName);
-       }
+                                        pluginName);   
     }
 
     /**
@@ -184,28 +183,56 @@
      * Extract keywords (meta-data) from the given file.
      *
      * @param f the file to extract meta-data from
-     * @return a Vector of Extractor.Keywords
+     * @return a ArrayList of Extractor.Keywords
      */
-    public Vector extract(File f) {
+    public ArrayList extract(File f) {
        return extract(f.getAbsolutePath());
     }
-    
+
     /**
      * Extract keywords (meta-data) from the given file.
      *
      * @param file the name of the file
-     * @return a Vector of Extractor.Keywords
+     * @return a ArrayList of Extractor.Keywords
      */
-    public Vector extract(String filename) {
+    public ArrayList extract(String filename) {
        if (pluginHandle_ == 0)
-           return new Vector(0); // fast way out
+           return new ArrayList(0); // fast way out
        long list
            = extractInternal(pluginHandle_,
-                             filename); // toChars?
+                             filename); // toChars?    
+       ArrayList ret = convert(list);
+       freeInternal(list);
+       return ret;
+    }
+    
+    /**
+     * Extract keywords (meta-data) from the given block
+     * of data.
+     *
+     * @param data the file data
+     * @return a ArrayList of Extractor.Keywords
+     */
+    public ArrayList extract(byte[] data) {
+       if (pluginHandle_ == 0)
+           return new ArrayList(0); // fast way out
+       long list
+           = extractInternal2(pluginHandle_,
+                             data);    
+       ArrayList ret = convert(list);
+       freeInternal(list);
+       return ret;
+    }
+
+    /**
+     * Convert a list of keywords in C to an ArrayList
+     * in Java.
+     */
+    private ArrayList convert(long list) {
        long pos 
            = list;
-       Vector res 
-           = new Vector();
+       ArrayList res 
+           = new ArrayList();
        while (pos != 0) {
            int type 
                = typeInternal(pos);
@@ -214,11 +241,10 @@
            res.add(new Keyword(type, keyword));
            pos = nextInternal(pos);
        }
-       freeInternal(list);
        return res;
     }
-
     
+    
     /* ********************* native calls ******************** */
 
     private static native long loadDefaultInternal();
@@ -228,6 +254,9 @@
     private static native long extractInternal(long handle,
                                               String filename);
 
+    private static native long extractInternal2(long handle,
+                                              byte[] data);
+
     // free memory allocated by extractInternal
     private static native void freeInternal(long list);
 

Modified: Extractor-java/org/gnunet/libextractor/Xtract.java
===================================================================
--- Extractor-java/org/gnunet/libextractor/Xtract.java  2007-04-20 03:47:47 UTC 
(rev 4765)
+++ Extractor-java/org/gnunet/libextractor/Xtract.java  2007-04-21 23:14:32 UTC 
(rev 4766)
@@ -1,6 +1,6 @@
 /*
      This file is part of libextractor.
-     (C) 2002, 2003, 2004 Vidyut Samanta and Christian Grothoff
+     (C) 2002, 2003, 2004, 2007 Vidyut Samanta and Christian Grothoff
 
      libextractor is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -19,7 +19,7 @@
  */
 package org.gnunet.libextractor;
 
-import java.util.Vector;
+import java.util.ArrayList;
 
 /**
  * Java version of extract.  This is just a tiny demo-application
@@ -33,10 +33,10 @@
     public static void main(String[] args) {   
        Extractor ex = Extractor.getDefault();
        for (int i=0;i<args.length;i++) {
-           Vector keywords = ex.extract(args[i]);
+           ArrayList keywords = ex.extract(args[i]);
            System.out.println("Keywords for " + args[i] + ":\n");
            for (int j=0;j<keywords.size();j++)
-               System.out.println(keywords.elementAt(j));
+               System.out.println(keywords.get(j));
        }       
        // no need to unload, finalizer does the rest...
     }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]