home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / netscape / javascript / NativeJavaArray.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  3.0 KB  |  104 lines

  1. package com.netscape.javascript;
  2.  
  3. import java.lang.reflect.Array;
  4.  
  5. public class NativeJavaArray extends NativeJavaObject {
  6.    Object array;
  7.    int length;
  8.    Class cls;
  9.  
  10.    public boolean hasInstance(Scriptable var1) {
  11.       if (!(var1 instanceof NativeJavaObject)) {
  12.          return false;
  13.       } else {
  14.          Object var2 = ((NativeJavaObject)var1).unwrap();
  15.          return this.cls.isInstance(var2);
  16.       }
  17.    }
  18.  
  19.    public static NativeJavaArray wrap(Scriptable var0, Object var1) {
  20.       return new NativeJavaArray(var0, var1);
  21.    }
  22.  
  23.    public Object get(String var1, Scriptable var2) {
  24.       return var1.equals("length") ? new Integer(this.length) : super.get(var1, var2);
  25.    }
  26.  
  27.    public Object get(int var1, Scriptable var2) {
  28.       return var1 >= 0 && var1 < this.length ? NativeJavaObject.wrap(this, Array.get(this.array, var1), this.cls) : Undefined.instance;
  29.    }
  30.  
  31.    public void put(String var1, Scriptable var2, Object var3) {
  32.       if (!var1.equals("length")) {
  33.          super.put(var1, var2, var3);
  34.       }
  35.  
  36.    }
  37.  
  38.    public void put(int var1, Scriptable var2, Object var3) {
  39.       if (var1 >= 0 && var1 < this.length) {
  40.          if (var3 instanceof Wrapper) {
  41.             var3 = ((Wrapper)var3).unwrap();
  42.          }
  43.  
  44.          Array.set(this.array, var1, NativeJavaObject.coerceType(this.cls, var3));
  45.       } else {
  46.          super.put(var1, var2, var3);
  47.       }
  48.    }
  49.  
  50.    public Object getDefaultValue(Class var1) {
  51.       if (var1 != null && var1 != ScriptRuntime.StringClass) {
  52.          if (var1 == ScriptRuntime.BooleanClass) {
  53.             return Boolean.TRUE;
  54.          } else {
  55.             return var1 == ScriptRuntime.NumberClass ? ScriptRuntime.NaNobj : this;
  56.          }
  57.       } else {
  58.          return this.array.toString();
  59.       }
  60.    }
  61.  
  62.    public NativeJavaArray(Scriptable var1, Object var2) {
  63.       super(var1, (Object)null, ScriptRuntime.ObjectClass);
  64.       Class var3 = var2.getClass();
  65.       if (!var3.isArray()) {
  66.          throw new RuntimeException("Array expected");
  67.       } else {
  68.          this.array = var2;
  69.          this.length = Array.getLength(var2);
  70.          this.cls = var3.getComponentType();
  71.       }
  72.    }
  73.  
  74.    public Object unwrap() {
  75.       return this.array;
  76.    }
  77.  
  78.    public boolean has(String var1, Scriptable var2) {
  79.       return var1.equals("length") || super.has(var1, var2);
  80.    }
  81.  
  82.    public boolean has(int var1, Scriptable var2) {
  83.       return var1 >= 0 && var1 < this.length;
  84.    }
  85.  
  86.    public Object[] getIds() {
  87.       Object[] var1 = new Object[this.length];
  88.       int var2 = this.length;
  89.  
  90.       while(true) {
  91.          --var2;
  92.          if (var2 < 0) {
  93.             return var1;
  94.          }
  95.  
  96.          var1[var2] = new Integer(var2);
  97.       }
  98.    }
  99.  
  100.    public String getClassName() {
  101.       return "JavaArray";
  102.    }
  103. }
  104.