Fixing startup bug and javadoc errors

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/vre-management/smart-executor@111665 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2015-02-04 15:58:55 +00:00
parent 10019c27ab
commit bd00ebddf8
9 changed files with 36 additions and 219 deletions

View File

@ -1,10 +0,0 @@
CREATE TABLE IF NOT EXISTS `pluginInstanceEvolution` (
`id` INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
`uuid` VARCHAR(36) NOT NULL,
`pluginName` VARCHAR(255) NOT NULL,
`timestamp` BIGINT NOT NULL,
`state` INT NOT NULL
);
-- --------------------------------------------------------

View File

@ -107,7 +107,6 @@
<directory>${distroDirectory}</directory> <directory>${distroDirectory}</directory>
<includes> <includes>
<include>gcube-app.xml</include> <include>gcube-app.xml</include>
<include>db.sql</include>
</includes> </includes>
<filtering>true</filtering> <filtering>true</filtering>
</resource> </resource>
@ -119,6 +118,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId> <artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration> <configuration>
<warName>smart-executor</warName> <warName>smart-executor</warName>
<webXml>src\main\webapp\WEB-INF\web.xml</webXml> <webXml>src\main\webapp\WEB-INF\web.xml</webXml>

View File

@ -139,7 +139,7 @@ public class ExecutorImpl implements Executor {
/** /**
* Create the Service Endpoint using information related to discovered * Create the Service Endpoint using information related to discovered
* available plugins and their own discoverd capabilities * available plugins and their own discoverd capabilities
* @return * @return the created {@link ServiceEndpoint}
*/ */
protected static ServiceEndpoint createServiceEndpoint(){ protected static ServiceEndpoint createServiceEndpoint(){

View File

@ -3,7 +3,6 @@
*/ */
package org.gcube.vremanagement.executor.persistence; package org.gcube.vremanagement.executor.persistence;
import java.io.FileReader;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.sql.Connection; import java.sql.Connection;
@ -11,6 +10,7 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement;
import java.util.UUID; import java.util.UUID;
import org.gcube.vremanagement.executor.plugin.PluginState; import org.gcube.vremanagement.executor.plugin.PluginState;
@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory;
/** /**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*
*/ */
public class JDBCPersistenceConnector extends PersistenceConnector { public class JDBCPersistenceConnector extends PersistenceConnector {
@ -35,15 +34,18 @@ public class JDBCPersistenceConnector extends PersistenceConnector {
public static final String username = "username"; public static final String username = "username";
public static final String password = "password"; public static final String password = "password";
public static final String dbName = "executor"; public static final String dbName = "executor";
public static final String queriesFilePath = "distro/db.sql";
public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE = "pluginInstanceEvolution"; public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE = "PluginInstanceEvolution";
public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_ID_FIELD = "id";
public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_UUID_FIELD = "uuid"; public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_UUID_FIELD = "uuid";
public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_PLUGIN_NAME_FIELD = "pluginName"; public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_PLUGIN_NAME_FIELD = "pluginName";
public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_TIMESTAMP_FIELD = "timestamp"; public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_TIMESTAMP_FIELD = "timestamp";
public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_STATE_FIELD = "state"; public final static String PLUGIN_INSTANCE_EVOLUTION_TABLE_STATE_FIELD = "state";
/**
* Default Constructor
* @throws Exception if fails
*/
public JDBCPersistenceConnector() throws Exception { public JDBCPersistenceConnector() throws Exception {
try { try {
@ -65,7 +67,29 @@ public class JDBCPersistenceConnector extends PersistenceConnector {
} }
try { try {
runScript(queriesFilePath); connection.setAutoCommit(false); // transaction block start
String createTable = String.format(
"CREATE TABLE IF NOT EXISTS `%s` ("
+ "`%s` INT PRIMARY KEY AUTO_INCREMENT NOT NULL,"
+ "`%s` VARCHAR(36) NOT NULL,"
+ "`%s` VARCHAR(255) NOT NULL,"
+ "`%s` BIGINT NOT NULL,"
+ "`%s` INT NOT NULL);",
PLUGIN_INSTANCE_EVOLUTION_TABLE,
PLUGIN_INSTANCE_EVOLUTION_TABLE_ID_FIELD,
PLUGIN_INSTANCE_EVOLUTION_TABLE_UUID_FIELD,
PLUGIN_INSTANCE_EVOLUTION_TABLE_PLUGIN_NAME_FIELD,
PLUGIN_INSTANCE_EVOLUTION_TABLE_TIMESTAMP_FIELD,
PLUGIN_INSTANCE_EVOLUTION_TABLE_STATE_FIELD);
logger.info(String.format("Creating %s Table : %s.",
PLUGIN_INSTANCE_EVOLUTION_TABLE, createTable));
Statement createTableStatement = connection.createStatement();
createTableStatement.execute(createTable);
connection.commit(); //transaction block end
}catch (Exception e){ }catch (Exception e){
logger.error("Error while creating DB", e); logger.error("Error while creating DB", e);
throw e; throw e;
@ -73,15 +97,8 @@ public class JDBCPersistenceConnector extends PersistenceConnector {
} }
protected void runScript(String queriesFilePath) throws Exception {
SQLiteScriptRunner scriptRunner = new SQLiteScriptRunner(connection, false, true);
FileReader fileReader = new FileReader(queriesFilePath);
scriptRunner.runScript(fileReader);
}
/** /**
* @return the connection * @return the connection to the DB
*/ */
public Connection getConnection() { public Connection getConnection() {
return connection; return connection;

View File

@ -1,178 +0,0 @@
package org.gcube.vremanagement.executor.persistence;
/*
* Slightly modified version of the com.ibatis.common.jdbc.ScriptRunner class
* from the iBATIS Apache project. Only removed dependency on Resource class
* and a constructor
*/
/*
* Copyright 2004 Clinton Begin
*
* 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.
*/
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Tool to run database scripts
*/
public class SQLiteScriptRunner {
/**
* Logger
*/
private static Logger logger = LoggerFactory.getLogger(SQLiteScriptRunner.class);
private static final String DEFAULT_DELIMITER = ";";
private Connection connection;
private boolean stopOnError;
private boolean autoCommit;
private String delimiter = DEFAULT_DELIMITER;
private boolean fullLineDelimiter = false;
/**
* Default constructor
*/
public SQLiteScriptRunner(Connection connection, boolean autoCommit,
boolean stopOnError) {
this.connection = connection;
this.autoCommit = autoCommit;
this.stopOnError = stopOnError;
}
public void setDelimiter(String delimiter, boolean fullLineDelimiter) {
this.delimiter = delimiter;
this.fullLineDelimiter = fullLineDelimiter;
}
/**
* Runs an SQL script (read in using the Reader parameter)
*
* @param reader
* - the source of the script
*/
public void runScript(Reader reader) throws IOException, SQLException {
try {
boolean originalAutoCommit = connection.getAutoCommit();
try {
if (originalAutoCommit != this.autoCommit) {
connection.setAutoCommit(this.autoCommit);
}
runScript(connection, reader);
} finally {
connection.setAutoCommit(originalAutoCommit);
}
} catch (IOException e) {
throw e;
} catch (SQLException e) {
throw e;
} catch (Exception e) {
throw new RuntimeException("Error running script. Cause: " + e, e);
}
}
/**
* Runs an SQL script (read in using the Reader parameter) using the
* connection passed in
*
* @param conn
* - the connection to use for the script
* @param reader
* - the source of the script
* @throws SQLException
* if any SQL errors occur
* @throws IOException
* if there is an error reading from the Reader
*/
private void runScript(Connection conn, Reader reader) throws IOException,
SQLException {
StringBuffer command = null;
try {
LineNumberReader lineReader = new LineNumberReader(reader);
String line = null;
while ((line = lineReader.readLine()) != null) {
if (command == null) {
command = new StringBuffer();
}
String trimmedLine = line.trim();
if (trimmedLine.startsWith("--")) {
logger.debug(trimmedLine);
} else if (trimmedLine.length() < 1
|| trimmedLine.startsWith("//")) {
// Do nothing
} else if (trimmedLine.length() < 1
|| trimmedLine.startsWith("--")) {
// Do nothing
} else if (!fullLineDelimiter
&& trimmedLine.endsWith(getDelimiter())
|| fullLineDelimiter
&& trimmedLine.equals(getDelimiter())) {
command.append(line.substring(0, line
.lastIndexOf(getDelimiter())));
command.append(" ");
Statement statement = conn.createStatement();
logger.debug(command.toString());
try {
statement.execute(command.toString());
} catch (SQLException e) {
e.fillInStackTrace();
logger.error("Error executing: " + command, e);
if(stopOnError){
throw e;
}
}
command = null;
try {
statement.close();
} catch (Exception e) {
// Ignore to workaround a bug in Jakarta DBCP
}
Thread.yield();
} else {
command.append(line);
command.append(" ");
}
}
if (!autoCommit) {
conn.commit();
}
} catch (SQLException e) {
e.fillInStackTrace();
logger.error("Error executing: " + command, e);
throw e;
} catch (IOException e) {
e.fillInStackTrace();
logger.error("Error executing: " + command, e);
throw e;
}
}
private String getDelimiter() {
return delimiter;
}
}

View File

@ -33,7 +33,7 @@ public class PluginManager {
private Map<String, PluginDeclaration> availablePlugins; private Map<String, PluginDeclaration> availablePlugins;
/** /**
* Get the singleton instance of {@link #PPluginManager}. * Get the singleton instance of {@link #PluginManager}.
* The first time this function is invoked the instance is null * The first time this function is invoked the instance is null
* so it is created. Otherwise the already created instance is returned * so it is created. Otherwise the already created instance is returned
* @return singleton instance of {@link #PluginManager} * @return singleton instance of {@link #PluginManager}

View File

@ -1,10 +0,0 @@
CREATE TABLE IF NOT EXISTS `pluginInstanceEvolution` (
`id` INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
`uuid` VARCHAR(36) NOT NULL,
`pluginName` VARCHAR(255) NOT NULL,
`timestamp` BIGINT NOT NULL,
`state` INT NOT NULL
);
-- --------------------------------------------------------

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"> version="2.5">
<listener> <listener>

View File

@ -1,6 +1,3 @@
/**
*
*/
package org.gcube.vremanagement.executor.pluginmanager; package org.gcube.vremanagement.executor.pluginmanager;
import java.util.HashMap; import java.util.HashMap;
@ -12,6 +9,7 @@ import org.acme.HelloWorldPluginDeclaration;
import org.gcube.vremanagement.executor.persistence.JDBCPersistence; import org.gcube.vremanagement.executor.persistence.JDBCPersistence;
import org.gcube.vremanagement.executor.persistence.JDBCPersistenceConnector; import org.gcube.vremanagement.executor.persistence.JDBCPersistenceConnector;
import org.gcube.vremanagement.executor.plugin.PluginState; import org.gcube.vremanagement.executor.plugin.PluginState;
import org.gcube.vremanagement.executor.pluginmanager.PluginThread;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.slf4j.Logger; import org.slf4j.Logger;