aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2001-10-01 07:46:45 +0000
committerDaniel Stenberg <daniel@haxx.se>2001-10-01 07:46:45 +0000
commit2a07626aa8dcf601eb575cac4c8817fa0e8e245e (patch)
tree997369d285ee134226b75c47e211296bb92e332b
parent91275548528859f882c87c2131d3c96a0abd5938 (diff)
moved to the java module
-rw-r--r--java/CurlGlue.java134
-rw-r--r--java/CurlWrite.java9
-rw-r--r--java/MANIFEST8
-rw-r--r--java/Makefile35
-rw-r--r--java/README17
-rwxr-xr-xjava/define2java.pl22
-rw-r--r--java/javacurl.c218
-rw-r--r--java/test.java27
8 files changed, 0 insertions, 470 deletions
diff --git a/java/CurlGlue.java b/java/CurlGlue.java
deleted file mode 100644
index fe8f186e6..000000000
--- a/java/CurlGlue.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * The curl class is a JNI wrapper for libcurl. Please bear with me, I'm no
- * true java dude (yet). Improve what you think is bad and send me the
- * updates!
- * daniel@haxx.se
- *
- * This is meant as a raw, crude and low-level interface to libcurl. If you
- * want fancy stuff, build upon this.
- */
-
-public class CurlGlue
-{
- // start of imported generated list, make a new list with
- // define2java.pl on demand
- public static final int CURLOPT_NOTHING = 0;
- public static final int CURLOPT_FILE = 10001;
- public static final int CURLOPT_URL = 10002;
- public static final int CURLOPT_PORT = 3;
- public static final int CURLOPT_PROXY = 10004;
- public static final int CURLOPT_USERPWD = 10005;
- public static final int CURLOPT_PROXYUSERPWD = 10006;
- public static final int CURLOPT_RANGE = 10007;
- public static final int CURLOPT_INFILE = 10009;
- public static final int CURLOPT_ERRORBUFFER = 10010;
- public static final int CURLOPT_WRITEFUNCTION = 20011;
- public static final int CURLOPT_READFUNCTION = 20012;
- public static final int CURLOPT_TIMEOUT = 13;
- public static final int CURLOPT_INFILESIZE = 14;
- public static final int CURLOPT_POSTFIELDS = 10015;
- public static final int CURLOPT_REFERER = 10016;
- public static final int CURLOPT_FTPPORT = 10017;
- public static final int CURLOPT_USERAGENT = 10018;
- public static final int CURLOPT_LOW_SPEED_LIMIT = 19;
- public static final int CURLOPT_LOW_SPEED_TIME = 20;
- public static final int CURLOPT_RESUME_FROM = 21;
- public static final int CURLOPT_COOKIE = 10022;
- public static final int CURLOPT_HTTPHEADER = 10023;
- public static final int CURLOPT_HTTPPOST = 10024;
- public static final int CURLOPT_SSLCERT = 10025;
- public static final int CURLOPT_SSLCERTPASSWD = 10026;
- public static final int CURLOPT_CRLF = 27;
- public static final int CURLOPT_QUOTE = 10028;
- public static final int CURLOPT_WRITEHEADER = 10029;
- public static final int CURLOPT_COOKIEFILE = 10031;
- public static final int CURLOPT_SSLVERSION = 32;
- public static final int CURLOPT_TIMECONDITION = 33;
- public static final int CURLOPT_TIMEVALUE = 34;
- public static final int CURLOPT_HTTPREQUEST = 10035;
- public static final int CURLOPT_CUSTOMREQUEST = 10036;
- public static final int CURLOPT_STDERR = 10037;
- public static final int CURLOPT_POSTQUOTE = 10039;
- public static final int CURLOPT_WRITEINFO = 10040;
- public static final int CURLOPT_VERBOSE = 41;
- public static final int CURLOPT_HEADER = 42;
- public static final int CURLOPT_NOPROGRESS = 43;
- public static final int CURLOPT_NOBODY = 44;
- public static final int CURLOPT_FAILONERROR = 45;
- public static final int CURLOPT_UPLOAD = 46;
- public static final int CURLOPT_POST = 47;
- public static final int CURLOPT_FTPLISTONLY = 48;
- public static final int CURLOPT_FTPAPPEND = 50;
- public static final int CURLOPT_NETRC = 51;
- public static final int CURLOPT_FOLLOWLOCATION = 52;
- public static final int CURLOPT_FTPASCII = 53;
- public static final int CURLOPT_TRANSFERTEXT = 53;
- public static final int CURLOPT_PUT = 54;
- public static final int CURLOPT_MUTE = 55;
- public static final int CURLOPT_PROGRESSFUNCTION = 20056;
- public static final int CURLOPT_PROGRESSDATA = 10057;
- public static final int CURLOPT_AUTOREFERER = 58;
- public static final int CURLOPT_PROXYPORT = 59;
- public static final int CURLOPT_POSTFIELDSIZE = 60;
- public static final int CURLOPT_HTTPPROXYTUNNEL = 61;
- public static final int CURLOPT_INTERFACE = 10062;
- public static final int CURLOPT_KRB4LEVEL = 10063;
- public static final int CURLOPT_SSL_VERIFYPEER = 64;
- public static final int CURLOPT_CAINFO = 10065;
- public static final int CURLOPT_PASSWDFUNCTION = 20066;
- public static final int CURLOPT_PASSWDDATA = 10067;
- public static final int CURLOPT_MAXREDIRS = 68;
- public static final int CURLOPT_FILETIME = 10069;
- public static final int CURLOPT_TELNETOPTIONS = 10070;
- public static final int CURLOPT_MAXCONNECTS = 71;
- public static final int CURLOPT_CLOSEPOLICY = 72;
- public static final int CURLOPT_CLOSEFUNCTION = 20073;
- public static final int CURLOPT_FRESH_CONNECT = 74;
- public static final int CURLOPT_FORBID_REUSE = 75;
- public static final int CURLOPT_RANDOM_FILE = 10076;
- public static final int CURLOPT_EGDSOCKET = 10077;
- public static final int CURLOPT_CONNECTTIMEOUT = 78;
- public static final int CURLOPT_HEADERFUNCTION = 20079;
- // end of generated list
-
- public CurlGlue() {
- javacurl_handle = jni_init();
- }
-
- public void finalize() {
- jni_cleanup(javacurl_handle);
- }
-
- private int javacurl_handle;
-
- /* constructor and destructor for the libcurl handle */
- private native int jni_init();
- private native void jni_cleanup(int javacurl_handle);
- private native synchronized int jni_perform(int javacurl_handle);
-
- // Instead of varargs, we have different functions for each
- // kind of type setopt() can take
- private native int jni_setopt(int libcurl, int option, String value);
- private native int jni_setopt(int libcurl, int option, int value);
- private native int jni_setopt(int libcurl, int option, CurlWrite value);
-
- public native int getinfo();
-
- public int perform() {
- return jni_perform(javacurl_handle);
- }
- public int setopt(int option, int value) {
- return jni_setopt(javacurl_handle, option, value);
- }
- public int setopt(int option, String value) {
- return jni_setopt(javacurl_handle, option, value);
- }
- public int setopt(int option, CurlWrite value) {
- return jni_setopt(javacurl_handle, option, value);
- }
-
- static {
- System.loadLibrary("javacurl");
- }
-
-}
diff --git a/java/CurlWrite.java b/java/CurlWrite.java
deleted file mode 100644
index 37c8484c0..000000000
--- a/java/CurlWrite.java
+++ /dev/null
@@ -1,9 +0,0 @@
-public interface CurlWrite
-{
- /**
- * handleString gets called by libcurl on each chunk of data
- * we receive from the remote server
- */
- public int handleString(byte s[]);
-}
-
diff --git a/java/MANIFEST b/java/MANIFEST
deleted file mode 100644
index f083b23b5..000000000
--- a/java/MANIFEST
+++ /dev/null
@@ -1,8 +0,0 @@
-CurlGlue.java
-CurlWrite.java
-define2java.pl
-javacurl.c
-Makefile
-README
-test.java
-MANIFEST
diff --git a/java/Makefile b/java/Makefile
deleted file mode 100644
index 1c69e6ee3..000000000
--- a/java/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-
-TARGET = libjavacurl.so
-
-OBJS = javacurl.o
-
-CC = gcc
-CFLAGS = -c
-CPPFLAGS = -I/usr/j2se/include -I/usr/local/include -I/usr/j2se/include/solaris
-
-# Linux might use -shared -Wl,-soname,libnative.so instead of -G
-LDFLAGS = -G -lcurl -ldl -L/usr/local/ssl/lib -lssl -lcrypto
-
-all: CurlGlue.h CurlGlue.class javacurl.o $(TARGET) test.class
-
-test:
- java test
-
-javacurl.o: javacurl.c CurlGlue.h
- $(CC) $(CPPFLAGS) $(CFLAGS) $<
-
-CurlGlue.h: CurlGlue.java CurlGlue.class
- javah CurlGlue
- touch CurlGlue.h
-
-test.class: CurlGlue.class javacurl.o
- javac test.java
-
-CurlGlue.class: CurlGlue.java
- javac $<
-
-$(TARGET): $(OBJS)
- $(CC) -o $(TARGET) $(LDFLAGS) $(OBJS)
-
-clean:
- rm -f javacurl.o CurlGlue.h CurlGlue.class
diff --git a/java/README b/java/README
deleted file mode 100644
index 5274bb2fa..000000000
--- a/java/README
+++ /dev/null
@@ -1,17 +0,0 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
- Java Interface
-
- This is not a complete implementation of a libcurl interface. I've made the
-core work and it needs additional code to be added to get the rest of the
-stuff supported.
-
- The interface is not set yet, bring your suggestions!
-
- Feel free to grab the source files in here and help out!
-
- The 'test.java' is the actual program that uses the curl stuff.
diff --git a/java/define2java.pl b/java/define2java.pl
deleted file mode 100755
index a9d470a6f..000000000
--- a/java/define2java.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/perl
-
-open(GCC, "gcc -E ../include/curl/curl.h|");
-
-while(<GCC>) {
- if($_ =~ /(CURLOPT_(.*)) += (.*)/) {
- $var= $1;
- $expr = $3;
- $f=$3;
- if($expr =~ / *(\d+) *\+ *(\d+)/) {
- $expr = $1+$2;
- }
-
- # nah, keep the CURL prefix to make them look like other
- # languages' defines
- # $var =~ s/^CURL//g;
-
- print " public static final int $var = $expr;\n";
- }
-}
-
-close(GCC);
diff --git a/java/javacurl.c b/java/javacurl.c
deleted file mode 100644
index e25462eab..000000000
--- a/java/javacurl.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/*****************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2001, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * In order to be useful for every potential user, curl and libcurl are
- * dual-licensed under the MPL and the MIT/X-derivate licenses.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the MPL or the MIT/X-derivate
- * licenses. You may pick one of these licenses.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- * $Id$
- *****************************************************************************/
-
-#include <curl/curl.h> /* libcurl header */
-#include "CurlGlue.h" /* the JNI-generated glue header file */
-
-/*
- * This is a private struct allocated for every 'CurlGlue' object.
- */
-struct javacurl {
- void *libcurl;
- void *whatever;
- struct writecallback {
- jmethodID mid;
- JNIEnv *java;
- jclass cls; /* global reference */
- jobject object;
- } write;
-};
-
-JNIEXPORT jint JNICALL Java_CurlGlue_jni_1init(JNIEnv *java,
- jobject myself)
-{
- void *libhandle;
- struct javacurl *jcurl=NULL;
-
- libhandle = curl_easy_init();
-
- if(libhandle) {
- jcurl=(struct javacurl *)malloc(sizeof(struct javacurl));
- if(jcurl) {
- memset(jcurl, 0, sizeof(struct javacurl));
- jcurl->libcurl = libhandle;
-
- }
- else {
- curl_easy_cleanup(libhandle);
- return (jint)0;
- }
- }
-
- return (jint) jcurl; /* nasty typecast */
-}
-
-JNIEXPORT void JNICALL Java_CurlGlue_jni_1cleanup(JNIEnv *java,
- jobject myself,
- jint jcurl)
-{
-
- struct javacurl *curl = (struct javacurl*)jcurl;
-
- if(curl->write.cls) {
- /* a global reference we must delete */
- (*java)->DeleteGlobalRef(java, curl->write.cls);
- (*java)->DeleteGlobalRef(java, curl->write.object);
- }
-
- curl_easy_cleanup(curl->libcurl); /* cleanup libcurl stuff */
-
- free((void *)curl); /* free the struct too */
-}
-
-/*
- * setopt() int + string
- */
-JNIEXPORT jint JNICALL Java_CurlGlue_jni_1setopt__IILjava_lang_String_2
- (JNIEnv *java, jobject myself, jint jcurl, jint option, jstring value)
-{
- /* get the actual string C-style */
- const char *str = (*java)->GetStringUTFChars(java, value, 0);
-
- void *handle = (void *)((struct javacurl*)jcurl)->libcurl;
-
- puts("setopt int + string");
-
- return (jint)curl_easy_setopt(handle, (CURLoption)option, str);
-
-}
-
-/*
- * setopt() int + int
- */
-JNIEXPORT jint JNICALL Java_CurlGlue_jni_1setopt__III
- (JNIEnv *java, jobject myself, jint jcurl, jint option, jint value)
-{
- void *handle = (void *)((struct javacurl*)jcurl)->libcurl;
- CURLoption opt = (CURLoption)option;
-
- puts("setopt int + int");
-
- switch(opt) {
- case CURLOPT_FILE:
- /* silently ignored, we don't need user-specified callback data when
- we have an object, and besides the CURLOPT_FILE is not exported
- to the java interface */
- return 0;
- }
-
- return (jint)curl_easy_setopt(handle, (CURLoption)option, value);
-}
-
-static int javacurl_write_callback(void *ptr,
- size_t size,
- size_t nmemb,
- FILE *stream)
-{
- struct javacurl *curl = (struct javacurl *)stream;
- size_t realsize = size * nmemb;
- JNIEnv *java = curl->write.java;
- jbyteArray jb=NULL;
- int ret=0;
-
- fprintf(stderr, "%d bytes data received in callback:\n"
- "ptr=%p, java=%p cls=%p\n",
- realsize, curl, java, curl->write.cls);
-
- jb=(*java)->NewByteArray(java, realsize);
- (*java)->SetByteArrayRegion(java, jb, 0,
- realsize, (jbyte *)ptr);
-
- fprintf(stderr, "created byte-array\n");
-
- ret = (*java)->CallIntMethod(java,
- curl->write.object,
- curl->write.mid,
- jb);
-
- fprintf(stderr, "java-method returned %d\n", ret);
-
- return realsize;
-}
-
-/*
- * setopt() int + object
- */
-
-JNIEXPORT jint JNICALL Java_CurlGlue_jni_1setopt__IILCurlWrite_2
- (JNIEnv *java, jobject myself, jint jcurl, jint option, jobject object)
-{
- jclass cls_local = (*java)->GetObjectClass(java, object);
- jmethodID mid;
- struct javacurl *curl = (struct javacurl *)jcurl;
- jclass cls;
- jobject obj_global;
-
- switch(option) {
- case CURLOPT_WRITEFUNCTION:
- /* this makes a reference that'll be alive until we kill it! */
- cls = (*java)->NewGlobalRef(java, cls_local);
-
- printf("setopt int + object, option = %d cls= %p\n",
- option, cls);
-
- if(!cls) {
- puts("couldn't make local reference global");
- return 0;
- }
-
- /* this is the write callback */
- mid = (*java)->GetMethodID(java, cls, "handleString", "([B)I");
- if(!mid) {
- puts("no callback method found");
- return 0;
- }
-
- obj_global = (*java)->NewGlobalRef(java, object);
-
- curl->write.mid = mid;
- curl->write.cls = cls;
- curl->write.object = obj_global;
- /*curl->write.java = java; stored on perform */
-
- fprintf(stderr, "setopt write callback and write file pointer %p, java = %p\n",
- curl, java);
-
- curl_easy_setopt(curl->libcurl, CURLOPT_WRITEFUNCTION,
- javacurl_write_callback);
- curl_easy_setopt(curl->libcurl, CURLOPT_FILE,
- curl);
-
- break;
- }
- return 0;
-}
-
-JNIEXPORT jint JNICALL Java_CurlGlue_getinfo
- (JNIEnv *java, jobject value)
-{
- return 0;
-}
-
-JNIEXPORT jint JNICALL Java_CurlGlue_jni_1perform
- (JNIEnv *java, jobject myself, jint jcurl)
-{
- struct javacurl *curl=(struct javacurl*)jcurl;
- curl->write.java = java;
- return (jint)curl_easy_perform(curl->libcurl);
-}
diff --git a/java/test.java b/java/test.java
deleted file mode 100644
index 33da88030..000000000
--- a/java/test.java
+++ /dev/null
@@ -1,27 +0,0 @@
-import CurlGlue;
-import CurlWrite;
-
-class test implements CurlWrite {
- public int handleString(byte s[])
- {
- /* output everything */
- System.out.println("IIIIIIIIIII -------------- OOOOOOOOOOOOOOOOOOO");
- try {
- System.out.write(s);
- }
- catch (java.io.IOException moo) {
- // nothing
- }
- return 0;
- }
-
- public static void main(String[] args)
- {
- CurlGlue cg = new CurlGlue();
- test cw = new test();
- cg.setopt(CurlGlue.CURLOPT_URL, "http://www.contactor.se/");
- cg.setopt(CurlGlue.CURLOPT_WRITEFUNCTION, cw);
- cg.perform();
- }
-}
-