X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fcore%2FSystemExecutionBeanPostProcessor.java;fp=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fcore%2FSystemExecutionBeanPostProcessor.java;h=017317361f9c70ce067172238872bf1534581365;hb=9c0b5fead46f7cc1c9f1deb0b73fc0f66528d870;hp=0000000000000000000000000000000000000000;hpb=fd835f0ec7f182fb7281771eae90f44b78071baf;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SystemExecutionBeanPostProcessor.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SystemExecutionBeanPostProcessor.java new file mode 100644 index 000000000..017317361 --- /dev/null +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SystemExecutionBeanPostProcessor.java @@ -0,0 +1,29 @@ +package org.argeo.security.core; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; + +/** + * Executes with a system authentication the initialization methods of the + * application context where it has been defined. + */ +public class SystemExecutionBeanPostProcessor extends + AbstractSystemExecution implements BeanPostProcessor { + + public Object postProcessBeforeInitialization(Object bean, String beanName) + throws BeansException { + authenticateAsSystem(); + return bean; + } + + public Object postProcessAfterInitialization(Object bean, String beanName) + throws BeansException { + // NOTE: in case there was an exception in on the initialization method + // we expect the underlying thread to die and thus the system + // authentication to be lost. We have currently no way to catch the + // exception and perform the deauthentication by ourselves. + deauthenticateAsSystem(); + return bean; + } + +}