[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