[SCM] hibernate-jbosscache: Integration of Hibernate with JBossCache branch, master, updated. debian/3.6.8-2
Miguel Landaeta
miguel at miguel.cc
Tue Mar 20 00:20:46 UTC 2012
The following commit has been merged in the master branch:
commit 31ec3bafcdfb8a4d0ca67e1907b30e208add7a7e
Author: Miguel Landaeta <miguel at miguel.cc>
Date: Mon Mar 19 19:17:59 2012 -0430
Fix #655775, #661694
diff --git a/debian/changelog b/debian/changelog
index fb9bc8c..07d3542 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,12 @@
libhibernate-jbosscache-java (3.6.8-2) unstable; urgency=low
+ * Add a patch with some classes that were provided by 3.3.2.GA.
+ These classes are reintroduced for compatibility reasons.
+ (Closes: #655775, #661694).
+ * Add Build-Depends on libjboss-cache1-java.
* Bump Standards-Version to 3.9.3. No changes were required.
- -- Miguel Landaeta <miguel at miguel.cc> Sun, 18 Mar 2012 18:55:19 -0430
+ -- Miguel Landaeta <miguel at miguel.cc> Mon, 19 Mar 2012 19:51:48 -0430
libhibernate-jbosscache-java (3.6.8-1) unstable; urgency=low
diff --git a/debian/classpath b/debian/classpath
index 8cd647e..3e1869c 100644
--- a/debian/classpath
+++ b/debian/classpath
@@ -1 +1 @@
-hibernate-jbosscache.jar /usr/share/java/hibernate3.jar /usr/share/java/slf4j-api.jar /usr/share/java/geronimo-jta-1.0.1b-spec.jar /usr/share/java/jboss-cache3.jar /usr/share/java/jboss-system.jar /usr/share/java/jboss-jmx.jar /usr/share/java/jgroups.jar
+hibernate-jbosscache.jar /usr/share/java/hibernate3.jar /usr/share/java/slf4j-api.jar /usr/share/java/geronimo-jta-1.0.1b-spec.jar /usr/share/java/jboss-cache3.jar /usr/share/java/jboss-system.jar /usr/share/java/jboss-jmx.jar /usr/share/java/jgroups.jar /usr/share/java/jboss-cache1.jar
diff --git a/debian/control b/debian/control
index 42cc103..72a5055 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Priority: optional
Build-Depends: debhelper (>= 7.0.50~), default-jdk, javahelper,
libhibernate3-java, libslf4j-java, libgeronimo-jta-1.0.1b-spec-java,
libjboss-cache3-java, libjboss-system-java, libjboss-jmx-java,
- libjgroups-java
+ libjgroups-java, libjboss-cache1-java
Standards-Version: 3.9.3
Vcs-Git: git://git.debian.org/git/pkg-java/libhibernate-jbosscache-java.git
Vcs-Browser: http://git.debian.org/?p=pkg-java/libhibernate-jbosscache-java.git
diff --git a/debian/patches/compatibility-with-3.3.2.patch b/debian/patches/compatibility-with-3.3.2.patch
new file mode 100644
index 0000000..7e37a4f
--- /dev/null
+++ b/debian/patches/compatibility-with-3.3.2.patch
@@ -0,0 +1,372 @@
+Description: Compatibility with 3.3.2.GA
+ jbossas4 package needs these classes to be built.
+ If that package gets removed from the archive, this patch can be dropped.
+Author: Miguel Landaeta <miguel at miguel.cc>
+Bug-Debian: http://bugs.debian.org/655775
+Forwarded: no
+Last-Update: 2012-04-19
+
+--- /dev/null
++++ libhibernate-jbosscache-java-3.6.8/src/main/java/hibernate/cache/TreeCacheProvider.java
+@@ -0,0 +1,131 @@
++/*
++ * Hibernate, Relational Persistence for Idiomatic Java
++ *
++ * Copyright (c) 2007, Red Hat Middleware LLC or third-party contributors as
++ * indicated by the @author tags or express copyright attribution
++ * statements applied by the authors. All third-party contributions are
++ * distributed under license by Red Hat Middleware LLC.
++ *
++ * This copyrighted material is made available to anyone wishing to use, modify,
++ * copy, or redistribute it subject to the terms and conditions of the GNU
++ * Lesser General Public License, as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
++ * for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public License
++ * along with this distribution; if not, write to:
++ * Free Software Foundation, Inc.
++ * 51 Franklin Street, Fifth Floor
++ * Boston, MA 02110-1301 USA
++ */
++package org.hibernate.cache;
++
++import java.util.Properties;
++import javax.transaction.TransactionManager;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++import org.hibernate.transaction.TransactionManagerLookup;
++import org.hibernate.transaction.TransactionManagerLookupFactory;
++import org.hibernate.cfg.Environment;
++import org.jboss.cache.PropertyConfigurator;
++
++/**
++ * Support for a standalone JBossCache (TreeCache) instance. The JBossCache is configured
++ * via a local config resource.
++ *
++ * @author Gavin King
++ */
++public class TreeCacheProvider implements CacheProvider {
++
++ /**
++ * @deprecated use {@link org.hibernate.cfg.Environment#CACHE_PROVIDER_CONFIG}
++ */
++ public static final String CONFIG_RESOURCE = "hibernate.cache.tree_cache.config";
++ public static final String DEFAULT_CONFIG = "treecache-optimistic.xml";
++
++ private static final Logger log = LoggerFactory.getLogger( TreeCacheProvider.class );
++
++ private org.jboss.cache.TreeCache cache;
++ private TransactionManager transactionManager;
++
++ /**
++ * Construct and configure the Cache representation of a named cache region.
++ *
++ * @param regionName the name of the cache region
++ * @param properties configuration settings
++ * @return The Cache representation of the named cache region.
++ * @throws CacheException Indicates an error building the cache region.
++ */
++ public Cache buildCache(String regionName, Properties properties) throws CacheException {
++ return new TreeCache(cache, regionName, transactionManager);
++ }
++
++ public long nextTimestamp() {
++ return System.currentTimeMillis() / 100;
++ }
++
++ /**
++ * Prepare the underlying JBossCache TreeCache instance.
++ *
++ * @param properties All current config settings.
++ *
++ * @throws CacheException Indicates a problem preparing cache for use.
++ */
++ public void start(Properties properties) {
++ String resource = properties.getProperty( Environment.CACHE_PROVIDER_CONFIG );
++
++ if ( resource == null ) {
++ resource = properties.getProperty( CONFIG_RESOURCE );
++ }
++ if ( resource == null ) {
++ resource = DEFAULT_CONFIG;
++ }
++ log.debug( "Configuring TreeCache from resource [" + resource + "]" );
++ try {
++ cache = new org.jboss.cache.TreeCache();
++ PropertyConfigurator config = new PropertyConfigurator();
++ config.configure( cache, resource );
++ TransactionManagerLookup transactionManagerLookup = TransactionManagerLookupFactory.getTransactionManagerLookup(properties);
++ if (transactionManagerLookup!=null) {
++ cache.setTransactionManagerLookup( new TransactionManagerLookupAdaptor(transactionManagerLookup, properties) );
++ transactionManager = transactionManagerLookup.getTransactionManager(properties);
++ }
++ cache.start();
++ }
++ catch (Exception e) {
++ throw new CacheException(e);
++ }
++ }
++
++ public void stop() {
++ if (cache!=null) {
++ cache.stop();
++ cache.destroy();
++ cache=null;
++ }
++ }
++
++ public boolean isMinimalPutsEnabledByDefault() {
++ return true;
++ }
++
++ static final class TransactionManagerLookupAdaptor implements org.jboss.cache.TransactionManagerLookup {
++ private final TransactionManagerLookup tml;
++ private final Properties props;
++ TransactionManagerLookupAdaptor(TransactionManagerLookup tml, Properties props) {
++ this.tml=tml;
++ this.props=props;
++ }
++ public TransactionManager getTransactionManager() throws Exception {
++ return tml.getTransactionManager(props);
++ }
++ }
++
++ public org.jboss.cache.TreeCache getUnderlyingCache() {
++ return cache;
++ }
++}
+--- /dev/null
++++ libhibernate-jbosscache-java-3.6.8/src/main/java/hibernate/cache/TreeCache.java
+@@ -0,0 +1,227 @@
++/*
++ * Hibernate, Relational Persistence for Idiomatic Java
++ *
++ * Copyright (c) 2007, Red Hat Middleware LLC or third-party contributors as
++ * indicated by the @author tags or express copyright attribution
++ * statements applied by the authors. All third-party contributions are
++ * distributed under license by Red Hat Middleware LLC.
++ *
++ * This copyrighted material is made available to anyone wishing to use, modify,
++ * copy, or redistribute it subject to the terms and conditions of the GNU
++ * Lesser General Public License, as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
++ * for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public License
++ * along with this distribution; if not, write to:
++ * Free Software Foundation, Inc.
++ * 51 Franklin Street, Fifth Floor
++ * Boston, MA 02110-1301 USA
++ */
++package org.hibernate.cache;
++
++import java.util.HashMap;
++import java.util.Iterator;
++import java.util.Map;
++import java.util.Set;
++
++import javax.transaction.SystemException;
++import javax.transaction.Transaction;
++import javax.transaction.TransactionManager;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++import org.jboss.cache.Fqn;
++import org.jboss.cache.lock.TimeoutException;
++
++/**
++ * Represents a particular region within the given JBossCache TreeCache.
++ *
++ * @author Gavin King
++ */
++public class TreeCache implements Cache, TransactionAwareCache {
++
++ private static final Logger log = LoggerFactory.getLogger(TreeCache.class);
++
++ private static final String ITEM = "item";
++
++ private org.jboss.cache.TreeCache cache;
++ private final String regionName;
++ private final Fqn regionFqn;
++ private final TransactionManager transactionManager;
++
++ public TreeCache(org.jboss.cache.TreeCache cache, String regionName, TransactionManager transactionManager)
++ throws CacheException {
++ this.cache = cache;
++ this.regionName = regionName;
++ this.regionFqn = Fqn.fromString( regionName.replace( '.', '/' ) );
++ this.transactionManager = transactionManager;
++ }
++
++ public Object get(Object key) throws CacheException {
++ Transaction tx = suspend();
++ try {
++ return read(key);
++ }
++ finally {
++ resume( tx );
++ }
++ }
++
++ public Object read(Object key) throws CacheException {
++ try {
++ return cache.get( new Fqn( regionFqn, key ), ITEM );
++ }
++ catch (Exception e) {
++ throw new CacheException(e);
++ }
++ }
++
++ public void update(Object key, Object value) throws CacheException {
++ try {
++ cache.put( new Fqn( regionFqn, key ), ITEM, value );
++ }
++ catch (Exception e) {
++ throw new CacheException(e);
++ }
++ }
++
++ public void put(Object key, Object value) throws CacheException {
++ Transaction tx = suspend();
++ try {
++ //do the failfast put outside the scope of the JTA txn
++ cache.putFailFast( new Fqn( regionFqn, key ), ITEM, value, 0 );
++ }
++ catch (TimeoutException te) {
++ //ignore!
++ log.debug("ignoring write lock acquisition failure");
++ }
++ catch (Exception e) {
++ throw new CacheException(e);
++ }
++ finally {
++ resume( tx );
++ }
++ }
++
++ private void resume(Transaction tx) {
++ try {
++ if (tx!=null) transactionManager.resume(tx);
++ }
++ catch (Exception e) {
++ throw new CacheException("Could not resume transaction", e);
++ }
++ }
++
++ private Transaction suspend() {
++ Transaction tx = null;
++ try {
++ if ( transactionManager!=null ) {
++ tx = transactionManager.suspend();
++ }
++ }
++ catch (SystemException se) {
++ throw new CacheException("Could not suspend transaction", se);
++ }
++ return tx;
++ }
++
++ public void remove(Object key) throws CacheException {
++ try {
++ cache.remove( new Fqn( regionFqn, key ) );
++ }
++ catch (Exception e) {
++ throw new CacheException(e);
++ }
++ }
++
++ public void clear() throws CacheException {
++ try {
++ cache.remove( regionFqn );
++ }
++ catch (Exception e) {
++ throw new CacheException(e);
++ }
++ }
++
++ public void destroy() throws CacheException {
++ try {
++ // NOTE : evict() operates locally only (i.e., does not propogate
++ // to any other nodes in the potential cluster). This is
++ // exactly what is needed when we destroy() here; destroy() is used
++ // as part of the process of shutting down a SessionFactory; thus
++ // these removals should not be propogated
++ cache.evict( regionFqn );
++ }
++ catch( Exception e ) {
++ throw new CacheException( e );
++ }
++ }
++
++ public void lock(Object key) throws CacheException {
++ throw new UnsupportedOperationException( "TreeCache is a fully transactional cache" + regionName );
++ }
++
++ public void unlock(Object key) throws CacheException {
++ throw new UnsupportedOperationException( "TreeCache is a fully transactional cache: " + regionName );
++ }
++
++ public long nextTimestamp() {
++ return System.currentTimeMillis() / 100;
++ }
++
++ public int getTimeout() {
++ return 600; //60 seconds
++ }
++
++ public String getRegionName() {
++ return regionName;
++ }
++
++ public long getSizeInMemory() {
++ return -1;
++ }
++
++ public long getElementCountInMemory() {
++ try {
++ Set children = cache.getChildrenNames( regionFqn );
++ return children == null ? 0 : children.size();
++ }
++ catch (Exception e) {
++ throw new CacheException(e);
++ }
++ }
++
++ public long getElementCountOnDisk() {
++ return 0;
++ }
++
++ public Map toMap() {
++ try {
++ Map result = new HashMap();
++ Set childrenNames = cache.getChildrenNames( regionFqn );
++ if (childrenNames != null) {
++ Iterator iter = childrenNames.iterator();
++ while ( iter.hasNext() ) {
++ Object key = iter.next();
++ result.put(
++ key,
++ cache.get( new Fqn( regionFqn, key ), ITEM )
++ );
++ }
++ }
++ return result;
++ }
++ catch (Exception e) {
++ throw new CacheException(e);
++ }
++ }
++
++ public String toString() {
++ return "TreeCache(" + regionName + ')';
++ }
++
++}
diff --git a/debian/patches/series b/debian/patches/series
index 16d7264..a20fa21 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
create-pom-file.patch
+compatibility-with-3.3.2.patch
--
hibernate-jbosscache: Integration of Hibernate with JBossCache
More information about the pkg-java-commits
mailing list