/extensions/persist/test/com/google/inject/persist/jpa/EnsureJpaCanTakeObjectsInPropertiesTest.java
Java | 110 lines | 71 code | 24 blank | 15 comment | 3 complexity | 48d7726d7105f70c5cc8eb2c8fbbe4cd MD5 | raw file
- /**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.google.inject.persist.jpa;
- import com.google.inject.AbstractModule;
- import com.google.inject.Guice;
- import com.google.inject.Injector;
- import com.google.inject.persist.PersistService;
- import com.google.inject.persist.UnitOfWork;
- import junit.framework.TestCase;
- import org.hibernate.cfg.Environment;
- import org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider;
- import org.hsqldb.jdbc.JDBCDataSource;
- import java.util.HashMap;
- import java.util.Map;
- import javax.persistence.EntityManagerFactory;
- import javax.persistence.PersistenceException;
- import javax.sql.DataSource;
- public class EnsureJpaCanTakeObjectsInPropertiesTest extends TestCase {
- private Injector injector;
- public static class DBModule extends AbstractModule {
- final DataSource ds;
- final boolean passDataSource;
- DBModule(DataSource ds, boolean passDataSource) {
- this.ds = ds;
- this.passDataSource = passDataSource;
- }
- @Override
- protected void configure() {
- Map<String, Object> p = new HashMap<String, Object>();
- p.put(Environment.CONNECTION_PROVIDER, InjectedDataSourceConnectionProvider.class.getName());
- if (passDataSource) {
- p.put(Environment.DATASOURCE, ds);
- }
- JpaPersistModule jpaPersistModule = new JpaPersistModule("testProperties").properties(p);
- install(jpaPersistModule);
- }
- }
- @Override
- public void setUp() {
- injector = null;
- }
- @Override
- public final void tearDown() {
- if (injector == null) {
- return;
- }
- injector.getInstance(UnitOfWork.class).end();
- injector.getInstance(EntityManagerFactory.class).close();
- }
- private static DataSource getDataSource() {
- final JDBCDataSource dataSource = new JDBCDataSource();
- dataSource.setDatabase("jdbc:hsqldb:mem:persistence");
- dataSource.setUser("sa");
- dataSource.setPassword("");
- return dataSource;
- }
- private void startPersistService(boolean passDataSource) {
- final DataSource dataSource = getDataSource();
- injector = Guice.createInjector(new DBModule(dataSource, passDataSource));
- //startup persistence
- injector.getInstance(PersistService.class).start();
- }
- public void testWorksIfPassDataSource() {
- startPersistService(true);
- }
- public void testFailsIfNoDataSource() {
- try {
- startPersistService(false);
- fail();
- } catch (PersistenceException ex) {
- // Expected
- injector = null;
- }
- }
- }