Skip to content

Commit

Permalink
Extract session specific data from plugin to fragments
Browse files Browse the repository at this point in the history
  • Loading branch information
matana committed Jul 2, 2012
1 parent 96d3428 commit a7baa33
Show file tree
Hide file tree
Showing 39 changed files with 825 additions and 535 deletions.
2 changes: 2 additions & 0 deletions de.uni_koeln.ub.drc.ui.rap/.classpath
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="lib/sinist_2.8.1-0.2.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/drc-scala.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
2 changes: 2 additions & 0 deletions de.uni_koeln.ub.drc.ui.rap/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: javax.servlet,
javax.servlet.http
Require-Bundle: org.eclipse.rap.ui
Bundle-ClassPath: lib/drc-scala.jar,
.
3 changes: 2 additions & 1 deletion de.uni_koeln.ub.drc.ui.rap/build.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ bin.includes = META-INF/,\
.,\
WEB-INF/,\
fragment.xml,\
plugin.properties
plugin.properties,\
lib/drc-scala.jar
3 changes: 2 additions & 1 deletion de.uni_koeln.ub.drc.ui.rap/de.uni_koeln.ub.drc.rap.launch
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<booleanAttribute key="default" value="true"/>
<booleanAttribute key="default_auto_start" value="true"/>
<intAttribute key="default_start_level" value="4"/>
<stringAttribute key="deselected_workspace_plugins" value="de.uni_koeln.spinfo.matana.rap_session"/>
<booleanAttribute key="includeOptional" value="true"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
Expand All @@ -37,7 +38,7 @@
<booleanAttribute key="pde.generated.config" value="true"/>
<stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="true"/>
<stringAttribute key="target_bundles" value="com.ibm.icu.base@default:default,com.ibm.icu@default:default,javax.servlet@default:default,org.apache.ant@default:default,org.apache.commons.logging@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.http.servletbridge@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.servletbridge.extensionbundle@default:false,org.eclipse.equinox.servletbridge@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.rap.jface.databinding@default:default,org.eclipse.rap.jface@default:default,org.eclipse.rap.junit.runtime@default:default,org.eclipse.rap.junit@default:default,org.eclipse.rap.rwt.q07@default:false,org.eclipse.rap.rwt@default:default,org.eclipse.rap.ui.forms@default:default,org.eclipse.rap.ui.views@default:default,org.eclipse.rap.ui.workbench@default:default,org.eclipse.rap.ui@default:default,org.eclipse.swt@default:default,org.hamcrest.core@default:default,org.junit*3.8.2.v3_8_2_v20100427-1100@default:default,org.junit*4.8.2.v4_8_2_v20110321-1705@default:default,org.mortbay.jetty.server@default:default,org.mortbay.jetty.util@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default"/>
<stringAttribute key="target_bundles" value="com.ibm.icu.base@default:default,com.ibm.icu@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,org.apache.ant@default:default,org.apache.commons.el@default:default,org.apache.commons.logging@default:default,org.apache.jasper@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.http.servletbridge@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.servletbridge.extensionbundle@default:false,org.eclipse.equinox.servletbridge@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.rap.jface.databinding@default:default,org.eclipse.rap.jface@default:default,org.eclipse.rap.junit.runtime@default:default,org.eclipse.rap.junit@default:default,org.eclipse.rap.rwt.q07@default:false,org.eclipse.rap.rwt@default:default,org.eclipse.rap.ui.forms@default:default,org.eclipse.rap.ui.views@default:default,org.eclipse.rap.ui.workbench@default:default,org.eclipse.rap.ui@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.swt@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit*3.8.2.v3_8_2_v20100427-1100@default:default,org.junit*4.8.2.v4_8_2_v20110321-1705@default:default,org.mortbay.jetty.server@default:default,org.mortbay.jetty.util@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>
Expand Down
Binary file added de.uni_koeln.ub.drc.ui.rap/lib/drc-scala.jar
Binary file not shown.
Binary file not shown.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package de.uni_koeln.ub.drc.ui.facades;

import java.net.URL;
import java.util.Collections;

import javax.security.auth.login.LoginException;

import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.security.auth.ILoginContext;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;

import com.quui.sinist.XmlDb;

import de.uni_koeln.ub.drc.data.Index;
import de.uni_koeln.ub.drc.data.User;
import de.uni_koeln.ub.drc.ui.DrcUiActivator;

/**
* Provides separate session contexts for each logged in user (RAP).
*
* @author Claes Neuefeind (claesn)
*
*/
public class SessionContextSingletonImpl implements
ISessionContextSingletonProvider {

private ILoginContext loginContext;
private XmlDb db;

@Override
public Object getInstanceInternal() {
return SessionSingletonBase.getInstance(SessionContextSingleton.class);
}

@Override
public void setLoginContext(ILoginContext loginContext) {
this.loginContext = loginContext;
}

@Override
public ILoginContext getLoginContext() {
return loginContext;
}

@Override
public User getCurrentUser() {
User user = null;
try {
user = (User) loginContext.getSubject().getPrivateCredentials()
.iterator().next();
} catch (LoginException e) {
e.printStackTrace();
}
return user;
}

@Override
public XmlDb getUserDb() {
if (Index.LocalDb().isAvailable())
return Index.LocalDb();
return new XmlDb(
"http://hydra1.spinfo.uni-koeln.de", 8080, "guest", "guest"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}

@Override
public XmlDb db() {
if (db == null) {
db = Index.LocalDb().isAvailable() ? Index.LocalDb()
: getCurrentUser().db();
if (!db.isAvailable()) {
throw new IllegalStateException(
"Could not connect to DB: " + db); //$NON-NLS-1$
}
DrcUiActivator
.getDefault()
.getLog()
.log(new Status(IStatus.INFO, DrcUiActivator.PLUGIN_ID,
"Using DB: " + db)); //$NON-NLS-1$
}
return db;
}

/**
* @param location
* The bundle path of the image to load
* @return The loaded image
*/
@Override
public Image loadImage(String location) {
IPath path = new Path(location);
URL url = FileLocator.find(DrcUiActivator.getDefault().getBundle(),
path, Collections.EMPTY_MAP);
ImageDescriptor desc = ImageDescriptor.createFromURL(url);
return desc.createImage();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,12 @@
*************************************************************************************************/
package de.uni_koeln.ub.drc.ui.rap;

import java.net.URL;

import javax.security.auth.login.LoginException;

import org.eclipse.equinox.security.auth.ILoginContext;
import org.eclipse.equinox.security.auth.LoginContextFactory;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.rwt.RWT;
import org.eclipse.rwt.internal.lifecycle.JavaScriptResponseWriter;
import org.eclipse.rwt.internal.service.ContextProvider;
import org.eclipse.rwt.lifecycle.PhaseEvent;
import org.eclipse.rwt.lifecycle.PhaseId;
import org.eclipse.rwt.lifecycle.PhaseListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.application.IWorkbenchConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchAdvisor;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
import org.osgi.framework.BundleContext;

import de.uni_koeln.ub.drc.ui.ApplicationWorkbenchWindowAdvisor;
import de.uni_koeln.ub.drc.ui.DrcUiActivator;
import de.uni_koeln.ub.drc.ui.Messages;

/**
* This workbench advisor creates the window advisor, and specifies the
Expand All @@ -39,8 +22,6 @@
*/
public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {

private static final String JAAS_CONFIG_FILE = "jaas_config"; //$NON-NLS-1$
private ILoginContext loginContext;
private static final String PERSPECTIVE_ID = "de.uni_koeln.ub.drc.ui.perspective"; //$NON-NLS-1$

@Override
Expand All @@ -59,98 +40,4 @@ public void initialize(IWorkbenchConfigurer configurer) {
super.initialize(configurer);
}

@Override
public void postStartup() {
super.postStartup();
BundleContext bundleContext = DrcUiActivator.getDefault().getBundle()
.getBundleContext();
try {
login(bundleContext);
} catch (Exception e) {
e.printStackTrace();
}
}

private void login(BundleContext bundleContext) throws Exception {
String configName = "SIMPLE"; //$NON-NLS-1$
System.out.println("bundleContext : " //$NON-NLS-1$
+ bundleContext.getClass().getName().toLowerCase());
URL configUrl = bundleContext.getBundle().getEntry(JAAS_CONFIG_FILE);
loginContext = LoginContextFactory.createContext(configName, configUrl);
try {
loginContext.login();
DrcUiActivator.getDefault().setLoginContext(loginContext);

} catch (LoginException e) {
e.printStackTrace();
boolean retry = MessageDialog.openQuestion(null,
Messages.get().Error, Messages.get().LoginFailed);
if (!retry) {
redirect();
} else {
login(bundleContext);
}
}
}

@SuppressWarnings("unused")
private void stop(BundleContext bundleContext) {
try {
DrcUiActivator.getDefault().stop(bundleContext);
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void postShutdown() {
super.postShutdown();
redirect();
}

private void redirect() {
final Display display = Display.getCurrent();
RWT.getLifeCycle().addPhaseListener(new PhaseListener() {

private static final long serialVersionUID = 1L;

@Override
public void afterPhase(PhaseEvent event) {
if (Display.getCurrent() == null
|| display == Display.getCurrent()) {
// Uses a non-public API, but currently this is the only
// solution
JavaScriptResponseWriter writer = ContextProvider
.getStateInfo().getResponseWriter();
String url = "http://www.crestomazia.ch/application/users"; //$NON-NLS-1$
writer.write("window.location.href=\"" + url + "\";"); //$NON-NLS-1$ //$NON-NLS-2$
RWT.getRequest().getSession().setMaxInactiveInterval(1);
RWT.getLifeCycle().removePhaseListener(this);
logout();
}
}

@Override
public PhaseId getPhaseId() {
return PhaseId.ANY;
}

@Override
public void beforePhase(PhaseEvent event) {
};

});
}

private void logout() {
DrcUiActivator drcUiActivator = DrcUiActivator.getDefault();
try {
if (drcUiActivator != null
&& drcUiActivator.getLoginContext() != null)
drcUiActivator.getLoginContext().logout();
} catch (Exception e) {
e.printStackTrace();
}
}

}
Loading

0 comments on commit a7baa33

Please sign in to comment.