package org.argeo.cms;
+import static org.argeo.cms.internal.kernel.KernelConstants.SPRING_SECURITY_CONTEXT_KEY;
+
import java.util.Locale;
import java.util.ResourceBundle;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
+import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.argeo.cms.i18n.Msg;
import org.argeo.jcr.JcrUtils;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.application.AbstractEntryPoint;
import org.eclipse.rap.rwt.client.service.BrowserNavigationListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
+import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
/** Manages history and navigation */
-public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint
- implements CmsSession {
+abstract class AbstractCmsEntryPoint extends AbstractEntryPoint implements
+ CmsSession {
private final Log log = LogFactory.getLog(AbstractCmsEntryPoint.class);
private Repository repository;
// current state
private Node node;
private String state;
- private String page;
+ // private String page;
private Throwable exception;
private BrowserNavigation history;
public AbstractCmsEntryPoint(Repository repository, String workspace) {
- if (SecurityContextHolder.getContext().getAuthentication() == null)
- logAsAnonymous();
+ if (SecurityContextHolder.getContext().getAuthentication() == null) {
+ HttpSession httpSession = RWT.getRequest().getSession();
+ // log.debug("Session: " + httpSession.getId());
+ SecurityContext contextFromSessionObject = (SecurityContext) httpSession
+ .getAttribute(SPRING_SECURITY_CONTEXT_KEY);
+ if (contextFromSessionObject != null)
+ SecurityContextHolder.setContext(contextFromSessionObject);
+ else
+ logAsAnonymous();
+ }
this.repository = repository;
this.workspace = workspace;
String previousState = this.state;
node = null;
- page = null;
+ // page = null;
this.state = newState;
try {
node = addNode(session, state, null);
else
node = session.getNode(state);
- page = "";
+ // page = "";
} else if (firstSlash > 0) {
String prefix = state.substring(0, firstSlash);
String path = state.substring(firstSlash);
throw new CmsException("Data " + path
+ " does not exist");
}
- page = prefix;
+ throw new CmsException("Unsupported state prefix '" + prefix
+ + "'");
+ // page = prefix;
} else {
node = getDefaultNode(session);
- if (state.equals("~"))
- page = "";
- else
- page = state;
+ // if (state.equals("~"))
+ // page = "";
+ // else
+ // page = state;
}
if (log.isTraceEnabled())
- log.trace("page=" + page + ", node=" + node + ", state="
- + state);
+ log.trace("node=" + node + ", state=" + state);
} catch (RepositoryException e) {
throw new CmsException("Cannot retrieve node", e);
return state;
}
- protected String getPage() {
- return page;
- }
+ // protected String getPage() {
+ // return page;
+ // }
protected Throwable getException() {
return exception;