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 no...@apache.org on 2009/10/25 13:30:58 UTC
svn commit: r829558 [2/2] - in /james/server/trunk:
avalon-user-function/src/main/java/org/apache/james/userrepository/
avalon-user-function/src/main/java/org/apache/james/vut/
avalon-user-function/src/main/resources/org/apache/james/vut/
avalon-user-f...
Modified: james/server/trunk/user-library/src/main/java/org/apache/james/impl/user/LocalUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/user/LocalUsersRepository.java?rev=829558&r1=829557&r2=829558&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/user/LocalUsersRepository.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/user/LocalUsersRepository.java Sun Oct 25 12:30:55 2009
@@ -19,44 +19,34 @@
package org.apache.james.impl.user;
-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.api.user.User;
import org.apache.james.api.user.UsersRepository;
import org.apache.james.api.user.UsersStore;
import java.util.Iterator;
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+
/**
* Provide access to the default "LocalUsers" UsersRepository.
*/
-public class LocalUsersRepository implements UsersRepository, Serviceable, Initializable {
+public class LocalUsersRepository implements UsersRepository {
private UsersStore usersStore;
protected UsersRepository users;
+ @Resource(name="org.apache.james.api.user.UsersStore")
public void setUsersStore(UsersStore usersStore) {
this.usersStore = usersStore;
}
- /**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager serviceManager) throws ServiceException {
- UsersStore usersStore =
- (UsersStore) serviceManager.lookup(UsersStore.ROLE);
- setUsersStore(usersStore);
- }
-
- /**
- * @see org.apache.avalon.framework.activity.Initializable#initialize()
- */
- public void initialize() throws Exception {
+
+ @PostConstruct
+ public void init() throws Exception {
users = usersStore.getRepository("LocalUsers");
if (users == null) {
- throw new ServiceException("","The user repository could not be found.");
+ throw new Exception("The user repository could not be found.");
}
}
Modified: james/server/trunk/user-library/src/main/java/org/apache/james/impl/user/UserManagement.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/user/UserManagement.java?rev=829558&r1=829557&r2=829558&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/user/UserManagement.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/user/UserManagement.java Sun Oct 25 12:30:55 2009
@@ -22,9 +22,6 @@
package org.apache.james.impl.user;
-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.user.JamesUser;
import org.apache.james.api.user.User;
import org.apache.james.api.user.UsersRepository;
@@ -33,12 +30,13 @@
import org.apache.james.api.user.management.UserManagementMBean;
import org.apache.mailet.MailAddress;
+import javax.annotation.Resource;
import javax.mail.internet.ParseException;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;
-public class UserManagement implements UserManagementMBean, Serviceable {
+public class UserManagement implements UserManagementMBean {
String ROLE = "org.apache.james.impl.user.UserManagement";
@@ -48,30 +46,17 @@
private UsersRepository localUsers;
private UsersStore usersStore;
- public void setLocalUsers(UsersRepository localUsers) {
+ @Resource(name="org.apache.james.api.user.UsersRepository")
+ public void setUsersRepository(UsersRepository localUsers) {
this.localUsers = localUsers;
}
-
+
+ @Resource(name="org.apache.james.api.user.UsersStore")
public void setUsersStore(UsersStore usersStore) {
this.usersStore = usersStore;
}
- /**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service( final ServiceManager componentManager )
- throws ServiceException {
- localUsers = (UsersRepository) componentManager.lookup(UsersRepository.ROLE);
- if (localUsers == null) {
- throw new ServiceException("","The local user repository could not be found.");
- }
- setLocalUsers(localUsers);
- usersStore = (UsersStore)componentManager.lookup( UsersStore.ROLE );
- if (usersStore == null) {
- throw new ServiceException("","The user store containing the user repositories could not be found.");
- }
- setUsersStore(usersStore);
- }
+
private JamesUser getJamesUser(String userName, String repositoryName) throws UserManagementException {
User baseuser = getUserRepository(repositoryName).getUserByName(userName);
@@ -129,9 +114,9 @@
* @see org.apache.james.api.user.management.UserManagementMBean#listAllUsers(java.lang.String)
*/
public String[] listAllUsers(String repositoryName) throws UserManagementException {
- List userNames = new ArrayList();
+ List<String> userNames = new ArrayList<String>();
UsersRepository users = getUserRepository(repositoryName);
- for (Iterator it = users.list(); it.hasNext();) {
+ for (Iterator<String> it = users.list(); it.hasNext();) {
userNames.add(it.next());
}
return (String[])userNames.toArray(new String[]{});
@@ -227,11 +212,11 @@
/**
* @see org.apache.james.api.user.management.UserManagementMBean#getUserRepositoryNames()
*/
- public List getUserRepositoryNames() {
- List result = new ArrayList();
+ public List<String> getUserRepositoryNames() {
+ List<String> result = new ArrayList<String>();
if (usersStore == null) return result;
- Iterator repositoryNames = usersStore.getRepositoryNames();
+ Iterator<String> repositoryNames = usersStore.getRepositoryNames();
while (repositoryNames.hasNext()) {
String name = (String) repositoryNames.next();
result.add(name);
Added: james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractAvalonVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractAvalonVirtualUserTable.java?rev=829558&view=auto
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractAvalonVirtualUserTable.java (added)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractAvalonVirtualUserTable.java Sun Oct 25 12:30:55 2009
@@ -0,0 +1,155 @@
+/****************************************************************
+ * 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.impl.vut;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+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.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.impl.AvalonLogger;
+import org.apache.james.api.dnsservice.DNSService;
+import org.apache.james.api.domainlist.DomainList;
+import org.apache.james.api.vut.ErrorMappingException;
+import org.apache.james.api.vut.VirtualUserTable;
+import org.apache.james.api.vut.management.InvalidMappingException;
+import org.apache.james.api.vut.management.VirtualUserTableManagement;
+import org.apache.james.smtpserver.mina.GuiceInjected;
+import org.apache.james.util.ConfigurationAdapter;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.name.Names;
+
+public abstract class AbstractAvalonVirtualUserTable implements Serviceable, Initializable, Configurable, GuiceInjected, LogEnabled, VirtualUserTable, VirtualUserTableManagement, DomainList{
+
+ private DNSService dns;
+ private HierarchicalConfiguration config;
+ private Log log;
+
+ protected abstract AbstractVirtualUserTable getVirtualUserTable();
+
+
+ public void service(ServiceManager manager) throws ServiceException {
+ dns = (DNSService) manager.lookup(DNSService.ROLE);
+ }
+
+
+ public void enableLogging(Logger arg0) {
+ log = new AvalonLogger(arg0);
+ }
+
+
+ public void configure(Configuration arg0) throws ConfigurationException {
+ try {
+ config = new ConfigurationAdapter(arg0);
+ } catch (org.apache.commons.configuration.ConfigurationException e) {
+ throw new ConfigurationException("Unable to convert config",e);
+ }
+ }
+
+
+ public Collection<String> getMappings(String user, String domain) throws ErrorMappingException {
+ return getVirtualUserTable().getMappings(user, domain);
+ }
+
+ public boolean addAddressMapping(String user, String domain, String address) throws InvalidMappingException {
+ return getVirtualUserTable().addAddressMapping(user, domain, address);
+ }
+
+ public boolean addAliasDomainMapping(String aliasDomain, String realDomain) throws InvalidMappingException {
+ return getVirtualUserTable().addAliasDomainMapping(aliasDomain, realDomain);
+ }
+
+ public boolean addErrorMapping(String user, String domain, String error) throws InvalidMappingException {
+ return getVirtualUserTable().addErrorMapping(user, domain, error);
+ }
+
+ public boolean addMapping(String user, String domain, String mapping) throws InvalidMappingException {
+ return getVirtualUserTable().addMapping(user, domain, mapping);
+ }
+
+ public boolean addRegexMapping(String user, String domain, String regex) throws InvalidMappingException {
+ return getVirtualUserTable().addRegexMapping(user, domain, regex);
+ }
+
+ public Map<String, Collection<String>> getAllMappings() {
+ return getVirtualUserTable().getAllMappings();
+ }
+
+ public Collection<String> getUserDomainMappings(String user, String domain) throws InvalidMappingException {
+ return getVirtualUserTable().getUserDomainMappings(user, domain);
+ }
+
+ public boolean removeAddressMapping(String user, String domain, String address) throws InvalidMappingException {
+ return getVirtualUserTable().removeAddressMapping(user, domain, address);
+ }
+
+ public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) throws InvalidMappingException {
+ return getVirtualUserTable().removeAliasDomainMapping(aliasDomain, realDomain);
+ }
+
+ public boolean removeErrorMapping(String user, String domain, String error) throws InvalidMappingException {
+ return getVirtualUserTable().removeErrorMapping(user, domain, error);
+ }
+
+ public boolean removeMapping(String user, String domain, String mapping) throws InvalidMappingException {
+ return getVirtualUserTable().removeMapping(user, domain, mapping);
+ }
+
+ public boolean removeRegexMapping(String user, String domain, String regex) throws InvalidMappingException {
+ return getVirtualUserTable().removeRegexMapping(user, domain, regex);
+ }
+
+ public boolean containsDomain(String domain) {
+ return getVirtualUserTable().containsDomain(domain);
+ }
+
+ public List<String> getDomains() {
+ return getVirtualUserTable().getDomains();
+ }
+
+ public void setAutoDetect(boolean autodetect) {
+ getVirtualUserTable().setAutoDetect(autodetect);
+ }
+
+ public void setAutoDetectIP(boolean autodetectIP) {
+ getVirtualUserTable().setAutoDetectIP(autodetectIP);
+ }
+
+ public class BaseAvalonVirtualUserTableModule extends AbstractModule {
+
+ @Override
+ protected void configure() {
+ bind(DNSService.class).annotatedWith(Names.named("org.apache.james.api.dnsservice.DNSService")).toInstance(dns);
+ bind(HierarchicalConfiguration.class).annotatedWith(Names.named("org.apache.commons.configuration.Configuration")).toInstance(config);
+ bind(Log.class).annotatedWith(Names.named("org.apache.commons.logging.Log")).toInstance(log);
+ }
+
+ }
+}
Modified: james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractVirtualUserTable.java?rev=829558&r1=829557&r2=829558&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractVirtualUserTable.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AbstractVirtualUserTable.java Sun Oct 25 12:30:55 2009
@@ -30,16 +30,13 @@
import java.util.Locale;
import java.util.Map;
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
import javax.mail.internet.ParseException;
-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.AbstractLogEnabled;
-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.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.Log;
import org.apache.james.api.dnsservice.DNSService;
import org.apache.james.api.domainlist.DomainList;
import org.apache.james.api.vut.ErrorMappingException;
@@ -53,8 +50,7 @@
/**
*
*/
-public abstract class AbstractVirtualUserTable extends AbstractLogEnabled
- implements VirtualUserTable, VirtualUserTableManagement, DomainList, Serviceable, Configurable {
+public abstract class AbstractVirtualUserTable implements VirtualUserTable, VirtualUserTableManagement, DomainList {
private boolean autoDetect = true;
private boolean autoDetectIP = true;
@@ -65,40 +61,47 @@
// TODO: Should we use true or false as default ?
private boolean recursive = true;
+ private HierarchicalConfiguration config;
+ private Log logger;
- /**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager arg0) throws ServiceException {
- dns = (DNSService)arg0.lookup(DNSService.ROLE);
+ @Resource(name="org.apache.james.api.dnsservice.DNSService")
+ public void setDNSService(DNSService dns) {
+ this.dns = dns;
+ }
+
+ @Resource(name="org.apache.commons.configuration.Configuration")
+ public void setConfiguration(HierarchicalConfiguration config) {
+ this.config = config;
}
-
-
- /**
- * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
- */
- public void configure(Configuration arg0) throws ConfigurationException {
- Configuration recursiveConf = arg0.getChild("recursiveMapping", false);
- if (recursiveConf != null) {
- setRecursiveMapping(recursiveConf.getValueAsBoolean(true));
+ @Resource(name="org.apache.commons.logging.Log")
+ public void setLogger(Log logger) {
+ this.logger = logger;
+ }
+
+ private void configure() throws ConfigurationException {
+ setRecursiveMapping(config.getBoolean("recursiveMapping", true));
+ try {
+ setMappingLimit(config.getInt("mappingLimit",10));
+ } catch (IllegalArgumentException e) {
+ throw new ConfigurationException(e.getMessage());
}
+ doConfigure(config);
+ }
+
+ protected void doConfigure(HierarchicalConfiguration conf) throws ConfigurationException {
- Configuration mappingLimitConf = arg0.getChild("mappingLimit", false);
-
- if (mappingLimitConf != null ) {
- try {
- setMappingLimit(mappingLimitConf.getValueAsInteger(10));
- } catch (IllegalArgumentException e) {
- throw new ConfigurationException(e.getMessage());
- }
- }
}
public void setRecursiveMapping(boolean recursive) {
this.recursive = recursive;
}
+ @PostConstruct
+ public void init() throws Exception {
+ configure();
+ }
+
/**
* Set the mappingLimit
*
@@ -316,9 +319,9 @@
/**
* @see org.apache.james.api.vut.management.VirtualUserTableManagement#getAllMappings()
*/
- public Map getAllMappings() {
+ public Map<String,Collection<String>> getAllMappings() {
int count = 0;
- Map mappings = getAllMappingsInternal();
+ Map<String,Collection<String>> mappings = getAllMappingsInternal();
if (mappings != null) {
count = mappings.size();
@@ -329,7 +332,7 @@
private boolean checkMapping(String user,String domain, String mapping) {
- Collection mappings = getUserDomainMappings(user,domain);
+ Collection<String> mappings = getUserDomainMappings(user,domain);
if (mappings != null && mappings.contains(mapping)) {
return false;
} else {
@@ -341,8 +344,8 @@
/**
* @see org.apache.james.api.domainlist.DomainList#getDomains()
*/
- public List getDomains() {
- List domains = getDomainsInternal();
+ public List<String> getDomains() {
+ List<String> domains = getDomainsInternal();
if (domains != null) {
String hostName = null;
@@ -361,7 +364,7 @@
}
if (autoDetectIP == true) {
- List ipList = getDomainsIP(domains,dns,getLogger());
+ List<String> ipList = getDomainsIP(domains,dns,getLogger());
for(int i = 0; i < ipList.size(); i++) {
if (domains.contains(ipList.get(i)) == false) {
domains.add(ipList.get(i));
@@ -370,7 +373,7 @@
}
if (getLogger().isInfoEnabled()) {
- for (Iterator i = domains.iterator(); i.hasNext(); ) {
+ for (Iterator<String> i = domains.iterator(); i.hasNext(); ) {
getLogger().info("Handling mail for: " + i.next());
}
}
@@ -386,11 +389,11 @@
* @param domains List of domains
* @return domainIP List of ipaddress for domains
*/
- private static List getDomainsIP(List domains,DNSService dns,Logger log) {
- List domainIP = new ArrayList();
+ private static List<String> getDomainsIP(List<String> domains,DNSService dns,Log log) {
+ List<String> domainIP = new ArrayList<String>();
if (domains.size() > 0 ) {
for (int i = 0; i < domains.size(); i++) {
- List domList = getDomainIP(domains.get(i).toString(),dns,log);
+ List<String> domList = getDomainIP(domains.get(i).toString(),dns,log);
for(int i2 = 0; i2 < domList.size();i2++) {
if(domainIP.contains(domList.get(i2)) == false) {
@@ -405,8 +408,8 @@
/**
* @see #getDomainsIP(List, DNSService, Logger)
*/
- private static List getDomainIP(String domain, DNSService dns, Logger log) {
- List domainIP = new ArrayList();
+ private static List<String> getDomainIP(String domain, DNSService dns, Log log) {
+ List<String> domainIP = new ArrayList<String>();
try {
InetAddress[] addrs = dns.getAllByName(domain);
for (int j = 0; j < addrs.length ; j++) {
@@ -424,7 +427,7 @@
/**
* @see org.apache.james.api.vut.management.VirtualUserTableManagement#getUserDomainMappings(java.lang.String, java.lang.String)
*/
- public Collection getUserDomainMappings(String user, String domain) {
+ public Collection<String> getUserDomainMappings(String user, String domain) {
return getUserDomainMappingsInternal(user, domain);
}
@@ -473,10 +476,10 @@
// check if we need to sort
// TODO: Maybe we should just return the aliasdomain mapping
if (mappings != null && mappings.indexOf(VirtualUserTable.ALIASDOMAIN_PREFIX) > -1) {
- Collection mapCol = VirtualUserTableUtil.mappingToCollection(mappings);
- Iterator mapIt = mapCol.iterator();
+ Collection<String> mapCol = VirtualUserTableUtil.mappingToCollection(mappings);
+ Iterator<String> mapIt = mapCol.iterator();
- List col = new ArrayList(mapCol.size());
+ List<String> col = new ArrayList<String>(mapCol.size());
while (mapIt.hasNext()) {
int i = 0;
@@ -495,6 +498,9 @@
}
}
+ protected Log getLogger() {
+ return logger;
+ }
/**
* Add new mapping
@@ -523,7 +529,7 @@
*
* @return domains the domains
*/
- protected abstract List getDomainsInternal();
+ protected abstract List<String> getDomainsInternal();
/**
* Return Collection of all mappings for the given username and domain
@@ -532,14 +538,14 @@
* @param domain the domain
* @return Collection which hold the mappings
*/
- protected abstract Collection getUserDomainMappingsInternal(String user, String domain);
+ protected abstract Collection<String> getUserDomainMappingsInternal(String user, String domain);
/**
* Return a Map which holds all Mappings
*
* @return Map
*/
- protected abstract Map getAllMappingsInternal();
+ protected abstract Map<String,Collection<String>> getAllMappingsInternal();
/**
* Override to map virtual recipients to real recipients, both local and non-local.
Added: james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AvalonDefaultVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AvalonDefaultVirtualUserTable.java?rev=829558&view=auto
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AvalonDefaultVirtualUserTable.java (added)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AvalonDefaultVirtualUserTable.java Sun Oct 25 12:30:55 2009
@@ -0,0 +1,115 @@
+/****************************************************************
+ * 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.impl.vut;
+
+import java.util.Collection;
+import java.util.Map;
+
+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.api.vut.ErrorMappingException;
+import org.apache.james.api.vut.VirtualUserTableStore;
+import org.apache.james.api.vut.management.InvalidMappingException;
+import org.apache.james.smtpserver.mina.GuiceInjected;
+import org.guiceyfruit.jsr250.Jsr250Module;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.name.Names;
+
+public class AvalonDefaultVirtualUserTable implements GuiceInjected, Serviceable, Initializable, org.apache.james.api.vut.management.VirtualUserTableManagement{
+
+ private VirtualUserTableStore store;
+ private DefaultVirtualUserTable vut;
+
+
+ public void service(ServiceManager manager) throws ServiceException {
+ store = (VirtualUserTableStore) manager.lookup(VirtualUserTableStore.ROLE);
+ }
+
+ public void initialize() throws Exception {
+ vut = Guice.createInjector(new Jsr250Module(), new DefaultVirtualUserTableModule()).getInstance(DefaultVirtualUserTable.class);
+ }
+
+ public boolean addAddressMapping(String user, String domain, String address) throws InvalidMappingException {
+ return vut.addAddressMapping(user, domain, address);
+ }
+
+ public boolean addAliasDomainMapping(String aliasDomain, String realDomain) throws InvalidMappingException {
+ return vut.addAliasDomainMapping(aliasDomain, realDomain);
+ }
+
+ public boolean addErrorMapping(String user, String domain, String error) throws InvalidMappingException {
+ return vut.addErrorMapping(user, domain, error);
+ }
+
+ public boolean addMapping(String user, String domain, String mapping) throws InvalidMappingException {
+ return vut.addMapping(user, domain, mapping);
+ }
+
+ public boolean addRegexMapping(String user, String domain, String regex) throws InvalidMappingException {
+ return vut.addRegexMapping(user, domain, regex);
+ }
+
+ public Map<String, Collection<String>> getAllMappings() {
+ return vut.getAllMappings();
+ }
+
+ public Collection<String> getUserDomainMappings(String user, String domain) throws InvalidMappingException {
+ return vut.getUserDomainMappings(user, domain);
+ }
+
+ public boolean removeAddressMapping(String user, String domain, String address) throws InvalidMappingException {
+ return vut.removeAddressMapping(user, domain, address);
+ }
+
+ public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) throws InvalidMappingException {
+ return vut.removeAliasDomainMapping(aliasDomain, realDomain);
+ }
+
+ public boolean removeErrorMapping(String user, String domain, String error) throws InvalidMappingException {
+ return vut.removeErrorMapping(user, domain, error);
+ }
+
+ public boolean removeMapping(String user, String domain, String mapping) throws InvalidMappingException {
+ return vut.removeMapping(user, domain, mapping);
+ }
+
+ public boolean removeRegexMapping(String user, String domain, String regex) throws InvalidMappingException {
+ return vut.removeRegexMapping(user, domain, regex);
+ }
+
+ public Collection<String> getMappings(String user, String domain) throws ErrorMappingException {
+ return vut.getMappings(user, domain);
+ }
+
+ private class DefaultVirtualUserTableModule extends AbstractModule {
+
+ @Override
+ protected void configure() {
+ bind(VirtualUserTableStore.class).annotatedWith(Names.named("org.apache.james.api.vut.VirtualUserTableStore")).toInstance(store);
+ }
+
+ }
+
+}
Added: james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AvalonVirtualUserTableManagement.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AvalonVirtualUserTableManagement.java?rev=829558&view=auto
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AvalonVirtualUserTableManagement.java (added)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/AvalonVirtualUserTableManagement.java Sun Oct 25 12:30:55 2009
@@ -0,0 +1,110 @@
+/****************************************************************
+ * 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.impl.vut;
+
+import java.util.Collection;
+import java.util.Map;
+
+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.api.vut.VirtualUserTableStore;
+import org.apache.james.api.vut.management.VirtualUserTableManagementException;
+import org.apache.james.api.vut.management.VirtualUserTableManagementMBean;
+import org.apache.james.api.vut.management.VirtualUserTableManagementService;
+import org.guiceyfruit.jsr250.Jsr250Module;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.name.Names;
+
+public class AvalonVirtualUserTableManagement implements Serviceable, Initializable, VirtualUserTableManagementService, VirtualUserTableManagementMBean{
+
+ private VirtualUserTableManagement vutManage;
+ private org.apache.james.api.vut.management.VirtualUserTableManagement vManage;
+ private VirtualUserTableStore store;
+
+ public void service(ServiceManager manager) throws ServiceException {
+ store = (VirtualUserTableStore) manager.lookup(VirtualUserTableStore.ROLE);
+ vManage= (org.apache.james.api.vut.management.VirtualUserTableManagement) manager.lookup(org.apache.james.api.vut.management.VirtualUserTableManagement.ROLE);
+ }
+
+ public void initialize() throws Exception {
+ vutManage = Guice.createInjector(new Jsr250Module(), new VirtualUserTableManagementModule()).getInstance(VirtualUserTableManagement.class);
+ }
+
+ public boolean addAddressMapping(String virtualUserTable, String user, String domain, String address) throws VirtualUserTableManagementException {
+ return vutManage.addAddressMapping(virtualUserTable, user, domain, address);
+ }
+
+ public boolean addAliasDomainMapping(String virtualUserTable, String aliasDomain, String realDomain) throws VirtualUserTableManagementException {
+ return vutManage.addAliasDomainMapping(virtualUserTable, aliasDomain, realDomain);
+ }
+
+ public boolean addErrorMapping(String virtualUserTable, String user, String domain, String error) throws VirtualUserTableManagementException {
+ return vutManage.addErrorMapping(virtualUserTable, user, domain, error);
+ }
+
+ public boolean addMapping(String virtualUserTable, String user, String domain, String mapping) throws VirtualUserTableManagementException {
+ return vutManage.addMapping(virtualUserTable, user, domain, mapping);
+ }
+
+ public boolean addRegexMapping(String virtualUserTable, String user, String domain, String regex) throws VirtualUserTableManagementException {
+ return vutManage.addRegexMapping(virtualUserTable, user, domain, regex);
+ }
+
+ public Map<String,Collection<String>> getAllMappings(String virtualUserTable) throws VirtualUserTableManagementException {
+ return vutManage.getAllMappings(virtualUserTable);
+ }
+
+ public Collection<String> getUserDomainMappings(String virtualUserTable, String user, String domain) throws VirtualUserTableManagementException {
+ return vutManage.getUserDomainMappings(virtualUserTable, user, domain);
+ }
+
+ public boolean removeAddressMapping(String virtualUserTable, String user, String domain, String address) throws VirtualUserTableManagementException {
+ return vutManage.removeAddressMapping(virtualUserTable, user, domain, address);
+ }
+
+ public boolean removeAliasDomainMapping(String virtualUserTable, String aliasDomain, String realDomain) throws VirtualUserTableManagementException {
+ return vutManage.removeAliasDomainMapping(virtualUserTable, aliasDomain, realDomain);
+ }
+
+ public boolean removeErrorMapping(String virtualUserTable, String user, String domain, String error) throws VirtualUserTableManagementException {
+ return vutManage.removeErrorMapping(virtualUserTable, user, domain, error);
+ }
+
+ public boolean removeMapping(String virtualUserTable, String user, String domain, String mapping) throws VirtualUserTableManagementException {
+ return vutManage.removeMapping(virtualUserTable, user, domain, mapping);
+ }
+
+ public boolean removeRegexMapping(String virtualUserTable, String user, String domain, String regex) throws VirtualUserTableManagementException {
+ return vutManage.removeRegexMapping(virtualUserTable, user, domain, regex);
+ }
+
+ private class VirtualUserTableManagementModule extends AbstractModule {
+
+ @Override
+ protected void configure() {
+ bind(VirtualUserTableStore.class).annotatedWith(Names.named("org.apache.james.api.vut.VirtualUserTableStore")).toInstance(store);
+ bind(org.apache.james.api.vut.management.VirtualUserTableManagement.class).annotatedWith(Names.named("org.apache.james.api.vut.management.VirtualUserTableManagement")).toInstance(vManage);
+ }
+
+ }
+}
Modified: james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/DefaultVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/DefaultVirtualUserTable.java?rev=829558&r1=829557&r2=829558&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/DefaultVirtualUserTable.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/DefaultVirtualUserTable.java Sun Oct 25 12:30:55 2009
@@ -24,10 +24,9 @@
import java.util.Collection;
import java.util.Map;
-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 javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+
import org.apache.james.api.vut.ErrorMappingException;
import org.apache.james.api.vut.VirtualUserTableStore;
import org.apache.james.api.vut.management.InvalidMappingException;
@@ -36,30 +35,26 @@
/**
* Default VirtualUserTable
*/
-public class DefaultVirtualUserTable implements VirtualUserTableManagement, Serviceable, Initializable {
+public class DefaultVirtualUserTable implements VirtualUserTableManagement {
VirtualUserTableManagement vut = null;
VirtualUserTableStore store = null;
- /**
- * @see org.apache.avalon.framework.activity.Initializable#initialize()
- */
- public void initialize() throws Exception {
+ @Resource(name="org.apache.james.api.vut.VirtualUserTableStore")
+ public void setVirtualUserTableStore(VirtualUserTableStore store) {
+ this.store = store;
+ }
+
+ @PostConstruct
+ public void init() throws Exception {
vut = (VirtualUserTableManagement) store.getTable("DefaultVirtualUserTable");
if (vut == null) {
- throw new ServiceException("","The DefaultVirtualUserTable could not be found.");
+ throw new RuntimeException("The DefaultVirtualUserTable could not be found.");
}
}
/**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager arg0) throws ServiceException {
- store = (VirtualUserTableStore) arg0.lookup(VirtualUserTableStore.ROLE);
- }
-
- /**
* @see org.apache.james.api.vut.management.VirtualUserTableManagement#addAddressMapping(java.lang.String, java.lang.String, java.lang.String)
*/
public boolean addAddressMapping(String user, String domain, String address) throws InvalidMappingException {
@@ -83,7 +78,7 @@
/**
* @see org.apache.james.api.vut.management.VirtualUserTableManagement#getUserDomainMappings(java.lang.String, java.lang.String)
*/
- public Collection getUserDomainMappings(String user, String domain) throws InvalidMappingException {
+ public Collection<String> getUserDomainMappings(String user, String domain) throws InvalidMappingException {
return vut.getUserDomainMappings(user, domain);
}
@@ -132,7 +127,7 @@
/**
* @see org.apache.james.api.vut.management.VirtualUserTableManagement#getAllMappings()
*/
- public Map getAllMappings() {
+ public Map<String,Collection<String>> getAllMappings() {
return vut.getAllMappings();
}
Modified: james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/VirtualUserTableManagement.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/VirtualUserTableManagement.java?rev=829558&r1=829557&r2=829558&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/VirtualUserTableManagement.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/impl/vut/VirtualUserTableManagement.java Sun Oct 25 12:30:55 2009
@@ -24,9 +24,8 @@
import java.util.Collection;
import java.util.Map;
-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.vut.VirtualUserTable;
import org.apache.james.api.vut.VirtualUserTableStore;
import org.apache.james.api.vut.management.InvalidMappingException;
@@ -39,24 +38,18 @@
* Management for VirtualUserTables
*
*/
-public class VirtualUserTableManagement implements Serviceable, VirtualUserTableManagementService, VirtualUserTableManagementMBean {
-
- VirtualUserTableStore store;
- org.apache.james.api.vut.management.VirtualUserTableManagement defaultVUT;
+public class VirtualUserTableManagement implements VirtualUserTableManagementService, VirtualUserTableManagementMBean {
- /**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager arg0) throws ServiceException {
- setVirtualUserTableStore((VirtualUserTableStore) arg0.lookup(VirtualUserTableStore.ROLE));
- setDefaultVirtualUserTable((org.apache.james.api.vut.management.VirtualUserTableManagement) arg0.lookup(DefaultVirtualUserTable.ROLE));
- }
+ private VirtualUserTableStore store;
+ private org.apache.james.api.vut.management.VirtualUserTableManagement defaultVUT;
+ @Resource(name="org.apache.james.api.vut.VirtualUserTableStore")
public void setVirtualUserTableStore(VirtualUserTableStore store) {
this.store = store;
}
- public void setDefaultVirtualUserTable(org.apache.james.api.vut.management.VirtualUserTableManagement defaultVUT) {
+ @Resource(name="org.apache.james.api.vut.management.VirtualUserTableManagement")
+ public void setVirtualUserTableManagement(org.apache.james.api.vut.management.VirtualUserTableManagement defaultVUT) {
this.defaultVUT = defaultVUT;
}
@@ -122,7 +115,7 @@
/**
* @see org.apache.james.api.vut.management.VirtualUserTableManagementService#getUserDomainMappings(java.lang.String, java.lang.String, java.lang.String)
*/
- public Collection getUserDomainMappings(String virtualUserTable, String user, String domain) throws VirtualUserTableManagementException {
+ public Collection<String> getUserDomainMappings(String virtualUserTable, String user, String domain) throws VirtualUserTableManagementException {
try {
return getTable(virtualUserTable).getUserDomainMappings(user, domain);
} catch (InvalidMappingException e) {
@@ -188,7 +181,7 @@
/**
* @see org.apache.james.api.vut.management.VirtualUserTableManagementService#getAllMappings(java.lang.String)
*/
- public Map getAllMappings(String virtualUserTable) throws VirtualUserTableManagementException{
+ public Map<String,Collection<String>> getAllMappings(String virtualUserTable) throws VirtualUserTableManagementException{
return getTable(virtualUserTable).getAllMappings();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org