[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