update Directory, Fountain, JSReflection, SOAP, XMLRPC to use baskets and new JS...
[org.ibex.js.git] / src / org / ibex / js / Directory.java
index 07ef38a..0c0fc73 100644 (file)
@@ -5,7 +5,6 @@
 package org.ibex.js; 
 
 import org.ibex.util.*; 
-import java.util.*;
 import java.io.*;
 
 // FEATURE: support for move
@@ -38,7 +37,7 @@ import java.io.*;
  *  argument that points to a non-directory File, this class will
  *  delete that file and create a directory!
  */
-public class Directory extends JS {
+public class Directory extends JS.Immutable {
 
     File f;
 
@@ -66,21 +65,21 @@ public class Directory extends JS {
     public void put(JS key0, JS val) throws JSExn {
         try {
             if (key0 == null) return;
-            String key = toString(key0);
-            File f2 = new File(f.getAbsolutePath() + File.separatorChar + FileNameEncoder.encode(key));
+            String key = Script.toString(key0);
+            File f2 = new File(f.getAbsolutePath() + File.separatorChar + Encode.toFilename(key));
             destroy(f2);
             if (val == null) return;
             if (val instanceof JSPrimitive) {
                 OutputStream out = new FileOutputStream(f2);
                 Writer w = new OutputStreamWriter(out);
-                w.write(toString(val));
+                w.write(Script.toString(val));
                 w.flush();
                 out.close();
             } else {
                 Directory d2 = new Directory(f2);
                 JS.Enumeration e = val.keys();
-                while(e.hasMoreElements()) {
-                    JS k = e.nextElement();
+                while(e.hasNext()) {
+                    JS k = e.next();
                     JS v = val.get(k);
                     d2.put(k, v);
                 }
@@ -93,8 +92,8 @@ public class Directory extends JS {
     public JS get(JS key0) throws JSExn {
         try {
             if (key0 == null) return null;
-            String key = toString(key0);
-            File f2 = new File(f.getAbsolutePath() + File.separatorChar + FileNameEncoder.encode(key));
+            String key = Script.toString(key0);
+            File f2 = new File(f.getAbsolutePath() + File.separatorChar + Encode.toFilename(key));
             if (!f2.exists()) return null;
             if (f2.isDirectory()) return new Directory(f2);
             char[] chars = new char[((int)f2.length()) * 2];
@@ -110,12 +109,12 @@ public class Directory extends JS {
         }
     }
 
-    public Enumeration keys() {
+    public JS.Enumeration keys() {
         final String[] elements = f.list();
-        return new Enumeration(null) {
+        return new JS.Enumeration(null) {
                 int i = 0;
-                public boolean _hasMoreElements() { return i < elements.length; }
-                public JS _nextElement() { return Script.S(FileNameEncoder.decode(elements[i++])); }
+                public boolean _hasNext() { return i < elements.length; }
+                public JS _next() { return Script.S(Encode.fromFilename(elements[i++])); }
             };
     }
 }