[prev in list] [next in list] [prev in thread] [next in thread]
List: james-dev
Subject: svn commit: r468878 - in /james/server/trunk/src/java/org/apache/james:
From: berndf () apache ! org
Date: 2006-10-29 10:56:33
Message-ID: 20061029105633.B00C21A9846 () eris ! apache ! org
[Download RAW message or body]
Author: berndf
Date: Sun Oct 29 02:56:32 2006
New Revision: 468878
URL: http://svn.apache.org/viewvc?view=rev&rev=468878
Log:
prepare the management features for JAMES-635
Added:
james/server/trunk/src/java/org/apache/james/services/SpoolManager.java
james/server/trunk/src/java/org/apache/james/transport/MailetContainer.java
james/server/trunk/src/java/org/apache/james/transport/ProcessorList.java
Modified:
james/server/trunk/src/java/org/apache/james/transport/JamesSpoolManager.java
james/server/trunk/src/java/org/apache/james/transport/LinearProcessor.java
james/server/trunk/src/java/org/apache/james/transport/StateAwareProcessorList.java
Added: james/server/trunk/src/java/org/apache/james/services/SpoolManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/services/SpoolManager.java?view=auto&rev=468878
==============================================================================
--- james/server/trunk/src/java/org/apache/james/services/SpoolManager.java (added)
+++ james/server/trunk/src/java/org/apache/james/services/SpoolManager.java Sun Oct \
29 02:56:32 2006 @@ -0,0 +1,47 @@
+/****************************************************************
+ * 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.services;
+
+import java.util.List;
+
+/**
+ * provide all the data needed to manage spool processors, mailets and matchers
+ */
+public interface SpoolManager {
+ String ROLE = "org.apache.james.services.SpoolManager";
+
+ /**
+ * @return names of all configured processors
+ */
+ String[] getProcessorNames();
+
+ /**
+ * retrieve all mailets for given processor
+ * @param processorName - name of the processor who's mailets should be \
retrieved + * @return List<MailetConfig>
+ */
+ List getMailetConfigs(String processorName);
+
+ /**
+ * retrieve all matchers for given processor
+ * @param processorName - name of the processor who's matchers should be \
retrieved + * @return List<MatcherConfig>
+ */
+ List getMatcherConfigs(String processorName);
+}
Modified: james/server/trunk/src/java/org/apache/james/transport/JamesSpoolManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/JamesSpoolManager.java?view=diff&rev=468878&r1=468877&r2=468878
==============================================================================
--- james/server/trunk/src/java/org/apache/james/transport/JamesSpoolManager.java \
(original)
+++ james/server/trunk/src/java/org/apache/james/transport/JamesSpoolManager.java Sun \
Oct 29 02:56:32 2006 @@ -33,10 +33,13 @@
import org.apache.avalon.framework.service.Serviceable;
import org.apache.james.services.MailProcessor;
import org.apache.james.services.SpoolRepository;
+import org.apache.james.services.SpoolManager;
import org.apache.mailet.Mail;
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
/**
* Manages the mail spool. This class is responsible for retrieving
@@ -48,7 +51,7 @@
*/
public class JamesSpoolManager
extends AbstractLogEnabled
- implements Serviceable, Configurable, Initializable, Runnable, Disposable {
+ implements Serviceable, Configurable, Initializable, Runnable, Disposable, \
SpoolManager {
/**
* System component manager
@@ -124,7 +127,7 @@
*/
public void configure(Configuration conf) throws ConfigurationException {
numThreads = conf.getChild("threads").getValueAsInteger(1);
-
+
String processorClass = \
conf.getChild("processorClass").getValue("org.apache.james.transport.StateAwareProcessorList");
try {
processorList = (MailProcessor) \
Thread.currentThread().getContextClassLoader().loadClass(processorClass).newInstance();
@@ -132,7 +135,7 @@
getLogger().error("Unable to instantiate spoolmanager processor: \
"+processorClass, e1);
throw new ConfigurationException("Instantiation exception: \
"+processorClass, e1); }
-
+
try {
ContainerUtil.enableLogging(processorList, getLogger());
ContainerUtil.service(processorList, compMgr);
@@ -140,7 +143,7 @@
getLogger().error(e.getMessage(), e);
throw new ConfigurationException("Servicing failed with error: \
"+e.getMessage(),e); }
-
+
ContainerUtil.configure(processorList, conf);
}
@@ -150,9 +153,9 @@
public void initialize() throws Exception {
getLogger().info("JamesSpoolManager init...");
-
+
ContainerUtil.initialize(processorList);
-
+
if (getLogger().isInfoEnabled()) {
StringBuffer infoBuffer =
new StringBuffer(64)
@@ -284,8 +287,37 @@
} catch (Exception ignored) {}
}
getLogger().info("JamesSpoolManager thread shutdown completed.");
-
+
ContainerUtil.dispose(processorList);
}
+ public String[] getProcessorNames() {
+ if (!(processorList instanceof ProcessorList)) {
+ return new String[0];
+ }
+ String[] processorNames = ((ProcessorList) \
processorList).getProcessorNames(); + return processorNames;
+ }
+
+ public List getMailetConfigs(String processorName) {
+ MailetContainer mailetContainer = getMailetContainerByName(processorName);
+ if (mailetContainer == null) return new ArrayList();
+ return mailetContainer.getMailetConfigs();
+ }
+
+ public List getMatcherConfigs(String processorName) {
+ MailetContainer mailetContainer = getMailetContainerByName(processorName);
+ if (mailetContainer == null) return new ArrayList();
+ return mailetContainer.getMatcherConfigs();
+ }
+
+ private MailetContainer getMailetContainerByName(String processorName) {
+ if (!(processorList instanceof ProcessorList)) return null;
+
+ MailProcessor processor = ((ProcessorList) \
processorList).getProcessor(processorName); + if (!(processor instanceof \
MailetContainer)) return null; + // TODO: decide, if we have to visit all \
sub-processors for being ProcessorLists + // on their very own and collecting \
the processor names deeply. + return (MailetContainer)processor;
+ }
}
Modified: james/server/trunk/src/java/org/apache/james/transport/LinearProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/LinearProcessor.java?view=diff&rev=468878&r1=468877&r2=468878
==============================================================================
--- james/server/trunk/src/java/org/apache/james/transport/LinearProcessor.java \
(original)
+++ james/server/trunk/src/java/org/apache/james/transport/LinearProcessor.java Sun \
Oct 29 02:56:32 2006 @@ -32,6 +32,7 @@
import org.apache.avalon.framework.service.Serviceable;
import org.apache.james.core.MailImpl;
import org.apache.james.core.MailetConfigImpl;
+import org.apache.james.core.MatcherConfigImpl;
import org.apache.james.services.MailProcessor;
import org.apache.james.services.MailetLoader;
import org.apache.james.services.MatcherLoader;
@@ -45,6 +46,7 @@
import org.apache.mailet.MailetConfig;
import org.apache.mailet.MailetException;
import org.apache.mailet.Matcher;
+import org.apache.mailet.MatcherConfig;
import javax.mail.MessagingException;
@@ -93,7 +95,7 @@
*/
public class LinearProcessor
extends AbstractLogEnabled
- implements Disposable, Configurable, Serviceable, MailProcessor {
+ implements Disposable, Configurable, Serviceable, MailProcessor, MailetContainer \
{
private static final Random random = new Random(); // Used to generate new mail \
names
@@ -693,5 +695,29 @@
setMailetLoader((MailetLoader) comp.lookup(MailetLoader.ROLE));
setMatchLoader((MatcherLoader) comp.lookup(MatcherLoader.ROLE));
setSpool( (SpoolRepository) comp.lookup(SpoolRepository.ROLE));
+ }
+
+ public List getMailetConfigs() {
+ List mailetConfigs = new ArrayList();
+ Iterator iterator = mailets.iterator();
+ while (iterator.hasNext()) {
+ Mailet mailet = (Mailet) iterator.next();
+ MailetConfig mailetConfig = mailet.getMailetConfig();
+ if (mailetConfig == null) mailetConfigs.add(new MailetConfigImpl()); // \
placeholder + else mailetConfigs.add(mailetConfig);
+ }
+ return mailetConfigs;
+ }
+
+ public List getMatcherConfigs() {
+ List matcherConfigs = new ArrayList();
+ Iterator iterator = matchers.iterator();
+ while (iterator.hasNext()) {
+ Matcher matcher = (Matcher) iterator.next();
+ MatcherConfig matcherConfig = matcher.getMatcherConfig();
+ if (matcherConfig == null) matcherConfigs.add(new MatcherConfigImpl()); \
// placeholder + else matcherConfigs.add(matcherConfig);
+ }
+ return matcherConfigs;
}
}
Added: james/server/trunk/src/java/org/apache/james/transport/MailetContainer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/MailetContainer.java?view=auto&rev=468878
==============================================================================
--- james/server/trunk/src/java/org/apache/james/transport/MailetContainer.java \
(added)
+++ james/server/trunk/src/java/org/apache/james/transport/MailetContainer.java Sun \
Oct 29 02:56:32 2006 @@ -0,0 +1,57 @@
+/****************************************************************
+ * 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.transport;
+
+import java.util.List;
+
+import org.apache.james.services.MailetLoader;
+import org.apache.james.services.MatcherLoader;
+
+/**
+ * interface for mailet/matcher-containing processors.
+ */
+public interface MailetContainer {
+
+ /**
+ * Set the MailetLoader
+ *
+ * @param mailetLoader the MailetLoader
+ */
+ void setMailetLoader(MailetLoader mailetLoader);
+
+ /**
+ * Set the MatcherLoader
+ *
+ * @param matchLoader the MatcherLoader
+ */
+ void setMatchLoader(MatcherLoader matchLoader);
+
+ /**
+ * retrieve mailet configuration data for introspection
+ * @return List<MailetConfig>
+ */
+ List getMailetConfigs();
+
+ /**
+ * retrieve matcher configuration data for introspection
+ * @return List<MatcherConfig>
+ */
+ List getMatcherConfigs();
+
+}
Added: james/server/trunk/src/java/org/apache/james/transport/ProcessorList.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/ProcessorList.java?view=auto&rev=468878
==============================================================================
--- james/server/trunk/src/java/org/apache/james/transport/ProcessorList.java (added)
+++ james/server/trunk/src/java/org/apache/james/transport/ProcessorList.java Sun Oct \
29 02:56:32 2006 @@ -0,0 +1,38 @@
+/****************************************************************
+ * 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.transport;
+
+import org.apache.james.services.MailProcessor;
+
+/**
+ * provide access on child processor
+ */
+public interface ProcessorList {
+
+ /**
+ * @return names of all configured processor
+ */
+ String[] getProcessorNames();
+
+ /**
+ * @return access the child processor
+ */
+ MailProcessor getProcessor(String name);
+
+}
Modified: james/server/trunk/src/java/org/apache/james/transport/StateAwareProcessorList.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/StateAwareProcessorList.java?view=diff&rev=468878&r1=468877&r2=468878
==============================================================================
--- james/server/trunk/src/java/org/apache/james/transport/StateAwareProcessorList.java \
(original)
+++ james/server/trunk/src/java/org/apache/james/transport/StateAwareProcessorList.java \
Sun Oct 29 02:56:32 2006 @@ -47,7 +47,7 @@
*/
public class StateAwareProcessorList
extends AbstractLogEnabled
- implements Serviceable, Configurable, Initializable, Disposable, MailProcessor {
+ implements Serviceable, Configurable, Initializable, Disposable, MailProcessor, \
ProcessorList {
/**
* System component manager
@@ -234,6 +234,17 @@
ContainerUtil.dispose(processor);
processors.remove(processor);
}
+ }
+
+ /**
+ * @return names of all configured processors
+ */
+ public String[] getProcessorNames() {
+ return (String[]) processors.keySet().toArray(new String[]{});
+ }
+
+ public MailProcessor getProcessor(String name) {
+ return (MailProcessor) processors.get(name);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic