You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/05/09 22:18:03 UTC
svn commit: r169351 [12/12] - in /incubator/beehive/trunk/system-controls:
./ ant/ external/ external/commons/ external/ejb/ external/jms/ src/
src/ejb/ src/ejb/org/ src/ejb/org/apache/ src/ejb/org/apache/beehive/
src/ejb/org/apache/beehive/controls/
src/ejb/org/apache/beehive/controls/system/
src/ejb/org/apache/beehive/controls/system/ejb/ src/ejb/schema/ src/jdbc/
src/jdbc/org/ src/jdbc/org/apache/ src/jdbc/org/apache/beehive/
src/jdbc/org/apache/beehive/controls/
src/jdbc/org/apache/beehive/controls/system/
src/jdbc/org/apache/beehive/controls/system/jdbc/
src/jdbc/org/apache/beehive/controls/system/jdbc/parser/ src/jms/
src/jms/org/ src/jms/org/apache/ src/jms/org/apache/beehive/
src/jms/org/apache/beehive/controls/
src/jms/org/apache/beehive/controls/system/
src/jms/org/apache/beehive/controls/system/jms/
src/jms/org/apache/beehive/controls/system/jms/impl/
src/jms/org/apache/beehive/controls/system/jndi/
src/jms/org/apache/beehive/controls/system/jndi/impl/ src/webservice/
src/webservice/org/ src/webservice/org/apache/
src/webservice/org/apache/beehive/
src/webservice/org/apache/beehive/controls/
src/webservice/org/apache/beehive/controls/system/
src/webservice/org/apache/beehive/controls/system/webservice/
src/webservice/org/apache/beehive/controls/system/webservice/generator/
src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/
src/webservice/org/apache/beehive/controls/system/webservice/utils/ test/
test/ant/ test/conf/ test/src/ test/src/jdbc/ test/src/jdbc/controls/
test/src/jdbc/controls/org/ test/src/jdbc/controls/org/apache/
test/src/jdbc/controls/org/apache/beehive/
test/src/jdbc/controls/org/apache/beehive/controls/
test/src/jdbc/controls/org/apache/beehive/controls/system/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/dbconnection/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/errors/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/results/
test/src/jdbc/controls/schemas/ test/src/jdbc/controls/schemas/badusers/
test/src/jdbc/controls/schemas/users/ test/src/jdbc/jdbc-container/
test/src/jdbc/jdbc-container/application/ test/src/jdbc/jdbc-container/src/
test/src/jdbc/jdbc-container/src/org/
test/src/jdbc/jdbc-container/src/org/apache/
test/src/jdbc/jdbc-container/src/org/apache/beehive/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/system/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/system/jdbc/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/system/jdbc/containertest/
test/src/jdbc/jdbc-container/webapp/
test/src/jdbc/jdbc-container/webapp/WEB-INF/
test/src/jdbc/jdbc-container/webapp/conf/
test/src/jdbc/jdbc-container/webapp/conf/Catalina/
test/src/jdbc/jdbc-container/webapp/conf/Catalina/localhost/
test/src/jdbc/junitTests/ test/src/jdbc/junitTests/org/
test/src/jdbc/junitTests/org/apache/
test/src/jdbc/junitTests/org/apache/beehive/
test/src/jdbc/junitTests/org/apache/beehive/controls/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/dbconnection/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/errors/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/results/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/sqlparser/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/
Added: incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/sqlparser/SqlParserTest.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/sqlparser/SqlParserTest.java?rev=169351&view=auto
==============================================================================
--- incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/sqlparser/SqlParserTest.java (added)
+++ incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/sqlparser/SqlParserTest.java Mon May 9 13:17:58 2005
@@ -0,0 +1,421 @@
+/*
+ * Copyright 2005 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.
+ *
+ * $Header:$
+ */
+
+package org.apache.beehive.controls.system.jdbc.units.sqlparser;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import org.apache.beehive.controls.api.ControlException;
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Logger;
+import org.apache.beehive.controls.system.jdbc.parser.SqlParser;
+import org.apache.beehive.controls.system.jdbc.parser.SqlStatement;
+
+/**
+ *
+ */
+public class SqlParserTest extends TestCase {
+ private static final Logger _logger = Logger.getLogger(SqlParserTest.class);
+
+ private static final String SimpleREFLECTPARAMS = "create table users (username VARCHAR(50), password VARCHAR(50))";
+ private static final String SimpleREFLECTPARAMS_2 = "INSERT INTO USERS (username, password) \nVALUES({username},{password})";
+ private static final String SimpleREFLECTPARAMS_2_RESULT = "INSERT INTO USERS (username, password) \nVALUES(?,?)";
+ private static final String SimpleREFLECTPARAMS_3 = "UPDATE USERS SET USERNAME = {username}, PASSWORD = {password} WHERE USERNAME = {username}";
+ private static final String SimpleREFLECTPARAMS_3_RESULT = "UPDATE USERS SET USERNAME = ?, PASSWORD = ? WHERE USERNAME = ?";
+ private static final String SimpleREFLECTPARAMS_4 = "UPDATE USERS SET USERNAME = {username|VARCHAR}, PASSWORD = {password|VARCHAR} WHERE USERNAME = {username|BIGINT}";
+ private static final String SimpleREFLECTPARAMS_5 = "SELECT * FROM USERS WHERE NAME={ param}";
+ private static final String SimpleREFLECTPARAMS_5_RESULT = "SELECT * FROM USERS WHERE NAME=?";
+ private static final String SimpleREFLECTPARAMS_6 = "SELECT * FROM users WHERE foo='{' AND";
+
+
+ private static final String SimpleJDBCPARAMS_1 = "INSERT INTO USERS (username, password) \nVALUES({call username(x)},{password})";
+ private static final String SimpleJDBCPARAMS_1_RESULT = "INSERT INTO USERS (username, password) \nVALUES({call username(x)},?)";
+ private static final String SimpleJDBCPARAMS_2 = "INSERT INTO USERS (username, password) \nVALUES({?= username()},{password})";
+ private static final String SimpleJDBCPARAMS_2_RESULT = "INSERT INTO USERS (username, password) \nVALUES({?= username()},?)";
+ private static final String SimpleJDBCPARAMS_3 = "INSERT INTO USERS (username, password) \nVALUES({d {foo}},{password})";
+ private static final String SimpleJDBCPARAMS_3_RESULT = "INSERT INTO USERS (username, password) \nVALUES({d ?},?)";
+ private static final String SimpleJDBCPARAMS_4 = "SELECT name FROM Identifiers WHERE Id LIKE '\\%' {escape '\\'})";
+ private static final String SimpleJDBCPARAMS_5 = "{fn user()}{fn concat('Hot', 'Java')}";
+ private static final String SimpleJDBCPARAMS_6 = "{d 'yyyy-mm-dd'}{t 'hh:mm:ss'}{ts 'yyyy-mm-dd hh:mm:ss.f'}{d {foo}}";
+ private static final String SimpleJDBCPARAMS_6_RESULT = "{d 'yyyy-mm-dd'}{t 'hh:mm:ss'}{ts 'yyyy-mm-dd hh:mm:ss.f'}{d ?}";
+ private static final String SimpleJDBCPARAMS_7 = "SELECT * FROM {oj TABLE1 LEFT OUTER JOIN TABLE2 ON DEPT_NO = 003420930}";
+
+
+ private static final String SimpleSQLPARAMS_1 = "INSERT INTO USERS (username, password) \nVALUES({sql:fn in(x,{y})},{password})";
+ private static final String SimpleSQLPARAMS_1_RESULT = "INSERT INTO USERS (username, password) \nVALUES((x IN (?)),?)";
+ private static final String SimpleSQLPARAMS_2 = "INSERT INTO USERS (username, password) \nVALUES({sql:subst x}),{password})";
+ private static final String SimpleSQLPARAMS_2_RESULT = "INSERT INTO USERS (username, password) \nVALUES(?),?)";
+ private static final String SimpleSQLPARAMS_3 = "INSERT INTO USERS (username, password) \nVALUES({sql: x}),{password})";
+ private static final String SimpleSQLPARAMS_3_RESULT = "INSERT INTO USERS (username, password) \nVALUES(?),?)";
+
+
+ private static final String BADLY_FORMED_1 = "INSERT INTO USERS (username, password) \nVALUES({sql: x}),{password)";
+ private static final String BADLY_FORMED_2 = "INSERT INTO USERS (username, password) \nVALUES(sql: x}),{password})";
+ private static final String BADLY_FORMED_3 = "INSERT INTO USERS (username, password) VALUES(({sql: 'x}),{password})";
+ private static final String BADLY_FORMED_4 = "INSERT INTO USERS (username, password) \nVALUES(({sqlxxx: x}),{password})";
+ private static final String BADLY_FORMED_5 = "INSERT INTO USERS (username, password) \nVALUES(({sql:badfunc x}),{password})";
+ private static final String BADLY_FORMED_6 = "INSERT INTO USERS (username, password) \nVALUES(({sql: x),{password})";
+ private static final String BADLY_FORMED_7 = "INSERT INTO USERS (username, password) \nVALUES(({sql: x}),{})";
+ private static final String BADLY_FORMED_8 = "INSERT INTO USERS (username, password) \nVALUES(({sql: x}),{p)";
+
+// private static final String CORE_SQL_1 = "create table users (username VARCHAR(50), password VARCHAR(50))";
+// private static final String CORE_SQL_2 = "INSERT INTO USERS (username, password) \nVALUES(({x}),{p})";
+// private static final String CORE_SQL_3 = "INSERT INTO USERS (username, password) \nVALUES(({sql:x}),{p})";
+// private static final String CORE_SQL_4 = "INSERT INTO USERS (username, password) \nVALUES({sql:fn in(x,{y})},{password})";
+// private static final String CORE_SQL_4_OUT = "INSERT INTO USERS (username, password) \nVALUES({x IN (y)},{password})";
+// private static final String CORE_SQL_5 = "INSERT INTO USERS (username, password) \nVALUES({call {foo}},{password})";
+// private static final String CORE_SQL_6 = "INSERT INTO USERS (username, password) \nVALUES({?= username},{password})";
+
+ private SqlParser _parser;
+
+ public void setUp() throws Exception {
+// BasicConfigurator.configure();
+ _parser = new SqlParser();
+ }
+
+ public void tearDown() throws Exception { }
+
+ //
+ // tests for basic param sub parsing
+ //
+
+
+ //
+ // parse with no substitutions
+ //
+ public void testSimpleParse() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleREFLECTPARAMS);
+ assertEquals(SimpleREFLECTPARAMS, frag.toString());
+ }
+
+ //
+ // test parsing with several reflected params
+ //
+ public void testParamReflection() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleREFLECTPARAMS_2);
+ assertEquals(SimpleREFLECTPARAMS_2_RESULT, frag.toString());
+ }
+
+ //
+ // test parsing with several reflected params
+ //
+ public void testParamReflection2() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleREFLECTPARAMS_3);
+ assertEquals(SimpleREFLECTPARAMS_3_RESULT, frag.toString());
+ }
+
+ //
+ // test parsing with several reflected params which specify types
+ //
+ public void testParamReflectionWithTypes() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleREFLECTPARAMS_4);
+ assertEquals(SimpleREFLECTPARAMS_3_RESULT, frag.toString());
+ }
+
+ //
+ // test parsing with several reflected params + whitespace
+ //
+ public void testParamReflectionWhitespace() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleREFLECTPARAMS_5);
+ assertEquals(SimpleREFLECTPARAMS_5_RESULT, frag.toString());
+ }
+
+ //
+ // test parsing with several reflected params + a literal brace
+ //
+ public void testParamReflectionLiteralBrace() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleREFLECTPARAMS_6);
+ assertEquals(SimpleREFLECTPARAMS_6, frag.toString());
+ }
+
+// //////////////////////////////////////// END REFLECTION TESTS //////////////////////////////////////////////////
+
+ //
+ // tests for jdbc escape parsing
+ //
+
+
+ //
+ // JDBC call cmd
+ //
+ public void testJdbcCall() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleJDBCPARAMS_1);
+ assertEquals(SimpleJDBCPARAMS_1_RESULT, frag.toString());
+ }
+
+ //
+ // JDBC ?= cmd
+ //
+ public void testJdbcReturnCmd() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleJDBCPARAMS_2);
+ assertEquals(SimpleJDBCPARAMS_2_RESULT, frag.toString());
+ }
+
+ //
+ // JDBC d cmd
+ //
+ public void testJdbcDateCmd() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleJDBCPARAMS_3);
+ assertEquals(SimpleJDBCPARAMS_3_RESULT, frag.toString());
+ }
+
+ //
+ // JDBC escape cmd
+ //
+ public void testJdbcEscapeCmd() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleJDBCPARAMS_4);
+ assertEquals(SimpleJDBCPARAMS_4, frag.toString());
+ }
+
+ //
+ // JDBC fn cmd
+ //
+ public void testJdbcFnCmd() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleJDBCPARAMS_5);
+ assertEquals(SimpleJDBCPARAMS_5, frag.toString());
+ }
+
+ //
+ // JDBC d, t, ts cmds
+ //
+ public void testJdbcTimeCmds() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleJDBCPARAMS_6);
+ assertEquals(SimpleJDBCPARAMS_6_RESULT, frag.toString());
+ }
+
+ //
+ // JDBC outerjoin cmds
+ //
+ public void testJdbcOuterJoinCmd() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleJDBCPARAMS_7);
+ assertEquals(SimpleJDBCPARAMS_7, frag.toString());
+ }
+
+ // ///////////////////////////////////////// End of JDBC cmd tests ////////////////////////////////////////////
+
+ //
+ // tests for sql escape parsing
+ //
+
+
+ //
+ // tests sql:fn sub
+ //
+ public void testSqlFn() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleSQLPARAMS_1);
+ assertEquals(SimpleSQLPARAMS_1_RESULT, frag.toString());
+ }
+
+ //
+ // tests sql:subst
+ //
+ public void testSqlSubst() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleSQLPARAMS_2);
+ assertEquals(SimpleSQLPARAMS_2_RESULT, frag.toString());
+ }
+
+ //
+ // tests implicit sql:subst
+ //
+ public void testSqlImplicitSubst() {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ frag = _parser.parse(SimpleSQLPARAMS_3);
+ assertEquals(SimpleSQLPARAMS_3_RESULT, frag.toString());
+ }
+
+ // ///////////////////////////////////////////// End of Sql Subst Tests ////////////////////////////////////////
+
+ //
+ // tests for badly formed sql expression parsing
+ //
+
+ //
+ // statement missing '}'
+ //
+ public void testParseErrorMissingCloseBrace() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ try {
+ frag = _parser.parse(BADLY_FORMED_1);
+ fail("SQL statements missing '}' should raise SqlException");
+ } catch (ControlException spe) {
+ assertTrue(true);
+ }
+ }
+
+ //
+ // statement missing '{'
+ //
+ public void testParseErrorMissingOpenBrace() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ try {
+ frag = _parser.parse(BADLY_FORMED_2);
+ fail("SQL statements with unbalanced '{}'s should raise SqlException");
+ } catch (ControlException spe) {
+ assertTrue(true);
+ }
+ }
+
+ //
+ // statement has unbalanced 's
+ //
+ public void testParseErrorUnbalancedSquotes() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ try {
+ frag = _parser.parse(BADLY_FORMED_3);
+ fail("SQL statements with unbalanced 's should raise SqlException");
+ } catch (ControlException spe) {
+ assertTrue(true);
+ }
+ }
+
+ //
+ // statement has unbalanced invalid escape sequence 'sqlxxxx:'
+ //
+ public void testParseErrorInvalidEscape() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ try {
+ frag = _parser.parse(BADLY_FORMED_4);
+ fail("SQL statements with invalid escape sequences should raise SqlException");
+ } catch (ControlException spe) {
+ assertTrue(true);
+ }
+ }
+
+ //
+ // SQLEscapeFragment: statement has unbalanced invalid sql: keyword, must be either fn or subst
+ //
+ public void testParseErrorInvalidKeyWord() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ try {
+ frag = _parser.parse(BADLY_FORMED_5);
+ fail("SQL statements with sql: escapes can only map to 'fn' or 'subst' functions");
+ } catch (ControlException spe) {
+ assertTrue(true);
+ }
+ }
+
+ //
+ // SQLEscapeFragment: statement missing '}'
+ //
+ public void testParseErrorMissingEscapeBrace() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ try {
+ frag = _parser.parse(BADLY_FORMED_6);
+ fail("SQL statements with unbalanced 's should raise SqlException");
+ } catch (ControlException spe) {
+ assertTrue(true);
+ }
+ }
+
+ //
+ // ReflectFragment: statement missing param name
+ //
+ public void testParseErrorMissingParamName() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ try {
+ frag = _parser.parse(BADLY_FORMED_7);
+ fail("SQL statements with empty '{}'s should raise SqlException");
+ } catch (ControlException spe) {
+ assertTrue(true);
+ }
+ }
+
+ //
+ // ReflectFragment: statement missing '}'
+ //
+ public void testParseErrorMissingReflectBrace() throws Exception {
+ SqlStatement frag = null;
+ assertNotNull(_parser);
+
+ try {
+ frag = _parser.parse(BADLY_FORMED_8);
+ fail("SQL statements with unbalanced {}'s should raise SqlException");
+ } catch (ControlException spe) {
+ assertTrue(true);
+ }
+ }
+
+ public SqlParserTest(String name) { super(name); }
+
+ public static Test suite() { return new TestSuite(SqlParserTest.class); }
+
+ public static void main(String[] args) { junit.textui.TestRunner.run(suite()); }
+}
+
Added: incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/StoredProcedures.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/StoredProcedures.java?rev=169351&view=auto
==============================================================================
--- incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/StoredProcedures.java (added)
+++ incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/StoredProcedures.java Mon May 9 13:17:58 2005
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2005 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.
+ *
+ * $Header:$
+ */
+
+package org.apache.beehive.controls.system.jdbc.units.utils;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.ResultSet;
+
+/**
+ * Stored procedures for testing with Derby
+ */
+public final class StoredProcedures {
+
+
+ /**
+ * Stored procedure which selects all products whose price is over $1000.00
+ * @param outProducts
+ * @throws Exception
+ */
+ public static void getExpensiveProductsSP(String[] outProducts) throws Exception {
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+ Connection conn = DriverManager.getConnection("jdbc:derby:MyDB");
+
+ Statement s = conn.createStatement();
+ ResultSet rs = s.executeQuery("SELECT PRODUCT_NAME from PRODUCTS WHERE PRICE > 1000.00");
+
+ rs.next();
+ outProducts[0] = rs.getString(1);
+
+ rs.close();
+ s.close();
+ conn.close();
+ }
+
+ /**
+ * Simple stored procedure which doesn't make a query into the database
+ * @param outProduct
+ * @throws Exception
+ */
+ public static void getExpensiveProductSP(String[] outProduct) throws Exception {
+ outProduct[0] = "foo";
+ }
+
+ /**
+ * This stored procedure has an in and an out parameter, queries the db for all product names whose color
+ * matches the inColor parameter.
+ * @param inColor
+ * @param outProducts
+ * @throws Exception
+ */
+ public static void getProductsByColorSP(String inColor, String[] outProducts) throws Exception {
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+ Connection conn = DriverManager.getConnection("jdbc:derby:MyDB");
+
+ Statement s = conn.createStatement();
+ ResultSet rs = s.executeQuery("SELECT PRODUCT_NAME from PRODUCTS WHERE COLOR='" + inColor +"'");
+
+ StringBuilder sb = new StringBuilder();
+ while (rs.next()) {
+ sb.append(rs.getString(1));
+ sb.append(',');
+ }
+
+ outProducts[0] = sb.toString();
+
+ rs.close();
+ s.close();
+ conn.close();
+ }
+
+ /**
+ *
+ * @param inColor
+ * @param inSku
+ */
+ public static void getProductSP(String inColor, int inSku) {
+ // noop
+ assert "red".equals(inColor);
+ assert inSku == 1234;
+ }
+}
+
Added: incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/TestContextInitializer.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/TestContextInitializer.java?rev=169351&view=auto
==============================================================================
--- incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/TestContextInitializer.java (added)
+++ incubator/beehive/trunk/system-controls/test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/TestContextInitializer.java Mon May 9 13:17:58 2005
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2005 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.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.controls.system.jdbc.units.utils;
+
+import org.apache.beehive.controls.api.context.ControlBeanContext;
+import org.apache.beehive.controls.runtime.bean.ControlContainerContext;
+
+import java.lang.reflect.Method;
+
+public class TestContextInitializer {
+
+
+ public static ControlContainerContext initContext(Object caller)
+ throws Exception {
+ ControlContainerContext context = new ControlContainerContext();
+ final Class forClass = caller.getClass();
+
+ context.beginContext();
+ Class init = forClass.getClassLoader().loadClass(forClass.getName() + "ClientInitializer");
+
+ Method m = init.getMethod("initialize",
+ new Class[]
+ {
+ ControlBeanContext.class,
+ forClass
+ });
+
+ m.invoke(null, new Object[]{context, caller});
+ return context;
+ }
+}