cvs: /php4/sapi/servlet Makefile.am README config.h.stub config.m4 servlet.c servlet.dsp servlet.java web.xml /php4/ext/java Makefile.am config.m4
java.c java.dsp reflect.java /php4/ext/standard info.c
| From: | Sam Ruby | Date: | Mon, 29 Nov 1999 15:36:57 +0000 |
| Subject: | cvs: /php4/sapi/servlet Makefile.am README config.h.stub config.m4 servlet.c servlet.dsp servlet.java web.xml /php4/ext/java Makefile.am config.m4 java.c java.dsp reflect.java /php4/ext/standard info.c |
||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-7048@lists.php.net to get a copy of this message | ||
rubys Mon Nov 29 10:36:57 1999 EDT
Added files:
/php4/sapi/servlet Makefile.am README config.h.stub config.m4
servlet.c servlet.dsp servlet.java web.xml
Modified files:
/php4/ext/java Makefile.am config.m4 java.c java.dsp reflect.java
/php4/ext/standard info.c
Log:
Initial alpha-level of sapi/servlet. See README for details.
Index: php4/ext/java/Makefile.am
diff -u php4/ext/java/Makefile.am:1.1 php4/ext/java/Makefile.am:1.2
--- php4/ext/java/Makefile.am:1.1 Tue Nov 9 07:02:19 1999
+++ php4/ext/java/Makefile.am Mon Nov 29 10:36:22 1999
@@ -1,4 +1,4 @@
-# $Id: Makefile.am,v 1.1 1999/11/09 12:02:19 rubys Exp $
+# $Id: Makefile.am,v 1.2 1999/11/29 15:36:22 rubys Exp $
SRC=java.c
@@ -16,9 +16,10 @@
@test -e net || mkdir net
@test -e net/php || mkdir net/php
@cp reflect.java net/php
+ @echo library=php4>net/php/reflect.properties
javac net/php/reflect.java
@test ! -f reflect.class || mv reflect.class net/php # bug in KJC javac
- zip -q0 php_java.jar net/php/*.class
+ zip -q0 php_java.jar net/php/*.class net/php/*.properties
@rm net/php/reflect.*
@rmdir net/php
@rmdir net
Index: php4/ext/java/config.m4
diff -u php4/ext/java/config.m4:1.2 php4/ext/java/config.m4:1.3
--- php4/ext/java/config.m4:1.2 Tue Nov 9 12:32:04 1999
+++ php4/ext/java/config.m4 Mon Nov 29 10:36:22 1999
@@ -1,4 +1,4 @@
-# $Id: config.m4,v 1.2 1999/11/09 17:32:04 ssb Exp $
+# $Id: config.m4,v 1.3 1999/11/29 15:36:22 rubys Exp $
# config.m4 for extension java
AC_MSG_CHECKING(for Java support)
@@ -14,9 +14,11 @@
if test -d /usr/local/lib/kaffe; then
JAVA_CFLAGS="-DKAFFE"
JAVA_INCLUDE=-I/usr/local/include/kaffe
+ JAVA_CLASSPATH=/usr/local/share/kaffe/Klasses.jar
elif test -d /usr/lib/kaffe; then
JAVA_CFLAGS="-DKAFFE"
JAVA_INCLUDE=-I/usr/include/kaffe
+ JAVA_CLASSPATH=/usr/share/kaffe/Klasses.jar
else
AC_MSG_RESULT(no)
AC_MSG_ERROR(unable to find Java VM libraries)
@@ -26,6 +28,8 @@
JAVA_INCLUDE="-I$withval/include"
test -f $withval/lib/classes.zip && JAVA_CFLAGS="-DJNI_11"
test -f $withval/lib/jvm.jar && JAVA_CFLAGS="-DJNI_12"
+ test -f $withval/lib/classes.zip && JAVA_CLASSPATH="$withval/lib/classes.zip"
+ test -f $withval/lib/jvm.jar && JAVA_CLASSPATH="$withval/lib/jvm.jar"
for i in $JAVA_INCLUDE/*; do
test -f $i/jni_md.h && JAVA_INCLUDE="$JAVA_INCLUDE $i"
done
@@ -35,6 +39,8 @@
test -f $i/jni_md.h && JAVA_INCLUDE="$JAVA_INCLUDE -I$i"
test -f $i/classes.zip && JAVA_CFLAGS="-DJNI_11"
test -f $i/jvm.jar && JAVA_CFLAGS="-DJNI_12"
+ test -f $i/classes.zip && JAVA_CLASSPATH="$i/classes.zip"
+ test -f $i/jvm.jar && JAVA_CLASSPATH="$i/jvm.jar"
done
if test -z "$JAVA_INCLUDE"; then
AC_MSG_RESULT(no)
@@ -55,6 +61,7 @@
])
AC_SUBST(JAVA_CFLAGS)
+AC_SUBST(JAVA_CLASSPATH)
AC_SUBST(JAVA_INCLUDE)
AC_SUBST(JAVA_SHARED)
AC_SUBST(JAVA_LFLAGS)
Index: php4/ext/java/java.c
diff -u php4/ext/java/java.c:1.2 php4/ext/java/java.c:1.3
--- php4/ext/java/java.c:1.2 Sun Nov 21 05:45:00 1999
+++ php4/ext/java/java.c Mon Nov 29 10:36:22 1999
@@ -255,8 +255,8 @@
arg=0;
}
(*jenv)->SetObjectArrayElement(jenv, result, i, arg);
- if (argv[i]->type != IS_OBJECT)
- (*jenv)->DeleteLocalRef(jenv, arg);
+ if (argv[i]->type != IS_OBJECT)
+ (*jenv)->DeleteLocalRef(jenv, arg);
}
return result;
}
@@ -271,6 +271,7 @@
return 0;
}
+
/***************************************************************************/
/*
@@ -290,9 +291,9 @@
pval **arguments = (pval **) emalloc(sizeof(pval *)*arg_count);
getParametersArray(ht, arg_count, arguments);
- if (iniUpdated && jvm) jvm_destroy();
- if (!jvm) jvm_create();
- if (!jvm) return;
+ if (iniUpdated && jenv) jvm_destroy();
+ if (!jenv) jvm_create();
+ if (!jenv) return;
if (!strcmp("java",function_name->element.value.str.val)) {
@@ -399,7 +400,7 @@
/***************************************************************************/
static void _php3_java_destructor(void *jobject) {
- (*jenv)->DeleteGlobalRef(jenv, jobject);
+ if (jenv) (*jenv)->DeleteGlobalRef(jenv, jobject);
}
PHP_MINIT_FUNCTION(java) {
@@ -448,7 +449,7 @@
/***************************************************************************/
JNIEXPORT void JNICALL Java_net_php_reflect_setResultFromString
- (JNIEnv *jenv, jobject self, jlong result, jstring value)
+ (JNIEnv *jenv, jclass self, jlong result, jstring value)
{
const char *valueAsUTF = (*jenv)->GetStringUTFChars(jenv, value, 0);
pval *presult = (pval*)(long)result;
@@ -460,7 +461,7 @@
}
JNIEXPORT void JNICALL Java_net_php_reflect_setResultFromLong
- (JNIEnv *jenv, jobject self, jlong result, jlong value)
+ (JNIEnv *jenv, jclass self, jlong result, jlong value)
{
pval *presult = (pval*)(long)result;
presult->type=IS_LONG;
@@ -468,7 +469,7 @@
}
JNIEXPORT void JNICALL Java_net_php_reflect_setResultFromDouble
- (JNIEnv *jenv, jobject self, jlong result, jdouble value)
+ (JNIEnv *jenv, jclass self, jlong result, jdouble value)
{
pval *presult = (pval*)(long)result;
presult->type=IS_DOUBLE;
@@ -476,7 +477,7 @@
}
JNIEXPORT void JNICALL Java_net_php_reflect_setResultFromBoolean
- (JNIEnv *jenv, jobject self, jlong result, jboolean value)
+ (JNIEnv *jenv, jclass self, jlong result, jboolean value)
{
pval *presult = (pval*)(long)result;
presult->type=IS_BOOL;
@@ -484,7 +485,7 @@
}
JNIEXPORT void JNICALL Java_net_php_reflect_setResultFromObject
- (JNIEnv *jenv, jobject self, jlong result, jobject value)
+ (JNIEnv *jenv, jclass self, jlong result, jobject value)
{
/* wrapper the java object in a pval object */
pval *presult = (pval*)(long)result;
@@ -510,9 +511,18 @@
}
JNIEXPORT void JNICALL Java_net_php_reflect_setException
- (JNIEnv *jenv, jobject self, jlong result, jstring value)
+ (JNIEnv *jenv, jclass self, jlong result, jstring value)
{
pval *presult = (pval*)(long)result;
Java_net_php_reflect_setResultFromString(jenv, self, result, value);
presult->type=IS_EXCEPTION;
+}
+
+JNIEXPORT void JNICALL Java_net_php_reflect_setEnv
+ (JNIEnv *newJenv, jclass self)
+{
+ iniUpdated=0;
+ jenv=newJenv;
+ if (!self) self = (*jenv)->FindClass(jenv, "net/php/reflect");
+ php_reflect = (*jenv)->NewGlobalRef(jenv, self);
}
Index: php4/ext/java/java.dsp
diff -u php4/ext/java/java.dsp:1.1 php4/ext/java/java.dsp:1.2
--- php4/ext/java/java.dsp:1.1 Tue Nov 9 07:02:19 1999
+++ php4/ext/java/java.dsp Mon Nov 29 10:36:23 1999
@@ -177,8 +177,9 @@
if not exist net mkdir net
if not exist net\php mkdir net\php
copy $(InputPath) net\php > nul
+ echo library=php_java>net\php\reflect.properties
$(JAVA_HOME)\bin\javac net\php\reflect.java
- $(JAVA_HOME)\bin\jar c0f $(OutDir)\php_java.jar net\php\*.class
+ $(JAVA_HOME)\bin\jar c0f $(OutDir)\php_java.jar net\php\*.class net\php\*.properties
erase net\php\reflect.*
rmdir net\php
rmdir net
@@ -196,8 +197,9 @@
if not exist net mkdir net
if not exist net\php mkdir net\php
copy $(InputPath) net\php > nul
+ echo library=php_java>net\php\reflect.properties
$(JAVA_HOME)\bin\javac -g net\php\reflect.java
- $(JAVA_HOME)\bin\jar c0f $(OutDir)\php_java.jar net\php\*.class
+ $(JAVA_HOME)\bin\jar c0f $(OutDir)\php_java.jar net\php\*.class net\php\*.properties
erase net\php\reflect.*
rmdir net\php
rmdir net
@@ -215,8 +217,9 @@
if not exist net mkdir net
if not exist net\php mkdir net\php
copy $(InputPath) net\php > nul
+ echo library=php_java>net\php\reflect.properties
$(JAVA_HOME)\bin\javac -g net\php\reflect.java
- $(JAVA_HOME)\bin\jar c0f $(OutDir)\php_java.jar net\php\*.class
+ $(JAVA_HOME)\bin\jar c0f $(OutDir)\php_java.jar net\php\*.class net\php\*.properties
erase net\php\reflect.*
rmdir net\php
rmdir net
@@ -234,8 +237,9 @@
if not exist net mkdir net
if not exist net\php mkdir net\php
copy $(InputPath) net\php > nul
+ echo library=php_java>net\php\reflect.properties
$(JAVA_HOME)\bin\javac net\php\reflect.java
- $(JAVA_HOME)\bin\jar c0f $(OutDir)\php_java.jar net\php\*.class
+ $(JAVA_HOME)\bin\jar c0f $(OutDir)\php_java.jar net\php\*.class net\php\*.properties
erase net\php\reflect.*
rmdir net\php
rmdir net
Index: php4/ext/java/reflect.java
diff -u php4/ext/java/reflect.java:1.1 php4/ext/java/reflect.java:1.2
--- php4/ext/java/reflect.java:1.1 Tue Nov 9 07:02:19 1999
+++ php4/ext/java/reflect.java Mon Nov 29 10:36:23 1999
@@ -19,11 +19,21 @@
package net.php;
import java.lang.reflect.*;
+import java.util.ResourceBundle;
import java.beans.*;
class reflect {
- static { System.loadLibrary("php_java"); }
+ static { loadLibrary("reflect"); }
+
+ protected static void loadLibrary(String property) {
+ try {
+ ResourceBundle bundle = ResourceBundle.getBundle("net.php."+property);
+ System.loadLibrary(bundle.getString("library"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
//
// Native methods
@@ -34,6 +44,7 @@
private static native void setResultFromBoolean(long result, boolean value);
private static native void setResultFromObject(long result, Object value);
private static native void setException(long result, String value);
+ public static native void setEnv();
//
// Helper routines which encapsulate the native methods
Index: php4/ext/standard/info.c
diff -u php4/ext/standard/info.c:1.43 php4/ext/standard/info.c:1.44
--- php4/ext/standard/info.c:1.43 Wed Nov 24 12:56:31 1999
+++ php4/ext/standard/info.c Mon Nov 29 10:36:24 1999
@@ -309,6 +309,7 @@
CREDIT_LINE("ISAPI SAPI Module", "Andi Gutmans, Zeev Suraski");
CREDIT_LINE("CGI SAPI Module", "Rasmus Lerdorf, Stig Bakken");
CREDIT_LINE("AOLserver SAPI Module", "Sascha Schumann");
+ CREDIT_LINE("Servlet SAPI Module", "Sam Ruby");
CREDIT_LINE("Overall Work", "Thies C. Arntzen, Stig Bakken, Shane Caraveo, \
Rasmus Lerdorf, Sascha Schumann, Zeev Suraski, Andrei Zmievski, \
and others");