Arquillian Persistence Extension 1.0.0.Alpha7 Released

The Arquillian team is proud to announce the 1.0.0.Alpha7 release of the Arquillian Persistence Extension component!

After quite a while we are happy to announce new version of Arquillian Persistence Extension with anticipated fixes and improvements.

Big thanks go to Sándor Bodó-Merle, Michel Graciano, Masao Kunii, kumm and Jakub Narloch for their contributions as well as all users who gave us feedback on the community forums.

Some of the highlights in this release

SQL script handling improvements

SQL script handling has been significantly improved. It not only has improved performance (namely for Oracle) but also let you provide your own implementation for parsing multi-line scripts through simple SPI org.jboss.arquillian.persistence.spi.script.StatementSplitter.

Direct access to DBUnit

Ability to inject DBUnit DatabaseConnection making it possible to interact with DBUnit directly in the tests.

@ArquillianResource
private DatabaseConnection databaseConnection;
New SPI module

Through newly introduce SPI module you can now register your own datasource providers. This can be leveraged by frameworks such as Spring which can now do their own lookups (from application context) instead of relying on JNDI.

New extension point

We have also implemented extension point to define custom implementation of org.dbunit.database.DatabaseSequenceFilter which is used to seed and clean database by DBUnit. Out of the box we provide sequence filter strategy for Oracle. You can register it in arquillian.xml as part of persistence-dbunit

<property name=“filterTables”>true</property>
<property name=“customTableFilter”>org.jboss.arquillian.persistence.dbunit.filter.OracleDatabaseSequenceFilterProvider</property>
Custom filtering strategy

You can also define column filtering strategy when comparing datasets through @ShouldMatchDataSet annotation. By simply providing an implementation of org.dbunit.dataset.filter.IColumnFilter and decorating your test with e.g. @CustomColumnFilter({FirstNameColumnFilter.class, LastNameColumnFilter.class}). Filter classes are packaged automatically.

This version comes with latest DBUnit 2.5.0.

We’ve also extended our test suite by adding Apache Tomee to our continuous integration pipeline.

We are still shaping up the extension and its modularity hence we split modules in the following manner:
persistence-api
persistence-core
persistence-dbunit – you can replace old impl dependency by this one
persistence-spi – SPI for future extensions

We look forward to hearing your feedback about this release in the community forums!

What is Arquillian?

Arquillian is open source software that empowers you to test JVM-based applications more effectively. Created to defend the software galaxy from bugs, Arquillian brings your test to the runtime so you can focus on testing your application's behavior rather than managing the runtime. Using Arquillian, you can develop a comprehensive suite of tests from the convenience of your IDE and run them in any IDE, build tool or continuous integration environment.

Release details

Component Arquillian Persistence Extension
Version 1.0.0.Alpha7 view tag
Release date 2014-05-12
Released by Aslak Knutsen
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-persistence-api jar pom
  • org.jboss.arquillian.extension » arquillian-persistence-core jar pom
  • org.jboss.arquillian.extension » arquillian-persistence-dbunit jar pom
  • org.jboss.arquillian.extension » arquillian-persistence-spi jar pom

Release notes and resolved issues 17

Bug
  • ARQ-1009 - ClassNotFoundException when using CLEAN_INSERT
  • ARQ-1309 - Persistence extension does not work with Jacoco extension
  • ARQ-1352 - Script can not insert unix path separator '/' into the DB
  • ARQ-1360 - Persistence extension doesn't handle certain special characters.
  • ARQ-1373 - Cleanup does not work when none datasets provided for seeding
  • ARQ-1440 - Performance drops > 300%
  • ARQ-1530 - Column ordering does not work properly due to DBUnit bug
Enhancement
  • ARQ-812 - Split DBUnit and Core implemenation
  • ARQ-1398 - DatabaseSequenceFilter should be optional
Feature Request
  • ARQ-1147 - Improve the column filtering feature to use custom IColumnFilter implementations
  • ARQ-1338 - Should be able to define ad-hoc sql script through ApplyScript annotation
  • ARQ-1355 - Access the DatabaseConnection for additional verifications in an arquillian test
  • ARQ-1444 - Oracle does not support query delimiter inside statements
  • ARQ-1572 - Marry Persistence and JRebel extensions
  • ARQ-1664 - Provide custom table filter for seeding and cleaning databases
Task
  • ARQ-1646 - Add WildFly managed container

Thanks to the following list of contributors: Bartosz Majsak, Aslak Knutsen, Masao Kunii, Michel Graciano, Jakub Narloch, Sandor Bodo-merle, Kumm