[libinline-java-perl] 273/398: ok 0.45

Jonas Smedegaard dr at jones.dk
Thu Feb 26 11:43:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

js pushed a commit to tag 0.55
in repository libinline-java-perl.

commit 7e28ef7ec6badc9549b5e8ffcc2a1c891ce1341f
Author: patrick_leb <>
Date:   Tue Jan 20 00:14:21 2004 +0000

    ok 0.45
---
 .../org/perl/inline/java/InlineJavaClass.java      | 141 ++++++++-------------
 .../org/perl/inline/java/InlineJavaPerlCaller.java |  22 ++++
 .../org/perl/inline/java/InlineJavaProtocol.java   |  14 +-
 3 files changed, 86 insertions(+), 91 deletions(-)

diff --git a/Java/sources/org/perl/inline/java/InlineJavaClass.java b/Java/sources/org/perl/inline/java/InlineJavaClass.java
index 929fc50..f47e38c 100644
--- a/Java/sources/org/perl/inline/java/InlineJavaClass.java
+++ b/Java/sources/org/perl/inline/java/InlineJavaClass.java
@@ -20,6 +20,40 @@ class InlineJavaClass {
 		class2jni_code.put(void.class, "V") ;
 	} ;
 
+	static private HashMap class2wrapper = new HashMap() ;
+	static {
+		class2wrapper.put(byte.class, java.lang.Byte.class) ;
+		class2wrapper.put(short.class, java.lang.Short.class) ;
+		class2wrapper.put(int.class, java.lang.Integer.class) ;
+		class2wrapper.put(long.class, java.lang.Long.class) ;
+		class2wrapper.put(float.class, java.lang.Float.class) ;
+		class2wrapper.put(double.class, java.lang.Double.class) ;
+		class2wrapper.put(boolean.class, java.lang.Boolean.class) ;
+		class2wrapper.put(char.class, java.lang.Character.class) ;
+		class2wrapper.put(void.class, java.lang.Void.class) ;
+	} ;
+
+	static private HashMap name2class = new HashMap() ;
+	static {
+		name2class.put("byte", byte.class) ;
+		name2class.put("short", short.class) ;
+		name2class.put("int", int.class) ;
+		name2class.put("long", long.class) ;
+		name2class.put("float", float.class) ;
+		name2class.put("double", double.class) ;
+		name2class.put("boolean", boolean.class) ;
+		name2class.put("char", char.class) ;
+		name2class.put("void", void.class) ;
+		name2class.put("B", byte.class) ;
+		name2class.put("S", short.class) ;
+		name2class.put("I", int.class) ;
+		name2class.put("J", long.class) ;
+		name2class.put("F", float.class) ;
+		name2class.put("D", double.class) ;
+		name2class.put("Z", boolean.class) ;
+		name2class.put("C", char.class) ;
+		name2class.put("V", void.class) ;
+	} ;
 
 
 	InlineJavaClass(InlineJavaServer _ijs, InlineJavaProtocol _ijp){
@@ -248,35 +282,13 @@ class InlineJavaClass {
 	/*
 		Finds the wrapper class for the passed primitive type.
 	*/
-	static Class FindWrapper (Class p){
-		Class [] list = {
-			byte.class,
-			short.class,
-			int.class,
-			long.class,
-			float.class,
-			double.class,
-			boolean.class,
-			char.class,
-		} ;
-		Class [] listw = {
-			java.lang.Byte.class,
-			java.lang.Short.class,
-			java.lang.Integer.class,
-			java.lang.Long.class,
-			java.lang.Float.class,
-			java.lang.Double.class,
-			java.lang.Boolean.class,
-			java.lang.Character.class,
-		} ;
-
-		for (int i = 0 ; i < list.length ; i++){
-			if (p == list[i]){
-				return listw[i] ;
-			}
+	static Class FindWrapper(Class p){
+		Class w = (Class)class2wrapper.get(p) ;
+		if (w == null){
+			w = p ;
 		}
-
-		return p ;
+		
+		return w ;
 	}
 
 
@@ -284,72 +296,23 @@ class InlineJavaClass {
 		Finds the primitive type class for the passed primitive type name.
 	*/
 	static Class FindType (String name){
-		String [] list = {
-			"byte",
-			"short",
-			"int",
-			"long",
-			"float",
-			"double",
-			"boolean",
-			"char",
-			"B",
-			"S",
-			"I",
-			"J",
-			"F",
-			"D",
-			"Z",
-			"C",
-		} ;
-		Class [] listc = {
-			byte.class,
-			short.class,
-			int.class,
-			long.class,
-			float.class,
-			double.class,
-			boolean.class,
-			char.class,
-			byte.class,
-			short.class,
-			int.class,
-			long.class,
-			float.class,
-			double.class,
-			boolean.class,
-			char.class,
-		} ;
-
-		for (int i = 0 ; i < list.length ; i++){
-			if (name.equals(list[i])){
-				return listc[i] ;
-			}
-		}
-
-		return null ;
+		return (Class)name2class.get(name) ;
 	}
 
 
 	static String FindJNICode(Class p){
-		// Strip all the ['s from in front of the class name into some var
-		char name[] = p.getName().toCharArray() ;
-		StringBuffer pref = new StringBuffer() ;
-		for (int i = 0 ; i < name.length ; i++){
-			if (name[i] == '['){
-				pref.append("[") ;
+		if (! Object.class.isAssignableFrom(p)){
+			return (String)class2jni_code.get(p) ;
+		}
+		else {
+			String name = p.getName().replace('.', '/') ;
+			if (p.isArray()){
+				return name ;
 			}
-			else if (name[i] == '.'){
-				name[i] = '/' ;
+			else{
+				return "L" + name + ";" ;
 			}
 		}
-
-		String code = (String)class2jni_code.get(p) ;
-		if (code == null){
-			code = "L"  + new String(name) + ";" ;
-		}
-		
-		return pref + code ;
 	}
 
 
@@ -357,10 +320,10 @@ class InlineJavaClass {
 		String name = p.getName() ;
 
 		if ((ClassIsNumeric(p))||(ClassIsString(p))||(ClassIsChar(p))||(ClassIsBool(p))){
+			InlineJavaUtils.debug(4, "class " + name + " is primitive") ;
 			return true ;
 		}
 
-		InlineJavaUtils.debug(4, "class " + name + " is reference") ;
 		return false ;
 	}
 
@@ -491,4 +454,4 @@ class InlineJavaClass {
 
 		return false ;
 	}
-}
\ No newline at end of file
+}
diff --git a/Java/sources/org/perl/inline/java/InlineJavaPerlCaller.java b/Java/sources/org/perl/inline/java/InlineJavaPerlCaller.java
index 67a802f..a268739 100644
--- a/Java/sources/org/perl/inline/java/InlineJavaPerlCaller.java
+++ b/Java/sources/org/perl/inline/java/InlineJavaPerlCaller.java
@@ -11,6 +11,8 @@ public class InlineJavaPerlCaller {
 	private InlineJavaServer ijs = InlineJavaServer.GetInstance() ;
 	private Thread creator = null ;
 	static private HashMap thread_callback_queues = new HashMap() ;
+	static private ResourceBundle resources = null ;
+	static private boolean inited = false ;
 
 
 	/*
@@ -18,6 +20,7 @@ public class InlineJavaPerlCaller {
 		this is where we get the thread that needs to be notified when the callbacks come in.
 	*/
 	public InlineJavaPerlCaller() throws InlineJavaException {
+		init() ;
 		Thread t = Thread.currentThread() ;
 		if (ijs.IsThreadPerlContact(t)){
 			creator = t ;
@@ -28,6 +31,25 @@ public class InlineJavaPerlCaller {
 	}
 
 
+	synchronized static protected void init() throws InlineJavaException {
+       if (! inited){
+            try {
+                resources = ResourceBundle.getBundle("InlineJava") ;
+
+                inited = true ;
+            }
+            catch (MissingResourceException mre){
+                throw new InlineJavaException("Error loading InlineJava.properties: " + mre.getMessage()) ;
+            }
+        }
+	}
+
+
+	static protected ResourceBundle GetBundle(){
+		return resources ;
+	}
+
+
 	public Object CallPerl(String pkg, String method, Object args[]) throws InlineJavaException, InlineJavaPerlException {
 		return CallPerl(pkg, method, args, null) ;
 	}
diff --git a/Java/sources/org/perl/inline/java/InlineJavaProtocol.java b/Java/sources/org/perl/inline/java/InlineJavaProtocol.java
index 59c472d..4889a28 100644
--- a/Java/sources/org/perl/inline/java/InlineJavaProtocol.java
+++ b/Java/sources/org/perl/inline/java/InlineJavaProtocol.java
@@ -95,8 +95,10 @@ class InlineJavaProtocol {
 			Class c = ijc.ValidateClass(name) ;
 
 			InlineJavaUtils.debug(3, "reporting for " + c) ;
-													
-			pw.append("class " + c.getName() + "\n") ;
+
+			Class parent = c.getSuperclass() ;
+			String pname = (parent == null ? "null" : parent.getName()) ;
+			pw.append("class " + c.getName() + " " + pname + "\n") ;
 			Constructor constructors[] = c.getConstructors() ;
 			Method methods[] = c.getMethods() ;
 			Field fields[] = c.getFields() ;
@@ -110,8 +112,13 @@ class InlineJavaProtocol {
 					pw.append("constructor " + noarg_sign + "\n") ;	
 				}
 			}
+
+			boolean pn = InlineJavaPerlNatives.class.isAssignableFrom(c) ;
 			for (int j = 0 ; j < constructors.length ; j++){
 				Constructor x = constructors[j] ;
+				if ((pn)&&(Modifier.isNative(x.getModifiers()))){
+					continue ;
+				}
 				Class params[] = x.getParameterTypes() ;
 				String sign = InlineJavaUtils.CreateSignature(params) ;
 				Class decl = x.getDeclaringClass() ;
@@ -120,6 +127,9 @@ class InlineJavaProtocol {
 
 			for (int j = 0 ; j < methods.length ; j++){
 				Method x = methods[j] ;
+				if ((pn)&&(Modifier.isNative(x.getModifiers()))){
+					continue ;
+				}
 				String stat = (Modifier.isStatic(x.getModifiers()) ? " static " : " instance ") ;
 				String sign = InlineJavaUtils.CreateSignature(x.getParameterTypes()) ;
 				Class decl = x.getDeclaringClass() ;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libinline-java-perl.git



More information about the Pkg-perl-cvs-commits mailing list