// Copyright 2000-2005 the Contributors, as shown in the revision logs. // Licensed under the Apache Public Source License 2.0 ("the License"). // You may not use this file except in compliance with the License. package org.ibex.js; import org.ibex.util.*; import java.util.*; import java.io.*; // FEATURE: Update for new api /** A JS interface to a Java '.properties' file; very crude */ public class PropertyFile extends JS.Immutable { /*private final Properties p = new Properties(); private final Hash cache = new Hash(10, 3); private File f; private class Minion extends JS { private final String prefix; Minion(String prefix) { this.prefix = prefix; } public Number coerceToNumber() { return N(coerceToString()); } public Boolean coerceToBoolean() { return B(coerceToString().equals("true")); } public String coerceToString() { return (String)p.get(prefix.substring(0, prefix.length() - 1)); } public Enumeration keys() throws JSExn { throw new JSExn("PropertyFile.keys() not supported"); } public Object get(Object key) throws JSExn { if (toString(key).equals("")) return coerceToString(); Object ret = p.get(prefix + escape(toString(key))); if (ret != null) return ret; return new Minion(prefix + escape(toString(key)) + "."); } public void put(Object key, Object val) throws JSExn { try { p.put(prefix + (prefix.equals("") ? "" : ".") + escape(toString(key)), toString(val)); File fnew = new File(f.getName() + ".new"); FileOutputStream fo = new FileOutputStream(fnew); p.save(fo, ""); fo.close(); fnew.renameTo(f); f = fnew; } catch (IOException e) { throw new JSExn(e); } } } public static String escape(String s) { return s.replaceAll("\\\\", "\\\\\\\\").replaceAll("\\.", "\\\\.").replaceAll("=","\\\\="); } public PropertyFile(File f) throws IOException { this.f = f; this.p.load(new FileInputStream(f)); } public void put(Object key, Object val) throws JSExn { new Minion("").put(key, val); } public Enumeration keys() throws JSExn { return new Minion("").keys(); } public Object get(Object key) throws JSExn { Object ret = p.get(toString(key)); if (ret != null) return ret; return new Minion(escape(toString(key))); }*/ }