You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by er...@apache.org on 2010/12/20 13:12:08 UTC
svn commit: r1051075 - in
/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean:
factory/protocolhandlerchain/ factorypostprocessor/ postprocessor/
Author: eric
Date: Mon Dec 20 12:12:08 2010
New Revision: 1051075
URL: http://svn.apache.org/viewvc?rev=1051075&view=rev
Log:
ProtocolHandlerChain is a Spring PostProcessor - Also split the FactorPostProcessor from the PostProcessor functions
Added:
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/ProtocolHandlerChainFactoryPostProcessor.java
- copied, changed from r1051031, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/ProtocolHandlerChainPostProcessor.java
Removed:
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/
Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/ProtocolHandlerChainFactoryPostProcessor.java (from r1051031, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/ProtocolHandlerChainFactoryPostProcessor.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/ProtocolHandlerChainFactoryPostProcessor.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java&r1=1051031&r2=1051075&rev=1051075&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/ProtocolHandlerChainFactoryPostProcessor.java Mon Dec 20 12:12:08 2010
@@ -16,13 +16,12 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.container.spring.bean.factory.protocolhandlerchain;
+package org.apache.james.container.spring.bean.factorypostprocessor;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.ConfigurationUtils;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
@@ -33,12 +32,10 @@ import org.apache.james.container.spring
import org.apache.james.protocols.api.ExtensibleHandler;
import org.apache.james.protocols.api.HandlersPackage;
import org.apache.james.protocols.api.ProtocolHandlerChain;
-import org.apache.james.protocols.api.WiringException;
import org.springframework.beans.BeansException;
import org.springframework.beans.FatalBeanException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -54,13 +51,15 @@ import org.springframework.beans.factory
*
*/
@SuppressWarnings("unchecked")
-public class ProtocolHandlerChainBeanFactory implements ProtocolHandlerChain, BeanFactoryPostProcessor, BeanPostProcessor {
+public abstract class ProtocolHandlerChainFactoryPostProcessor implements ProtocolHandlerChain, BeanFactoryPostProcessor {
private String coreHandlersPackage;
+
private List<String> handlers = new LinkedList<String>();
+
private String beanname;
- private ConfigurableListableBeanFactory beanFactory;
+ private ConfigurableListableBeanFactory beanFactory;
public void setBeanName(String beanname) {
this.beanname = beanname;
@@ -106,19 +105,32 @@ public class ProtocolHandlerChainBeanFac
return classHandlers;
}
-
+
+ /**
+ * Returns the Handlers List.
+ *
+ * @return
+ */
+ public List<String> getHandlers() {
+ return handlers;
+ }
/**
* Lookup the {@link HierarchicalConfiguration} for the beanname which was configured via {@link #setBeanName(String)} and parse it for handlers which should be
* registered in the {@link ConfigurableListableBeanFactory}.
*/
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
+
this.beanFactory = beanFactory;
+
ConfigurationProvider confProvider = beanFactory.getBean(ConfigurationProvider.class);
+
LogProvider logProvider = beanFactory.getBean(LogProvider.class);
try {
+
Log log = logProvider.getLog(beanname);
+
HierarchicalConfiguration config = confProvider.getConfiguration(beanname);
HierarchicalConfiguration handlerchainConfig = config.configurationAt("handler.handlerchain");
List<org.apache.commons.configuration.HierarchicalConfiguration> children = handlerchainConfig.configurationsAt("handler");
@@ -128,7 +140,6 @@ public class ProtocolHandlerChainBeanFac
handlerchainConfig.addProperty("[@coreHandlersPackage]", coreHandlersPackage);
String coreCmdName = handlerchainConfig.getString("[@coreHandlersPackage]");
-
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;
@@ -188,37 +199,4 @@ public class ProtocolHandlerChainBeanFac
return beanname + ":" + name;
}
-
- /**
- * Check if the bean was registered within the instance and if so see if it is an {@link ExtensibleHandler} implementation
- *
- * If thats the case it will do all the needed wiring
- */
- public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
-
- // check if ths instance is responsible for the bean and if so if the bean is an instance of ExtensibleHandler
- if (handlers.contains(beanName) && bean instanceof ExtensibleHandler) {
- final ExtensibleHandler extensibleHandler = (ExtensibleHandler) bean;
- final List<Class<?>> markerInterfaces = extensibleHandler.getMarkerInterfaces();
- for (int i = 0; i < markerInterfaces.size(); i++) {
- final Class<?> markerInterface = markerInterfaces.get(i);
- final List<?> extensions = getHandlers(markerInterface);
- try {
- // ok now time for try the wiring
- extensibleHandler.wireExtensions(markerInterface, extensions);
- } catch (WiringException e) {
- throw new FatalBeanException("Unable to wire the handler " + bean + " with name " + beanName, e);
- }
- }
- }
-
- return bean;
- }
-
- /**
- * Nothing todo so just return the bean
- */
- public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- return bean;
- }
-}
\ No newline at end of file
+}
Added: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/ProtocolHandlerChainPostProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/ProtocolHandlerChainPostProcessor.java?rev=1051075&view=auto
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/ProtocolHandlerChainPostProcessor.java (added)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/ProtocolHandlerChainPostProcessor.java Mon Dec 20 12:12:08 2010
@@ -0,0 +1,65 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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.apache.james.container.spring.bean.postprocessor;
+
+import java.util.List;
+
+import org.apache.james.container.spring.bean.factorypostprocessor.ProtocolHandlerChainFactoryPostProcessor;
+import org.apache.james.protocols.api.ExtensibleHandler;
+import org.apache.james.protocols.api.WiringException;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.FatalBeanException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+
+public class ProtocolHandlerChainPostProcessor extends ProtocolHandlerChainFactoryPostProcessor implements BeanPostProcessor {
+
+ /**
+ * Check if the bean was registered within the instance and if so see if it is an {@link ExtensibleHandler} implementation
+ *
+ * If thats the case it will do all the needed wiring
+ */
+ public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
+
+ // check if ths instance is responsible for the bean and if so if the bean is an instance of ExtensibleHandler
+ if (getHandlers().contains(beanName) && bean instanceof ExtensibleHandler) {
+ final ExtensibleHandler extensibleHandler = (ExtensibleHandler) bean;
+ final List<Class<?>> markerInterfaces = extensibleHandler.getMarkerInterfaces();
+ for (int i = 0; i < markerInterfaces.size(); i++) {
+ final Class<?> markerInterface = markerInterfaces.get(i);
+ final List<?> extensions = getHandlers(markerInterface);
+ try {
+ // ok now time for try the wiring
+ extensibleHandler.wireExtensions(markerInterface, extensions);
+ } catch (WiringException e) {
+ throw new FatalBeanException("Unable to wire the handler " + bean + " with name " + beanName, e);
+ }
+ }
+ }
+
+ return bean;
+ }
+
+ /**
+ * Nothing todo so just return the bean
+ */
+ public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+ return bean;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org