blob: 9322385128770bcf8e9672e5872fc035ac0f43f3 [file] [log] [blame]
package @@BUNDLE_SWING_NAME@@;
import java.security.PrivilegedExceptionAction;
import javax.security.auth.Subject;
import org.eclipse.equinox.app.IApplicationContext;
import org.eclipse.scout.commons.logger.IScoutLogger;
import org.eclipse.scout.commons.logger.ScoutLogManager;
import org.eclipse.scout.net.NetActivator;
import org.eclipse.scout.rt.client.IClientSession;
import org.eclipse.scout.rt.client.services.common.session.IClientSessionRegistryService;
import org.eclipse.scout.commons.security.SimplePrincipal;
import org.eclipse.scout.rt.ui.swing.AbstractSwingApplication;
import org.eclipse.scout.rt.ui.swing.ISwingEnvironment;
import org.eclipse.scout.service.SERVICES;
import @@BUNDLE_CLIENT_NAME@@.ClientSession;
public class SwingApplication extends AbstractSwingApplication{
private static IScoutLogger logger = ScoutLogManager.getLogger(SwingApplication.class);
@Override
public Object start(final IApplicationContext context) throws Exception{
Subject subject=new Subject();
subject.getPrincipals().add(new SimplePrincipal(System.getProperty("user.name")));
return Subject.doAs(subject, new PrivilegedExceptionAction<Object>(){
@Override
public Object run() throws Exception{
return startSecure(context);
}
});
}
@Override
protected ISwingEnvironment createSwingEnvironment(){
return new SwingEnvironment();
}
private Object startSecure(IApplicationContext context) throws Exception{
try{
NetActivator.install();
}
catch(Throwable t){
// no net handler found
logger.warn("NetActivator is not available", t);
}
return super.start(context);
}
@Override
protected IClientSession getClientSession() {
return SERVICES.getService(IClientSessionRegistryService.class).newClientSession(ClientSession.class, initUserAgent());
}
}