Author: chirino Date: Fri Jul 2 10:57:37 2010 New Revision: 959949 URL: http://svn.apache.org/viewvc?rev=959949&view=rev Log: Upgrade to hawtdb 1.1
Added: camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelCodec.java (contents, props changed) - copied, changed from r959809, camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelMarshaller.java Removed: camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelMarshaller.java Modified: camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBAggregationRepository.java camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostRemovedWhenConfirmedTest.java camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostTest.java camel/trunk/parent/pom.xml Modified: camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBAggregationRepository.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBAggregationRepository.java?rev=959949&r1=959948&r2=959949&view=diff ============================================================================== --- camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBAggregationRepository.java (original) +++ camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBAggregationRepository.java Fri Jul 2 10:57:37 2010 @@ -16,15 +16,6 @@ */ package org.apache.camel.component.hawtdb; -import java.io.File; -import java.io.IOException; -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; - import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.impl.ServiceSupport; @@ -33,9 +24,15 @@ import org.apache.camel.util.ObjectHelpe import org.apache.camel.util.ServiceHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.fusesource.hawtbuf.Buffer; import org.fusesource.hawtdb.api.Index; +import org.fusesource.hawtdb.api.SortedIndex; import org.fusesource.hawtdb.api.Transaction; -import org.fusesource.hawtdb.util.buffer.Buffer; + +import java.io.File; +import java.io.IOException; +import java.util.*; +import java.util.concurrent.TimeUnit; /** * An instance of AggregationRepository which is backed by a HawtDB. @@ -50,7 +47,7 @@ public class HawtDBAggregationRepository private boolean sync = true; private short pageSize = 512; private boolean returnOldExchange; - private HawtDBCamelMarshaller marshaller = new HawtDBCamelMarshaller(); + private HawtDBCamelCodec codec = new HawtDBCamelCodec(); private long recoveryInterval = 5000; private boolean useRecovery = true; private int maximumRedeliveries; @@ -107,13 +104,13 @@ public class HawtDBAggregationRepository // If we could guarantee that the key and exchange are immutable, // then we could have stuck them directly into the index, // HawtDB could then eliminate the need to marshal and un-marshal - // in some cases. But since we can.. we are going to force + // in some cases. But since we can't.. we are going to force // early marshaling. - final Buffer keyBuffer = marshaller.marshallKey(key); - final Buffer exchangeBuffer = marshaller.marshallExchange(camelContext, exchange); + final Buffer keyBuffer = codec.marshallKey(key); + final Buffer exchangeBuffer = codec.marshallExchange(camelContext, exchange); Buffer rc = hawtDBFile.execute(new Work<Buffer>() { public Buffer execute(Transaction tx) { - Index<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, true); + SortedIndex<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, true); return index.put(keyBuffer, exchangeBuffer); } @@ -128,7 +125,7 @@ public class HawtDBAggregationRepository // only return old exchange if enabled if (isReturnOldExchange()) { - return marshaller.unmarshallExchange(camelContext, rc); + return codec.unmarshallExchange(camelContext, rc); } } catch (IOException e) { throw new RuntimeException("Error adding to repository " + repositoryName + " with key " + key, e); @@ -140,10 +137,10 @@ public class HawtDBAggregationRepository public Exchange get(final CamelContext camelContext, final String key) { Exchange answer = null; try { - final Buffer keyBuffer = marshaller.marshallKey(key); + final Buffer keyBuffer = codec.marshallKey(key); Buffer rc = hawtDBFile.execute(new Work<Buffer>() { public Buffer execute(Transaction tx) { - Index<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, false); + SortedIndex<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, false); if (index == null) { return null; } @@ -156,7 +153,7 @@ public class HawtDBAggregationRepository } }); if (rc != null) { - answer = marshaller.unmarshallExchange(camelContext, rc); + answer = codec.unmarshallExchange(camelContext, rc); } } catch (IOException e) { throw new RuntimeException("Error getting key " + key + " from repository " + repositoryName, e); @@ -173,17 +170,17 @@ public class HawtDBAggregationRepository LOG.debug("Removing key [" + key + "]"); } try { - final Buffer keyBuffer = marshaller.marshallKey(key); - final Buffer confirmKeyBuffer = marshaller.marshallKey(exchange.getExchangeId()); - final Buffer exchangeBuffer = marshaller.marshallExchange(camelContext, exchange); + final Buffer keyBuffer = codec.marshallKey(key); + final Buffer confirmKeyBuffer = codec.marshallKey(exchange.getExchangeId()); + final Buffer exchangeBuffer = codec.marshallExchange(camelContext, exchange); hawtDBFile.execute(new Work<Buffer>() { public Buffer execute(Transaction tx) { - Index<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, true); + SortedIndex<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, true); // remove from the in progress index index.remove(keyBuffer); // and add it to the confirmed index - Index<Buffer, Buffer> indexCompleted = hawtDBFile.getRepositoryIndex(tx, getRepositoryNameCompleted(), true); + SortedIndex<Buffer, Buffer> indexCompleted = hawtDBFile.getRepositoryIndex(tx, getRepositoryNameCompleted(), true); indexCompleted.put(confirmKeyBuffer, exchangeBuffer); return null; } @@ -204,10 +201,10 @@ public class HawtDBAggregationRepository LOG.debug("Confirming exchangeId [" + exchangeId + "]"); } try { - final Buffer confirmKeyBuffer = marshaller.marshallKey(exchangeId); + final Buffer confirmKeyBuffer = codec.marshallKey(exchangeId); hawtDBFile.execute(new Work<Buffer>() { public Buffer execute(Transaction tx) { - Index<Buffer, Buffer> indexCompleted = hawtDBFile.getRepositoryIndex(tx, getRepositoryNameCompleted(), true); + SortedIndex<Buffer, Buffer> indexCompleted = hawtDBFile.getRepositoryIndex(tx, getRepositoryNameCompleted(), true); return indexCompleted.remove(confirmKeyBuffer); } @@ -232,7 +229,7 @@ public class HawtDBAggregationRepository return null; } - Index<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, false); + SortedIndex<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, false); if (index == null) { return null; } @@ -245,7 +242,7 @@ public class HawtDBAggregationRepository String key; try { - key = marshaller.unmarshallKey(keyBuffer); + key = codec.unmarshallKey(keyBuffer); } catch (IOException e) { throw new RuntimeException("Error unmarshalling key: " + keyBuffer, e); } @@ -278,7 +275,7 @@ public class HawtDBAggregationRepository return null; } - Index<Buffer, Buffer> indexCompleted = hawtDBFile.getRepositoryIndex(tx, getRepositoryNameCompleted(), false); + SortedIndex<Buffer, Buffer> indexCompleted = hawtDBFile.getRepositoryIndex(tx, getRepositoryNameCompleted(), false); if (indexCompleted == null) { return null; } @@ -291,7 +288,7 @@ public class HawtDBAggregationRepository String exchangeId; try { - exchangeId = marshaller.unmarshallKey(keyBuffer); + exchangeId = codec.unmarshallKey(keyBuffer); } catch (IOException e) { throw new RuntimeException("Error unmarshalling confirm key: " + keyBuffer, e); } @@ -325,10 +322,10 @@ public class HawtDBAggregationRepository public Exchange recover(CamelContext camelContext, final String exchangeId) { Exchange answer = null; try { - final Buffer confirmKeyBuffer = marshaller.marshallKey(exchangeId); + final Buffer confirmKeyBuffer = codec.marshallKey(exchangeId); Buffer rc = hawtDBFile.execute(new Work<Buffer>() { public Buffer execute(Transaction tx) { - Index<Buffer, Buffer> indexCompleted = hawtDBFile.getRepositoryIndex(tx, getRepositoryNameCompleted(), false); + SortedIndex<Buffer, Buffer> indexCompleted = hawtDBFile.getRepositoryIndex(tx, getRepositoryNameCompleted(), false); if (indexCompleted == null) { return null; } @@ -341,7 +338,7 @@ public class HawtDBAggregationRepository } }); if (rc != null) { - answer = marshaller.unmarshallExchange(camelContext, rc); + answer = codec.unmarshallExchange(camelContext, rc); } } catch (IOException e) { throw new RuntimeException("Error recovering exchangeId " + exchangeId + " from repository " + repositoryName, e); @@ -356,7 +353,7 @@ public class HawtDBAggregationRepository private int size(final String repositoryName) { int answer = hawtDBFile.execute(new Work<Integer>() { public Integer execute(Transaction tx) { - Index<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, false); + SortedIndex<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, repositoryName, false); return index != null ? index.size() : 0; } Copied: camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelCodec.java (from r959809, camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelMarshaller.java) URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelCodec.java?p2=camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelCodec.java&p1=camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelMarshaller.java&r1=959809&r2=959949&rev=959949&view=diff ============================================================================== --- camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelMarshaller.java (original) +++ camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelCodec.java Fri Jul 2 10:57:37 2010 @@ -24,30 +24,30 @@ import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultExchange; import org.apache.camel.impl.DefaultExchangeHolder; -import org.fusesource.hawtdb.util.buffer.Buffer; -import org.fusesource.hawtdb.util.buffer.DataByteArrayInputStream; -import org.fusesource.hawtdb.util.buffer.DataByteArrayOutputStream; -import org.fusesource.hawtdb.util.marshaller.Marshaller; -import org.fusesource.hawtdb.util.marshaller.ObjectMarshaller; -import org.fusesource.hawtdb.util.marshaller.StringMarshaller; +import org.fusesource.hawtbuf.Buffer; +import org.fusesource.hawtbuf.DataByteArrayInputStream; +import org.fusesource.hawtbuf.DataByteArrayOutputStream; +import org.fusesource.hawtbuf.codec.Codec; +import org.fusesource.hawtbuf.codec.ObjectCodec; +import org.fusesource.hawtbuf.codec.StringCodec; /** * @version $Revision$ */ -public final class HawtDBCamelMarshaller { +public final class HawtDBCamelCodec { - private Marshaller<String> keyMarshaller = new StringMarshaller(); - private Marshaller<DefaultExchangeHolder> exchangeMarshaller = new ObjectMarshaller<DefaultExchangeHolder>(); + private Codec<String> keyCodec = new StringCodec(); + private Codec<DefaultExchangeHolder> exchangeCodec = new ObjectCodec<DefaultExchangeHolder>(); public Buffer marshallKey(String key) throws IOException { DataByteArrayOutputStream baos = new DataByteArrayOutputStream(); - keyMarshaller.writePayload(key, baos); + keyCodec.encode(key, baos); return baos.toBuffer(); } public String unmarshallKey(Buffer buffer) throws IOException { DataByteArrayInputStream bais = new DataByteArrayInputStream(buffer); - String key = keyMarshaller.readPayload(bais); + String key = keyCodec.decode(bais); return key; } @@ -65,13 +65,13 @@ public final class HawtDBCamelMarshaller if (exchange.getFromEndpoint() != null) { DefaultExchangeHolder.addProperty(pe, "CamelAggregatedFromEndpoint", exchange.getFromEndpoint().getEndpointUri()); } - exchangeMarshaller.writePayload(pe, baos); + exchangeCodec.encode(pe, baos); return baos.toBuffer(); } public Exchange unmarshallExchange(CamelContext camelContext, Buffer buffer) throws IOException { DataByteArrayInputStream bais = new DataByteArrayInputStream(buffer); - DefaultExchangeHolder pe = exchangeMarshaller.readPayload(bais); + DefaultExchangeHolder pe = exchangeCodec.decode(bais); Exchange answer = new DefaultExchange(camelContext); DefaultExchangeHolder.unmarshal(answer, pe); // restore the from endpoint Propchange: camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelCodec.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBCamelCodec.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java?rev=959949&r1=959948&r2=959949&view=diff ============================================================================== --- camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java (original) +++ camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java Fri Jul 2 10:57:37 2010 @@ -19,16 +19,16 @@ package org.apache.camel.component.hawtd import org.apache.camel.Service; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.fusesource.hawtbuf.Buffer; +import org.fusesource.hawtbuf.codec.BufferCodec; +import org.fusesource.hawtbuf.codec.IntegerCodec; +import org.fusesource.hawtbuf.codec.StringCodec; import org.fusesource.hawtdb.api.BTreeIndexFactory; -import org.fusesource.hawtdb.api.Index; +import org.fusesource.hawtdb.api.SortedIndex; import org.fusesource.hawtdb.api.OptimisticUpdateException; import org.fusesource.hawtdb.api.Transaction; import org.fusesource.hawtdb.api.TxPageFile; import org.fusesource.hawtdb.api.TxPageFileFactory; -import org.fusesource.hawtdb.util.buffer.Buffer; -import org.fusesource.hawtdb.util.marshaller.IntegerMarshaller; -import org.fusesource.hawtdb.util.marshaller.StringMarshaller; -import org.fusesource.hawtdb.util.marshaller.VariableBufferMarshaller; /** * Manages access to a shared <a href="http://hawtdb.fusesource.org/">HawtDB</a> file. @@ -48,11 +48,11 @@ public class HawtDBFile extends TxPageFi private TxPageFile pageFile; static { - ROOT_INDEXES_FACTORY.setKeyMarshaller(StringMarshaller.INSTANCE); - ROOT_INDEXES_FACTORY.setValueMarshaller(IntegerMarshaller.INSTANCE); + ROOT_INDEXES_FACTORY.setKeyCodec(StringCodec.INSTANCE); + ROOT_INDEXES_FACTORY.setValueCodec(IntegerCodec.INSTANCE); ROOT_INDEXES_FACTORY.setDeferredEncoding(true); - INDEX_FACTORY.setKeyMarshaller(VariableBufferMarshaller.INSTANCE); - INDEX_FACTORY.setValueMarshaller(VariableBufferMarshaller.INSTANCE); + INDEX_FACTORY.setKeyCodec(BufferCodec.INSTANCE); + INDEX_FACTORY.setValueCodec(BufferCodec.INSTANCE); INDEX_FACTORY.setDeferredEncoding(true); } @@ -82,7 +82,7 @@ public class HawtDBFile extends TxPageFi } else { // Was previously created.. so free up the test page tx.allocator().free(page, 1); - Index<String, Integer> indexes = ROOT_INDEXES_FACTORY.open(tx, 0); + SortedIndex<String, Integer> indexes = ROOT_INDEXES_FACTORY.open(tx, 0); LOG.info("Aggregation repository data store loaded using file: " + getFile() + " containing " + indexes.size() + " repositories."); } @@ -114,16 +114,16 @@ public class HawtDBFile extends TxPageFi return answer; } - public Index<Buffer, Buffer> getRepositoryIndex(Transaction tx, String name, boolean create) { - Index<Buffer, Buffer> answer = null; + public SortedIndex<Buffer, Buffer> getRepositoryIndex(Transaction tx, String name, boolean create) { + SortedIndex<Buffer, Buffer> answer = null; - Index<String, Integer> indexes = ROOT_INDEXES_FACTORY.open(tx, 0); + SortedIndex<String, Integer> indexes = ROOT_INDEXES_FACTORY.open(tx, 0); Integer location = indexes.get(name); if (create && location == null) { // create it.. int page = tx.allocator().alloc(1); - Index<Buffer, Buffer> created = INDEX_FACTORY.create(tx, page); + SortedIndex<Buffer, Buffer> created = INDEX_FACTORY.create(tx, page); // add it to indexes so we can find it the next time indexes.put(name, page); Modified: camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostRemovedWhenConfirmedTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostRemovedWhenConfirmedTest.java?rev=959949&r1=959948&r2=959949&view=diff ============================================================================== --- camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostRemovedWhenConfirmedTest.java (original) +++ camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostRemovedWhenConfirmedTest.java Fri Jul 2 10:57:37 2010 @@ -20,9 +20,9 @@ import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.processor.aggregate.AggregationStrategy; import org.apache.camel.test.junit4.CamelTestSupport; +import org.fusesource.hawtbuf.Buffer; import org.fusesource.hawtdb.api.Index; import org.fusesource.hawtdb.api.Transaction; -import org.fusesource.hawtdb.util.buffer.Buffer; import org.junit.Test; public class HawtDBAggregateNotLostRemovedWhenConfirmedTest extends CamelTestSupport { @@ -54,8 +54,8 @@ public class HawtDBAggregateNotLostRemov // the exchange should NOT be in the completed repo as it was confirmed final HawtDBFile hawtDBFile = repo.getHawtDBFile(); - final HawtDBCamelMarshaller marshaller = new HawtDBCamelMarshaller(); - final Buffer confirmKeyBuffer = marshaller.marshallKey(exchangeId); + final HawtDBCamelCodec codec = new HawtDBCamelCodec(); + final Buffer confirmKeyBuffer = codec.marshallKey(exchangeId); Buffer bf = hawtDBFile.execute(new Work<Buffer>() { public Buffer execute(Transaction tx) { Index<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, "repo1-completed", false); Modified: camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostTest.java?rev=959949&r1=959948&r2=959949&view=diff ============================================================================== --- camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostTest.java (original) +++ camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateNotLostTest.java Fri Jul 2 10:57:37 2010 @@ -20,9 +20,9 @@ import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.processor.aggregate.AggregationStrategy; import org.apache.camel.test.junit4.CamelTestSupport; +import org.fusesource.hawtbuf.Buffer; import org.fusesource.hawtdb.api.Index; import org.fusesource.hawtdb.api.Transaction; -import org.fusesource.hawtdb.util.buffer.Buffer; import org.junit.Test; public class HawtDBAggregateNotLostTest extends CamelTestSupport { @@ -55,8 +55,8 @@ public class HawtDBAggregateNotLostTest // the exchange should be in the completed repo where we should be able to find it final HawtDBFile hawtDBFile = repo.getHawtDBFile(); - final HawtDBCamelMarshaller marshaller = new HawtDBCamelMarshaller(); - final Buffer confirmKeyBuffer = marshaller.marshallKey(exchangeId); + final HawtDBCamelCodec codec = new HawtDBCamelCodec(); + final Buffer confirmKeyBuffer = codec.marshallKey(exchangeId); Buffer bf = hawtDBFile.execute(new Work<Buffer>() { public Buffer execute(Transaction tx) { Index<Buffer, Buffer> index = hawtDBFile.getRepositoryIndex(tx, "repo1-completed", false); @@ -66,7 +66,7 @@ public class HawtDBAggregateNotLostTest // assert the exchange was not lost and we got all the information still assertNotNull(bf); - Exchange completed = marshaller.unmarshallExchange(context, bf); + Exchange completed = codec.unmarshallExchange(context, bf); assertNotNull(completed); // should retain the exchange id assertEquals(exchangeId, completed.getExchangeId()); Modified: camel/trunk/parent/pom.xml URL: http://svn.apache.org/viewvc/camel/trunk/parent/pom.xml?rev=959949&r1=959948&r2=959949&view=diff ============================================================================== --- camel/trunk/parent/pom.xml (original) +++ camel/trunk/parent/pom.xml Fri Jul 2 10:57:37 2010 @@ -68,7 +68,7 @@ <groovy-version>1.7.3</groovy-version> <guiceyfruit-version>2.0</guiceyfruit-version> <hamcrest-version>1.2-dev1</hamcrest-version> - <hawtdb-version>1.0</hawtdb-version> + <hawtdb-version>1.1</hawtdb-version> <hibernate-version>3.2.6.ga</hibernate-version> <hibernate-entitymanager-version>3.2.1.ga</hibernate-entitymanager-version> <hsqldb-version>1.8.0.7</hsqldb-version>