]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - rcp/org.argeo.cms.ui.rcp/src/org/argeo/cms/ui/rcp/CmsRcpApp.java
Add doAs in RCP CmsView.
[gpl/argeo-slc.git] / 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
         */