/** * Starts a new EmfWork. The caller is responsible to close the work. * @return EmfWork with a new transaction */ protected final EmfWork startNewWork() { return this.emfUtil.startWork(); }
JuEmfUtilBuilder.emfUtils.put(xs, new JuEmfUtil(emf));
@Test public void canPerformWork_usingEmfUtil() { JuEmfUtil emfUtil = JuEmfUtil.create() .persistenceUnitName("ju-dbutil JuEmfUtilTest") .connectionUrl("jdbc:derby:memory:ju-dbutil_emfUtilTest_db1;create=true") .build(); try (EmfWork work = emfUtil.startWork()) { Query q = work.getEm().createNativeQuery("values 1"); Assert.assertEquals(1, q.getSingleResult()); } } }
/** * Creates a JuEmfUtil instance for the specified persistence unit and profile. * @param persistenceUnitName PersistenceUnitName * @param profile Profile name. If null, the value of the property <code>ju-dbutil-test.profile</code> will be used * @return JuEmfUtil instance */ public JuEmfUtil createEmfUtil(String persistenceUnitName, String profile) { logger.debug("Creating JuEmfUtil for PU {} and profile {}", persistenceUnitName, profile); PropertyChain pc = JuUtils.getJuPropertyChain(); String profileName = profile != null ? profile : pc.get("ju-dbutil-test.profile", true); String prefix = "ju-dbutil-test." + profileName; String connectionUrl = pc.get(prefix + ".connectionUrl", false); String user = pc.get(prefix + ".user", false); String password = pc.get(prefix + ".password", false); JuEmfUtil emfUtil = JuEmfUtil.create() .persistenceUnitName(persistenceUnitName) .connectionUrl(connectionUrl) .user(user) .password(password) .build(); return emfUtil; } }
@Test public void builder_returnsSameInstance_forSameProps() { JuEmfUtil emfUtil1 = JuEmfUtil.create() .persistenceUnitName("ju-dbutil JuEmfUtilTest") .connectionUrl("jdbc:derby:memory:ju-dbutil_emfUtilTest_db1;create=true") .build(); JuEmfUtil emfUtil1b = JuEmfUtil.create() .persistenceUnitName("ju-dbutil JuEmfUtilTest") .connectionUrl("jdbc:derby:memory:ju-dbutil_emfUtilTest_db1;create=true") .build(); Assert.assertSame(emfUtil1, emfUtil1b); JuEmfUtil emfUtil2 = JuEmfUtil.create() .persistenceUnitName("ju-dbutil JuEmfUtilTest") .connectionUrl("jdbc:derby:memory:ju-dbutil_emfUtilTest_db2;create=true") .build(); Assert.assertNotSame(emfUtil1, emfUtil2); }
@Override protected void runDbInitializationScripts(JuEmfUtil emfUtil) { try (EmfWork ew = emfUtil.startWork()) { new DbSchemaUtil(ew.getEm()).prepareDefaultSchemaAndTestData();; } }
@Test public void builder_canBuildEmfUtil_forDerby() { JuEmfUtil emfUtil = JuEmfUtil.create() .persistenceUnitName("ju-dbutil JuEmfUtilTest") .connectionUrl("jdbc:derby:memory:ju-dbutil_emfUtilTest_db1;create=true") .build(); AssertUtil.assertNotNull(emfUtil); }
@Override protected void runDbInitializationScripts(JuEmfUtil emfUtil) { try (EmfWork ew = emfUtil.startWork()) { new DbSchemaUtil(ew.getEm()).prepareDefaultSchemaAndTestData();; } }
@Override public void evaluate() throws Throwable { // Run dbInitializationScripts dbTest.runDbInitializationScripts(dbTest.emfUtil); DbTestAnnotationHandler annotationHandler = new DbTestAnnotationHandler(method, description); // Run preAnnotations in own transaction try (EmfWork ew = dbTest.emfUtil.startWork()) { annotationHandler.executePreTestAnnotations(ew.getEmUtil()); } // Initialize protected fields of test class dbTest.emfWork = dbTest.emfUtil.startWork(); dbTest.em = dbTest.emfWork.getEm(); dbTest.emUtil = new JuEmUtil(dbTest.em); // Run test method base.evaluate(); // Run post server code in own transaction try (EmfWork ew = dbTest.emfUtil.startWork()) { annotationHandler.executePostServerCode(ew.getEmUtil()); } // Run postAnnotations in own transaction try (EmfWork ew = dbTest.emfUtil.startWork()) { annotationHandler.executePostTestAnnotations(ew.getEmUtil()); } } };