norman
Thu, 19 Nov 2009 08:03:02 -0800
Author: norman Date: Thu Nov 19 16:02:35 2009 New Revision: 882184 URL: http://svn.apache.org/viewvc?rev=882184&view=rev Log: More decoupling of Avalon to move to Guice (JAMES-893) Added: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonBayesianAnalyzerManagement.java james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonDomainListManagement.java james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonProcessorManagement.java james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonSpoolManagement.java james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/AvalonBayesianAnalyzerManagement.xinfo - copied unchanged from r829946, james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/BayesianAnalyzerManagement.xinfo james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/AvalonDomainListManagement.xinfo - copied unchanged from r829946, james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/DomainListManagement.xinfo james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/AvalonProcessorManagement.xinfo - copied unchanged from r829946, james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/ProcessorManagement.xinfo james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/AvalonSpoolManagement.xinfo - copied unchanged from r829946, james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/SpoolManagement.xinfo Removed: james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/BayesianAnalyzerManagement.xinfo james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/DomainListManagement.xinfo james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/ProcessorManagement.xinfo james/server/trunk/management-library/src/main/resources/org/apache/james/management/impl/SpoolManagement.xinfo Modified: james/server/trunk/management-library/pom.xml james/server/trunk/management-library/src/main/java/org/apache/james/management/DomainListManagementService.java james/server/trunk/management-library/src/main/java/org/apache/james/management/SpoolFilter.java james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/BayesianAnalyzerManagement.java james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/DomainListManagement.java james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/ProcessorManagement.java james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/SpoolManagement.java james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml Modified: james/server/trunk/management-library/pom.xml URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/pom.xml?rev=882184&r1=882183&r2=882184&view=diff ============================================================================== --- james/server/trunk/management-library/pom.xml (original) +++ james/server/trunk/management-library/pom.xml Thu Nov 19 16:02:35 2009 @@ -100,5 +100,22 @@ <groupId>mx4j</groupId> <artifactId>mx4j-jmx</artifactId> </dependency> + <dependency> + <groupId>org.apache.james</groupId> + <artifactId>james-server-avalon-guice-bridge-api</artifactId> + </dependency> + <dependency> + <groupId>com.google.code.guice</groupId> + <artifactId>guice</artifactId> + </dependency> + <dependency> + <groupId>org.guiceyfruit</groupId> + <artifactId>guiceyfruit-core</artifactId> + </dependency> + <dependency> + <groupId>spring-aopalliance</groupId> + <artifactId>spring-aopalliance</artifactId> + <scope>runtime</scope> + </dependency> </dependencies> </project> Modified: james/server/trunk/management-library/src/main/java/org/apache/james/management/DomainListManagementService.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/DomainListManagementService.java?rev=882184&r1=882183&r2=882184&view=diff ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/DomainListManagementService.java (original) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/DomainListManagementService.java Thu Nov 19 16:02:35 2009 @@ -52,7 +52,7 @@ * * @return domains */ - public List getDomains(); + public List<String> getDomains(); /** * Return true if the domain exists in the service Modified: james/server/trunk/management-library/src/main/java/org/apache/james/management/SpoolFilter.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/SpoolFilter.java?rev=882184&r1=882183&r2=882184&view=diff ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/SpoolFilter.java (original) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/SpoolFilter.java Thu Nov 19 16:02:35 2009 @@ -47,12 +47,12 @@ /** * Map<String headerName, String headerValueRegex> */ - private final Map headerFilters = new HashMap(); + private final Map<String,String> headerFilters = new HashMap<String,String>(); /** * Map<String headerName, Pattern> */ - private final Map headerFiltersCompiled = new HashMap(); + private final Map<String,Pattern> headerFiltersCompiled = new HashMap<String,Pattern>(); /** * Construct the SpoolFilter @@ -92,7 +92,7 @@ * @param state the message state on which message the filter should be used * @param headerFilters a Map which contains filters to use */ - public SpoolFilter(String state, Map headerFilters) { + public SpoolFilter(String state, Map <String,String>headerFilters) { this.state = state; this.headerFilters.putAll(headerFilters); this.headerFilters.remove(null); // NULL is not acceptable here @@ -134,7 +134,7 @@ * * @return headers an Iterator which contains all headers which should be filtered */ - public Iterator getHeaders() { + public Iterator<String> getHeaders() { return headerFilters.keySet().iterator(); } Added: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonBayesianAnalyzerManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonBayesianAnalyzerManagement.java?rev=882184&view=auto ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonBayesianAnalyzerManagement.java (added) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonBayesianAnalyzerManagement.java Thu Nov 19 16:02:35 2009 @@ -0,0 +1,120 @@ +/**************************************************************** + * 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.management.impl; + +import org.apache.avalon.cornerstone.services.datasources.DataSourceSelector; +import org.apache.avalon.framework.activity.Initializable; +import org.apache.avalon.framework.configuration.Configurable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.apache.avalon.framework.logger.LogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.apache.avalon.framework.service.ServiceException; +import org.apache.avalon.framework.service.ServiceManager; +import org.apache.avalon.framework.service.Serviceable; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.impl.AvalonLogger; +import org.apache.james.management.BayesianAnalyzerManagementException; +import org.apache.james.management.BayesianAnalyzerManagementMBean; +import org.apache.james.management.BayesianAnalyzerManagementService; +import org.apache.james.services.FileSystem; +import org.apache.james.util.ConfigurationAdapter; +import org.apache.james.bridge.GuiceInjected; + +import org.guiceyfruit.jsr250.Jsr250Module; + +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.name.Names; + +public class AvalonBayesianAnalyzerManagement implements GuiceInjected, BayesianAnalyzerManagementMBean, BayesianAnalyzerManagementService, Serviceable, Initializable, Configurable, LogEnabled{ + + private BayesianAnalyzerManagement mgmt; + private ConfigurationAdapter config; + private AvalonLogger logger; + private DataSourceSelector selector; + private FileSystem fs; + + public void service(ServiceManager manager) throws ServiceException { + selector = (DataSourceSelector) manager.lookup(DataSourceSelector.ROLE); + fs = (FileSystem) manager.lookup(FileSystem.ROLE); + } + + public void initialize() throws Exception { + mgmt = Guice.createInjector(new Jsr250Module(), new AbstractModule() { + + @Override + protected void configure() { + bind(org.apache.commons.configuration.HierarchicalConfiguration.class).annotatedWith(Names.named("org.apache.commons.configuration.Configuration")).toInstance(config); + bind(Log.class).annotatedWith(Names.named("org.apache.commons.logging.Log")).toInstance(logger); + bind(FileSystem.class).annotatedWith(Names.named("org.apache.james.services.FileSystem")).toInstance(fs); + bind(DataSourceSelector.class).annotatedWith(Names.named("org.apache.avalon.cornerstone.services.datasources.DataSourceSelector")).toInstance(selector); + + } + + }).getInstance(BayesianAnalyzerManagement.class); + } + + + /** + * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration) + */ + public void configure(Configuration config) throws ConfigurationException { + try { + this.config = new ConfigurationAdapter(config); + } catch (org.apache.commons.configuration.ConfigurationException e) { + throw new ConfigurationException("Unable to convert configuration", e); + } + } + + public void enableLogging(Logger logger) { + this.logger = new AvalonLogger(logger); + } + + public int addHamFromDir(String dir) throws BayesianAnalyzerManagementException { + return mgmt.addHamFromDir(dir); + } + + public int addHamFromMbox(String file) throws BayesianAnalyzerManagementException { + return mgmt.addHamFromMbox(file); + } + + public int addSpamFromDir(String dir) throws BayesianAnalyzerManagementException { + return mgmt.addSpamFromDir(dir); + } + + public int addSpamFromMbox(String file) throws BayesianAnalyzerManagementException { + return mgmt.addSpamFromMbox(file); + } + + public void exportData(String file) throws BayesianAnalyzerManagementException { + mgmt.exportData(file); + } + + public void importData(String file) throws BayesianAnalyzerManagementException { + mgmt.importData(file); + } + + public void resetData() throws BayesianAnalyzerManagementException { + mgmt.resetData(); + } + +} Added: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonDomainListManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonDomainListManagement.java?rev=882184&view=auto ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonDomainListManagement.java (added) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonDomainListManagement.java Thu Nov 19 16:02:35 2009 @@ -0,0 +1,81 @@ +/**************************************************************** + * 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.management.impl; + +import java.util.List; + +import org.apache.avalon.framework.activity.Initializable; +import org.apache.avalon.framework.configuration.Configurable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.apache.avalon.framework.logger.LogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.apache.avalon.framework.service.ServiceException; +import org.apache.avalon.framework.service.ServiceManager; +import org.apache.avalon.framework.service.Serviceable; +import org.apache.james.api.domainlist.DomainList; +import org.apache.james.management.DomainListManagementException; +import org.apache.james.management.DomainListManagementMBean; +import org.apache.james.management.DomainListManagementService; +import org.apache.james.bridge.GuiceInjected; + +import org.guiceyfruit.jsr250.Jsr250Module; + +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.name.Named; +import com.google.inject.name.Names; + +public class AvalonDomainListManagement implements GuiceInjected, DomainListManagementService,DomainListManagementMBean, Serviceable, Initializable { + private DomainList dList; + private DomainListManagement mgmt; + public void service(ServiceManager manager) throws ServiceException { + dList = (DomainList) manager.lookup(DomainList.ROLE); + } + + public void initialize() throws Exception { + mgmt = Guice.createInjector(new Jsr250Module(), new AbstractModule() { + + @Override + protected void configure() { + bind(DomainList.class).annotatedWith(Names.named("org.apache.james.api.domainlist.DomainList")).toInstance(dList); + } + + }).getInstance(DomainListManagement.class); + } + + public boolean addDomain(String domain) throws DomainListManagementException { + return mgmt.addDomain(domain); + } + + public boolean containsDomain(String domain) { + return mgmt.containsDomain(domain); + } + + public List<String> getDomains() { + return mgmt.getDomains(); + } + + public boolean removeDomain(String domain) throws DomainListManagementException { + return mgmt.removeDomain(domain); + } + +} Added: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonProcessorManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonProcessorManagement.java?rev=882184&view=auto ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonProcessorManagement.java (added) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonProcessorManagement.java Thu Nov 19 16:02:35 2009 @@ -0,0 +1,77 @@ +/**************************************************************** + * 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.management.impl; + +import org.apache.avalon.framework.activity.Initializable; +import org.apache.avalon.framework.service.ServiceException; +import org.apache.avalon.framework.service.ServiceManager; +import org.apache.avalon.framework.service.Serviceable; +import org.apache.james.management.ProcessorManagementMBean; +import org.apache.james.management.ProcessorManagementService; +import org.apache.james.services.SpoolManager; +import org.apache.james.bridge.GuiceInjected; + +import org.guiceyfruit.jsr250.Jsr250Module; + +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.name.Names; + +public class AvalonProcessorManagement implements GuiceInjected, Serviceable, Initializable, ProcessorManagementService, ProcessorManagementMBean { + + private ProcessorManagement mgmt; + private SpoolManager smanager; + + public void service(ServiceManager manager) throws ServiceException { + smanager = (SpoolManager)manager.lookup(SpoolManager.ROLE); + + } + + public void initialize() throws Exception { + mgmt = Guice.createInjector(new Jsr250Module(), new AbstractModule() { + + @Override + protected void configure() { + bind(SpoolManager.class).annotatedWith(Names.named("org.apache.james.services.SpoolManager")).toInstance(smanager); + } + + }).getInstance(ProcessorManagement.class); + } + + public String[] getMailetNames(String processorName) { + return mgmt.getMailetNames(processorName); + } + + public String[] getMailetParameters(String processorName, int mailetIndex) { + return mgmt.getMailetParameters(processorName, mailetIndex); + } + + public String[] getMatcherNames(String processorName) { + return mgmt.getMatcherNames(processorName); + } + + public String[] getMatcherParameters(String processorName, int matcherIndex) { + return mgmt.getMatcherParameters(processorName, matcherIndex); + } + + public String[] getProcessorNames() { + return mgmt.getProcessorNames(); + } + +} Added: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonSpoolManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonSpoolManagement.java?rev=882184&view=auto ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonSpoolManagement.java (added) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/AvalonSpoolManagement.java Thu Nov 19 16:02:35 2009 @@ -0,0 +1,94 @@ +/**************************************************************** + * 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.management.impl; + +import java.util.List; + +import javax.mail.MessagingException; + +import org.apache.avalon.cornerstone.services.store.Store; +import org.apache.avalon.framework.activity.Initializable; +import org.apache.avalon.framework.service.ServiceException; +import org.apache.avalon.framework.service.ServiceManager; +import org.apache.avalon.framework.service.Serviceable; +import org.apache.james.management.SpoolFilter; +import org.apache.james.management.SpoolManagementException; +import org.apache.james.management.SpoolManagementMBean; +import org.apache.james.management.SpoolManagementService; +import org.apache.james.bridge.GuiceInjected; +import org.guiceyfruit.jsr250.Jsr250Module; + +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.name.Names; + +public class AvalonSpoolManagement implements GuiceInjected, Serviceable, Initializable, SpoolManagementService, SpoolManagementMBean{ + + private SpoolManagement mgmt; + private Store mailStore; + public void service(ServiceManager manager) throws ServiceException { + mailStore = (Store)manager.lookup(Store.ROLE); + + } + + public List<String> getSpoolItems(String spoolRepositoryURL, SpoolFilter filter) throws MessagingException, SpoolManagementException { + return mgmt.getSpoolItems(spoolRepositoryURL, filter); + } + + public int moveSpoolItems(String srcSpoolRepositoryURL, String dstSpoolRepositoryURL, String dstState, SpoolFilter filter) throws MessagingException, SpoolManagementException { + return mgmt.moveSpoolItems(srcSpoolRepositoryURL, dstSpoolRepositoryURL, dstState, filter); + } + + public int removeSpoolItems(String spoolRepositoryURL, String key, List<String> lockingFailures, SpoolFilter filter) throws MessagingException, SpoolManagementException { + return mgmt.removeSpoolItems(spoolRepositoryURL, key, filter); + } + + public int resendSpoolItems(String spoolRepositoryURL, String key, List<String> lockingFailures, SpoolFilter filter) throws MessagingException, SpoolManagementException { + return mgmt.resendSpoolItems(spoolRepositoryURL, key, filter); + } + + public String[] listSpoolItems(String spoolRepositoryURL, String state, String header, String headerValueRegex) throws SpoolManagementException { + return mgmt.listSpoolItems(spoolRepositoryURL, state, header, headerValueRegex); + } + + public int moveSpoolItems(String srcSpoolRepositoryURL, String srcState, String dstSpoolRepositoryURL, String dstState, String header, String headerValueRegex) throws SpoolManagementException { + return mgmt.moveSpoolItems(srcSpoolRepositoryURL, srcState, dstSpoolRepositoryURL, dstState, header, headerValueRegex); + } + + public int removeSpoolItems(String spoolRepositoryURL, String key, String state, String header, String headerValueRegex) throws SpoolManagementException { + return mgmt.removeSpoolItems(spoolRepositoryURL, key, state, header, headerValueRegex); + } + + public int resendSpoolItems(String spoolRepositoryURL, String key, String state, String header, String headerValueRegex) throws SpoolManagementException { + return mgmt.resendSpoolItems(spoolRepositoryURL, key, state, header, headerValueRegex); + } + + public void initialize() throws Exception { + mgmt = Guice.createInjector(new Jsr250Module(), new AbstractModule() { + + @Override + protected void configure() { + bind(Store.class).annotatedWith(Names.named("org.apache.avalon.cornerstone.services.store.Store")).toInstance(mailStore); + } + + }).getInstance(SpoolManagement.class); + } + +} Modified: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/BayesianAnalyzerManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/BayesianAnalyzerManagement.java?rev=882184&r1=882183&r2=882184&view=diff ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/BayesianAnalyzerManagement.java (original) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/BayesianAnalyzerManagement.java Thu Nov 19 16:02:35 2009 @@ -18,8 +18,6 @@ ****************************************************************/ - - package org.apache.james.management.impl; import java.io.BufferedReader; @@ -35,17 +33,16 @@ import java.sql.Connection; import java.util.Map; +import javax.annotation.PostConstruct; +import javax.annotation.Resource; + import net.fortuna.mstor.data.MboxFile; import org.apache.avalon.cornerstone.services.datasources.DataSourceSelector; import org.apache.avalon.excalibur.datasource.DataSourceComponent; -import org.apache.avalon.framework.activity.Initializable; -import org.apache.avalon.framework.configuration.Configurable; -import org.apache.avalon.framework.configuration.Configuration; -import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.service.ServiceException; -import org.apache.avalon.framework.service.ServiceManager; -import org.apache.avalon.framework.service.Serviceable; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.HierarchicalConfiguration; +import org.apache.commons.logging.Log; import org.apache.james.management.BayesianAnalyzerManagementException; import org.apache.james.management.BayesianAnalyzerManagementMBean; import org.apache.james.management.BayesianAnalyzerManagementService; @@ -58,7 +55,7 @@ /** * Management for BayesianAnalyzer */ -public class BayesianAnalyzerManagement implements BayesianAnalyzerManagementService, Serviceable, Initializable, Configurable, BayesianAnalyzerManagementMBean { +public class BayesianAnalyzerManagement implements BayesianAnalyzerManagementService, BayesianAnalyzerManagementMBean { private final static String HAM = "HAM"; private final static String SPAM = "SPAM"; @@ -67,45 +64,47 @@ private String repos; private String sqlFileUrl; private FileSystem fileSystem; + private Log logger; + private HierarchicalConfiguration configuration; /** - * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager) - */ - public void service(ServiceManager arg0) throws ServiceException { - DataSourceSelector selector = (DataSourceSelector) arg0.lookup(DataSourceSelector.ROLE); - setDataSourceSelector(selector); - setFileSystem((FileSystem) arg0.lookup(FileSystem.ROLE)); - } - - /** * Sets the file system service * * @param system new service */ - private void setFileSystem(FileSystem system) { + @Resource(name="org.apache.james.services.FileSystem") + public void setFileSystem(FileSystem system) { this.fileSystem = system; } - /** - * @see org.apache.avalon.framework.activity.Initializable#initialize() - */ - public void initialize() throws Exception { + + @PostConstruct + public void init() throws Exception { + configure(); if (repos != null) { setDataSourceComponent((DataSourceComponent) selector.select(repos)); File sqlFile = fileSystem.getFile(sqlFileUrl); analyzer.initSqlQueries(component.getConnection(), sqlFile.getAbsolutePath()); } } + + @Resource(name="org.apache.commons.logging.Log") + public void setLog(Log logger) { + this.logger = logger; + } + + + @Resource(name="org.apache.commons.configuration.Configuration") + public void setConfiguration(HierarchicalConfiguration configuration) { + this.configuration = configuration; + } - /** - * @see org.apache.avalon.framework.configuration.Configurable#configure(Configuration) - */ - public void configure(Configuration arg0) throws ConfigurationException { - Configuration reposPath = arg0.getChild("repositoryPath",false); + private void configure() throws ConfigurationException { + String reposPath = configuration.getString("repositoryPath",null); if (reposPath != null) { - setRepositoryPath(reposPath.getValue()); + setRepositoryPath(reposPath); } - sqlFileUrl = arg0.getChild("sqlFile").getValue(); + sqlFileUrl = configuration.getString("sqlFile", null); if (sqlFileUrl == null) sqlFileUrl = "file://conf/sqlResources.xml"; } Modified: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/DomainListManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/DomainListManagement.java?rev=882184&r1=882183&r2=882184&view=diff ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/DomainListManagement.java (original) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/DomainListManagement.java Thu Nov 19 16:02:35 2009 @@ -23,9 +23,8 @@ import java.util.List; -import org.apache.avalon.framework.service.ServiceException; -import org.apache.avalon.framework.service.ServiceManager; -import org.apache.avalon.framework.service.Serviceable; +import javax.annotation.Resource; + import org.apache.james.api.domainlist.DomainList; import org.apache.james.api.domainlist.ManageableDomainList; import org.apache.james.management.DomainListManagementException; @@ -35,16 +34,10 @@ /** * Provide management class for DomainLists */ -public class DomainListManagement implements DomainListManagementService,DomainListManagementMBean,Serviceable { +public class DomainListManagement implements DomainListManagementService,DomainListManagementMBean { private DomainList domList; - /** - * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager) - */ - public void service(ServiceManager arg0) throws ServiceException { - setDomainList((DomainList) arg0.lookup(DomainList.ROLE)); - } - + @Resource(name="org.apache.james.api.domainlist.DomainList") public void setDomainList(DomainList domList) { this.domList = domList; } @@ -91,7 +84,7 @@ /** * @see org.apache.james.management.DomainListManagementService#getDomains() */ - public List getDomains() { + public List<String> getDomains() { return domList.getDomains(); } } Modified: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/ProcessorManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/ProcessorManagement.java?rev=882184&r1=882183&r2=882184&view=diff ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/ProcessorManagement.java (original) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/ProcessorManagement.java Thu Nov 19 16:02:35 2009 @@ -18,9 +18,6 @@ ****************************************************************/ package org.apache.james.management.impl; -import org.apache.avalon.framework.service.ServiceException; -import org.apache.avalon.framework.service.ServiceManager; -import org.apache.avalon.framework.service.Serviceable; import org.apache.james.services.SpoolManager; import org.apache.james.management.ProcessorManagementMBean; import org.apache.james.management.ProcessorManagementService; @@ -31,6 +28,7 @@ import org.apache.mailet.MatcherConfig; import javax.annotation.PostConstruct; +import javax.annotation.Resource; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.MalformedObjectNameException; @@ -42,26 +40,22 @@ /** * manage processors, mailets and matchers */ -public class ProcessorManagement implements Serviceable, ProcessorManagementService, ProcessorManagementMBean { +public class ProcessorManagement implements ProcessorManagementService, ProcessorManagementMBean { private SpoolManager processorManager; - public void service(ServiceManager serviceManager) throws ServiceException { - SpoolManager processorManager = (SpoolManager)serviceManager.lookup(SpoolManager.ROLE); - setProcessorManager(processorManager); - } - @PostConstruct public void init() { registerMBeans(); } + @SuppressWarnings("unchecked") private void registerMBeans() { - ArrayList mBeanServers = MBeanServerFactory.findMBeanServer(null); + ArrayList<MBeanServer> mBeanServers = MBeanServerFactory.findMBeanServer(null); if (mBeanServers == null || mBeanServers.size() == 0) return; // no server to publish MBeans // take the first one - MBeanServer mBeanServer = (MBeanServer) mBeanServers.get(0); + MBeanServer mBeanServer = mBeanServers.get(0); String baseObjectName = "Phoenix:application=james,topic=ProcessorAdministration,block=ProcessorManagement,"; @@ -79,9 +73,9 @@ registerMBean(mBeanServer, processorMBeanName, processorMBean); // add all mailets but the last, because that is a terminator (see LinearProcessor.closeProcessorLists()) - List mailetConfigs = processorManager.getMailetConfigs(processorName); + List<MailetConfig> mailetConfigs = processorManager.getMailetConfigs(processorName); for (int i = 0; i < mailetConfigs.size()-1; i++) { - MailetConfig mailetConfig = (MailetConfig) mailetConfigs.get(i); + MailetConfig mailetConfig = mailetConfigs.get(i); String mailetMBeanName = processorMBeanName + ",subtype=mailet,index=" + (i+1) + ",mailetname=" + mailetConfig.getMailetName(); MailetManagement mailetMBean = new MailetManagement(mailetConfig); @@ -89,9 +83,9 @@ } // add all matchers but the last, because that is a terminator (see LinearProcessor.closeProcessorLists()) - List matcherConfigs = processorManager.getMatcherConfigs(processorName); + List<MatcherConfig> matcherConfigs = processorManager.getMatcherConfigs(processorName); for (int i = 0; i < matcherConfigs.size()-1; i++) { - MatcherConfig matcherConfig = (MatcherConfig) matcherConfigs.get(i); + MatcherConfig matcherConfig = matcherConfigs.get(i); String matcherMBeanName = processorMBeanName + ",subtype=matcher,index=" + (i+1) + ",matchername=" + matcherConfig.getMatcherName(); MatcherManagement matcherMBean = new MatcherManagement(matcherConfig); @@ -114,22 +108,29 @@ } } + @Resource(name="org.apache.james.services.SpoolManager") public void setProcessorManager(SpoolManager processorManager) { this.processorManager = processorManager; } + /** + * @see org.apache.james.management.ProcessorManagementMBean#getProcessorNames() + */ public String[] getProcessorNames() { return processorManager.getProcessorNames(); } + /** + * @see org.apache.james.management.ProcessorManagementService#getMailetNames(java.lang.String) + */ public String[] getMailetNames(String processorName) { - List mailetConfigs = processorManager.getMailetConfigs(processorName); + List<MailetConfig> mailetConfigs = processorManager.getMailetConfigs(processorName); // always ommit the terminating mailet String[] mailetNames = new String[mailetConfigs.size()-1]; int i = 0; - Iterator iterator = mailetConfigs.iterator(); + Iterator<MailetConfig> iterator = mailetConfigs.iterator(); while (iterator.hasNext()) { - MailetConfig mailetConfig = (MailetConfig) iterator.next(); + MailetConfig mailetConfig = iterator.next(); if (!iterator.hasNext()) continue; // ommit the terminating mailet String mailetName = mailetConfig.getMailetName(); mailetNames[i] = mailetName; @@ -138,14 +139,17 @@ return mailetNames; } + /** + * @see org.apache.james.management.ProcessorManagementService#getMatcherNames(java.lang.String) + */ public String[] getMatcherNames(String processorName) { - List matcherConfigs = processorManager.getMatcherConfigs(processorName); + List<MatcherConfig> matcherConfigs = processorManager.getMatcherConfigs(processorName); // always ommit the terminating mailet String[] matcherNames = new String[matcherConfigs.size()-1]; int i = 0; - Iterator iterator = matcherConfigs.iterator(); + Iterator<MatcherConfig> iterator = matcherConfigs.iterator(); while (iterator.hasNext()) { - MatcherConfig matcherConfig = (MatcherConfig) iterator.next(); + MatcherConfig matcherConfig = iterator.next(); if (!iterator.hasNext()) continue; // ommit the terminating mailet String matcherName = matcherConfig.getMatcherName(); matcherNames[i] = matcherName; @@ -154,17 +158,23 @@ return matcherNames; } + /** + * @see org.apache.james.management.ProcessorManagementService#getMatcherParameters(java.lang.String, int) + */ public String[] getMatcherParameters(String processorName, int matcherIndex) { - List matcherConfigs = processorManager.getMatcherConfigs(processorName); + List<MatcherConfig> matcherConfigs = processorManager.getMatcherConfigs(processorName); if (matcherConfigs == null || matcherConfigs.size() < matcherIndex) return null; - MatcherConfig matcherConfig = (MatcherConfig)matcherConfigs.get(matcherIndex); + MatcherConfig matcherConfig = matcherConfigs.get(matcherIndex); return new String[] {matcherConfig.getCondition()}; } + /** + * @see org.apache.james.management.ProcessorManagementService#getMailetParameters(java.lang.String, int) + */ public String[] getMailetParameters(String processorName, int mailetIndex) { - List mailetConfigs = processorManager.getMailetConfigs(processorName); + List<MailetConfig> mailetConfigs = processorManager.getMailetConfigs(processorName); if (mailetConfigs == null || mailetConfigs.size() < mailetIndex) return null; - MailetConfig mailetConfig = (MailetConfig) mailetConfigs.get(mailetIndex); + MailetConfig mailetConfig = mailetConfigs.get(mailetIndex); return MailetManagement.getMailetParameters(mailetConfig); } Modified: james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/SpoolManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/SpoolManagement.java?rev=882184&r1=882183&r2=882184&view=diff ============================================================================== --- james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/SpoolManagement.java (original) +++ james/server/trunk/management-library/src/main/java/org/apache/james/management/impl/SpoolManagement.java Thu Nov 19 16:02:35 2009 @@ -24,9 +24,6 @@ import org.apache.avalon.cornerstone.services.store.Store; import org.apache.avalon.framework.container.ContainerUtil; -import org.apache.avalon.framework.service.ServiceException; -import org.apache.avalon.framework.service.ServiceManager; -import org.apache.avalon.framework.service.Serviceable; import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.james.management.SpoolFilter; import org.apache.james.management.SpoolManagementException; @@ -38,6 +35,7 @@ import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Matcher; +import javax.annotation.Resource; import javax.mail.MessagingException; import javax.mail.Address; import javax.mail.internet.MimeMessage; @@ -50,7 +48,7 @@ /** * high-level management of spool contents like list, remove, resend */ -public class SpoolManagement implements Serviceable, SpoolManagementService, SpoolManagementMBean { +public class SpoolManagement implements SpoolManagementService, SpoolManagementMBean { private Store mailStore; @@ -59,19 +57,12 @@ * * @param mailStore the store */ + @Resource(name="org.apache.avalon.cornerstone.services.store.Store") public void setStore(Store mailStore) { this.mailStore = mailStore; } /** - * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager) - */ - public void service(ServiceManager serviceManager) throws ServiceException { - Store mailStore = (Store)serviceManager.lookup(Store.ROLE); - setStore(mailStore); - } - - /** * Move all mails from the given repository to another repository matching the given filter criteria * * @param srcSpoolRepositoryURL the spool whose item are listed @@ -114,11 +105,11 @@ dstSpoolRepository = getSpoolRepository(dstSpoolRepositoryURL); // get an iterator of all keys - Iterator spoolR = srcSpoolRepository.list(); + Iterator<String> spoolR = srcSpoolRepository.list(); int count = 0; while (spoolR.hasNext()) { - String key = spoolR.next().toString(); + String key = spoolR.next(); boolean locked = false; try { locked = srcSpoolRepository.lock(key); @@ -178,13 +169,13 @@ * @throws SpoolManagementException */ public String[] listSpoolItems(String spoolRepositoryURL, SpoolFilter filter) throws SpoolManagementException { - List spoolItems; + List<String> spoolItems; try { spoolItems = getSpoolItems(spoolRepositoryURL, filter); } catch (Exception e) { throw new SpoolManagementException(e); } - return (String[]) spoolItems.toArray(new String[]{}); + return spoolItems.toArray(new String[]{}); } /** @@ -205,9 +196,9 @@ Perl5Matcher matcher = new Perl5Matcher(); // check, if there is a match for every header/regex pair - Iterator headers = filter.getHeaders(); + Iterator<String> headers = filter.getHeaders(); while (headers.hasNext()) { - String header = (String) headers.next(); + String header = headers.next(); String[] headerValues; try { @@ -263,14 +254,14 @@ /** * @see org.apache.james.management.SpoolManagementService#getSpoolItems(String, SpoolFilter) */ - public List getSpoolItems(String spoolRepositoryURL, SpoolFilter filter) + public List<String> getSpoolItems(String spoolRepositoryURL, SpoolFilter filter) throws MessagingException, SpoolManagementException { SpoolRepository spoolRepository = getSpoolRepository(spoolRepositoryURL); - List items = new ArrayList(); + List<String> items = new ArrayList<String>(); // get an iterator of all keys - Iterator spoolR = spoolRepository.list(); + Iterator<String> spoolR = spoolRepository.list(); while (spoolR.hasNext()) { String key = spoolR.next().toString(); Mail m = spoolRepository.retrieve(key); @@ -278,8 +269,8 @@ if (filterMatches(m, filter)) { StringBuffer itemInfo = new StringBuffer(); itemInfo.append("key: ").append(key).append(" sender: ").append(m.getSender()).append(" recipient:"); - Collection recipients = m.getRecipients(); - for (Iterator iterator = recipients.iterator(); iterator.hasNext();) { + Collection<MailAddress> recipients = m.getRecipients(); + for (Iterator<MailAddress> iterator = recipients.iterator(); iterator.hasNext();) { MailAddress mailAddress = (MailAddress) iterator.next(); itemInfo.append(" ").append(mailAddress); } @@ -319,24 +310,24 @@ /** * @see org.apache.james.management.SpoolManagementService#removeSpoolItems(String, String, List, SpoolFilter) */ - public int removeSpoolItems(String spoolRepositoryURL, String key, List lockingFailures, SpoolFilter filter) throws SpoolManagementException, MessagingException, SpoolManagementException { + public int removeSpoolItems(String spoolRepositoryURL, String key, List<String> lockingFailures, SpoolFilter filter) throws SpoolManagementException, MessagingException, SpoolManagementException { int count = 0; SpoolRepository spoolRepository = getSpoolRepository(spoolRepositoryURL); if (key != null) { count = removeMail(spoolRepository, key, count, lockingFailures, null); } else { - Iterator spoolR = spoolRepository.list(); + Iterator<String> spoolR = spoolRepository.list(); while (spoolR.hasNext()) { - key = (String)spoolR.next(); + key = spoolR.next(); count = removeMail(spoolRepository, key, count, lockingFailures, filter); } } return count; } - private int removeMail(SpoolRepository spoolRepository, String key, int count, List lockingFailures, SpoolFilter filter) throws MessagingException { + private int removeMail(SpoolRepository spoolRepository, String key, int count, List<String> lockingFailures, SpoolFilter filter) throws MessagingException { try { if (removeMail(spoolRepository, key, filter)) count++; } catch (IllegalStateException e) { @@ -382,7 +373,7 @@ /** * @see org.apache.james.management.SpoolManagementService#resendSpoolItems(String, String, List, SpoolFilter) */ - public int resendSpoolItems(String spoolRepositoryURL, String key, List lockingFailures, SpoolFilter filter) + public int resendSpoolItems(String spoolRepositoryURL, String key, List<String> lockingFailures, SpoolFilter filter) throws MessagingException, SpoolManagementException { int count = 0; SpoolRepository spoolRepository = getSpoolRepository(spoolRepositoryURL); @@ -396,10 +387,10 @@ } } else { // get an iterator of all keys - Iterator spoolR = spoolRepository.list(); + Iterator<String> spoolR = spoolRepository.list(); while (spoolR.hasNext()) { - key = spoolR.next().toString(); + key = spoolR.next(); try { if (resendMail(spoolRepository, key, filter)) count++; } catch (IllegalStateException e) { @@ -482,7 +473,7 @@ try { return (SpoolRepository) mailStore.select(spoolConf); - } catch (ServiceException e) { + } catch (Exception e) { throw new SpoolManagementException("Exception while looking up for the repository", e); } } Modified: james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml?rev=882184&r1=882183&r2=882184&view=diff ============================================================================== --- james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml (original) +++ james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml Thu Nov 19 16:02:35 2009 @@ -78,17 +78,17 @@ <block name="dnsserver" class="org.apache.james.dnsserver.AvalonDNSServer" /> <!-- The Spool Management block --> - <block name="spoolmanagement" class="org.apache.james.management.impl.SpoolManagement" > + <block name="spoolmanagement" class="org.apache.james.management.impl.AvalonSpoolManagement" > <provide name="mailstore" role="org.apache.avalon.cornerstone.services.store.Store"/> <proxy disable='true'/> </block> - <block name="processormanagement" class="org.apache.james.management.impl.ProcessorManagement" > + <block name="processormanagement" class="org.apache.james.management.impl.AvalonProcessorManagement" > <provide name="spoolmanager" role="org.apache.james.services.SpoolManager"/> <proxy disable='true'/> </block> - <block name="bayesiananalyzermanagement" class="org.apache.james.management.impl.BayesianAnalyzerManagement" > + <block name="bayesiananalyzermanagement" class="org.apache.james.management.impl.AvalonBayesianAnalyzerManagement" > <provide name="database-connections" role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector" /> <provide name="filesystem" role="org.apache.james.services.FileSystem" /> @@ -342,7 +342,7 @@ <!-- #################################################################### --> - <block name="domainlistmanagement" class="org.apache.james.management.impl.DomainListManagement"> + <block name="domainlistmanagement" class="org.apache.james.management.impl.AvalonDomainListManagement"> <provide name="domainlist" role="org.apache.james.api.domainlist.DomainList"/> <proxy disable='true'/> --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org