Subversion Repositories XServices

Compare Revisions

Ignore whitespace Rev 198 → Rev 199

/xservices/trunk/src/main/java/net/brutex/xservices/util/BrutexHSQLQuartzConnectionProvider.java
30,9 → 30,8
import java.util.ArrayList;
import java.util.List;
 
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
import lombok.extern.slf4j.Slf4j;
import org.quartz.utils.ConnectionProvider;
 
/**
39,15 → 38,16
* @author Brian Rosenberger
*
*/
@Slf4j
public class BrutexHSQLQuartzConnectionProvider implements ConnectionProvider {
private Connection conn = null;
private static final Logger logger = LogManager.getLogger();
 
 
public Connection getConnection() throws SQLException {
if( conn!= null ) { // Todo: && conn.conn.isValid(5)) {
logger.debug("Checking tables on pre-exisiting database connection.");
log.debug("Checking tables on pre-exisiting database connection.");
checkTables();
return conn;
}
55,7 → 55,7
// Class.forName("org.hsqldb.jdbc.JDBCDriver" );
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
} catch (Exception e) {
logger.fatal("Failed to load Derby JDBC driver.");
log.error("Failed to load Derby JDBC driver.");
e.printStackTrace();
return null;
}
106,9 → 106,9
}
private synchronized void checkTables() throws SQLException {
logger.debug("Checking QUARTZ database schema.");
log.debug("Checking QUARTZ database schema.");
if(!isConnected(false)) {
logger.error("Failed to validate QUARTZ database schema.");
log.error("Failed to validate QUARTZ database schema.");
return;
}
List<String> ddl_list = new ArrayList<String>(11);
131,7 → 131,7
for (String tbl : ddl_list) {
ResultSet rs = dmd.getTables(null, "APP", tbl, null);
if (!rs.next()) {
logger.log(Level.INFO, "Adding DDL for table "+ tbl);
log.debug("Adding DDL for table {}", tbl);
Statement st = conn.createStatement();
File ddlFile = new File(ddl + tbl + ".ddl");
String create = "";
142,18 → 142,15
}
create.trim();
if( st.execute(create)) {
logger.log(Level.INFO, "Table " + tbl + " created.");
log.debug("Table {} created.", tbl);
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
logger.log(Level.ERROR, "Error executing statement "+ create );
System.out.println(ex.getMessage());
log.error("Error executing statement {}.",create, ex );
}
} else {
logger.trace("Table "+tbl+" exists.");
log.trace("Table {} exists.", tbl);
}
}
}
164,15 → 161,15
} else {
String t = this.getClass().getClassLoader().getResource("/").toString().substring(6); // WEB-INF/classes
t += "../data/db";
logger.debug("Database directory is set to '" + t + "'");
log.debug("Database directory is set to '{}", t);
try {
this.conn = DriverManager.getConnection("jdbc:derby:" + t + ";create=true;");
} catch (SQLException ex) {
logger.error(ex.getMessage(), ex);
log.error(ex.getMessage(), ex);
if(!fail) {
logger.warn("Deleting database directory.");
log.warn("Deleting database directory.");
recursiveDelete(new File(t));
logger.warn("Retrying to connect to database.");
log.warn("Retrying to connect to database.");
return isConnected(true);
} else {
return false;
/xservices/trunk/src/main/java/net/brutex/xservices/util/BrutexQuartzConnectionProvider.java
30,9 → 30,8
import java.util.ArrayList;
import java.util.List;
 
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
import lombok.extern.slf4j.Slf4j;
import org.quartz.utils.ConnectionProvider;
 
/**
39,15 → 38,15
* @author Brian Rosenberger
*
*/
@Slf4j
public class BrutexQuartzConnectionProvider implements ConnectionProvider {
private Connection conn = null;
private final Logger logger = LogManager.getLogger();
 
 
public Connection getConnection() throws SQLException {
if( conn!= null) { // Todo: && conn.conn.isValid(5)) {) {
logger.debug("Checking tables on pre-exisiting database connection.");
log.debug("Checking tables on pre-exisiting database connection.");
checkTables();
return conn;
}
55,7 → 54,7
// Class.forName("org.hsqldb.jdbc.JDBCDriver" );
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
} catch (Exception e) {
logger.fatal("Failed to load Derby JDBC driver.");
log.error("Failed to load Derby JDBC driver.");
e.printStackTrace();
return null;
}
106,9 → 105,9
}
private synchronized void checkTables() throws SQLException {
logger.debug("Checking QUARTZ database schema.");
log.debug("Checking QUARTZ database schema.");
if(!isConnected(false)) {
logger.error("Failed to validate QUARTZ database schema.");
log.error("Failed to validate QUARTZ database schema.");
return;
}
List<String> ddl_list = new ArrayList<String>(11);
131,7 → 130,7
for (String tbl : ddl_list) {
ResultSet rs = dmd.getTables(null, "APP", tbl, null);
if (!rs.next()) {
logger.log(Level.INFO, "Adding DDL for table "+ tbl);
log.debug("Adding DDL for table {}.", tbl);
Statement st = conn.createStatement();
File ddlFile = new File(ddl + tbl + ".ddl");
String create = "";
142,18 → 141,16
}
create.trim();
if( st.execute(create)) {
logger.log(Level.INFO, "Table " + tbl + " created.");
log.debug("Table {} created.", tbl);
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
logger.log(Level.ERROR, "Error executing statement "+ create );
log.error("Error executing statement {}", create, ex );
System.out.println(ex.getMessage());
}
} else {
logger.trace("Table "+tbl+" exists.");
log.trace("Table {} exists.", tbl);
}
}
}
164,15 → 161,15
} else {
String t = this.getClass().getClassLoader().getResource("/").toString().substring(6); // WEB-INF/classes
t += "../data/db";
logger.debug("Database directory is set to '" + t + "'");
log.debug("Database directory is set to '{}'", t);
try {
this.conn = DriverManager.getConnection("jdbc:derby:" + t + ";create=true;");
} catch (SQLException ex) {
logger.error(ex.getMessage(), ex);
log.error(ex.getMessage(), ex);
if(!fail) {
logger.warn("Deleting database directory.");
log.warn("Deleting database directory.");
recursiveDelete(new File(t));
logger.warn("Retrying to connect to database.");
log.warn("Retrying to connect to database.");
return isConnected(true);
} else {
return false;
181,7 → 178,6
}
return false;
}
 
}
 
 
/xservices/trunk/src/main/java/net/brutex/xservices/util/CVSClient.java
1,14 → 1,14
/* */ package net.brutex.xservices.util;
/* */
/* */ import java.io.File;
/* */ import net.brutex.xservices.types.scm.ItemType;
/* */ import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.types.scm.ItemType;
import net.brutex.xservices.util.CVSRoot;
 
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
/* */ import org.netbeans.lib.cvsclient.Client;
/* */ import org.netbeans.lib.cvsclient.admin.StandardAdminHandler;
/* */ import org.netbeans.lib.cvsclient.command.CommandAbortedException;
15,7 → 15,8
/* */ import org.netbeans.lib.cvsclient.command.GlobalOptions;
/* */ import org.netbeans.lib.cvsclient.connection.AuthenticationException;
/* */ import org.netbeans.lib.cvsclient.connection.PServerConnection;
/* */
/* */
@Slf4j
/* */ public class CVSClient
/* */ {
/* */ private final File configfile;
22,7 → 23,6
/* */ private final PServerConnection connection;
/* */ private final CVSRoot root;
/* */ private final GlobalOptions globalOptions;
/* 41 */ final Logger logger = LogManager.getLogger();
/* */ public final Client client;
/* */
/* */ public Client getClient()
61,7 → 61,7
/* */ try {
/* 79 */ this.connection.open();
/* */ } catch (AuthenticationException ex) {
/* 81 */ this.logger.error(ex.getMessage());
/* 81 */ log.error(ex.getMessage());
/* */ }
/* */
/* 84 */ this.client = new Client(this.connection, new StandardAdminHandler());
/xservices/trunk/src/main/java/net/brutex/xservices/util/FileWalker.java
15,6 → 15,8
*/
package net.brutex.xservices.util;
 
import lombok.extern.slf4j.Slf4j;
 
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
26,11 → 28,7
import java.util.List;
 
 
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
import net.brutex.xservices.types.FileInfoType;
 
// TODO: Auto-generated Javadoc
/**
* The Class FileWalker.
37,6 → 35,7
*
* @author Brian Rosenberger, bru(at)brutex.de
*/
@Slf4j
public class FileWalker extends SimpleFileVisitor<Path> {
/** The matcher. */
51,9 → 50,6
/** The pattern. */
private final String pattern;
/** The logger. */
private static final Logger logger = LogManager.getLogger();
 
List<Path> list;
/**
78,11 → 74,11
*/
void find(Path file) {
Path name = file.getFileName();
logger.trace("Compare file " + file.toString() + " against pattern '"+pattern+"'.");
log.debug("Compare file '{}' against pattern '{}'.", file, pattern);
total++;
if (name != null && matcher.matches(name)) {
list.add(file);
logger.debug("Added file " + file.toString() + " to the result set.");
log.debug("Added file '{}' to the result set.", file);
num++;
}
}
118,7 → 114,7
@Override
public FileVisitResult visitFileFailed(Path file,
IOException exc) {
logger.warn(String.format("Failed to include file '%s'.", file.toString()));
log.warn("Failed to include file '{}'.", file);
return FileVisitResult.CONTINUE;
}
/xservices/trunk/src/main/java/net/brutex/xservices/util/OpenAirConnection.java
9,13 → 9,13
import java.io.InputStreamReader;
import java.net.URL;
 
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
 
import net.brutex.mgmt.openair.OpenAirRestConnection;
 
/**
22,16 → 22,17
* @author brosenberger
*
*/
@Slf4j
public final class OpenAirConnection {
private final static Logger logger = LogManager.getLogger();
 
public static OpenAirRestConnection getOpenAirConnection() {
final PropertiesConfiguration props;
try {
final String config = "../openair.properties";
logger.info("Loading Open Air connection details from {}", config.toString());
log.info("Loading Open Air connection details from {}", config.toString());
final URL configloc = OpenAirConnection.class.getClassLoader().getResource(config);
logger.debug("Loading Open Air connection details from {}", configloc.toString());
log.debug("Loading Open Air connection details from {}", configloc.toString());
 
props = new PropertiesConfiguration();
props.read( new InputStreamReader( new BufferedInputStream(configloc.openStream())) );
46,12 → 47,9
 
con = new OpenAirRestConnection(JCS.getInstance("OACache"), company, user, password);
return con;
} catch (CacheException e) {
logger.error(e.getMessage(), e);
} catch (CacheException | ConfigurationException e) {
log.error(e.getMessage(), e);
e.printStackTrace();
} catch (ConfigurationException e) {
logger.error(e.getMessage(), e);
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
/xservices/trunk/src/main/java/net/brutex/xservices/util/cache/CacheServlet.java
23,19 → 23,19
import java.util.concurrent.ExecutorService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
 
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.types.scm.ObjectFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
 
/**
* @author Brian Rosenberger, bru(at)brutex.de
*
*/
 
 
@Slf4j
public class CacheServlet extends HttpServlet
{
private static final Logger logger = LogManager.getLogger();
List<File> configfiles = new ArrayList<File>();
int cacheinterval;
private final ObjectFactory FACTORY = new ObjectFactory();
54,7 → 54,7
if (name.startsWith("cvs-config-")) {
String configfile = getServletContext()
.getInitParameter(name);
this.logger.info("CVS configuration file: " + configfile);
log.info("CVS configuration file: {}", configfile);
this.configfiles.add(new File(configfile));
}
}
63,8 → 63,8
this.cacheinterval = Integer.parseInt(getServletContext()
.getInitParameter("cvs-cache-interval"));
} catch (NumberFormatException e) {
this.logger.debug("Could not read parameter 'cvs-cache-interval' from web.xml. Using default value '" + this.cacheinterval + "' minutes");
log.debug("Could not read parameter 'cvs-cache-interval' from web.xml. Using default value '{}' minutes", this.cacheinterval );
}
this.logger.info("CacheServlet set to " + this.cacheinterval + " minutes interval.");
log.info("CacheServlet set to '{}' minutes interval.", this.cacheinterval);
}
}
/xservices/trunk/src/main/java/net/brutex/xservices/util/cache/FindingsCacheServlet.java
30,6 → 30,8
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.ws.rs.core.Response;
 
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.types.scm.ItemListType;
import net.brutex.xservices.types.scm.ItemType;
import net.brutex.xservices.types.scmfindings.FindingDetailsType;
43,18 → 45,16
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
 
/**
* @author Brian Rosenberger, bru(at)brutex.de
*
*/
 
@Slf4j
public class FindingsCacheServlet extends HttpServlet {
 
private static final long serialVersionUID = 4041338473949999960L;
private static final Logger logger = LogManager.getLogger();
private final List<File> configfiles = new ArrayList<File>();
private final ObjectFactory FACTORY = new ObjectFactory();
private ExecutorService executor;
71,7 → 71,7
int i = 1;
for(File f: configfiles) {
//Initialise configuration bean using default values
FindingsConfigBean cbean = new FindingsConfigBean(i, LogManager.getLogger("worker-"+i+ "." + this.getClass().getName()));
FindingsConfigBean cbean = new FindingsConfigBean(i);
i++;
81,9 → 81,9
int cacheinterval = Integer.parseInt(getServletContext()
.getInitParameter("cvs-cache-interval"));
cbean.setCacheinterval(cacheinterval);
logger.info("FindingsCacheServlet set to "+ cacheinterval + " minutes interval.");
log.info("FindingsCacheServlet set to "+ cacheinterval + " minutes interval.");
} catch (NumberFormatException e) {
logger.warn("Could not read parameter 'cvs-cache-interval' from web.xml. Using default value '"
log.warn("Could not read parameter 'cvs-cache-interval' from web.xml. Using default value '"
+ cbean.getCacheinterval()+ "' minutes");
}
92,7 → 92,7
try {
config = configs.properties(f);
} catch (ConfigurationException e) {
logger.error("Could not read parameter file at '"+f.getAbsolutePath()+"'");
log.error("Could not read parameter file at '"+f.getAbsolutePath()+"'");
return;
}
99,13 → 99,13
File cvsconfig = new File(config.getString("CVSROOTCONFIGFILE"));
cbean.setCvsconfig(cvsconfig);
FindingsCacheServlet.logger.debug("Fetching list of files using '"
FindingsCacheServlet.log.debug("Fetching list of files using '"
+ cvsconfig.getAbsolutePath() + "' config file");
List<Object> filepatterns = config.getList("FILESEARCH");
cbean.setFilepatterns(filepatterns);
FindingsCacheServlet.logger.debug("Checking '"
FindingsCacheServlet.log.debug("Checking '"
+ filepatterns.size()
+ "' patterns for file name and path matching.");
112,7 → 112,7
List<Object> contentpatterns = config.getList("CONTENTSEARCH");
cbean.setContentpatterns(contentpatterns);
FindingsCacheServlet.logger.debug("Checking '"
FindingsCacheServlet.log.debug("Checking '"
+ contentpatterns.size()
+ "' patterns for content matching");
122,7 → 122,7
executor.submit(new ThisRunnable(cbean));
}
logger.info("FindingsCacheServlet has been initialized.");
log.info("FindingsCacheServlet has been initialized.");
 
}
133,14 → 133,14
String filename = getServletContext().getInitParameter(
"cvs-findings-configuration");
if (filename == null) {
logger.warn("'cvs-findings-configuration' init parameter is not specified.");
log.warn("'cvs-findings-configuration' init parameter is not specified.");
return false;
}
final File findingsconfig = new File(filename);
logger.info("CVS findings configuration file found at '"
log.info("CVS findings configuration file found at '"
+ findingsconfig.getAbsolutePath() + "'");
if ((!findingsconfig.canRead()) || (findingsconfig.isDirectory())) {
logger.info("CVS findings configuration file '"
log.info("CVS findings configuration file '"
+ findingsconfig.getAbsolutePath() + "' does not exist.");
return false;
}
158,7 → 158,7
String name = (String) attributes.nextElement();
if (name.startsWith("cvs-config-")) {
String configfile = getServletContext().getInitParameter(name);
logger.info("Adding CVS configuration file: " + configfile);
log.info("Adding CVS configuration file: " + configfile);
this.configfiles.add(new File(configfile));
}
}
168,12 → 168,12
List<File> removelist = new ArrayList<File>();
for (File f : configfiles) {
if (!f.exists()) {
logger.warn("CVS configuration file '"
log.warn("CVS configuration file '"
+ f.getAbsolutePath()
+ "' is specified, but does not exist. Removing from list.");
removelist.add(f);
} else if (!f.canRead()) {
logger.warn("CVS configuration file '"
log.warn("CVS configuration file '"
+ f.getAbsolutePath()
+ "' does exist, but is not readable. Removing from list.");
removelist.add(f);
203,7 → 203,7
ObjectFactory FACTORY = new ObjectFactory();
FindingsListType findingsList = FACTORY.createFindingsListType();
 
FindingsCacheServlet.logger.info("Processing '"
FindingsCacheServlet.log.info("Processing '"
+ fileslist.getItems().size() + "' files and directories.");
 
while (!this.isInterrupted) {
216,7 → 216,7
Object o = iterF.next();
if (this.isInterrupted)
break;
FindingsCacheServlet.logger.debug("Scanning filename '"
FindingsCacheServlet.log.debug("Scanning filename '"
+ i.getFullname() + "' for pattern '"
+ (String) o + "'");
p = Pattern.compile((String) o);
231,17 → 231,17
finding.setData(it.getData());
finding = copyDetails(finding, i);
findingsList.getFindings().add(finding);
FindingsCacheServlet.logger
FindingsCacheServlet.log
.debug("Match found for '"
+ i.getFullname() + "'");
break;
}
FindingsCacheServlet.logger
FindingsCacheServlet.log
.debug("No match found for '" + i.getFullname()
+ "'");
}
}
FindingsCacheServlet.logger
FindingsCacheServlet.log
.debug("Processing file content for '"
+ findingsList.getFindings().size()
+ "' entries in the list.");
257,7 → 257,7
Object o = iter.next();
if (this.isInterrupted)
break;
FindingsCacheServlet.logger
FindingsCacheServlet.log
.debug("Scanning file content for file '"
+ t.getFullname() + "' for pattern '"
+ (String) o + "'");
293,7 → 293,7
fd.getMatchLists().add(gmg);
}
t.getFindingLists().add(fd);
FindingsCacheServlet.logger
FindingsCacheServlet.log
.debug("Found matching content at index '" + s
+ "' in file '" + t.getFullname()
+ "' with pattern '" + p1.toString()
302,7 → 302,7
 
if (!isFound) {
findingsList.getFindings().remove(t);
FindingsCacheServlet.logger
FindingsCacheServlet.log
.debug("Found matching filename for '"
+ t.getFullname()
+ "' but content didn't match. Removing.");
311,24 → 311,24
try {
instance.getCacheInstance().put(
"FINDINGS-" + t.getROOT(), findingsList);
FindingsCacheServlet.logger
FindingsCacheServlet.log
.info("FINDINGS for CVSROOT '" + t.getROOT()
+ "' have been updated in cache.");
} catch (CacheException e) {
FindingsCacheServlet.logger.error(e.getMessage(), e);
FindingsCacheServlet.log.error(e.getMessage(), e);
}
}
try {
int cacheinterval = configuration.getCacheinterval();
FindingsCacheServlet.logger.debug("Now sleeping for '"
FindingsCacheServlet.log.debug("Now sleeping for '"
+ cacheinterval + "' minutes");
Thread.currentThread();
Thread.sleep(cacheinterval * 60000);
FindingsCacheServlet.logger.debug("Waking up after '"
FindingsCacheServlet.log.debug("Waking up after '"
+ cacheinterval + "' minutes of sleep");
} catch (InterruptedException e) {
this.isInterrupted = true;
FindingsCacheServlet.logger
FindingsCacheServlet.log
.warn("FindingsCacheServlet cache was interrupted. Shutting down.");
}
}
361,9 → 361,9
executor.shutdown();
try {
executor.awaitTermination(3, TimeUnit.SECONDS);
logger.info("Cache Worker Threads have shut down.");
log.info("Cache Worker Threads have shut down.");
} catch (InterruptedException e) {
logger.error("Cache Worker Threads did not terminate within timeout.", e);
log.error("Cache Worker Threads did not terminate within timeout.", e);
}
super.destroy();
}
/xservices/trunk/src/main/java/net/brutex/xservices/util/cache/FindingsConfigBean.java
16,18 → 16,22
 
package net.brutex.xservices.util.cache;
 
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
 
import java.io.File;
import java.util.List;
 
import org.apache.logging.log4j.Logger;
 
 
/**
* @author Brian Rosenberger, bru(at)brutex.de
*
*/
@Slf4j
public class FindingsConfigBean {
 
private Logger logger;
 
private final int instanceid;
 
private File cvsconfig;
35,11 → 39,11
private List<Object> filepatterns;
private List<Object> contentpatterns;
 
public FindingsConfigBean(int instanceid, Logger logger) {
public FindingsConfigBean(int instanceid) {
this.instanceid = instanceid;
this.logger = logger;
logger.debug("Initialise FindingsConfigBean instance '" + instanceid + "'");
 
log.debug("Initialise FindingsConfigBean instance '" + instanceid + "'");
 
}
 
/**