[Mulgara-svn] r124 - in branches/xafix-impl: . src/jar/resolver/java/org/mulgara/resolver
andrae at mulgara.org
andrae at mulgara.org
Wed Nov 1 23:52:21 UTC 2006
Author: andrae
Date: 2006-11-01 17:52:20 -0600 (Wed, 01 Nov 2006)
New Revision: 124
Modified:
branches/xafix-impl/log4j-conf.xml
branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/DatabaseSession.java
branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java
branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/TransactionalAnswer.java
Log:
Fixed NullPointerExceptions where I forgot I was setting transaction to Null at
the end-of-transaction/close.
Modified: branches/xafix-impl/log4j-conf.xml
===================================================================
--- branches/xafix-impl/log4j-conf.xml 2006-11-01 06:42:45 UTC (rev 123)
+++ branches/xafix-impl/log4j-conf.xml 2006-11-01 23:52:20 UTC (rev 124)
@@ -51,13 +51,14 @@
</appender>
<!-- (Insert category elements here) -->
+ <!--
<category name="org.mulgara.resolver.MulgaraTransaction">
<priority value="debug"/>
</category>
<category name="org.mulgara.resolver.TransactionalAnswer">
<priority value="debug"/>
</category>
-
+-->
<!-- Default is to log messages of "warn" priority to the logfile appender -->
<root>
<priority value="warn"/>
Modified: branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/DatabaseSession.java
===================================================================
--- branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/DatabaseSession.java 2006-11-01 06:42:45 UTC (rev 123)
+++ branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/DatabaseSession.java 2006-11-01 23:52:20 UTC (rev 124)
@@ -671,6 +671,8 @@
public void setAutoCommit(boolean autoCommit) throws QueryException {
+ logger.warn("Entering setAutoCommit");
+ try {
if (logger.isInfoEnabled()) {
logger.info("setAutoCommit(" + autoCommit + ") called with autoCommit = " + this.autoCommit);
}
@@ -684,7 +686,7 @@
endTransactionalBlock("Extended transaction failed");
}
} else if (this.autoCommit && !autoCommit) { // Turning autoCommit off
- if (this.transaction.isSuspended()) {
+ if (transaction != null && transaction.isSuspended()) {
resumeTransactionalBlock();
endPreviousQueryTransaction();
}
@@ -704,6 +706,13 @@
logger.info("Invalid call to setAutoCommit(" + autoCommit + ") called with autoCommit = " + this.autoCommit);
}
}
+ } catch (QueryException eq) {
+ logger.error("Threw exception in autoCommit:", eq);
+ throw eq;
+ } catch (Exception e) {
+ logger.error("Threw RuntimeException in ac:", e);
+ throw new QueryException("setAutoCommit failed:", e);
+ }
}
public void commit() throws QueryException {
@@ -900,7 +909,9 @@
*/
public void resumeTransactionalBlock() throws QueryException {
logger.info("Resume Transactional Block");
- if (!transaction.isSuspended()) {
+ if (transaction == null) {
+ throw new IllegalStateException("Attempt to resume without starting transaction");
+ } else if (!transaction.isSuspended()) {
throw new IllegalStateException("Attempt to resume unsuspended transaction");
} else if (inFailedTransaction == true) {
throw new IllegalStateException("Transaction already failed, set autocommit true to reset");
@@ -922,8 +933,11 @@
*/
public void suspendTransactionalBlock() throws Throwable {
logger.info("Suspend Transactional Block");
- if (transaction.isSuspended()) {
+ if (transaction == null) {
throw new IllegalStateException(
+ "Attempt to suspend unstarted transaction");
+ } else if (transaction.isSuspended()) {
+ throw new IllegalStateException(
"Attempt to suspend unresumed transaction.");
}
if (logger.isInfoEnabled()) {
@@ -1268,7 +1282,7 @@
}
boolean ensureTransactionResumed() throws QueryException {
- if (this.transaction.isSuspended()) {
+ if (transaction != null && transaction.isSuspended()) {
resumeTransactionalBlock();
return true;
} else {
Modified: branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java
===================================================================
--- branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java 2006-11-01 06:42:45 UTC (rev 123)
+++ branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java 2006-11-01 23:52:20 UTC (rev 124)
@@ -110,7 +110,13 @@
}
// FIXME: Need to finish 1-N DS-OC and provide this method - should really be newOperationContext.
- return new MulgaraTransaction(this, session.getOperationContext());
+ try {
+ return new MulgaraTransaction(this, session.getOperationContext());
+ } catch (MulgaraTransactionException em) {
+ throw em;
+ } catch (Exception e) {
+ throw new MulgaraTransactionException("Error creating transaction", e);
+ }
}
Modified: branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/TransactionalAnswer.java
===================================================================
--- branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/TransactionalAnswer.java 2006-11-01 06:42:45 UTC (rev 123)
+++ branches/xafix-impl/src/jar/resolver/java/org/mulgara/resolver/TransactionalAnswer.java 2006-11-01 23:52:20 UTC (rev 124)
@@ -61,6 +61,12 @@
try {
report("Creating Answer");
+ if (transaction == null) {
+ throw new IllegalArgumentException("Transaction null in TransactionalAnswer");
+ } else if (answer == null) {
+ throw new IllegalArgumentException("Answer null in TransactionalAnswer");
+ }
+
this.answer = answer;
this.transaction = transaction;
transaction.reference();
@@ -72,6 +78,7 @@
}
public Object getObject(final int column) throws TuplesException {
+ notClosed();
return transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
returnObject(answer.getObject(column));
@@ -80,6 +87,7 @@
}
public Object getObject(final String columnName) throws TuplesException {
+ notClosed();
return transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
returnObject(answer.getObject(columnName));
@@ -88,6 +96,7 @@
}
public void beforeFirst() throws TuplesException {
+ notClosed();
transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
answer.beforeFirst();
@@ -97,6 +106,7 @@
public void close() throws TuplesException {
report("Closing Answer");
+ notClosed();
try {
transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
@@ -117,6 +127,7 @@
}
public int getColumnIndex(final Variable column) throws TuplesException {
+ notClosed();
return transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
returnInt(answer.getColumnIndex(column));
@@ -125,6 +136,7 @@
}
public int getNumberOfVariables() {
+ notClosed();
try {
return transaction.execute(new AnswerOperation() {
public void execute() {
@@ -137,6 +149,7 @@
}
public Variable[] getVariables() {
+ notClosed();
try {
return (Variable[])(transaction.execute(new AnswerOperation() {
public void execute() {
@@ -149,6 +162,7 @@
}
public boolean isUnconstrained() throws TuplesException {
+ notClosed();
return transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
returnBoolean(answer.isUnconstrained());
@@ -157,6 +171,7 @@
}
public long getRowCount() throws TuplesException {
+ notClosed();
return transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
returnLong(answer.getRowCount());
@@ -165,6 +180,7 @@
}
public long getRowUpperBound() throws TuplesException {
+ notClosed();
return transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
returnLong(answer.getRowUpperBound());
@@ -173,6 +189,7 @@
}
public int getRowCardinality() throws TuplesException {
+ notClosed();
return transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
returnInt(answer.getRowCardinality());
@@ -181,6 +198,7 @@
}
public boolean next() throws TuplesException {
+ notClosed();
return transaction.execute(new AnswerOperation() {
public void execute() throws TuplesException {
returnBoolean(answer.next());
@@ -222,4 +240,12 @@
close();
}
}
+
+ private void notClosed() throws IllegalStateException {
+ if (transaction == null) {
+ throw new IllegalStateException("TransactionalAnswer closed");
+ } else if (answer == null) {
+ throw new IllegalStateException("TransactionAnswer not closed, but Answer null");
+ }
+ }
}
More information about the Mulgara-svn
mailing list