Skip to content

Commit

Permalink
SchemaGenScriptsTest updated to take lazy init providers into account
Browse files Browse the repository at this point in the history
  • Loading branch information
arjantijms committed May 6, 2017
1 parent 50dc59d commit a570b3a
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 44 deletions.
5 changes: 2 additions & 3 deletions jpa/schema-gen-scripts-generate/pom.xml
Expand Up @@ -6,13 +6,12 @@
<artifactId>jpa</artifactId>
<groupId>org.javaee7</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>org.javaee7</groupId>
<artifactId>jpa-schema-gen-scripts-generate</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<name>Java EE 7 Sample: jpa - schema-gen-scripts-generate</name>

<build>
<resources>
<resource>
Expand Down
Expand Up @@ -52,6 +52,7 @@
})
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;

@Id
private int id;

Expand Down
@@ -0,0 +1,23 @@
package org.javaee7.jpasamples.schema.gen.scripts.generate;

import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Singleton
@Startup
public class StartupBean {

// Some provider like EclipseLink on Payara initialize JPA more lazily
// and need this to be able to spring into action and generate the scripts
@PersistenceContext
private EntityManager entityManager;

@PostConstruct
public void init() {
System.out.println("Hello, world");
}

}
Expand Up @@ -7,8 +7,10 @@
<persistence-unit name="MyPU" transaction-type="JTA">
<properties>
<property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.create-target" value="${project.build.directory}/create-script.sql"/>
<property name="javax.persistence.schema-generation.scripts.drop-target" value="${project.build.directory}/drop-script.sql"/>
<property name="javax.persistence.schema-generation.create-source" value="metadata"/>
<property name="javax.persistence.schema-generation.drop-source" value="metadata"/>
<property name="javax.persistence.schema-generation.scripts.create-target" value="/${project.build.directory}/create-script.sql"/>
<property name="javax.persistence.schema-generation.scripts.drop-target" value="/${project.build.directory}/drop-script.sql"/>
</properties>
</persistence-unit>
</persistence>
@@ -1,23 +1,23 @@
package org.javaee7.jpasamples.schema.gen.scripts.generate;

import static java.nio.charset.StandardCharsets.UTF_8;
import static java.nio.file.Files.exists;
import static java.nio.file.Files.readAllBytes;
import static java.nio.file.Paths.get;
import static org.jboss.shrinkwrap.api.ShrinkWrap.create;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.nio.file.Path;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.io.BufferedReader;
import java.io.File;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.jboss.arquillian.container.test.api.RunAsClient;

import static org.junit.Assert.assertTrue;

/**
* @author Roberto Cortez
*/
Expand All @@ -26,48 +26,32 @@ public class SchemaGenScriptsTest {

@Deployment
public static WebArchive createDeployment() {
WebArchive war = ShrinkWrap.create(WebArchive.class)
WebArchive war = create(WebArchive.class)
.addPackage("org.javaee7.jpasamples.schema.gen.scripts.generate")
.addAsResource("META-INF/persistence.xml");

System.out.println(war.toString(true));

return war;
}

@After
public void tearDown() throws Exception {
System.out.println(new File("target/create-script.sql").getAbsolutePath());
System.out.println("Absolute path of create-script.sql: " + new File("target/create-script.sql").getAbsolutePath());
new File("target/create-script.sql").delete();
new File("target/drop-script.sql").delete();
}

@Test
@RunAsClient
public void testSchemaGenIndex() throws Exception {
Path create = Paths.get("target","create-script.sql");
assertTrue(Files.exists(create));

Path drop = Paths.get("target","drop-script.sql");
assertTrue(Files.exists(create));

String line;
BufferedReader reader = Files.newBufferedReader(create, Charset.defaultCharset());
boolean createGenerated = false;
while ((line = reader.readLine()) != null) {
if (line.toLowerCase().contains("create table employee_schema_gen_scripts_generate")) {
createGenerated = true;
}
}

reader = Files.newBufferedReader(drop, Charset.defaultCharset());
boolean dropGenerated = false;
while ((line = reader.readLine()) != null) {
if (line.toLowerCase().contains("drop table employee_schema_gen_scripts_generate")) {
dropGenerated = true;
break;
}
}

assertTrue(createGenerated);
assertTrue(dropGenerated);
Path create = get("target","create-script.sql");
Path drop = get("target","drop-script.sql");

assertTrue(exists(create));
assertTrue(exists(drop));

assertTrue(new String(readAllBytes(create), UTF_8).toLowerCase().contains("create table employee_schema_gen_scripts_generate"));
assertTrue(new String(readAllBytes(drop), UTF_8).toLowerCase().contains("drop table employee_schema_gen_scripts_generate"));
}
}

0 comments on commit a570b3a

Please sign in to comment.