home *** CD-ROM | disk | FTP | other *** search
- package com.netscape.javascript;
-
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Method;
- import java.util.Hashtable;
-
- public class NativeJavaObject implements Scriptable, Wrapper, Rescopeable {
- public static final int CONVERSION_NONE = 0;
- public static final int CONVERSION_TRIVIAL = 1;
- public static final int CONVERSION_NONTRIVIAL = 2;
- protected Object javaObject;
- protected JavaMembers members;
- private Hashtable fieldAndMethods;
- static Class jsObjectClass;
- static Constructor jsObjectCtor;
- static Method jsObjectGetScriptable;
- // $FF: synthetic field
- private static Class class$com$netscape$javascript$Scriptable;
-
- public static Object coerceType(Class var0, Object var1) {
- if (var1 == null) {
- return null;
- } else {
- Class var2 = var1.getClass();
- if (var2 == var0) {
- return var1;
- } else if (var0 == ScriptRuntime.StringClass) {
- return ScriptRuntime.toString(var1);
- } else if (var0 != Character.TYPE && var0 != ScriptRuntime.CharacterClass) {
- if (var0 != ScriptRuntime.IntegerClass && var0 != Integer.TYPE) {
- if (var0 != ScriptRuntime.LongClass && var0 != Long.TYPE) {
- if (var0 != ScriptRuntime.ByteClass && var0 != Byte.TYPE) {
- if (var0 != ScriptRuntime.ShortClass && var0 != Short.TYPE) {
- if (var0 != ScriptRuntime.DoubleClass && var0 != Double.TYPE) {
- if (var0 != ScriptRuntime.FloatClass && var0 != Float.TYPE) {
- if (var2 == ScriptRuntime.DoubleClass) {
- return var1;
- } else {
- return ScriptRuntime.NumberClass.isInstance(var1) ? new Double(((Number)var1).doubleValue()) : var1;
- }
- } else {
- return var2 == ScriptRuntime.FloatClass ? var1 : new Float(ScriptRuntime.toNumber(var1));
- }
- } else {
- return var2 == ScriptRuntime.DoubleClass ? var1 : new Double(ScriptRuntime.toNumber(var1));
- }
- } else {
- return new Short((short)((int)ScriptRuntime.toInteger(var1)));
- }
- } else {
- return new Byte((byte)((int)ScriptRuntime.toInteger(var1)));
- }
- } else {
- return new Long((long)ScriptRuntime.toInteger(var1));
- }
- } else {
- return new Integer((int)ScriptRuntime.toInteger(var1));
- }
- } else {
- return var2 == ScriptRuntime.StringClass && ((String)var1).length() == 1 ? new Character(((String)var1).charAt(0)) : new Character((char)((int)ScriptRuntime.toInteger(var1)));
- }
- }
- }
-
- public boolean hasInstance(Scriptable var1) {
- return false;
- }
-
- public static int getConversionWeight(Object var0, Class var1) {
- Class var2 = var0.getClass();
- if (var1.isPrimitive()) {
- if (ScriptRuntime.NumberClass.isAssignableFrom(var2)) {
- return 1;
- } else if (var1 == Boolean.TYPE) {
- return var2 == ScriptRuntime.BooleanClass ? 1 : 0;
- } else if (var1 != Character.TYPE) {
- return 2;
- } else {
- return !var2.isAssignableFrom(ScriptRuntime.CharacterClass) && (var2 != ScriptRuntime.StringClass || ((String)var0).length() != 1) ? 0 : 1;
- }
- } else if (var1 != ScriptRuntime.CharacterClass) {
- return var1.isAssignableFrom(var2) ? 1 : 0;
- } else {
- return !var2.isAssignableFrom(ScriptRuntime.CharacterClass) && (var2 != ScriptRuntime.StringClass || ((String)var0).length() != 1) ? 0 : 1;
- }
- }
-
- public static Object wrap(Scriptable var0, Object var1, Class var2) {
- if (var1 == null) {
- return var1;
- } else {
- Class var3 = var1.getClass();
- if (var2 != null && var2.isPrimitive()) {
- if (var2 == Void.TYPE) {
- return Undefined.instance;
- } else {
- return var2 == Character.TYPE ? new Integer((Character)var1) : var1;
- }
- } else if (var3.isArray()) {
- return NativeJavaArray.wrap(var0, var1);
- } else {
- return var1 instanceof Scriptable ? var1 : new NativeJavaObject(var0, var1, var2);
- }
- }
- }
-
- public Object get(String var1, Scriptable var2) {
- if (this.fieldAndMethods != null) {
- Object var3 = this.fieldAndMethods.get(var1);
- if (var3 != null) {
- return var3;
- }
- }
-
- return this.members.get(this, var1, this.javaObject, false);
- }
-
- public Object get(int var1, Scriptable var2) {
- throw this.members.reportMemberNotFound(Integer.toString(var1));
- }
-
- public void put(String var1, Scriptable var2, Object var3) {
- this.members.put(var1, this.javaObject, var3, false);
- }
-
- public void put(int var1, Scriptable var2, Object var3) {
- throw this.members.reportMemberNotFound(Integer.toString(var1));
- }
-
- public Object getDefaultValue(Class var1) {
- if (var1 != null && var1 != ScriptRuntime.StringClass) {
- try {
- if (var1 == ScriptRuntime.BooleanClass) {
- return this.callConverter("booleanValue");
- }
-
- if (var1 == ScriptRuntime.NumberClass) {
- return this.callConverter("doubleValue");
- }
- } catch (JavaScriptException var2) {
- }
-
- throw Context.reportRuntimeError(Context.getMessage("msg.default.value", (Object[])null));
- } else {
- return this.javaObject.toString();
- }
- }
-
- public NativeJavaObject(Object var1, JavaMembers var2) {
- this.javaObject = var1;
- this.members = var2;
- }
-
- public NativeJavaObject(Scriptable var1, Object var2, Class var3) {
- this.javaObject = var2;
- Class var4 = var2 != null ? var2.getClass() : var3;
- this.members = JavaMembers.lookupClass(var1, var4, var3);
- this.fieldAndMethods = this.members.getFieldAndMethodsObjects(var2, false);
- }
-
- public Scriptable getPrototype() {
- return null;
- }
-
- public void setPrototype(Scriptable var1) {
- }
-
- public Scriptable getParentScope() {
- return null;
- }
-
- public void setParentScope(Scriptable var1) {
- }
-
- Object callConverter(Function var1) throws JavaScriptException {
- return var1.call(Context.getContext(), var1.getParentScope(), this, new Object[0]);
- }
-
- Object callConverter(String var1) throws JavaScriptException {
- Function var2 = this.getConverter(var1);
- if (var2 == null) {
- Object[] var3 = new Object[]{var1, this.javaObject.getClass().getName()};
- throw Context.reportRuntimeError(Context.getMessage("msg.java.conversion.implicit_method", var3));
- } else {
- return this.callConverter(var2);
- }
- }
-
- // $FF: synthetic method
- private static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- public synchronized Scriptable rescope(Hashtable var1) {
- Scriptable var2 = (Scriptable)var1.get(this);
- if (var2 != null) {
- return var2;
- } else {
- try {
- return (Scriptable)this.clone();
- } catch (CloneNotSupportedException var4) {
- throw new RuntimeException(((Throwable)var4).getMessage());
- }
- }
- }
-
- public static void initJSObject() {
- }
-
- Function getConverter(String var1) {
- Object var2 = this.get(var1, this);
- return var2 instanceof Function ? (Function)var2 : null;
- }
-
- public boolean has(String var1, Scriptable var2) {
- return this.members.has(var1, false);
- }
-
- public boolean has(int var1, Scriptable var2) {
- return false;
- }
-
- public void delete(String var1) {
- }
-
- public void delete(int var1) {
- }
-
- public Object[] getIds() {
- return this.members.getIds(false);
- }
-
- public Object unwrap() {
- return this.javaObject;
- }
-
- public static boolean canConvert(Object var0, Class var1) {
- if (var0 == null) {
- return true;
- } else {
- return getConversionWeight(var0, var1) == 1;
- }
- }
-
- public String getClassName() {
- return "JavaObject";
- }
- }
-