You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2006/09/17 01:23:13 UTC
svn commit: r446971 - in /jackrabbit/trunk/jca: deploy/jboss/4.x/
src/main/java/org/apache/jackrabbit/jca/
Author: jukka
Date: Sat Sep 16 16:23:13 2006
New Revision: 446971
URL: http://svn.apache.org/viewvc?view=rev&rev=446971
Log:
JCR-463: Applied Edgar's proposed patch (with a license header and a few tab cleanups) for the upcoming 1.1 release candidate
Added:
jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java (with props)
Modified:
jackrabbit/trunk/jca/deploy/jboss/4.x/jcr-ds.xml
jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java
jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java
Modified: jackrabbit/trunk/jca/deploy/jboss/4.x/jcr-ds.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jca/deploy/jboss/4.x/jcr-ds.xml?view=diff&rev=446971&r1=446970&r2=446971
==============================================================================
--- jackrabbit/trunk/jca/deploy/jboss/4.x/jcr-ds.xml (original)
+++ jackrabbit/trunk/jca/deploy/jboss/4.x/jcr-ds.xml Sat Sep 16 16:23:13 2006
@@ -6,5 +6,6 @@
<connection-definition>javax.jcr.Repository</connection-definition>
<config-property name="homeDir" type="java.lang.String">/temp/jackrabbit</config-property>
<config-property name="configFile" type="java.lang.String">classpath:repository.xml</config-property>
+ <config-property name="bindSessionToTrasaction" type="java.lang.Boolean">true</config-property>
</tx-connection-factory>
</connection-factories>
Modified: jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java?view=diff&rev=446971&r1=446970&r2=446971
==============================================================================
--- jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java (original)
+++ jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java Sat Sep 16 16:23:13 2006
@@ -57,6 +57,11 @@
private final XASession session;
/**
+ * XAResource instance.
+ */
+ private final XAResource xaResource;
+
+ /**
* Listeners.
*/
private final LinkedList listeners;
@@ -80,6 +85,11 @@
this.session = session;
this.listeners = new LinkedList();
this.handles = new LinkedList();
+ if (this.mcf.getBindSessionToTrasaction().booleanValue()) {
+ this.xaResource = new TransactionBoundXAResource(this, session.getXAResource());
+ } else {
+ this.xaResource = session.getXAResource();
+ }
}
/**
@@ -173,7 +183,7 @@
*/
public XAResource getXAResource()
throws ResourceException {
- return session.getXAResource();
+ return this.xaResource;
}
/**
@@ -385,7 +395,7 @@
/**
* Release handles.
*/
- private void closeHandles() {
+ void closeHandles() {
synchronized (handles) {
JCASessionHandle[] handlesArray = new JCASessionHandle[handles
.size()];
Modified: jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java?view=diff&rev=446971&r1=446970&r2=446971
==============================================================================
--- jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java (original)
+++ jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java Sat Sep 16 16:23:13 2006
@@ -48,6 +48,14 @@
private String configFile;
/**
+ * Flag indicating whether the session should be bound to the
+ * transaction lyfecyle.
+ * In other words, if this flag is true the handle
+ * will be closed when the transaction ends.
+ */
+ private Boolean bindSessionToTrasaction = Boolean.TRUE;
+
+ /**
* Repository.
*/
private transient RepositoryImpl repository;
@@ -282,5 +290,13 @@
JCARepositoryManager mgr = JCARepositoryManager.getInstance();
mgr.autoShutdownRepository(homeDir, configFile);
}
+
+ public Boolean getBindSessionToTrasaction() {
+ return bindSessionToTrasaction;
+ }
+
+ public void setBindSessionToTrasaction(Boolean bindSessionToTrasaction) {
+ this.bindSessionToTrasaction = bindSessionToTrasaction;
+ }
}
Added: jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java?view=auto&rev=446971
==============================================================================
--- jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java (added)
+++ jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java Sat Sep 16 16:23:13 2006
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.jca;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+public class TransactionBoundXAResource implements XAResource {
+
+ private XAResource xaResource;
+
+ private JCAManagedConnection connection;
+
+ private boolean ending;
+
+ public TransactionBoundXAResource(JCAManagedConnection connection,
+ XAResource xaResource) {
+ super();
+ this.xaResource = xaResource;
+ this.connection = connection;
+ }
+
+ public void commit(Xid arg0, boolean arg1) throws XAException {
+ xaResource.commit(arg0, arg1);
+ }
+
+ public void end(Xid arg0, int arg1) throws XAException {
+ if (!ending) {
+ this.ending = true;
+ try {
+ xaResource.end(arg0, arg1);
+ } finally {
+ this.connection.closeHandles();
+ }
+ // reuse the XAResource
+ this.ending = false ;
+ }
+ }
+
+ public void forget(Xid arg0) throws XAException {
+ xaResource.forget(arg0);
+ }
+
+ public int getTransactionTimeout() throws XAException {
+ return xaResource.getTransactionTimeout();
+ }
+
+ public boolean isSameRM(XAResource arg0) throws XAException {
+ return xaResource.isSameRM(arg0);
+ }
+
+ public int prepare(Xid arg0) throws XAException {
+ return xaResource.prepare(arg0);
+ }
+
+ public Xid[] recover(int arg0) throws XAException {
+ return xaResource.recover(arg0);
+ }
+
+ public void rollback(Xid arg0) throws XAException {
+ xaResource.rollback(arg0);
+ }
+
+ public boolean setTransactionTimeout(int arg0) throws XAException {
+ return xaResource.setTransactionTimeout(arg0);
+ }
+
+ public void start(Xid arg0, int arg1) throws XAException {
+ xaResource.start(arg0, arg1);
+ }
+
+}
Propchange: jackrabbit/trunk/jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java
------------------------------------------------------------------------------
svn:eol-style = native