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]>