You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by mr...@apache.org on 2006/07/27 21:01:59 UTC

svn commit: r426200 - in /jakarta/commons/sandbox/js2j/trunk/src: main/java/org/apache/commons/js2j/ test/java/org/apache/commons/js2j/

Author: mrdon
Date: Thu Jul 27 12:01:59 2006
New Revision: 426200

URL: http://svn.apache.org/viewvc?rev=426200&view=rev
Log:
Cleanups, added Properties extension methods

Added:
    jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/PropertiesExtensions.java
    jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/PropertiesExtensionsTest.java
Modified:
    jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/FileExtensions.java
    jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/SugarWrapFactory.java
    jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/TestScript.java

Modified: jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/FileExtensions.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/FileExtensions.java?rev=426200&r1=426199&r2=426200&view=diff
==============================================================================
--- jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/FileExtensions.java (original)
+++ jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/FileExtensions.java Thu Jul 27 12:01:59 2006
@@ -16,7 +16,6 @@
 package org.apache.commons.js2j;
 
 import java.io.BufferedReader;
-import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileReader;
 import java.io.FileWriter;
@@ -25,7 +24,6 @@
 
 import org.mozilla.javascript.Context;
 import org.mozilla.javascript.Function;
-import org.mozilla.javascript.NativeJavaObject;
 import org.mozilla.javascript.RegExpProxy;
 import org.mozilla.javascript.ScriptRuntime;
 import org.mozilla.javascript.Scriptable;

Added: jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/PropertiesExtensions.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/PropertiesExtensions.java?rev=426200&view=auto
==============================================================================
--- jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/PropertiesExtensions.java (added)
+++ jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/PropertiesExtensions.java Thu Jul 27 12:01:59 2006
@@ -0,0 +1,87 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.js2j;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Properties;
+
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.Scriptable;
+
+/**
+ * Adds various functions to java.util.Properties
+ * @targetClass java.util.Properties
+ */
+public class PropertiesExtensions {
+
+
+    /**
+     *  Loads properties from a String or File.
+     *
+     *  @funcParams java.io.File file
+     *  @funcReturn java.util.Properties
+     *  @example props.load("file.properties")
+     */
+    public static ExtensionFunction load(final Properties props) {
+        return new ExtensionFunction() {    
+            public Object execute(Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args) 
+                    throws IOException {
+                InputStream in = null;
+                if (args[0] instanceof String) {
+                    in = new FileInputStream((String)args[0]);
+                } else if (args[0] instanceof File) {
+                    in = new FileInputStream((File)args[0]);
+                } else {
+                    in = (InputStream) args[0];
+                }
+                
+                props.load(in);
+                return props;
+            }
+        };
+    }
+    
+    /**
+     *  Stores properties into a File.
+     *
+     *  @funcParams java.io.File file, String header
+     *  @funcReturn java.util.Properties
+     *  @example props.store("file.properties", "My Header")
+     */
+    public static ExtensionFunction store(final Properties props) {
+        return new ExtensionFunction() {    
+            public Object execute(Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args) 
+                    throws IOException {
+                OutputStream in = null;
+                if (args[0] instanceof String) {
+                    in = new FileOutputStream((String)args[0]);
+                } else if (args[0] instanceof File) {
+                    in = new FileOutputStream((File)args[0]);
+                } else {
+                    in = (OutputStream) args[0];
+                }
+                
+                props.store(in, (String)args[1]);
+                return props;
+            }
+        };
+    }
+}

Modified: jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/SugarWrapFactory.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/SugarWrapFactory.java?rev=426200&r1=426199&r2=426200&view=diff
==============================================================================
--- jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/SugarWrapFactory.java (original)
+++ jakarta/commons/sandbox/js2j/trunk/src/main/java/org/apache/commons/js2j/SugarWrapFactory.java Thu Jul 27 12:01:59 2006
@@ -46,6 +46,7 @@
         addExtensionFunctions(CollectionExtensions.class);
         addExtensionFunctions(ListExtensions.class);
         addExtensionFunctions(FileExtensions.class);
+        addExtensionFunctions(PropertiesExtensions.class);
         addExtensionFunctions(InputStreamExtensions.class);
         
         try {

Added: jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/PropertiesExtensionsTest.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/PropertiesExtensionsTest.java?rev=426200&view=auto
==============================================================================
--- jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/PropertiesExtensionsTest.java (added)
+++ jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/PropertiesExtensionsTest.java Thu Jul 27 12:01:59 2006
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.js2j;
+
+import java.util.List;
+
+public class PropertiesExtensionsTest extends TestScript {
+
+    public void testLoad() throws Exception {
+        run("file = java.io.File.createTempFile('test', '.tmp');");
+        run("writer = new java.io.FileWriter(file);");
+        run("writer.write('# some file\\n');");
+        run("writer.write('foo=bar\\n');");
+        run("writer.close();");
+        run("props = new java.util.Properties()");
+        run("props.load(file)");
+        
+        test("props.getProperty('foo')", "bar");
+        
+        run("props = new java.util.Properties()");
+        run("props.load(file.toString())");
+        
+        test("props.getProperty('foo')", "bar");
+    }
+    
+    public void testStore() throws Exception {
+        run("file = java.io.File.createTempFile('test', '.tmp');");
+        run("props = new java.util.Properties()");
+        run("props.setProperty('foo', 'bar')");
+        run("props.store(file, 'boo')");
+        
+        List lines = load(run("file.toString()"));
+        
+        assertEquals(lines.get(0), "#boo");
+        assertEquals(lines.get(2), "foo=bar");
+        
+        run("props.store(file.toString(), 'boo')");
+        
+        lines = load(run("file.toString()"));
+        
+        assertEquals(lines.get(0), "#boo");
+        assertEquals(lines.get(2), "foo=bar");
+    }
+}

Modified: jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/TestScript.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/TestScript.java?rev=426200&r1=426199&r2=426200&view=diff
==============================================================================
--- jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/TestScript.java (original)
+++ jakarta/commons/sandbox/js2j/trunk/src/test/java/org/apache/commons/js2j/TestScript.java Thu Jul 27 12:01:59 2006
@@ -15,6 +15,14 @@
  */
 package org.apache.commons.js2j;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.mozilla.javascript.Context;
 import org.mozilla.javascript.Scriptable;
 import org.mozilla.javascript.tools.shell.Global;
@@ -48,6 +56,23 @@
             ret = ((JavaObjectWrapper)ret).unwrap();
         }
         return ret;
+    }
+    
+    protected List load(Object object) throws IOException {
+        ArrayList list = new ArrayList();
+        FileReader freader = null;
+        try {
+            freader = new FileReader(new File(object.toString()));
+            BufferedReader reader = new BufferedReader(freader);
+            String line = null;
+            
+            while ((line = reader.readLine()) != null) {
+                list.add(line);
+            }
+        } finally {
+            freader.close();
+        }
+        return list;
     }
 
     protected void tearDown() throws Exception {



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org