X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.e4.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Frap%2FAbstractRapE4App.java;h=66c796b8359b291a261123e7bc98dac6071d71d2;hb=9b98c6de943ac2e5b6c258566252d9fd15483a0a;hp=c70e381c392442e91661fc7aa7084e9b3a885892;hpb=e708f74fa92edea51d72e21eb19f357fd70c818c;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java b/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java index c70e381c3..66c796b83 100644 --- a/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java +++ b/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java @@ -1,64 +1,39 @@ package org.argeo.cms.e4.rap; -import java.security.PrivilegedAction; import java.util.HashMap; import java.util.Map; -import javax.security.auth.Subject; - +import org.argeo.cms.ui.dialogs.CmsFeedback; import org.eclipse.rap.e4.E4ApplicationConfig; -import org.eclipse.rap.e4.E4EntryPointFactory; import org.eclipse.rap.rwt.application.Application; import org.eclipse.rap.rwt.application.Application.OperationMode; import org.eclipse.rap.rwt.application.ApplicationConfiguration; -import org.eclipse.rap.rwt.application.EntryPoint; +import org.eclipse.rap.rwt.application.ExceptionHandler; import org.eclipse.rap.rwt.client.WebClient; -import org.osgi.framework.BundleContext; -import org.osgi.framework.FrameworkUtil; public abstract class AbstractRapE4App implements ApplicationConfiguration { - private final BundleContext bc = FrameworkUtil.getBundle(AbstractRapE4App.class).getBundleContext(); - private String pageTitle; private String e4Xmi; private String path; + private String lifeCycleUri = "bundleclass://org.argeo.cms.e4.rap/org.argeo.cms.e4.rap.CmsLoginLifecycle"; public void configure(Application application) { - String lifeCycleUri = "bundleclass://" + bc.getBundle().getSymbolicName() + "/" - + CmsLoginLifecycle.class.getName(); - - Map properties = new HashMap(); - properties.put(WebClient.PAGE_TITLE, pageTitle); - E4ApplicationConfig config = new E4ApplicationConfig(e4Xmi, lifeCycleUri, null, false, true, true); - config.isClearPersistedState(); - E4EntryPointFactory entryPointFactory = new E4EntryPointFactory(config) { + application.setExceptionHandler(new ExceptionHandler() { @Override - public EntryPoint create() { - Subject subject = new Subject(); - EntryPoint ep = createEntryPoint(); - EntryPoint authEp = new EntryPoint() { - - @Override - public int createUI() { - return Subject.doAs(subject, new PrivilegedAction() { - - @Override - public Integer run() { - return ep.createUI(); - } - - }); - } - }; - return authEp; + public void handleException(Throwable throwable) { + CmsFeedback.show("Unexpected RWT exception", throwable); } + }); - protected EntryPoint createEntryPoint() { - return super.create(); - } + Map properties = new HashMap(); + properties.put(WebClient.PAGE_TITLE, pageTitle); + E4ApplicationConfig config = new E4ApplicationConfig(e4Xmi, lifeCycleUri, null, null, false, true, true); + addEntryPoint(application, config, properties); + } - }; + protected void addEntryPoint(Application application, E4ApplicationConfig config, Map properties) { + CmsE4EntryPointFactory entryPointFactory = new CmsE4EntryPointFactory(config); application.addEntryPoint(path, entryPointFactory, properties); application.setOperationMode(OperationMode.SWT_COMPATIBILITY); } @@ -75,4 +50,8 @@ public abstract class AbstractRapE4App implements ApplicationConfiguration { this.path = path; } + public void setLifeCycleUri(String lifeCycleUri) { + this.lifeCycleUri = lifeCycleUri; + } + }