diff options
3 files changed, 49 insertions, 5 deletions
| diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java index 35b69274f..6476ea1f1 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java @@ -43,6 +43,7 @@ import org.opensaml.saml2.metadata.provider.MetadataProviderException;  import org.opensaml.xml.parse.BasicParserPool;  import org.opensaml.xml.security.x509.BasicX509Credential; +import at.gv.egovernment.moa.id.commons.MOAIDConstants;  import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;  import at.gv.egovernment.moa.id.commons.ex.MOAHttpProtocolSocketFactoryException;  import at.gv.egovernment.moa.id.commons.utils.MOAHttpProtocolSocketFactory; @@ -76,9 +77,20 @@ public class OAPVP2ConfigValidation {  			else {  				try { -					//OracleDB does not allow the selection of a lob in SQL where expression   -					String dbDriver = ConfigurationProvider.getInstance().getConfigurationProperties().getProperty("hibernate.connection.driver_class"); -					boolean backupVersion = MiscUtil.isNotEmpty(dbDriver) && dbDriver.startsWith("oracle.jdbc."); +					//Some databases does not allow the selection of a lob in SQL where expression   +					String dbDriver = ConfigurationProvider.getInstance().getConfigurationProperties().getProperty("hibernate.connection.driver_class");					 +					boolean backupVersion = false; +					if (MiscUtil.isNotEmpty(dbDriver)) { +						for (String el:MOAIDConstants.JDBC_DRIVER_NEEDS_WORKAROUND) { +							if (dbDriver.startsWith(el)) { +								backupVersion = true; +								log.debug("JDBC driver '" + dbDriver  +										+ "' is blacklisted --> Switch to alternative DB access methode implementation."); +								 +							} +							 +						}						 +					}  					Map<String, String> oa = ConfigurationProvider.getInstance().getDbRead().getOnlineApplicationKeyValueWithId(oaID, backupVersion);  					if (oa != null &&  diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java index 00d38eec9..d4620cd1a 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java @@ -22,8 +22,14 @@ import org.springframework.context.ApplicationContext;  import org.springframework.context.support.ClassPathXmlApplicationContext;  import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants; +import at.gv.egovernment.moa.id.commons.MOAIDConstants;  import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;  import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration; +import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentGeneral; +import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOASP; +import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication; +import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SecurityLayer; +import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.VerifyIdentityLink;  import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;  import at.gv.egovernment.moa.id.config.ConfigurationException;  import at.gv.egovernment.moa.id.config.ConfigurationProviderImpl; @@ -50,6 +56,8 @@ public class PropertyBasedAuthConfigurationProvider extends ConfigurationProvide  	private final Properties properties = new Properties();  	private ApplicationContext context = null; +	private boolean requireJDBCBackupImplementation = false; +	  	public PropertyBasedAuthConfigurationProvider() {  	} @@ -86,6 +94,20 @@ public class PropertyBasedAuthConfigurationProvider extends ConfigurationProvide  			AutowireCapableBeanFactory acbFactory = context.getAutowireCapableBeanFactory();  			acbFactory.autowireBean(this); +			//Some databases do not allow the selection of a lob in SQL where expression   +			String dbDriver = properties.getProperty("configuration.hibernate.connection.driver_class");					 +			if (MiscUtil.isNotEmpty(dbDriver)) { +				for (String el:MOAIDConstants.JDBC_DRIVER_NEEDS_WORKAROUND) { +					if (dbDriver.startsWith(el)) { +						requireJDBCBackupImplementation = true; +						Logger.info("JDBC driver '" + dbDriver  +						+ "' is blacklisted --> Switch to alternative DB access methode implementation."); +						 +					}					 +				}						 +			} +			 +			  		} catch (FileNotFoundException e) {  			throw new ConfigurationException("config.03", null, e); @@ -1012,9 +1034,11 @@ public class PropertyBasedAuthConfigurationProvider extends ConfigurationProvide  		Logger.trace("Get active OnlineApplication with ID " + id + " from database.");  		Map<String, String> oaConfig = null;  		try { -			//OracleDB does not allow the selection of a lob in SQL where expression   +			 +			//TODO: +			//Some databases do not allow the selection of a lob in SQL where expression    			String dbDriver = properties.getProperty("configuration.hibernate.connection.driver_class"); -			if (MiscUtil.isNotEmpty(dbDriver) && dbDriver.startsWith("oracle.jdbc.")) +			if (requireJDBCBackupImplementation)  				oaConfig = configuration.getOnlineApplicationBackupVersion(id);  			else diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDConstants.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDConstants.java index a04b8f454..a28fe6a7b 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDConstants.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDConstants.java @@ -61,6 +61,7 @@ public class MOAIDConstants {      public static final List<String> ALLOWED_KEYBOXIDENTIFIER;      public static final List<String> ALLOWED_REDIRECTTARGETNAMES;      public static final List<String> ALLOWED_STORKATTRIBUTEPROVIDERS; +    public static final List<String> JDBC_DRIVER_NEEDS_WORKAROUND;  	static { @@ -105,4 +106,11 @@ public class MOAIDConstants {  	} +	static { +		List<String> jdbcDriverWorkaround = new ArrayList<String>(); +		jdbcDriverWorkaround.add("oracle.jdbc."); +		jdbcDriverWorkaround.add("com.microsoft.sqlserver.");		 +		JDBC_DRIVER_NEEDS_WORKAROUND = Collections.unmodifiableList(jdbcDriverWorkaround); +	} +	  } | 
