EMMA Coverage Report (generated Tue Nov 24 15:49:41 EST 2009)
[all classes][atg.service.jdbc]

COVERAGE SUMMARY FOR SOURCE FILE [HSQLDBDataSource.java]

nameclass, %method, %block, %line, %
HSQLDBDataSource.java100% (1/1)60%  (3/5)48%  (51/107)45%  (13/29)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class HSQLDBDataSource100% (1/1)60%  (3/5)48%  (51/107)45%  (13/29)
isShutdownHSQLDB (): boolean 0%   (0/1)0%   (0/3)0%   (0/1)
setShutdownHSQLDB (boolean): void 0%   (0/1)0%   (0/4)0%   (0/2)
doStopService (): void 100% (1/1)8%   (4/53)13%  (2/15)
HSQLDBDataSource (): void 100% (1/1)100% (6/6)100% (2/2)
doStartService (): void 100% (1/1)100% (41/41)100% (9/9)

1/**
2 * Copyright 2009 ATG DUST Project Licensed under the Apache License, Version
3 * 2.0 (the "License"); you may not use this file except in compliance with the
4 * License. You may obtain a copy of the License at
5 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
6 * or agreed to in writing, software distributed under the License is
7 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8 * KIND, either express or implied. See the License for the specific language
9 * governing permissions and limitations under the License.
10 */
11 
12package atg.service.jdbc;
13 
14import java.sql.Connection;
15import java.sql.SQLException;
16import java.sql.Statement;
17import java.util.Properties;
18 
19import atg.nucleus.ServiceException;
20import atg.test.util.DBUtils;
21 
22/**
23 * This datasource is used for testing. It starts up an HSQLDB in memory
24 * instance on localhost automatically. The database will be named "testdb" by
25 * default. If you need to name it something else set the "databaseName"
26 * property on this component. You may want to change the name if your test
27 * requires running two databases at the same time.
28 * 
29 * @author adamb
30 * @version $Id:n HSQLDB
31 *          //test/UnitTests/base/main/src/Java/atg/service/jdbc/HSQLDBDataSource
32 *          .java#2 $
33 */
34public class HSQLDBDataSource extends InitializingDataSourceBase {
35 
36  // Don't shutdown HSQLDB by default. It might stop before other components
37  // that require it.
38  public boolean mShutdownHSQLDB = false;
39 
40  /**
41   * Returns true if the "SHUTDOWN" sql statment should be sent to HSQLDB
42   * when doStopService is called on this component.
43   * @return
44   */
45  public boolean isShutdownHSQLDB() {
46    return mShutdownHSQLDB;
47  }
48 
49  /**
50   * Sets the boolean which controls if HSQLDB should be shutdown when doStopService
51   * is called on this component.
52   * @param shouldShutdownHSQLDB
53   */
54  public void setShutdownHSQLDB(boolean shouldShutdownHSQLDB) {
55    mShutdownHSQLDB = shouldShutdownHSQLDB;
56  }
57 
58  // --------------------------
59  /**
60   * Starts this DataSource. Since the datasource uses an in memory HSQL
61   * database, the database actually is started on the first call to
62   * getConnection().
63   */
64  @Override
65  public void doStartService() throws ServiceException {
66    Properties props = DBUtils.getHSQLDBInMemoryDBConnection(getName());
67    // set our properties from this object
68    this.setDriver(props.getProperty("driver"));
69    this.setURL(props.getProperty("URL"));
70    this.setUser(props.getProperty("user"));
71    this.setPassword(props.getProperty("password"));
72    if (isLoggingInfo())
73      logInfo("HSQLDB DataSource starting with properties " + props.toString());
74    super.doStartService();
75  }
76 
77  // --------------------------
78  /**
79   * Called when Nucleus is shutdown. Issues the "SHUTDOWN" command to the
80   * HSQLDB database.
81   */
82  @Override
83  public void doStopService() {
84    if (mShutdownHSQLDB) {
85      if (isLoggingInfo())
86        logInfo("HSQLDB DataSource shutting down.");
87      Connection connection = null;
88      try {
89        connection = this.getDriverManagerConnection();
90        Statement st = connection.createStatement();
91        st.execute("SHUTDOWN");
92      } catch (SQLException e) {
93        if (isLoggingError())
94          logError(e.getMessage());
95      } finally {
96        if (connection != null) {
97          try {
98            connection.close();
99          } catch (SQLException e) {
100            ; // eat it
101          }
102        }
103      }
104    }
105 
106  }
107}

[all classes][atg.service.jdbc]
EMMA 2.0.5312 (C) Vladimir Roubtsov