Improve Eclipse security
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui.rcp / src / main / java / org / argeo / security / ui / rcp / SecureRap.java
index a426d4579bc009ae3e1a1d579940d685ef580b95..964de7c397513ccf314208fd011dfd8b724f198a 100644 (file)
@@ -1,53 +1,28 @@
 package org.argeo.security.ui.rcp;
 
-import java.security.PrivilegedAction;
-
-import javax.security.auth.Subject;
-
-import org.argeo.security.equinox.CurrentUser;
-import org.eclipse.equinox.app.IApplication;
-import org.eclipse.equinox.app.IApplicationContext;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchAdvisor;
 import org.eclipse.ui.application.WorkbenchWindowAdvisor;
 
-public class SecureRap implements IApplication {
-       public Object start(IApplicationContext context) throws Exception {
-               String username = CurrentUser.getUsername();
-               Integer result = null;
-               Display display = PlatformUI.createDisplay();
-               try {
-                       result = (Integer) Subject.doAs(CurrentUser.getSubject(),
-                                       getRunAction(display));
-               } catch (Exception e) {
-                       e.printStackTrace();
-               } finally {
-                       display.dispose();
-               }
-               return result;
-       }
-
-       @SuppressWarnings("rawtypes")
-       private PrivilegedAction getRunAction(final Display display) {
-               return new PrivilegedAction() {
+/** Generic secure application for RAP. */
+public class SecureRap extends AbstractSecureApplication {
 
-                       public Object run() {
-                               int result = PlatformUI.createAndRunWorkbench(display,
-                                               new ApplicationWorkbenchAdvisor());
-                               return new Integer(result);
+       @Override
+       protected WorkbenchAdvisor createWorkbenchAdvisor() {
+               return new SecureWorkbenchAdvisor() {
+                       public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
+                                       IWorkbenchWindowConfigurer configurer) {
+                               return new RapSecureWorkbenchWindowAdvisor(configurer);
                        }
+
                };
        }
 
        public void stop() {
-               final IWorkbench workbench;
-               try {
-                       workbench = PlatformUI.getWorkbench();
-               } catch (Exception e) {
-                       return;
-               }
+               final IWorkbench workbench = PlatformUI.getWorkbench();
                if (workbench == null)
                        return;
                final Display display = workbench.getDisplay();
@@ -60,11 +35,4 @@ public class SecureRap implements IApplication {
                });
        }
 
-       class ApplicationWorkbenchAdvisor extends SecureWorkbenchAdvisor {
-               public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
-                               IWorkbenchWindowConfigurer configurer) {
-                       return new RapSecureWorkbenchWindowAdvisor(configurer);
-               }
-       }
-
 }