You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/09/05 17:16:38 UTC

svn commit: r1520339 - /jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java

Author: andy
Date: Thu Sep  5 15:16:37 2013
New Revision: 1520339

URL: http://svn.apache.org/r1520339
Log:
Be very cautious as to what to trust as being transactional...

Modified:
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java?rev=1520339&r1=1520338&r2=1520339&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java Thu Sep  5 15:16:37 2013
@@ -88,21 +88,26 @@ public class HttpAction
     public void setDataset(DatasetRef desc) {
         this.dsRef = desc ;
         this.dsg = desc.dataset ;
-        
-        if ( dsg instanceof Transactional ) {
-            transactional = (Transactional)dsg ;
-            DatasetGraph basedsg = unwrap(dsg) ;
+        DatasetGraph basedsg = unwrap(dsg) ;
+
+        if ( isTransactional(basedsg) && isTransactional(dsg) ) {
             // Use transactional if it looks safe - abort is necessary.
-            isTransactional = ( basedsg instanceof Transactional ) ;
+            transactional = (Transactional)dsg ;
+            isTransactional = true ;
         } else {
-            transactional = new DatasetGraphWithLock(dsg) ; 
+            // Unsure if safe
+            transactional = new DatasetGraphWithLock(dsg) ;
             // No real abort.
             isTransactional = false ;
         }
     }
-    
-    private DatasetGraph unwrap(DatasetGraph dsg) {
-        while ( dsg instanceof DatasetGraphWrapper ) {
+
+    private static boolean isTransactional(DatasetGraph dsg) {
+        return (dsg instanceof Transactional) ;
+    }
+
+    private static DatasetGraph unwrap(DatasetGraph dsg) {
+        while (dsg instanceof DatasetGraphWrapper) {
             dsg = ((DatasetGraphWrapper)dsg).getWrapped() ;
         }
         return dsg ;