Skip to content
Snippets Groups Projects
Commit 37fe1c2d authored by gmantele's avatar gmantele
Browse files

TAP: Missing NULL test (if the property JDBC URL is not provided a...

TAP: Missing NULL test (if the property JDBC URL is not provided a NullPointerException would have occurred)
parent f8e64d37
No related branches found
No related tags found
No related merge requests found
package tap.config; package tap.config;
import static tap.config.TAPConfiguration.*; import static tap.config.TAPConfiguration.DEFAULT_BACKUP_BY_USER;
import static tap.config.TAPConfiguration.DEFAULT_BACKUP_FREQUENCY;
import static tap.config.TAPConfiguration.KEY_BACKUP_BY_USER;
import static tap.config.TAPConfiguration.KEY_BACKUP_FREQUENCY;
import static tap.config.TAPConfiguration.KEY_DB_PASSWORD;
import static tap.config.TAPConfiguration.KEY_DB_USERNAME;
import static tap.config.TAPConfiguration.KEY_JDBC_DRIVER;
import static tap.config.TAPConfiguration.KEY_JDBC_URL;
import static tap.config.TAPConfiguration.KEY_SQL_TRANSLATOR;
import static tap.config.TAPConfiguration.VALUE_JDBC_DRIVERS;
import static tap.config.TAPConfiguration.VALUE_PGSPHERE;
import static tap.config.TAPConfiguration.VALUE_POSTGRESQL;
import static tap.config.TAPConfiguration.VALUE_USER_ACTION;
import static tap.config.TAPConfiguration.getProperty;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.Properties; import java.util.Properties;
import adql.translator.ADQLTranslator;
import adql.translator.PgSphereTranslator;
import adql.translator.PostgreSQLTranslator;
import tap.AbstractTAPFactory; import tap.AbstractTAPFactory;
import tap.ServiceConnection; import tap.ServiceConnection;
import tap.TAPException; import tap.TAPException;
...@@ -18,6 +28,9 @@ import tap.db.JDBCConnection; ...@@ -18,6 +28,9 @@ import tap.db.JDBCConnection;
import uws.UWSException; import uws.UWSException;
import uws.service.UWSService; import uws.service.UWSService;
import uws.service.backup.UWSBackupManager; import uws.service.backup.UWSBackupManager;
import adql.translator.ADQLTranslator;
import adql.translator.PgSphereTranslator;
import adql.translator.PostgreSQLTranslator;
public final class DefaultTAPFactory extends AbstractTAPFactory<ResultSet> { public final class DefaultTAPFactory extends AbstractTAPFactory<ResultSet> {
...@@ -31,15 +44,13 @@ public final class DefaultTAPFactory extends AbstractTAPFactory<ResultSet> { ...@@ -31,15 +44,13 @@ public final class DefaultTAPFactory extends AbstractTAPFactory<ResultSet> {
private boolean backupByUser; private boolean backupByUser;
private long backupFrequency; private long backupFrequency;
@SuppressWarnings("unchecked")
public DefaultTAPFactory(ServiceConnection<ResultSet> service, final Properties tapConfig) throws NullPointerException, TAPException{ public DefaultTAPFactory(ServiceConnection<ResultSet> service, final Properties tapConfig) throws NullPointerException, TAPException{
super(service); super(service);
/* 0. Extract the DB type and deduce the JDBC Driver path */ /* 0. Extract the DB type and deduce the JDBC Driver path */
String jdbcDriver = getProperty(tapConfig, KEY_JDBC_DRIVER); String jdbcDriver = getProperty(tapConfig, KEY_JDBC_DRIVER);
String dbUrl = null; String dbUrl = getProperty(tapConfig, KEY_JDBC_URL);
if (jdbcDriver == null){ if (jdbcDriver == null){
dbUrl = getProperty(tapConfig, KEY_JDBC_URL);
if (dbUrl == null) if (dbUrl == null)
throw new TAPException("JDBC URL missing."); throw new TAPException("JDBC URL missing.");
else if (!dbUrl.startsWith(JDBCConnection.JDBC_PREFIX + ":")) else if (!dbUrl.startsWith(JDBCConnection.JDBC_PREFIX + ":"))
...@@ -67,20 +78,13 @@ public final class DefaultTAPFactory extends AbstractTAPFactory<ResultSet> { ...@@ -67,20 +78,13 @@ public final class DefaultTAPFactory extends AbstractTAPFactory<ResultSet> {
translator = PostgreSQLTranslator.class; translator = PostgreSQLTranslator.class;
// case c.) PgSphere translator // case c.) PgSphere translator
else if (sqlTranslator.equals(VALUE_PGSPHERE)) else if (sqlTranslator.equalsIgnoreCase(VALUE_PGSPHERE))
translator = PgSphereTranslator.class; translator = PgSphereTranslator.class;
// case d.) a client defined ADQLTranslator (with the provided class path) // case d.) a client defined ADQLTranslator (with the provided class path)
else if (sqlTranslator.charAt(0) == '{' && sqlTranslator.charAt(sqlTranslator.length() - 1) == '}'){ else if (TAPConfiguration.isClassPath(sqlTranslator))
sqlTranslator = sqlTranslator.substring(1, sqlTranslator.length() - 2); translator = TAPConfiguration.fetchClass(sqlTranslator, KEY_SQL_TRANSLATOR, ADQLTranslator.class);
try{
translator = (Class<? extends ADQLTranslator>)ClassLoader.getSystemClassLoader().loadClass(sqlTranslator);
}catch(ClassNotFoundException cnfe){
throw new TAPException("Unable to load the SQL Translator! The class specified by the property sql_translator (" + sqlTranslator + ") can not be found.");
}catch(ClassCastException cce){
throw new TAPException("Unable to load the SQL Translator! The class specified by the property sql_translator (" + sqlTranslator + ") is not implementing adql.translator.ADQLTranslator.");
}
}
// case e.) unsupported value // case e.) unsupported value
else else
throw new TAPException("Unsupported value for the property sql_translator: \"" + sqlTranslator + "\" !"); throw new TAPException("Unsupported value for the property sql_translator: \"" + sqlTranslator + "\" !");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment