X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=security%2Feclipse%2Fplugins%2Forg.argeo.security.ui.rcp%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Frcp%2FAbstractSecureApplication.java;fp=security%2Feclipse%2Fplugins%2Forg.argeo.security.ui.rcp%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Frcp%2FAbstractSecureApplication.java;h=0000000000000000000000000000000000000000;hb=308001aedac299588da2c235c863645482a98c0f;hp=f7c5fc5d1469a149b4f05c7141645f030decd6ea;hpb=7538e374a737d52b438c98c261f384a7e0a4d75b;p=lgpl%2Fargeo-commons.git diff --git a/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/AbstractSecureApplication.java b/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/AbstractSecureApplication.java deleted file mode 100644 index f7c5fc5d1..000000000 --- a/security/eclipse/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/AbstractSecureApplication.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.argeo.security.ui.rcp; - -import java.security.PrivilegedAction; - -import javax.security.auth.Subject; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.security.equinox.CurrentUser; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.equinox.app.IApplication; -import org.eclipse.equinox.app.IApplicationContext; -import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.application.WorkbenchAdvisor; - -public abstract class AbstractSecureApplication implements IApplication { - private static final Log log = LogFactory - .getLog(AbstractSecureApplication.class); - - protected abstract WorkbenchAdvisor createWorkbenchAdvisor(); - - public Object start(IApplicationContext context) throws Exception { - - Integer returnCode = null; - Display display = PlatformUI.createDisplay(); - - // Force login - String username = CurrentUser.getUsername(); - if (log.isDebugEnabled()) - log.debug("Logged in as " + username); - - try { - returnCode = (Integer) Subject.doAs(CurrentUser.getSubject(), - getRunAction(display)); - if (log.isDebugEnabled()) - log.debug("secure action completed"); - CurrentUser.logout(); - return processReturnCode(returnCode); - } catch (Exception e) { - // e.printStackTrace(); - IStatus status = new Status(IStatus.ERROR, - "org.argeo.security.rcp", "Login failed", e); - ErrorDialog.openError(null, "Error", "Login failed", status); - return returnCode; - } finally { - display.dispose(); - } - } - - protected Integer processReturnCode(Integer returnCode) { - return returnCode; - } - - @SuppressWarnings("rawtypes") - private PrivilegedAction getRunAction(final Display display) { - return new PrivilegedAction() { - - public Object run() { - int result = createAndRunWorkbench(display); - return new Integer(result); - } - }; - } - - protected Integer createAndRunWorkbench(Display display) { - return PlatformUI.createAndRunWorkbench(display, - createWorkbenchAdvisor()); - } - - public void stop() { - final IWorkbench workbench; - try { - workbench = PlatformUI.getWorkbench(); - } catch (Exception e) { - return; - } - if (workbench == null) - return; - final Display display = workbench.getDisplay(); - if (display != null && !display.isDisposed()) - display.syncExec(new Runnable() { - - public void run() { - if (!display.isDisposed()) - workbench.close(); - } - }); - - if (log.isDebugEnabled()) - log.debug("workbench stopped"); - String username = CurrentUser.getUsername(); - if (log.isDebugEnabled()) - log.debug("workbench stopped, logged in as " + username); - - } - -}