hammant     01/11/30 04:09:10

  Modified:    apps/db/src/java/org/apache/avalon/db/driver
                        AvalonDBConnection.java AvalonDBDriver.java
               apps/db/src/java/org/apache/avalon/db/server
                        AbstractDatabaseManager.java AbstractParser.java
               apps/db/src/java/org/apache/avalon/db/services
                        SQLParser.java
               apps/db/src/java/org/apache/avalon/db/transport Request.java
               apps/db/src/java/org/apache/avalon/db/transport/cmdstream/client
                        CommandConnection.java
               apps/db/src/java/org/apache/avalon/db/transport/soap/client/glue
                        GlueConnection.java
  Added:       apps/db/src/java/org/apache/avalon/db/basic/parser
                        BasicDualParser.java
  Log:
  start of dual mode parser
  
  Revision  Changes    Path
  1.1                  
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/parser/BasicDualParser.java
  
  Index: BasicDualParser.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE file.
   */
  package org.apache.avalon.db.basic.parser;
  
  import org.apache.avalon.db.server.AbstractParser;
  import org.apache.avalon.db.server.AbstractRequestHandler;
  import org.apache.avalon.db.actions.Action;
  import org.apache.avalon.db.actions.ActionException;
  import org.apache.avalon.db.transport.Reply;
  import org.apache.avalon.db.transport.Request;
  import org.apache.avalon.framework.component.ComponentManager;
  import org.apache.avalon.framework.component.ComponentException;
  import org.apache.avalon.framework.logger.Logger;
  import org.apache.avalon.framework.configuration.Configuration;
  import org.apache.avalon.framework.configuration.ConfigurationException;
  
  import java.io.InputStream;
  
  /**
   * Class BasicDualParser
   *
   * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
   */
  public class BasicDualParser extends AbstractParser {
  
      private BasicLXSQLParser mBasicLXSQLParser;
      private BasicSQLParser mBasicSQLParser;
  
      public BasicDualParser() {
          mBasicLXSQLParser = new BasicLXSQLParser();
          mBasicSQLParser = new BasicSQLParser((InputStream) null);
      }
  
      /**
       * Method compose
       *
       *
       * @param componentManager
       *
       * @throws ComponentException
       *
       */
      public void compose(ComponentManager componentManager) throws 
ComponentException {
          super.compose(componentManager);
          mBasicLXSQLParser.compose(componentManager);
          mBasicSQLParser.compose(componentManager);
      }
  
      /**
       * Set the components logger.
       *
       * @param logger the logger
       */
      public void enableLogging(Logger logger) {
          super.enableLogging(logger);
          mBasicLXSQLParser.enableLogging(logger);
          mBasicSQLParser.enableLogging(logger);
      }
  
      /**
       * Method configure
       *
       *
       * @param configuration
       *
       * @throws ConfigurationException
       *
       */
      public void configure(Configuration configuration) throws 
ConfigurationException {
          super.configure(configuration);
          mBasicLXSQLParser.configure(configuration);
          mBasicSQLParser.configure(configuration);
      }
  
      /**
       * Initialialize the component. Initialization includes
       * allocating any resources required throughout the
       * components lifecycle.
       *
       * @exception Exception if an error occurs
       */
      public void initialize()
              throws Exception {
          super.initialize();
          mBasicLXSQLParser.initialize();
          mBasicSQLParser.initialize();
      }
  
      // overrides parent.
      public Reply processRequest(Request request) {
          if (request.getSQLSyntax() == Request.SYNTAX_LXSQL) {
              return mBasicLXSQLParser.processRequest(request);
          } else {
              return mBasicSQLParser.processRequest(request);
          }
      }
  
      public void initializeAction(Action action) throws ActionException {
          // not needed.
      }
  
      protected void getCustomRequestHandlers(AbstractRequestHandler[] 
handlers) {
          // not needed.
      }
  }
  
  
  
  1.10      +2 -2      
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBConnection.java
  
  Index: AvalonDBConnection.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBConnection.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AvalonDBConnection.java   2001/11/26 09:28:29     1.9
  +++ AvalonDBConnection.java   2001/11/30 12:09:09     1.10
  @@ -42,7 +42,7 @@
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
    * @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version $Revision: 1.9 $
  + * @version $Revision: 1.10 $
    */
   public abstract class AvalonDBConnection extends AbstractDriver implements 
Connection {
   
  @@ -51,7 +51,7 @@
   
       protected abstract Reply sendRequest(Request request) throws 
SQLException;
   
  -    protected abstract void initialize(String host, int port, String url, 
String[] options) throws SQLException;
  +    protected abstract void initialize(String host, int port, String url, 
String[] options, int syntax) throws SQLException;
   
       protected StatementFactory mStatementFactory;
   
  
  
  
  1.12      +13 -2     
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBDriver.java
  
  Index: AvalonDBDriver.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBDriver.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AvalonDBDriver.java       2001/11/27 10:28:16     1.11
  +++ AvalonDBDriver.java       2001/11/30 12:09:09     1.12
  @@ -14,6 +14,7 @@
   import org.apache.avalon.db.utils.StringUtils;
   import org.apache.avalon.db.driver.sql.SQLParserHelper;
   import org.apache.avalon.db.driver.lxsql.LXSQLParserHelper;
  +import org.apache.avalon.db.transport.Request;
   
   import java.sql.Driver;
   import java.sql.Connection;
  @@ -29,7 +30,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version $Revision: 1.11 $
  + * @version $Revision: 1.12 $
    */
   public class
           AvalonDBDriver extends AbstractDriver implements Driver {
  @@ -101,7 +102,17 @@
           } catch (IllegalAccessException iae) {
               throw new SQLException("Some problem accessing JDBC driver: " + 
iae.getMessage());
           }
  -        connection.initialize(words[5], new Integer(words[6]).intValue(), 
url, options);
  +
  +        int syntax = 0;
  +        if (words[3].equals("sql")) {
  +            syntax = Request.SYNTAX_SQL;
  +        } else if (words[3].equals("lxsql")) {
  +            syntax = Request.SYNTAX_LXSQL;
  +        } else {
  +            throw new SQLException("Syntax must be declated to be 'sql' or 
'lxsql'");
  +        }
  +
  +        connection.initialize(words[5], new Integer(words[6]).intValue(), 
url, options, syntax);
   
           AbstractParserHelper aph = null;
           if (words[3].equals("sql")) {
  
  
  
  1.27      +2 -21     
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractDatabaseManager.java
  
  Index: AbstractDatabaseManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractDatabaseManager.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- AbstractDatabaseManager.java      2001/11/30 09:57:51     1.26
  +++ AbstractDatabaseManager.java      2001/11/30 12:09:09     1.27
  @@ -27,14 +27,13 @@
    *
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version $Revision: 1.26 $
  + * @version $Revision: 1.27 $
    */
   public abstract class AbstractDatabaseManager extends AbstractLogEnabled
           implements Composable, Initializable {
   
       protected SQLParser mSQLParser;
       protected SQLOptimizer mSQLOptimizer;
  -    protected AbstractRequestHandler[] mRequestHandlers;
   
       /**
        * Method compose
  @@ -54,7 +53,6 @@
       }
   
       public void initialize() throws Exception {
  -            mRequestHandlers = mSQLParser.getRequestHandlers();
       }
   
       /**
  @@ -67,23 +65,6 @@
        *
        */
       public Reply processRequest(Request request) {
  -
  -        try {
  -            AbstractRequestHandler arh = 
mRequestHandlers[request.getRequestCode()];
  -            if (arh == null ) {
  -                System.out.println("unknown rqst " + 
request.getRequestCode());
  -                return new UnknownRequestReply();
  -            } else {
  -                return arh.handleRequest(request);
  -            }
  -        } catch (ActionException ae) {
  -            getLogger().error("processRequest(): ActionException",ae);
  -            return new ExceptionReply(ae.getMessage());
  -        } catch (Throwable t) {
  -            System.err.println("**** Unknown Exception ");
  -            t.printStackTrace();
  -            getLogger().error("processRequest(): unknown exception - " + 
t.getMessage() ,t);
  -            return new ExceptionReply("Unknown exception caught in server - 
" + t.getMessage());
  -        }
  +        return mSQLParser.processRequest(request);
       }
   }
  
  
  
  1.10      +41 -2     
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractParser.java
  
  Index: AbstractParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractParser.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AbstractParser.java       2001/11/23 14:41:08     1.9
  +++ AbstractParser.java       2001/11/30 12:09:09     1.10
  @@ -18,6 +18,7 @@
   import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.ConfigurationException;
   import org.apache.avalon.framework.configuration.Configuration;
  +import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.phoenix.Block;
   import org.apache.avalon.phoenix.BlockContext;
   import org.apache.avalon.db.services.SQLParser;
  @@ -25,6 +26,9 @@
   import org.apache.avalon.db.bcel.parser.GeneratedObjectClassLoader;
   import org.apache.avalon.db.actions.ActionException;
   import org.apache.avalon.db.transport.Request;
  +import org.apache.avalon.db.transport.Reply;
  +import org.apache.avalon.db.transport.UnknownRequestReply;
  +import org.apache.avalon.db.transport.ExceptionReply;
   import org.apache.avalon.db.server.stdhandlers.PingHandler;
   import org.apache.avalon.db.server.stdhandlers.CatalogHandler;
   import org.apache.avalon.db.server.stdhandlers.EstablishConnectionHandler;
  @@ -42,13 +46,14 @@
    * @version $Revision: 1.8 $
    */
   public abstract class AbstractParser extends AbstractLogEnabled
  -        implements Block, SQLParser, Contextualizable, Composable, 
Configurable {
  +        implements Block, SQLParser, Contextualizable, Composable, 
Configurable, Initializable  {
   
       protected DatabasePersistor mDatabasePersistor;
       protected GeneratedObjectClassLoader mGenClassLoader = new 
GeneratedObjectClassLoader(AbstractParser.class.getClassLoader());
       protected static int mGenObjSeq;
       protected HashMap mGeneratedObjTranslation = new HashMap();
       protected BlockContext mBlockContext;
  +    protected AbstractRequestHandler[] mAbstractRequestHandlers;
   
       /**
        * Method contextualize
  @@ -90,8 +95,42 @@
   
       }
   
  +    /**
  +     * Initialialize the component. Initialization includes
  +     * allocating any resources required throughout the
  +     * components lifecycle.
  +     *
  +     * @exception Exception if an error occurs
  +     */
  +    public void initialize()
  +            throws Exception {
  +
  +        mAbstractRequestHandlers = getRequestHandlers();
  +
  +    }
  +
  +    public Reply processRequest(Request request) {
  +
  +        try {
  +            AbstractRequestHandler arh = 
mAbstractRequestHandlers[request.getRequestCode()];
  +            if (arh == null ) {
  +                System.out.println("unknown rqst " + 
request.getRequestCode());
  +                return new UnknownRequestReply();
  +            } else {
  +                return arh.handleRequest(request);
  +            }
  +        } catch (ActionException ae) {
  +            getLogger().error("processRequest(): ActionException",ae);
  +            return new ExceptionReply(ae.getMessage());
  +        } catch (Throwable t) {
  +            System.err.println("**** Unknown Exception ");
  +            t.printStackTrace();
  +            getLogger().error("processRequest(): unknown exception - " + 
t.getMessage() ,t);
  +            return new ExceptionReply("Unknown exception caught in server - 
" + t.getMessage());
  +        }
  +    }
   
  -    public AbstractRequestHandler[] getRequestHandlers() {
  +    private AbstractRequestHandler[] getRequestHandlers() {
   
           AbstractRequestHandler[] handlers = new AbstractRequestHandler[1000];
           // standard
  
  
  
  1.8       +5 -2      
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/services/SQLParser.java
  
  Index: SQLParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/services/SQLParser.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SQLParser.java    2001/11/15 14:29:57     1.7
  +++ SQLParser.java    2001/11/30 12:09:09     1.8
  @@ -23,6 +23,7 @@
   import org.apache.avalon.db.transport.InsertRowsRequest;
   import org.apache.avalon.db.transport.CreateViewRequest;
   import org.apache.avalon.db.transport.DeleteRowsRequest;
  +import org.apache.avalon.db.transport.Reply;
   import org.apache.avalon.db.server.AbstractRequestHandler;
   
   
  @@ -31,12 +32,14 @@
    *
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version * $Revision: 1.7 $
  + * @version * $Revision: 1.8 $
    */
   public interface SQLParser {
   
  -    AbstractRequestHandler[] getRequestHandlers();
  +    // AbstractRequestHandler[] getRequestHandlers();
   
       void initializeAction(Action action) throws ActionException ;
  +
  +    Reply processRequest(Request request);
   
   }
  
  
  
  1.16      +14 -1     
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/Request.java
  
  Index: Request.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/Request.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Request.java      2001/11/24 20:26:12     1.15
  +++ Request.java      2001/11/30 12:09:09     1.16
  @@ -18,7 +18,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version $Revision: 1.15 $
  + * @version $Revision: 1.16 $
    */
   public abstract class Request implements Serializable {
   
  @@ -53,8 +53,13 @@
       public static final int MAKESTATEMENT = 138;
       public static final int CREATEAGGREGATEVIEW = 139;
   
  +    public static final int SYNTAX_SQL = 1122;
  +    public static final int SYNTAX_LXSQL = 1123;
  +
  +
       private int mRequestCode;
       private String mRequestContextID;
  +    private int mSQLSyntax;
   
       protected Request(int requestCode) {
           this.mRequestCode = requestCode;
  @@ -77,5 +82,13 @@
   
       public void setRequestContextID(String requestContextID) {
           this.mRequestContextID = mRequestContextID;
  +    }
  +
  +    public int getSQLSyntax() {
  +        return mSQLSyntax;
  +    }
  +
  +    public void setSQLSyntax(int sqlSyntax) {
  +        this.mSQLSyntax = sqlSyntax;
       }
   }
  
  
  
  1.13      +5 -2      
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/cmdstream/client/CommandConnection.java
  
  Index: CommandConnection.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/cmdstream/client/CommandConnection.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- CommandConnection.java    2001/11/26 09:28:30     1.12
  +++ CommandConnection.java    2001/11/30 12:09:10     1.13
  @@ -34,7 +34,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version $Revision: 1.12 $
  + * @version $Revision: 1.13 $
    */
   public abstract class CommandConnection extends AvalonDBConnection {
   
  @@ -44,10 +44,12 @@
       private ObjectOutputStream mObjectOutputStream;
       private ObjectInputStream mObjectInputStream;
       private String mRequestContextID;
  +    private int mSQLSyntax;
   
  -    protected void initialize(String host, int port, String url, String[] 
options) throws SQLException {
  +    protected void initialize(String host, int port, String url, String[] 
options, int syntax) throws SQLException {
           mHost = host;
           mPort = port;
  +        mSQLSyntax = syntax;
           mOptions = options;
           //TODO - instantiate thread for keepalive.
           // only if keepAliveSecs=nnn where nnn is the seconds between pings
  @@ -101,6 +103,7 @@
       public Reply sendRequest(Request request) throws SQLException {
   
           request.setRequestContextID(mRequestContextID);
  +        request.setSQLSyntax(mSQLSyntax);
   
           try {
               mObjectOutputStream.writeObject(request);
  
  
  
  1.6       +2 -2      
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/soap/client/glue/GlueConnection.java
  
  Index: GlueConnection.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/soap/client/glue/GlueConnection.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- GlueConnection.java       2001/11/26 09:28:30     1.5
  +++ GlueConnection.java       2001/11/30 12:09:10     1.6
  @@ -27,7 +27,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version $Revision: 1.5 $
  + * @version $Revision: 1.6 $
    */
   public abstract class GlueConnection extends AvalonDBConnection {
   
  @@ -35,7 +35,7 @@
       private DatabaseManager mDBManager;
       private String[] mOptions;
   
  -    protected void initialize(String host, int port, String url, String[] 
options) throws SQLException {
  +    protected void initialize(String host, int port, String url, String[] 
options, int syntax) throws SQLException {
   
           mOptions = options;
           //TODO big work needed here.  See syntax from GlueDemo in 
Cornerstone.
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to