package org.openntf.domino.xsp.adapter;
import java.util.Map;
import javax.faces.context.FacesContext;
import org.openntf.domino.Database;
import org.openntf.domino.Session;
import org.openntf.domino.utils.Factory;
import org.openntf.domino.utils.Factory.SessionType;
import org.openntf.domino.xsp.ODAPlatform;
import com.ibm.xsp.domino.context.DominoFacesContext;
import com.ibm.xsp.util.TypedUtil;
public class ODAFacesContext extends DominoFacesContext {
public boolean implicitsDone_ = false;
public ODAFacesContext(final FacesContext paramFacesContext) {
super(paramFacesContext);
// System.out.println("DEBUG: Creating new ODAFacesContext " + System.identityHashCode(this));
}
@Override
public void createImplicitObjects() {
if (!implicitsDone_) {
super.createImplicitObjects();
// System.out.println("DEBUG: Requesting implicit objects on ODAFacesContext " + System.identityHashCode(this));
if (ODAPlatform.isAppGodMode(null)) {
Session session = Factory.getSession(SessionType.CURRENT);
Database db = session.getCurrentDatabase();
Map<String, Object> ecMap = TypedUtil.getRequestMap(getExternalContext());
// overwrite the DominoImplicitObjects objects
ecMap.put("session", session);
ecMap.put("database", db);
}
implicitsDone_ = true;
}
}
@Override
public Object getDynamicImplicitObject(final String objectName) {
if (ODAPlatform.isAppGodMode(null)) {
if ("sessionAsSignerWithFullAccess".equals(objectName)) {
return Factory.getSession(SessionType.SIGNER_FULL_ACCESS);
} else if ("sessionAsSigner".equals(objectName)) {
return Factory.getSession(SessionType.SIGNER);
}
}
return super.getDynamicImplicitObject(objectName);
}
}