Skip to content

Commit 8de0c2e

Browse files
committed
Merge branch 'hibernate4'
# Conflicts: # src/test/java/liquibase/ext/hibernate/HibernateIntegrationTest.java # src/test/java/liquibase/ext/hibernate/database/HibernateSpringDatabaseTest.java
2 parents 117d0b3 + 3a97f3c commit 8de0c2e

File tree

10 files changed

+146
-136
lines changed

10 files changed

+146
-136
lines changed

pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,19 @@
137137
<artifactId>liquibase-core</artifactId>
138138
<version>3.5.2-SNAPSHOT</version>
139139
</dependency>
140+
<dependency>
141+
<groupId>com.h2database</groupId>
142+
<artifactId>h2</artifactId>
143+
<version>1.4.192</version>
144+
</dependency>
140145
<dependency>
141146
<groupId>org.hsqldb</groupId>
142147
<artifactId>hsqldb</artifactId>
143148
<version>2.2.9</version>
144149
<scope>test</scope>
145150
</dependency>
146-
<dependency>
151+
152+
<dependency>
147153
<groupId>mysql</groupId>
148154
<artifactId>mysql-connector-java</artifactId>
149155
<version>5.1.26</version>

src/main/java/liquibase/ext/hibernate/diff/ChangedForeignKeyChangeGenerator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ public int getPriority(Class<? extends DatabaseObject> objectType, Database data
2525

2626
@Override
2727
public Change[] fixChanged(DatabaseObject changedObject, ObjectDifferences differences, DiffOutputControl control, Database referenceDatabase, Database comparisonDatabase, ChangeGeneratorChain chain) {
28-
if (referenceDatabase instanceof HibernateDatabase || comparisonDatabase instanceof HibernateDatabase) {
29-
return null;
30-
} else {
28+
// if (referenceDatabase instanceof HibernateDatabase || comparisonDatabase instanceof HibernateDatabase) {
29+
// return null;
30+
// } else {
3131
return super.fixChanged(changedObject, differences, control, referenceDatabase, comparisonDatabase, chain);
32-
}
32+
// }
3333
}
3434
}

src/main/java/liquibase/ext/hibernate/diff/ChangedUniqueConstraintChangeGenerator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ public Class<? extends DatabaseObject>[] runAfterTypes() {
3737

3838
@Override
3939
public Change[] fixChanged(DatabaseObject changedObject, ObjectDifferences differences, DiffOutputControl control, Database referenceDatabase, Database comparisonDatabase, ChangeGeneratorChain chain) {
40-
if (referenceDatabase instanceof HibernateDatabase || comparisonDatabase instanceof HibernateDatabase) {
41-
return null;
42-
} else {
40+
// if (referenceDatabase instanceof HibernateDatabase || comparisonDatabase instanceof HibernateDatabase) {
41+
// return null;
42+
// } else {
4343
return chain.fixChanged(changedObject, differences, control, referenceDatabase, comparisonDatabase);
44-
}
44+
// }
4545
}
4646

4747
@Override

src/main/java/liquibase/ext/hibernate/diff/UnexpectedIndexChangeGenerator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ public int getPriority(Class<? extends DatabaseObject> objectType, Database data
2424

2525
@Override
2626
public Change[] fixUnexpected(DatabaseObject unexpectedObject, DiffOutputControl control, Database referenceDatabase, Database comparisonDatabase, ChangeGeneratorChain chain) {
27-
if (referenceDatabase instanceof HibernateDatabase || comparisonDatabase instanceof HibernateDatabase) {
28-
return null;
29-
} else {
27+
// if (referenceDatabase instanceof HibernateDatabase || comparisonDatabase instanceof HibernateDatabase) {
28+
// return null;
29+
// } else {
3030
return super.fixUnexpected(unexpectedObject, control, referenceDatabase, comparisonDatabase, chain);
31-
}
31+
// }
3232
}
3333
}

src/main/java/liquibase/ext/hibernate/snapshot/ColumnSnapshotGenerator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ protected void snapshotColumn(Column column, DatabaseSnapshot snapshot) throws D
176176
column.setAutoIncrementInformation(new Column.AutoIncrementInformation());
177177
}
178178
}
179+
column.setNullable(false);
179180
}
180181
}
181182
return;

src/test/java/liquibase/ext/hibernate/HibernateIntegrationTest.java

Lines changed: 99 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import liquibase.Liquibase;
44
import liquibase.database.Database;
5-
import liquibase.database.core.HsqlDatabase;
5+
import liquibase.database.ObjectQuotingStrategy;
6+
import liquibase.database.core.H2Database;
67
import liquibase.database.jvm.JdbcConnection;
78
import liquibase.diff.DiffResult;
89
import liquibase.diff.Difference;
@@ -46,9 +47,9 @@ public class HibernateIntegrationTest {
4647

4748
@Before
4849
public void setUp() throws Exception {
49-
Class.forName("org.hsqldb.jdbc.JDBCDriver");
50-
connection = DriverManager.getConnection("jdbc:hsqldb:mem:TESTDB" + System.currentTimeMillis(), "SA", "");
51-
database = new HsqlDatabase();
50+
Class.forName("org.h2.Driver");
51+
connection = DriverManager.getConnection("jdbc:h2:mem:TESTDB" + System.currentTimeMillis(), "SA", "");
52+
database = new H2Database();
5253
database.setConnection(new JdbcConnection(connection));
5354

5455
// Class.forName("com.mysql.jdbc.Driver");
@@ -135,98 +136,100 @@ public void runGeneratedChangeLog() throws Exception {
135136
*
136137
* @throws Exception
137138
*/
138-
// @Test
139-
// public void hibernateSchemaExport() throws Exception {
140-
//
141-
// SingleConnectionDataSource ds = new SingleConnectionDataSource(connection, true);
142-
//
143-
// Configuration cfg = new Configuration();
144-
// cfg.configure(HIBERNATE_CONFIG_FILE);
145-
// Properties properties = new Properties();
146-
// properties.put(Environment.DATASOURCE, ds);
147-
// cfg.addProperties(properties);
148-
//
149-
// SchemaExport export = new SchemaExport(cfg);
150-
// export.execute(true, true, false, false);
151-
//
152-
// Database hibernateDatabase = new HibernateClassicDatabase();
153-
// hibernateDatabase.setDefaultSchemaName("PUBLIC");
154-
// hibernateDatabase.setDefaultCatalogName("TESTDB");
155-
// hibernateDatabase.setConnection(new JdbcConnection(new HibernateConnection("hibernate:classic:" + HIBERNATE_CONFIG_FILE)));
156-
//
157-
// Liquibase liquibase = new Liquibase((String) null, new ClassLoaderResourceAccessor(), database);
158-
// DiffResult diffResult = liquibase.diff(hibernateDatabase, database, compareControl);
159-
//
160-
// ignoreDatabaseChangeLogTable(diffResult);
161-
// ignoreConversionFromFloatToDouble64(diffResult);
162-
//
163-
// String differences = toString(diffResult);
164-
//
165-
// assertEquals(differences, 0, diffResult.getMissingObjects().size());
166-
// assertEquals(differences, 0, diffResult.getUnexpectedObjects().size());
167-
//// assertEquals(differences, 0, diffResult.getChangedObjects().size()); //unimportant differences in schema name and datatypes causing test to fail
168-
//
169-
// }
170-
171-
// /**
172-
// * Generates the changelog from Hibernate mapping, creates 2 databases,
173-
// * updates 1 of the databases with HibernateSchemaUpdate. Compare the 2
174-
// * databases.
175-
// *
176-
// * @throws Exception
177-
// */
178-
// @Test
179-
// public void hibernateSchemaUpdate() throws Exception {
180-
//
181-
// Liquibase liquibase = new Liquibase((String) null, new ClassLoaderResourceAccessor(), database);
182-
//
183-
// Database hibernateDatabase = new HibernateClassicDatabase();
184-
// hibernateDatabase.setDefaultSchemaName("PUBLIC");
185-
// hibernateDatabase.setDefaultCatalogName("TESTDB");
186-
// hibernateDatabase.setConnection(new JdbcConnection(new HibernateConnection("hibernate:classic:" + HIBERNATE_CONFIG_FILE)));
187-
//
188-
// DiffResult diffResult = liquibase.diff(hibernateDatabase, database, compareControl);
189-
//
190-
// assertTrue(diffResult.getMissingObjects().size() > 0);
191-
//
192-
// File outFile = File.createTempFile("lb-test", ".xml");
193-
// OutputStream outChangeLog = new FileOutputStream(outFile);
194-
// String changeLogString = toChangeLog(diffResult);
195-
// outChangeLog.write(changeLogString.getBytes("UTF-8"));
196-
// outChangeLog.close();
197-
//
198-
// log.info("Changelog:\n" + changeLogString);
199-
//
200-
// liquibase = new Liquibase(outFile.toString(), new FileSystemResourceAccessor(), database);
201-
// StringWriter stringWriter = new StringWriter();
202-
// liquibase.update((String) null, stringWriter);
203-
// log.info(stringWriter.toString());
204-
// liquibase.update((String) null);
205-
//
206-
// long currentTimeMillis = System.currentTimeMillis();
207-
// Connection connection2 = DriverManager.getConnection("jdbc:hsqldb:mem:TESTDB2" + currentTimeMillis, "SA", "");
208-
// Database database2 = new HsqlDatabase();
209-
// database2.setConnection(new JdbcConnection(connection2));
210-
//
211-
// Configuration cfg = new Configuration();
212-
// cfg.configure(HIBERNATE_CONFIG_FILE);
213-
// cfg.getProperties().remove(Environment.DATASOURCE);
214-
// cfg.setProperty(Environment.URL, "jdbc:hsqldb:mem:TESTDB2" + currentTimeMillis);
215-
//
216-
// SchemaUpdate update = new SchemaUpdate(cfg);
217-
// update.execute(true, true);
218-
//
219-
// diffResult = liquibase.diff(database, database2, compareControl);
220-
//
221-
// ignoreDatabaseChangeLogTable(diffResult);
222-
// ignoreConversionFromFloatToDouble64(diffResult);
223-
//
224-
// String differences = toString(diffResult);
225-
//
226-
// assertEquals(differences, 0, diffResult.getMissingObjects().size());
227-
// assertEquals(differences, 0, diffResult.getUnexpectedObjects().size());
228-
// assertEquals(differences, 0, diffResult.getChangedObjects().size());
229-
// }
139+
@Test
140+
public void hibernateSchemaExport() throws Exception {
141+
142+
SingleConnectionDataSource ds = new SingleConnectionDataSource(connection, true);
143+
144+
Configuration cfg = new Configuration();
145+
cfg.configure(HIBERNATE_CONFIG_FILE);
146+
Properties properties = new Properties();
147+
properties.put(Environment.DATASOURCE, ds);
148+
cfg.addProperties(properties);
149+
150+
SchemaExport export = new SchemaExport(cfg);
151+
export.execute(true, true, false, false);
152+
153+
Database hibernateDatabase = new HibernateClassicDatabase();
154+
hibernateDatabase.setDefaultSchemaName("PUBLIC");
155+
hibernateDatabase.setDefaultCatalogName("TESTDB");
156+
hibernateDatabase.setConnection(new JdbcConnection(new HibernateConnection("hibernate:classic:" + HIBERNATE_CONFIG_FILE)));
157+
158+
Liquibase liquibase = new Liquibase((String) null, new ClassLoaderResourceAccessor(), database);
159+
DiffResult diffResult = liquibase.diff(hibernateDatabase, database, compareControl);
160+
161+
ignoreDatabaseChangeLogTable(diffResult);
162+
ignoreConversionFromFloatToDouble64(diffResult);
163+
164+
String differences = toString(diffResult);
165+
166+
assertEquals(differences, 0, diffResult.getMissingObjects().size());
167+
assertEquals(differences, 0, diffResult.getUnexpectedObjects().size());
168+
// assertEquals(differences, 0, diffResult.getChangedObjects().size()); //unimportant differences in schema name and datatypes causing test to fail
169+
170+
}
171+
172+
/**
173+
* Generates the changelog from Hibernate mapping, creates 2 databases,
174+
* updates 1 of the databases with HibernateSchemaUpdate. Compare the 2
175+
* databases.
176+
*
177+
* @throws Exception
178+
*/
179+
@Test
180+
public void hibernateSchemaUpdate() throws Exception {
181+
182+
Liquibase liquibase = new Liquibase((String) null, new ClassLoaderResourceAccessor(), database);
183+
184+
Database hibernateDatabase = new HibernateClassicDatabase();
185+
hibernateDatabase.setDefaultSchemaName("PUBLIC");
186+
hibernateDatabase.setDefaultCatalogName("TESTDB");
187+
hibernateDatabase.setConnection(new JdbcConnection(new HibernateConnection("hibernate:classic:" + HIBERNATE_CONFIG_FILE)));
188+
189+
DiffResult diffResult = liquibase.diff(hibernateDatabase, database, compareControl);
190+
191+
assertTrue(diffResult.getMissingObjects().size() > 0);
192+
193+
File outFile = File.createTempFile("lb-test", ".xml");
194+
OutputStream outChangeLog = new FileOutputStream(outFile);
195+
String changeLogString = toChangeLog(diffResult);
196+
outChangeLog.write(changeLogString.getBytes("UTF-8"));
197+
outChangeLog.close();
198+
199+
log.info("Changelog:\n" + changeLogString);
200+
201+
liquibase = new Liquibase(outFile.toString(), new FileSystemResourceAccessor(), database);
202+
StringWriter stringWriter = new StringWriter();
203+
liquibase.update((String) null, stringWriter);
204+
log.info(stringWriter.toString());
205+
liquibase.update((String) null);
206+
207+
long currentTimeMillis = System.currentTimeMillis();
208+
Connection connection2 = DriverManager.getConnection("jdbc:h2:mem:TESTDB2" + currentTimeMillis, "SA", "");
209+
Database database2 = new H2Database();
210+
database2.setConnection(new JdbcConnection(connection2));
211+
212+
Configuration cfg = new Configuration();
213+
cfg.configure(HIBERNATE_CONFIG_FILE);
214+
cfg.getProperties().remove(Environment.DATASOURCE);
215+
cfg.setProperty(Environment.URL, "jdbc:h2:mem:TESTDB2" + currentTimeMillis);
216+
cfg.setProperty(Environment.USER, "SA");
217+
cfg.setProperty(Environment.PASS, "");
218+
219+
SchemaUpdate update = new SchemaUpdate(cfg);
220+
update.execute(true, true);
221+
222+
diffResult = liquibase.diff(database, database2, compareControl);
223+
224+
ignoreDatabaseChangeLogTable(diffResult);
225+
ignoreConversionFromFloatToDouble64(diffResult);
226+
227+
String differences = toString(diffResult);
228+
229+
assertEquals(differences, 0, diffResult.getMissingObjects().size());
230+
assertEquals(differences, 0, diffResult.getUnexpectedObjects().size());
231+
assertEquals(differences, 0, diffResult.getChangedObjects().size());
232+
}
230233

231234
private String toString(DiffResult diffResult) throws Exception {
232235
ByteArrayOutputStream out = new ByteArrayOutputStream();

src/test/java/liquibase/ext/hibernate/database/HibernateClassicDatabaseTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,13 @@ public static void assertPojoHibernateMapped(DatabaseSnapshot snapshot) {
112112

113113
assertThat(bidTable.getOutgoingForeignKeys(), containsInAnyOrder(
114114
allOf(
115-
hasProperty("primaryKeyColumns", hasToString("[AuctionItem.id]")),
116-
hasProperty("foreignKeyColumns", hasToString("[Bid.item]")),
115+
hasProperty("primaryKeyColumns", hasToString("[HIBERNATE.AuctionItem.id]")),
116+
hasProperty("foreignKeyColumns", hasToString("[HIBERNATE.Bid.item]")),
117117
hasProperty("primaryKeyTable", hasProperty("name", is("AuctionItem")))
118118
),
119119
allOf(
120-
hasProperty("primaryKeyColumns", hasToString("[AuctionUser.id]")),
121-
hasProperty("foreignKeyColumns", hasToString("[Bid.bidder]")),
120+
hasProperty("primaryKeyColumns", hasToString("[HIBERNATE.AuctionUser.id]")),
121+
hasProperty("foreignKeyColumns", hasToString("[HIBERNATE.Bid.bidder]")),
122122
hasProperty("primaryKeyTable", hasProperty("name", is("AuctionUser")))
123123
)
124124
));

src/test/java/liquibase/ext/hibernate/database/HibernateEjb3DatabaseTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ public static void assertEjb3HibernateMapped(DatabaseSnapshot snapshot) {
6565

6666
assertThat(bidTable.getOutgoingForeignKeys(), containsInAnyOrder(
6767
allOf(
68-
hasProperty("primaryKeyColumns", hasToString("[AuctionItem.id]")),
69-
hasProperty("foreignKeyColumns", hasToString("[Bid.item_id]")),
68+
hasProperty("primaryKeyColumns", hasToString("[HIBERNATE.AuctionItem.id]")),
69+
hasProperty("foreignKeyColumns", hasToString("[HIBERNATE.Bid.item_id]")),
7070
hasProperty("primaryKeyTable", hasProperty("name", is("AuctionItem")))
7171
),
7272
allOf(
73-
hasProperty("primaryKeyColumns", hasToString("[User.id]")),
74-
hasProperty("foreignKeyColumns", hasToString("[Bid.bidder_id]")),
73+
hasProperty("primaryKeyColumns", hasToString("[HIBERNATE.User.id]")),
74+
hasProperty("foreignKeyColumns", hasToString("[HIBERNATE.Bid.bidder_id]")),
7575
hasProperty("primaryKeyTable", hasProperty("name", is("User")))
7676
)
7777
));

src/test/java/liquibase/ext/hibernate/database/HibernateSpringDatabaseTest.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import liquibase.snapshot.DatabaseSnapshot;
1515
import liquibase.snapshot.SnapshotControl;
1616
import liquibase.snapshot.SnapshotGeneratorFactory;
17-
import org.hibernate.dialect.HSQLDialect;
17+
import org.hibernate.dialect.H2Dialect;
1818
import org.junit.After;
1919
import org.junit.Before;
2020
import org.junit.Test;
@@ -36,22 +36,22 @@ public void tearDown() throws Exception {
3636
db.close();
3737
}
3838

39-
// @Test
40-
// public void testSpringUrlSimple() throws DatabaseException {
41-
// conn = new JdbcConnection(new HibernateConnection("hibernate:spring:spring.ctx.xml?bean=sessionFactory"));
42-
// db.setConnection(conn);
43-
// assertNotNull(db.getConfiguration().getClassMapping(AuctionItem.class.getName()));
44-
// assertNotNull(db.getConfiguration().getClassMapping(Watcher.class.getName()));
45-
// }
46-
//
47-
//
48-
// @Test
49-
// public void testSpringPackageScanningMustHaveItemClassMapping() throws DatabaseException {
50-
// conn = new JdbcConnection(new HibernateConnection("hibernate:spring:com.example.ejb3.auction?dialect=" + HSQLDialect.class.getName()));
51-
// db.setConnection(conn);
52-
// assertNotNull(db.getConfiguration().getClassMapping(Bid.class.getName()));
53-
// assertNotNull(db.getConfiguration().getClassMapping(BuyNow.class.getName()));
54-
// }
39+
@Test
40+
public void testSpringUrlSimple() throws DatabaseException {
41+
conn = new JdbcConnection(new HibernateConnection("hibernate:spring:spring.ctx.xml?bean=sessionFactory"));
42+
db.setConnection(conn);
43+
assertNotNull(db.getConfiguration().getClassMapping(AuctionItem.class.getName()));
44+
assertNotNull(db.getConfiguration().getClassMapping(Watcher.class.getName()));
45+
}
46+
47+
48+
@Test
49+
public void testSpringPackageScanningMustHaveItemClassMapping() throws DatabaseException {
50+
conn = new JdbcConnection(new HibernateConnection("hibernate:spring:com.example.ejb3.auction?dialect=" + H2Dialect.class.getName()));
51+
db.setConnection(conn);
52+
assertNotNull(db.getConfiguration().getClassMapping(Bid.class.getName()));
53+
assertNotNull(db.getConfiguration().getClassMapping(BuyNow.class.getName()));
54+
}
5555

5656
@Test
5757
public void simpleSpringUrl() throws Exception {
@@ -67,7 +67,7 @@ public void simpleSpringUrl() throws Exception {
6767

6868
@Test
6969
public void simpleSpringScanningUrl() throws Exception {
70-
String url = "hibernate:spring:com.example.ejb3.auction?dialect=" + HSQLDialect.class.getName();
70+
String url = "hibernate:spring:com.example.ejb3.auction?dialect=" + H2Dialect.class.getName();
7171
Database database = CommandLineUtils.createDatabaseObject(this.getClass().getClassLoader(), url, null, null, null, null, null, false, false, null, null, null, null, null, null, null);
7272

7373
assertNotNull(database);

src/test/resources/com/example/pojo/Hibernate.cfg.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<!-- SQL dialect -->
1515
<!--<property name="dialect">org.hibernate.dialect.DB2Dialect</property>-->
1616
<!--<property name="dialect">org.hibernate.dialect.DaffodilDBDialect</property> -->
17-
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
17+
<property name="dialect">org.hibernate.dialect.H2Dialect</property>
1818

1919
<!-- Echo all executed SQL to stdout -->
2020
<property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>

0 commit comments

Comments
 (0)