X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.api.cms%2Fsrc%2Forg%2Fargeo%2Fapi%2Fcms%2Fux%2FCmsView.java;h=15b6a5dc7aac338a7180f748fa404c31f4f28bb0;hb=a81a19a9a3e45a89ed3b7c783bd5747cc27f6aa1;hp=45629fba5bdd387947f0236b211a366783a3953c;hpb=8c6e16aa43d9523e1ec57a41a06b3ceba7d23fdb;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.api.cms/src/org/argeo/api/cms/ux/CmsView.java b/org.argeo.api.cms/src/org/argeo/api/cms/ux/CmsView.java index 45629fba5..15b6a5dc7 100644 --- a/org.argeo.api.cms/src/org/argeo/api/cms/ux/CmsView.java +++ b/org.argeo.api.cms/src/org/argeo/api/cms/ux/CmsView.java @@ -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 doAs(PrivilegedAction action) { - throw new UnsupportedOperationException(); - } - - default Void runAs(Runnable runnable) { - return doAs(new PrivilegedAction() { + /** + * Make sure that this action is executed with the proper subject and in a + * proper thread. + */ + T doAs(Callable 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) {