You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by oz...@apache.org on 2005/02/10 02:49:59 UTC

cvs commit: jakarta-slide/src/share/org/apache/slide/store ExtendedStore.java

ozeigermann    2005/02/09 17:49:59

  Modified:    src/share/org/apache/slide/store ExtendedStore.java
  Log:
  Prevented multiple calls to enlist in case of failure as it simply makes no sense
  
  Revision  Changes    Path
  1.29      +33 -4     jakarta-slide/src/share/org/apache/slide/store/ExtendedStore.java
  
  Index: ExtendedStore.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/ExtendedStore.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- ExtendedStore.java	21 Dec 2004 16:12:44 -0000	1.28
  +++ ExtendedStore.java	10 Feb 2005 01:49:59 -0000	1.29
  @@ -27,10 +27,12 @@
   import java.util.Hashtable;
   import java.util.Vector;
   
  +import javax.transaction.Transaction;
   import javax.transaction.xa.XAException;
   import javax.transaction.xa.Xid;
   
   import org.apache.commons.transaction.util.xa.XidWrapper;
  +import org.apache.slide.common.Service;
   import org.apache.slide.common.ServiceAccessException;
   import org.apache.slide.common.ServiceParameterErrorException;
   import org.apache.slide.common.ServiceParameterMissingException;
  @@ -50,6 +52,7 @@
   import org.apache.slide.structure.ObjectNode;
   import org.apache.slide.structure.ObjectNotFoundException;
   import org.apache.slide.util.ByteSizeLimitedObjectCache;
  +import org.apache.slide.util.Messages;
   import org.apache.slide.util.ObjectCache;
   import org.apache.slide.util.TxLRUObjectCache;
   import org.apache.slide.util.logger.Logger;
  @@ -1291,6 +1294,32 @@
           }
       }
   
  +    protected void enlist(Service service) throws ServiceAccessException {
  +        boolean enlisted = false;
  +        try {
  +            Transaction transaction = namespace.getTransactionManager().getTransaction();
  +            if (transaction == null) {
  +                getLogger().log("WARNING: No active transaction", Logger.WARNING);
  +                return;
  +            }
  +            enlisted = transaction.enlistResource(service);
  +
  +        } catch (Exception e) {
  +            // Something went wrong.
  +            setRollbackOnly();
  +            throw new ServiceAccessException(this, e);
  +        }
  +        if (!enlisted) {
  +            String exMessage = Messages.format(AbstractStore.class.getName() + ".enlistFail",
  +                    service);
  +            setRollbackOnly();
  +            throw new ServiceAccessException(this, exMessage);
  +        }
  +        if (getLogger().isEnabled(LOG_CHANNEL, Logger.DEBUG)) {
  +            String logMessage = Messages.format(AbstractStore.class.getName() + ".enlist", service);
  +            getLogger().log(logMessage, LOG_CHANNEL, Logger.DEBUG);
  +        }
  +    }
       
       protected class TxCacheWrapper implements ObjectCache {
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org