Author: ozeigermann
Date: Tue Apr 10 09:54:06 2007
New Revision: 527196

URL: http://svn.apache.org/viewvc?view=rev&rev=527196
Log:
Added code for permissions to work outside of transactions

Modified:
    
jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java

Modified: 
jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java
URL: 
http://svn.apache.org/viewvc/jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java?view=diff&rev=527196&r1=527195&r2=527196
==============================================================================
--- 
jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java
 (original)
+++ 
jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java
 Tue Apr 10 09:54:06 2007
@@ -366,22 +366,75 @@
 
     public Enumeration enumeratePermissions(Uri uri) throws 
ServiceAccessException {
         log("enumeratePermissions(" + uri + ")");
-        return ((TransactionId) 
getCurrentlyActiveTransactionalResource()).enumeratePermissions(uri);
+        TransactionId id = ((TransactionId) 
getCurrentlyActiveTransactionalResource());
+        if (id == null) {
+            id = createTransactionResource(uri);
+            try {
+                return id.enumeratePermissions(uri);
+            } finally {
+                try {
+                    id.commit();
+                } catch (XAException e) {
+                    throw new ServiceAccessException(this, e);
+                }
+            }
+        }
+
+        return id.enumeratePermissions(uri);
     }
 
     public void grantPermission(Uri uri, NodePermission permission) throws 
ServiceAccessException {
         log("grantPermission(" + uri + ")");
-        ((TransactionId) 
getCurrentlyActiveTransactionalResource()).grantPermission(uri, permission);
+        TransactionId id = ((TransactionId) 
getCurrentlyActiveTransactionalResource());
+        if (id == null) {
+            id = createTransactionResource(uri);
+            try {
+                id.grantPermission(uri, permission);
+            } finally {
+                try {
+                    id.commit();
+                } catch (XAException e) {
+                    throw new ServiceAccessException(this, e);
+                }
+            }
+        }
+        id.grantPermission(uri, permission);
     }
 
     public void revokePermission(Uri uri, NodePermission permission) throws 
ServiceAccessException {
         log("revokePermission(" + uri + ")");
-        ((TransactionId) 
getCurrentlyActiveTransactionalResource()).revokePermission(uri, permission);
+        TransactionId id = ((TransactionId) 
getCurrentlyActiveTransactionalResource());
+        if (id == null) {
+            id = createTransactionResource(uri);
+            try {
+                id.revokePermission(uri, permission);
+            } finally {
+                try {
+                    id.commit();
+                } catch (XAException e) {
+                    throw new ServiceAccessException(this, e);
+                }
+            }
+        }
+        id.revokePermission(uri, permission);
     }
 
     public void revokePermissions(Uri uri) throws ServiceAccessException {
         log("revokePermissions(" + uri + ")");
-        ((TransactionId) 
getCurrentlyActiveTransactionalResource()).revokePermissions(uri);
+        TransactionId id = ((TransactionId) 
getCurrentlyActiveTransactionalResource());
+        if (id == null) {
+            id = createTransactionResource(uri);
+            try {
+                id.revokePermissions(uri);
+            } finally {
+                try {
+                    id.commit();
+                } catch (XAException e) {
+                    throw new ServiceAccessException(this, e);
+                }
+            }
+        }
+        id.revokePermissions(uri);
     }
     protected void log(String msg) {
         getLogger().log(msg, this.getClass().getName(), Logger.DEBUG);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to