default Named getNamed() { return new NamedImpl(getIdentifier()); } }
@Override public Platform get() { try { String productName = jdbcTxManager.getConnection().getMetaData().getDatabaseProductName(); for (Platform platform : platforms) if (platform.detect(productName)) return platform; throw new OxalisLoadingException(String.format("Unable to load platform for '%s'.", productName)); } catch (SQLException e) { throw new OxalisLoadingException("Unable to detect database platform.", e); } } }
@Provides @Singleton public RawStatisticsRepository get(Injector injector, Platform platform) { return injector.getInstance(Key.get(RawStatisticsRepository.class, platform.getNamed())); } }
final boolean transaction = jdbcTxManager.isTransaction(); final boolean connection = jdbcTxManager.isConnection(); jdbcTxManager.trace(String.format("Transaction already exists so not starting a new one when calling method: %s", invocation.getMethod().getName())); return invocation.proceed(); jdbcTxManager.newConnection(false); jdbcTxManager.trace("Started new transaction due to annotation on method: " + invocation.getMethod().getName()); jdbcTxManager.commit(); } catch (Throwable thr) { jdbcTxManager.trace("Rolling back transaction due to exception: " + thr.getMessage()); jdbcTxManager.rollback(); jdbcTxManager.trace("Rolling back transaction ok"); jdbcTxManager.cleanUp();
@Test public void h2() { Platform platform = new H2Platform(); Assert.assertTrue(platform.detect("H2")); Assert.assertFalse(platform.detect("MySQL")); Assert.assertEquals(platform.getIdentifier(), H2Platform.IDENTIFIER); Assert.assertEquals(platform.getNamed().value(), H2Platform.IDENTIFIER); }
@Test public void mysql() { Platform platform = new MySQLPlatform(); Assert.assertFalse(platform.detect("H2")); Assert.assertTrue(platform.detect("MySQL")); Assert.assertEquals(platform.getIdentifier(), MySQLPlatform.IDENTIFIER); }
@Test(expectedExceptions = OxalisLoadingException.class) public void notFound() throws Exception { Mockito.doReturn(connection).when(jdbcTxManager).getConnection(); Mockito.doReturn(databaseMetaData).when(connection).getMetaData(); Mockito.doReturn("MySQL").when(databaseMetaData).getDatabaseProductName(); Platform platform = new H2Platform(); PlatformProvider platformProvider = new PlatformProvider(jdbcTxManager, Collections.singleton(platform)); platformProvider.get(); }
jdbcTxManager.trace(String.format( "Ignoring method %s because it is annotated with Transactional", invocation.getMethod().toGenericString())); if (jdbcTxManager.isConnection()) { jdbcTxManager.trace("Using existing connection for method " + invocation.getMethod().getName()); return invocation.proceed(); jdbcTxManager.newConnection(true); jdbcTxManager.trace("Fetched connection from datasource"); jdbcTxManager.cleanUp();
final boolean transaction = jdbcTxManager.isTransaction(); final boolean connection = jdbcTxManager.isConnection(); jdbcTxManager.trace(String.format("Transaction already exists so not starting a new one when calling method: %s", invocation.getMethod().getName())); return invocation.proceed(); jdbcTxManager.newConnection(false); jdbcTxManager.trace("Started new transaction due to annotation on method: " + invocation.getMethod().getName()); jdbcTxManager.commit(); } catch (Throwable thr) { jdbcTxManager.trace("Rolling back transaction due to exception: " + thr.getMessage()); jdbcTxManager.rollback(); jdbcTxManager.trace("Rolling back transaction ok"); jdbcTxManager.cleanUp();
@Test public void oracle() { Platform platform = new OraclePlatform(); Assert.assertFalse(platform.detect("H2")); Assert.assertTrue(platform.detect("Oracle")); Assert.assertEquals(platform.getIdentifier(), OraclePlatform.IDENTIFIER); } }
@Override public Platform get() { try { String productName = jdbcTxManager.getConnection().getMetaData().getDatabaseProductName(); for (Platform platform : platforms) if (platform.detect(productName)) return platform; throw new OxalisLoadingException(String.format("Unable to load platform for '%s'.", productName)); } catch (SQLException e) { throw new OxalisLoadingException("Unable to detect database platform.", e); } } }
@Test(expectedExceptions = OxalisLoadingException.class) public void exception() throws Exception { Mockito.doReturn(connection).when(jdbcTxManager).getConnection(); Mockito.doThrow(new SQLException()).when(connection).getMetaData(); Platform platform = new H2Platform(); PlatformProvider platformProvider = new PlatformProvider(jdbcTxManager, Collections.singleton(platform)); platformProvider.get(); } }
jdbcTxManager.trace(String.format( "Ignoring method %s because it is annotated with Transactional", invocation.getMethod().toGenericString())); if (jdbcTxManager.isConnection()) { jdbcTxManager.trace("Using existing connection for method " + invocation.getMethod().getName()); return invocation.proceed(); jdbcTxManager.newConnection(true); jdbcTxManager.trace("Fetched connection from datasource"); jdbcTxManager.cleanUp();
default Named getNamed() { return new NamedImpl(getIdentifier()); } }
@Provides @Singleton public RawStatisticsRepository get(Injector injector, Platform platform) { return injector.getInstance(Key.get(RawStatisticsRepository.class, platform.getNamed())); } }
@Test public void hsqldb() { Platform platform = new HSQLDBPlatform(); Assert.assertTrue(platform.detect("HSqlDB")); Assert.assertFalse(platform.detect("MySQL")); Assert.assertEquals(platform.getIdentifier(), HSQLDBPlatform.IDENTIFIER); }
@Test public void simple() throws Exception { Mockito.doReturn(connection).when(jdbcTxManager).getConnection(); Mockito.doReturn(databaseMetaData).when(connection).getMetaData(); Mockito.doReturn("H2").when(databaseMetaData).getDatabaseProductName(); Platform platform = new H2Platform(); PlatformProvider platformProvider = new PlatformProvider(jdbcTxManager, Collections.singleton(platform)); Assert.assertEquals(platformProvider.get(), platform); }
@Test public void mssql() { Platform platform = new MsSQLPlatform(); Assert.assertFalse(platform.detect("H2")); Assert.assertTrue(platform.detect("Microsoft")); Assert.assertEquals(platform.getIdentifier(), MsSQLPlatform.IDENTIFIER); }
PreparedStatement ps; try { con = jdbcTxManager.getConnection(); ps = con.prepareStatement(sql);
PreparedStatement ps; try { con = jdbcTxManager.getConnection(); ps = con.prepareStatement(sql);