Open srstsavage opened 8 years ago
Just a note, if it's decided that SettingsManager
shouldn't be able to reinitialize after cleanup()
is called we should at least catch when getConnection()
is called after cleanup()
. Right now the message is confusing : Unknown service requested [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
Example stacktrace:
java.lang.RuntimeException: org.n52.sos.ds.ConnectionProviderException: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:201)
at org.hibernate.internal.AbstractSessionImpl.getJdbcConnectionAccess(AbstractSessionImpl.java:341)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.<init>(JdbcCoordinatorImpl.java:114)
at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.<init>(TransactionCoordinatorImpl.java:89)
at org.hibernate.internal.SessionImpl.<init>(SessionImpl.java:258)
at org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1589)
at org.hibernate.internal.SessionFactoryImpl.openSession(SessionFactoryImpl.java:999)
at org.n52.sos.config.sqlite.SQLiteSessionFactoryForTesting.getConnection(SQLiteSessionFactoryForTesting.java:72)
at org.n52.sos.config.sqlite.SQLiteSessionFactoryForTesting.getConnection(SQLiteSessionFactoryForTesting.java:46)
at org.n52.sos.config.sqlite.SQLiteManager.execute(SQLiteManager.java:81)
at org.n52.sos.config.sqlite.SQLiteSettingsManager.execute(SQLiteSettingsManager.java:127)
at org.n52.sos.config.sqlite.ExtensionEnabledSQLiteSettingsManager.execute(ExtensionEnabledSQLiteSettingsManager.java:86)
at org.n52.sos.config.sqlite.ExtensionEnabledSQLiteSettingsManager.getActiveStaticCapabilities(ExtensionEnabledSQLiteSettingsManager.java:128)
at org.n52.sos.config.sqlite.ExtensionEnabledSQLiteSettingsManager.isStaticCapabilitiesActive(ExtensionEnabledSQLiteSettingsManager.java:162)
at org.n52.sos.ds.GetCapabilitiesDAO.getCapabilities(GetCapabilitiesDAO.java:204)
at org.n52.sos.request.operator.SosGetCapabilitiesOperatorV20.receive(SosGetCapabilitiesOperatorV20.java:71)
at org.n52.sos.request.operator.SosGetCapabilitiesOperatorV20.receive(SosGetCapabilitiesOperatorV20.java:53)
SettingsManager
provides thecleanup
method:This method is purely abstract and does not unset
SettingsManager
'sinstance
property, used ingetInstance()
:I'm running into this problem when trying to create a second integration test suite.
SOS40ComplianceTestSuite
runsSettingsManager.getInstance().cleanup()
in its@AfterClass
, which invalidates the SettingsManager for any tests running after the suite.If
SettingsManager.getInstance().cleanup()
setinstance = null
then I believe future calls toSettingsManager.getInstance()
would reinitialize theSettingsManager
, allowing for further usage.