Add doAs in RCP CmsView.
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 26 Oct 2020 11:36:02 +0000 (12:36 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 26 Oct 2020 11:36:02 +0000 (12:36 +0100)
rcp/org.argeo.cms.ui.rcp/src/org/argeo/cms/ui/rcp/CmsRcpApp.java

index aa843c4590a7714556e1c8d46ec9be5ed535a263..5c6411a5f7ab902b1a1902fc8d974ce360f579e7 100644 (file)
@@ -157,43 +157,40 @@ public class CmsRcpApp implements CmsView {
 
        @Override
        public UxContext getUxContext() {
-               // TODO Auto-generated method stub
-               return null;
+               throw new UnsupportedOperationException();
        }
 
        @Override
        public void navigateTo(String state) {
-               // TODO Auto-generated method stub
-
+               throw new UnsupportedOperationException();
        }
 
        @Override
        public void authChange(LoginContext loginContext) {
-               // TODO Auto-generated method stub
-
        }
 
        @Override
        public void logout() {
-               // TODO Auto-generated method stub
-
+               if (loginContext != null)
+                       try {
+                               loginContext.logout();
+                       } catch (LoginException e) {
+                               log.error("Cannot log out", e);
+                       }
        }
 
        @Override
        public void exception(Throwable e) {
-               // TODO Auto-generated method stub
-
+               log.error("Unexpected exception in CMS RCP", e);
        }
 
        @Override
        public CmsImageManager getImageManager() {
-               // TODO Auto-generated method stub
-               return null;
+               throw new UnsupportedOperationException();
        }
 
        @Override
        public boolean isAnonymous() {
-               // TODO Auto-generated method stub
                return false;
        }
 
@@ -214,6 +211,14 @@ public class CmsRcpApp implements CmsView {
                eventAdmin.sendEvent(new Event(topic, properties));
        }
 
+       public <T> T doAs(PrivilegedAction<T> action) {
+               return Subject.doAs(getSubject(), action);
+       }
+
+       protected Subject getSubject() {
+               return loginContext.getSubject();
+       }
+
        /*
         * DEPENDENCY INJECTION
         */