Improve UI event support
[lgpl/argeo-commons.git] / org.argeo.api.cms / src / org / argeo / api / cms / ux / CmsView.java
index 45629fba5bdd387947f0236b211a366783a3953c..15b6a5dc7aac338a7180f748fa404c31f4f28bb0 100644 (file)
@@ -1,8 +1,9 @@
 package org.argeo.api.cms.ux;
 
-import java.security.PrivilegedAction;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executors;
 
 import javax.security.auth.login.LoginContext;
 
@@ -56,20 +57,14 @@ public interface CmsView {
 
        }
 
-       default <T> T doAs(PrivilegedAction<T> action) {
-               throw new UnsupportedOperationException();
-       }
-
-       default Void runAs(Runnable runnable) {
-               return doAs(new PrivilegedAction<Void>() {
+       /**
+        * Make sure that this action is executed with the proper subject and in a
+        * proper thread.
+        */
+       <T> T doAs(Callable<T> action);
 
-                       @Override
-                       public Void run() {
-                               if (runnable != null)
-                                       runnable.run();
-                               return null;
-                       }
-               });
+       default void runAs(Runnable runnable) {
+               doAs(Executors.callable(runnable));
        }
 
        default void stateChanged(String state, String title) {