Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.0.0
-
None
-
None
Description
Nothing worth more than an example:
Here is the current service method of the SMTPServer:
public void service( final ServiceManager manager ) throws ServiceException {
super.service( manager );
serviceManager = manager;
mailetcontext = (MailetContext) manager.lookup("org.apache.mailet.MailetContext");
mailServer = (MailServer) manager.lookup(MailServer.ROLE);
users = (UsersRepository) manager.lookup(UsersRepository.ROLE);
dnsServer = (DNSServer) manager.lookup(DNSServer.ROLE);
}
We could change it to
public void service( final ServiceManager manager ) throws ServiceException {
super.service( manager );
serviceManager = manager;
setMailetContext((MailetContext) manager.lookup("org.apache.mailet.MailetContext"));
setMailServer((MailServer) manager.lookup(MailServer.ROLE));
setUsersRepository((UsersRepository) manager.lookup(UsersRepository.ROLE));
setDNSServer((DNSServer) manager.lookup(DNSServer.ROLE));
}
and add the above setters.
This way we can fill dependencies of SMTPServer without using the Serviceable interface and the ServiceManager component.
Later we'll move the whole service method and Serviceable interface to the specific Avalon extension of the "container-agnostic" SMTPServer.