]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/AuthenticatedApplicationContextInitialization.java
Merge https://www.argeo.org/bugzilla/show_bug.cgi?id=154
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / core / AuthenticatedApplicationContextInitialization.java
index 51d4b192966dccb77d6ba214f202fc1b95dc2397..97dd6cae037f9798602a64a12844bf5bb924fd3a 100644 (file)
@@ -1,9 +1,24 @@
+/*
+ * Copyright (C) 2007-2012 Argeo GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.argeo.security.core;
 
 import java.beans.PropertyDescriptor;
+import java.util.ArrayList;
+import java.util.List;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.PropertyValues;
 import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor;
@@ -18,20 +33,22 @@ import org.springframework.context.event.ContextRefreshedEvent;
 public class AuthenticatedApplicationContextInitialization extends
                AbstractSystemExecution implements InstantiationAwareBeanPostProcessor,
                ApplicationListener {
-       private Log log = LogFactory
-                       .getLog(AuthenticatedApplicationContextInitialization.class);
+       // private Log log = LogFactory
+       // .getLog(AuthenticatedApplicationContextInitialization.class);
+       /** If non empty, restricts to these beans */
+       private List<String> beanNames = new ArrayList<String>();
 
        @SuppressWarnings("rawtypes")
        public Object postProcessBeforeInstantiation(Class beanClass,
                        String beanName) throws BeansException {
-               // we authenticate when any beans is instantiated
+               // we authenticate when any bean is instantiated
                // we will deauthenticate only when the application context has been
                // refreshed in order to be able to deal with factory beans has well
                if (!isAuthenticatedBySelf()) {
-                       authenticateAsSystem();
-                       if (log.isDebugEnabled())
-                               log.debug("Application context initialization authenticated for thread "
-                                               + Thread.currentThread().getName());
+                       if (beanNames.size() == 0)
+                               authenticateAsSystem();
+                       else if (beanNames.contains(beanName))
+                               authenticateAsSystem();
                }
                return null;
        }
@@ -67,11 +84,12 @@ public class AuthenticatedApplicationContextInitialization extends
                if (event instanceof ContextRefreshedEvent) {
                        // make sure that we have deauthenticated after the application
                        // context was initialized/refreshed
-                       deauthenticateAsSystem();
-                       if (log.isDebugEnabled())
-                               log.debug("Application context initialization deauthenticated for thread "
-                                               + Thread.currentThread().getName());
+                       // deauthenticateAsSystem();
                }
        }
 
+       public void setBeanNames(List<String> beanNames) {
+               this.beanNames = beanNames;
+       }
+
 }