package fi.otavanopisto.muikku.schooldata; import java.util.logging.Logger; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; @RequestScoped public class SchoolDataBridgeSessionController { @Inject private Logger logger; @PostConstruct public void init() { systemSessionsActive = 0; } @PreDestroy public void deinit() { if (systemSessionsActive > 0) { logger.severe("System session active leak detected!"); } } /** * Forces school data bridge to use system bridge instead of user bridge. * * Use with caution because incorrect usage may lead to security leaks */ public void startSystemSession() { systemSessionsActive++; } /** * Ends system session forcing */ public void endSystemSession() { systemSessionsActive--; } /** * Returns whether school data bridge should be forced to be used as system user * * @return whether school data bridge should be forced to be used as system user */ public boolean isSystemSessionActive() { return systemSessionsActive > 0; } private int systemSessionsActive = 0; }