/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2014, Gluu
*/
package org.xdi.oxauth.service.external;
import java.util.Map;
import javax.ejb.DependsOn;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import org.xdi.model.SimpleCustomProperty;
import org.xdi.model.custom.script.CustomScriptType;
import org.xdi.model.custom.script.conf.CustomScriptConfiguration;
import org.xdi.model.custom.script.type.session.ApplicationSessionType;
import org.xdi.oxauth.model.common.SessionState;
import org.xdi.service.custom.script.ExternalScriptService;
/**
* Provides factory methods needed to create external application session extension
*
* @author Yuriy Movchan Date: 01/20/2015
*/
@ApplicationScoped
@DependsOn("appInitializer")
@Named
public class ExternalApplicationSessionService extends ExternalScriptService {
private static final long serialVersionUID = 2316361273036208685L;
public ExternalApplicationSessionService() {
super(CustomScriptType.APPLICATION_SESSION);
}
public boolean executeExternalEndSessionMethod(CustomScriptConfiguration customScriptConfiguration, HttpServletRequest httpRequest, SessionState sessionState) {
try {
log.debug("Executing python 'endSession' method");
ApplicationSessionType applicationSessionType = (ApplicationSessionType) customScriptConfiguration.getExternalType();
Map<String, SimpleCustomProperty> configurationAttributes = customScriptConfiguration.getConfigurationAttributes();
return applicationSessionType.endSession(httpRequest, sessionState, configurationAttributes);
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
}
return false;
}
public boolean executeExternalEndSessionMethods(HttpServletRequest httpRequest, SessionState sessionState) {
boolean result = true;
for (CustomScriptConfiguration customScriptConfiguration : this.customScriptConfigurations) {
result &= executeExternalEndSessionMethod(customScriptConfiguration, httpRequest, sessionState);
if (!result) {
return result;
}
}
return result;
}
}