coliver     2003/03/03 22:08:37

  Modified:    src/java/org/apache/cocoon/components/flow/javascript
                        JavaScriptInterpreter.java JSCocoon.java system.js
                        ScriptableResult.java ScriptableConnection.java
  Log:
  Detached database stuff from Cocoon object
  
  Revision  Changes    Path
  1.24      +0 -4      
xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java
  
  Index: JavaScriptInterpreter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- JavaScriptInterpreter.java        3 Mar 2003 18:50:25 -0000       1.23
  +++ JavaScriptInterpreter.java        4 Mar 2003 06:08:37 -0000       1.24
  @@ -168,10 +168,6 @@
         // Wrapper for WebContinuation
         ScriptableObject.defineClass(scope, JSWebContinuation.class);
   
  -      // Wrapper for JDBC 
  -      ScriptableObject.defineClass(scope, ScriptableConnection.class);
  -      ScriptableObject.defineClass(scope, ScriptableResult.class);
  -
         // Define some functions on the top level scope
         String[] names = { "print" };
         try {
  
  
  
  1.20      +9 -34     
xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/JSCocoon.java
  
  Index: JSCocoon.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/JSCocoon.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- JSCocoon.java     3 Mar 2003 18:50:25 -0000       1.19
  +++ JSCocoon.java     4 Mar 2003 06:08:37 -0000       1.20
  @@ -77,7 +77,7 @@
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.Component;
   
  -import org.apache.avalon.excalibur.datasource.DataSourceComponent;
  +
   
   
   /**
  @@ -152,8 +152,8 @@
     public Request jsGet_request()
     {
         if (environment == null) {
  -     // context has been invalidated
  -     return null;
  +        // context has been invalidated
  +        return null;
         }
         Map objectModel = environment.getObjectModel();
         return ObjectModelHelper.getRequest(objectModel);
  @@ -162,8 +162,8 @@
     public Response jsGet_response()
     {
         if (environment == null) {
  -     // context has been invalidated
  -     return null;
  +        // context has been invalidated
  +        return null;
         }
       Map objectModel = environment.getObjectModel();
       return ObjectModelHelper.getResponse(objectModel);
  @@ -172,8 +172,8 @@
     public Session jsGet_session()
     {
         if (environment == null) {
  -     // context has been invalidated
  -     return null;
  +        // context has been invalidated
  +        return null;
         }
       return jsGet_request().getSession();
     }
  @@ -181,8 +181,8 @@
     public Context jsGet_context()
     {
         if (environment == null) {
  -     // context has been invalidated
  -     return null;
  +        // context has been invalidated
  +        return null;
         }
       Map objectModel = environment.getObjectModel();
       return ObjectModelHelper.getContext(objectModel);
  @@ -193,31 +193,6 @@
       return manager;
     }
   
  -    /**
  -     * Get a Scriptable JDBC Connection
  -     * @param selector 
  -     * @return instance of ScriptableConnection
  -     */
  -
  -    public Object jsFunction_getConnection(String selectorValue) 
  -     throws Exception {
  -     ComponentSelector selector = 
  -         (ComponentSelector)manager.lookup(DataSourceComponent.ROLE + "Selector");
  -     try {
  -         DataSourceComponent ds = 
  -             (DataSourceComponent)selector.select(selectorValue);
  -         if (ds == null) {
  -             return null;
  -         }
  -         ScriptableConnection conn = 
  -             new ScriptableConnection(getTopLevelScope(this), ds.getConnection());
  -         conn.setPrototype(getClassPrototype(this, conn.getClassName()));
  -         conn.setParentScope(getTopLevelScope(this));
  -         return conn;
  -     } finally {
  -         manager.release(selector);
  -     }
  -    }
   
   
     /**
  
  
  
  1.10      +17 -0     
xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/system.js
  
  Index: system.js
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/system.js,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- system.js 28 Feb 2003 19:12:13 -0000      1.9
  +++ system.js 4 Mar 2003 06:08:37 -0000       1.10
  @@ -396,6 +396,23 @@
       this[application](new XForm(id, validator_ns, validator_doc));
   }
   
  +//
  +// Prototype Database API
  +//
  +// TBD: Move this Database stuff to its own library outside of flow
  +//
   
  +defineClass("org.apache.cocoon.components.flow.javascript.ScriptableConnection");
  +defineClass("org.apache.cocoon.components.flow.javascript.ScriptableResult");
  +
  +Database.getConnection = function(selectorValue) {
  +    var selector = 
cocoon.componentManager.lookup(Packages.org.apache.avalon.excalibur.datasource.DataSourceComponent.ROLE
 + "Selector");
  +    try {
  +     var ds = selector.select(selectorValue);
  +     return new Database(ds.getConnection());
  +    } finally {
  +     cocoon.componentManager.release(selector);
  +    }
  +}
   
   
  
  
  
  1.2       +29 -29    
xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/ScriptableResult.java
  
  Index: ScriptableResult.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/ScriptableResult.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ScriptableResult.java     3 Mar 2003 18:50:25 -0000       1.1
  +++ ScriptableResult.java     4 Mar 2003 06:08:37 -0000       1.2
  @@ -50,7 +50,7 @@
   public class ScriptableResult extends ScriptableObject {
   
       public String getClassName() {
  -     return "Result";
  +        return "Result";
       }
       
       public ScriptableResult() {
  @@ -58,36 +58,36 @@
   
       public static class Row extends ScriptableObject {
   
  -     public String getClassName() {
  -         return "Row";
  -     }
  -
  -     public Object get(String name, Scriptable start) {
  -         return super.get(name.toUpperCase(), start);
  -     }
  -     
  -     public void put(String name, Scriptable start, Object value) {
  -         super.put(name.toUpperCase(), start, value);
  -     }
  +        public String getClassName() {
  +            return "Row";
  +        }
  +
  +        public Object get(String name, Scriptable start) {
  +            return super.get(name.toUpperCase(), start);
  +        }
  +        
  +        public void put(String name, Scriptable start, Object value) {
  +            super.put(name.toUpperCase(), start, value);
  +        }
       }
   
       ScriptableResult(Scriptable scope, 
  -                  ResultSet rs, int startRow, int maxRows) 
  -     throws SQLException, PropertyException, NotAFunctionException, 
JavaScriptException {
  -     Context cx = Context.getCurrentContext();
  +                     ResultSet rs, int startRow, int maxRows) 
  +        throws SQLException, PropertyException, NotAFunctionException, 
JavaScriptException {
  +        Context cx = Context.getCurrentContext();
           Scriptable rowMap = cx.newObject(scope, "Array");
  -     put("rows", this, rowMap);
  +        put("rows", this, rowMap);
           Scriptable rowByIndex = cx.newObject(scope, "Array");
  -     put("rowsByIndex", this, rowByIndex);
  +        put("rowsByIndex", this, rowByIndex);
   
           ResultSetMetaData rsmd = rs.getMetaData();
           int noOfColumns = rsmd.getColumnCount();
   
           // Create the column name array
           Scriptable columnNames = cx.newObject(scope, 
  -                                           "Array", 
  -                                           new Object[] {new Integer(noOfColumns)});
  -     put("columnNames", this, columnNames);
  +                                              "Array", 
  +                                              new Object[] {new 
Integer(noOfColumns)});
  +        put("columnNames", this, columnNames);
           for (int i = 1; i <= noOfColumns; i++) {
               columnNames.put(i-1, columnNames, rsmd.getColumnName(i));
           }
  @@ -99,18 +99,18 @@
   
           // Process the remaining rows upto maxRows
           int processedRows = 0;
  -     int index = 0;
  -     boolean isLimited = false;
  +        int index = 0;
  +        boolean isLimited = false;
           while (rs.next()) {
               if ((maxRows != -1) && (processedRows == maxRows)) {
                   isLimited = true; 
                   break;
               }
               Scriptable columns = cx.newObject(scope, "Array",
  -                                           new Object[] {new Integer(noOfColumns)});
  -         Scriptable columnMap = new Row();
  -         columnMap.setParentScope(columns.getParentScope());
  -         columnMap.setPrototype(getObjectPrototype(scope));
  +                                              new Object[] {new 
Integer(noOfColumns)});
  +            Scriptable columnMap = new Row();
  +            columnMap.setParentScope(columns.getParentScope());
  +            columnMap.setPrototype(getObjectPrototype(scope));
   
               // JDBC uses 1 as the lowest index!
               for (int i = 1; i <= noOfColumns; i++) {
  @@ -124,10 +124,10 @@
               rowMap.put(index, rowMap, columnMap);
               rowByIndex.put(index, rowByIndex, columns);
               processedRows++;
  -         index++;
  +            index++;
           }
  -     put("rowCount", this, new Integer(index));
  -     put("isLimitedByMaxRows", this, new Boolean(isLimited));
  +        put("rowCount", this, new Integer(index));
  +        put("isLimitedByMaxRows", this, new Boolean(isLimited));
       }
   }
   
  
  
  
  1.3       +154 -153  
xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java
  
  Index: ScriptableConnection.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ScriptableConnection.java 3 Mar 2003 18:55:05 -0000       1.2
  +++ ScriptableConnection.java 4 Mar 2003 06:08:37 -0000       1.3
  @@ -76,100 +76,101 @@
       Scriptable wrapper;
   
       static Object wrap(final Scriptable wrapper, 
  -                    final Scriptable wrapped,
  -                    Object obj) {
  -     if (obj instanceof Function) {
  -         return wrap(wrapper, wrapped, (Function)obj);
  -     }
  -     return obj;
  +                       final Scriptable wrapped,
  +                       Object obj) {
  +        if (obj instanceof Function) {
  +            return wrap(wrapper, wrapped, (Function)obj);
  +        }
  +        return obj;
       }
   
  +
       static Function wrap(final Scriptable wrapper, 
  -                      final Scriptable wrapped, 
  -                      final Function fun) {
  -     return new Function() {
  -             public Object call(Context cx, Scriptable scope, Scriptable thisObj,
  -                                Object[] args)  throws JavaScriptException {
  -                 if (thisObj == wrapper) {
  -                     thisObj = wrapped;
  -                 }
  -                 return fun.call(cx, scope, thisObj, args);
  -             }
  -
  -             public Scriptable construct(Context cx, Scriptable scope, 
  -                                         Object[] args)
  -                 throws JavaScriptException {
  -                 return fun.construct(cx, scope, args);
  -             }
  -
  -             public String getClassName() {
  -                 return fun.getClassName();
  -             }
  -             
  -             public Object get(String name, Scriptable start) {
  -                 return fun.get(name, fun);
  -             }
  -
  -             public Object get(int index, Scriptable start) {
  -                 return fun.get(index, fun);
  -             }
  -
  -             public boolean has(String name, Scriptable start) {
  -                 return fun.has(name, start);
  -             }
  -
  -             public boolean has(int index, Scriptable start) {
  -                 return fun.has(index, start);
  -             }
  -
  -
  -             public void put(String name, Scriptable start, Object value) {
  -                 fun.put(name, start, value);
  -             }
  -
  -             public void put(int index, Scriptable start, Object value) {
  -                 fun.put(index, start, value);
  -             }
  -
  -             public void delete(String name) {
  -                 fun.delete(name);
  -             }
  -
  -             public void delete(int index) {
  -                 fun.delete(index);
  -             }
  -
  -             public Scriptable getPrototype() {
  -                 return fun.getPrototype();
  -             }
  -
  -             public void setPrototype(Scriptable prototype) {
  -             }
  -
  -             public Scriptable getParentScope() {
  -                 return fun.getParentScope();
  -             }
  -
  -             public void setParentScope(Scriptable parent) {
  -             }
  -
  -             public Object[] getIds() {
  -                 return fun.getIds();
  -             }
  -
  -             public Object getDefaultValue(Class hint) {
  -                 return fun.getDefaultValue(hint);
  -             }
  -
  -             public boolean hasInstance(Scriptable instance) {
  -                 return fun.hasInstance(instance);
  -             }
  +                         final Scriptable wrapped, 
  +                         final Function fun) {
  +        return new Function() {
  +                public Object call(Context cx, Scriptable scope, Scriptable thisObj,
  +                                   Object[] args)  throws JavaScriptException {
  +                    if (thisObj == wrapper) {
  +                        thisObj = wrapped;
  +                    }
  +                    return fun.call(cx, scope, thisObj, args);
  +                }
  +
  +                public Scriptable construct(Context cx, Scriptable scope, 
  +                                            Object[] args)
  +                    throws JavaScriptException {
  +                    return fun.construct(cx, scope, args);
  +                }
  +
  +                public String getClassName() {
  +                    return fun.getClassName();
  +                }
  +                
  +                public Object get(String name, Scriptable start) {
  +                    return fun.get(name, fun);
  +                }
  +
  +                public Object get(int index, Scriptable start) {
  +                    return fun.get(index, fun);
  +                }
  +
  +                public boolean has(String name, Scriptable start) {
  +                    return fun.has(name, start);
  +                }
  +
  +                public boolean has(int index, Scriptable start) {
  +                    return fun.has(index, start);
  +                }
  +
  +
  +                public void put(String name, Scriptable start, Object value) {
  +                    fun.put(name, start, value);
  +                }
  +
  +                public void put(int index, Scriptable start, Object value) {
  +                    fun.put(index, start, value);
  +                }
  +
  +                public void delete(String name) {
  +                    fun.delete(name);
  +                }
  +
  +                public void delete(int index) {
  +                    fun.delete(index);
  +                }
  +
  +                public Scriptable getPrototype() {
  +                    return fun.getPrototype();
  +                }
  +
  +                public void setPrototype(Scriptable prototype) {
  +                }
  +
  +                public Scriptable getParentScope() {
  +                    return fun.getParentScope();
  +                }
  +
  +                public void setParentScope(Scriptable parent) {
  +                }
  +
  +                public Object[] getIds() {
  +                    return fun.getIds();
  +                }
  +
  +                public Object getDefaultValue(Class hint) {
  +                    return fun.getDefaultValue(hint);
  +                }
  +
  +                public boolean hasInstance(Scriptable instance) {
  +                    return fun.hasInstance(instance);
  +                }
   
  -         };
  +            };
       }
   
       public String getClassName() {
  -     return "Database";
  +        return "Database";
       }
   
       public ScriptableConnection() {
  @@ -179,97 +180,97 @@
       }
   
       public static Scriptable jsConstructor(Context cx, Object[] args,
  -                                        Function ctorObj, 
  -                                        boolean inNewExpr)
  -     throws Exception {
  -     Connection conn = null;
  -     if (args.length > 0) {
  -         Object arg = args[0];
  -         if (arg instanceof Wrapper) {
  -             arg = ((Wrapper)arg).unwrap();
  -         }
  -         if (arg instanceof Connection) {
  -             conn = (Connection)arg;
  -         }
  -     }
  -     if (conn == null) {
  -         throw new JavaScriptException("expected an instance of 
java.sql.Connection");
  -     }
  -     ScriptableConnection result = new ScriptableConnection(ctorObj, conn);
  -     return result;
  +                                           Function ctorObj, 
  +                                           boolean inNewExpr)
  +        throws Exception {
  +        Connection conn = null;
  +        if (args.length > 0) {
  +            Object arg = args[0];
  +            if (arg instanceof Wrapper) {
  +                arg = ((Wrapper)arg).unwrap();
  +            }
  +            if (arg instanceof Connection) {
  +                conn = (Connection)arg;
  +            }
  +        }
  +        if (conn == null) {
  +            throw new JavaScriptException("expected an instance of 
java.sql.Connection");
  +        }
  +        ScriptableConnection result = new ScriptableConnection(ctorObj, conn);
  +        return result;
       }
   
   
       public ScriptableConnection(Scriptable parent, Connection conn) {
  -     this.connection = conn;
  -     this.wrapper = Context.toObject(connection, parent);
  +        this.connection = conn;
  +        this.wrapper = Context.toObject(connection, parent);
       }
   
       public Object jsFunction_query(String sql, 
  -                                int startRow, 
  -                                int maxRows) throws Exception {
  -     Statement stmt = connection.createStatement();
  -     ResultSet rs = stmt.executeQuery(sql);
  -     if (maxRows == 0) {
  -         maxRows = -1;
  -     }
  -     ScriptableResult s = new ScriptableResult(this, rs, 
  -                                               startRow, maxRows);
  -     s.setParentScope(getTopLevelScope(this));
  -     s.setPrototype(getClassPrototype(this, s.getClassName()));
  -     return s;
  +                                   int startRow, 
  +                                   int maxRows) throws Exception {
  +        Statement stmt = connection.createStatement();
  +        ResultSet rs = stmt.executeQuery(sql);
  +        if (maxRows == 0) {
  +            maxRows = -1;
  +        }
  +        ScriptableResult s = new ScriptableResult(this, rs, 
  +                                                  startRow, maxRows);
  +        s.setParentScope(getTopLevelScope(this));
  +        s.setPrototype(getClassPrototype(this, s.getClassName()));
  +        return s;
       }
   
       public int jsFunction_update(String sql) throws Exception {
  -     Statement stmt = connection.createStatement();
  -     stmt.execute(sql);
  -     return stmt.getUpdateCount();
  +        Statement stmt = connection.createStatement();
  +        stmt.execute(sql);
  +        return stmt.getUpdateCount();
       }
   
       public Object get(String name, Scriptable start) {
  -     if (wrapper != null) {
  -         Object result = wrapper.get(name, wrapper);
  -         if (result != NOT_FOUND) {
  -             return wrap(this, wrapper, result);
  -         }
  -     }
  -     return super.get(name, start);
  +        if (wrapper != null) {
  +            Object result = wrapper.get(name, wrapper);
  +            if (result != NOT_FOUND) {
  +                return wrap(this, wrapper, result);
  +            }
  +        }
  +        return super.get(name, start);
       }
   
       public boolean has(String name, Scriptable start) {
  -     if (wrapper != null) {
  -         if (wrapper.has(name, wrapper)) {
  -             return true;
  -         }
  -     }
  -     return super.has(name, start);
  +        if (wrapper != null) {
  +            if (wrapper.has(name, wrapper)) {
  +                return true;
  +            }
  +        }
  +        return super.has(name, start);
       }
   
       public boolean has(int index, Scriptable start) {
  -     if (wrapper != null) {
  -         if (wrapper.has(index, start)) {
  -             return true;
  -         }
  -     }
  -     return super.has(index, start);
  +        if (wrapper != null) {
  +            if (wrapper.has(index, start)) {
  +                return true;
  +            }
  +        }
  +        return super.has(index, start);
       }
   
       public Object get(int index, Scriptable start) {
  -     if (wrapper != null) {
  -         Object result = wrapper.get(index, start);
  -         if (result != NOT_FOUND) {
  -             return wrap(this, wrapper, result);
  -         }
  -     }
  -     return super.get(index, start);
  +        if (wrapper != null) {
  +            Object result = wrapper.get(index, start);
  +            if (result != NOT_FOUND) {
  +                return wrap(this, wrapper, result);
  +            }
  +        }
  +        return super.get(index, start);
       }
   
       public void put(String name, Scriptable start, Object value) {
  -     if (wrapper != null) {
  -         wrapper.put(name, wrapper, value);
  -         return;
  -     }
  -     super.put(name, start, value);
  +        if (wrapper != null) {
  +            wrapper.put(name, wrapper, value);
  +            return;
  +        }
  +        super.put(name, start, value);
       }
   
   }
  
  
  

Reply via email to