blob: 37b2ef378b8117b83afbe28169760d9ae484b449 [file] [log] [blame]
/****************************************************************
* 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.hupa.server.ioc;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.hupa.server.IMAPStoreCache;
import org.apache.hupa.server.InMemoryIMAPStoreCache;
import org.apache.hupa.server.guice.providers.DefaultUserSettingsProvider;
import org.apache.hupa.server.guice.providers.LogProvider;
import org.apache.hupa.server.preferences.InSessionUserPreferencesStorage;
import org.apache.hupa.server.preferences.UserPreferencesStorage;
import org.apache.hupa.server.service.CheckSessionService;
import org.apache.hupa.server.service.CheckSessionServiceImpl;
import org.apache.hupa.server.service.CreateFolderService;
import org.apache.hupa.server.service.CreateFolderServiceImpl;
import org.apache.hupa.server.service.DeleteFolderService;
import org.apache.hupa.server.service.DeleteFolderServiceImpl;
import org.apache.hupa.server.service.DeleteMessageAllService;
import org.apache.hupa.server.service.DeleteMessageAllServiceImpl;
import org.apache.hupa.server.service.DeleteMessageByUidService;
import org.apache.hupa.server.service.DeleteMessageByUidServiceImpl;
import org.apache.hupa.server.service.FetchFoldersService;
import org.apache.hupa.server.service.FetchFoldersServiceImpl;
import org.apache.hupa.server.service.FetchMessagesService;
import org.apache.hupa.server.service.FetchMessagesServiceImpl;
import org.apache.hupa.server.service.GetMessageDetailsService;
import org.apache.hupa.server.service.GetMessageDetailsServiceImpl;
import org.apache.hupa.server.service.GetMessageRawService;
import org.apache.hupa.server.service.GetMessageRawServiceImpl;
import org.apache.hupa.server.service.ImapFolderService;
import org.apache.hupa.server.service.ImapFolderServiceImpl;
import org.apache.hupa.server.service.LoginUserService;
import org.apache.hupa.server.service.LoginUserServiceImpl;
import org.apache.hupa.server.service.LogoutUserService;
import org.apache.hupa.server.service.LogoutUserServiceImpl;
import org.apache.hupa.server.service.MoveMessageService;
import org.apache.hupa.server.service.MoveMessageServiceImpl;
import org.apache.hupa.server.service.RenameFolderService;
import org.apache.hupa.server.service.RenameFolderServiceImpl;
import org.apache.hupa.server.service.SendForwardMessageService;
import org.apache.hupa.server.service.SendForwardMessageServiceImpl;
import org.apache.hupa.server.service.SendMessageBaseServiceImpl;
import org.apache.hupa.server.service.SendMessageService;
import org.apache.hupa.server.service.SendReplyMessageService;
import org.apache.hupa.server.service.SendReplyMessageServiceImpl;
import org.apache.hupa.server.service.SetFlagService;
import org.apache.hupa.server.service.SetFlagServiceImpl;
import org.apache.hupa.shared.data.CreateFolderActionImpl;
import org.apache.hupa.shared.data.DeleteFolderActionImpl;
import org.apache.hupa.shared.data.DeleteMessageAllActionImpl;
import org.apache.hupa.shared.data.DeleteMessageByUidActionImpl;
import org.apache.hupa.shared.data.FetchMessagesActionImpl;
import org.apache.hupa.shared.data.FetchMessagesResultImpl;
import org.apache.hupa.shared.data.GenericResultImpl;
import org.apache.hupa.shared.data.GetMessageDetailsActionImpl;
import org.apache.hupa.shared.data.GetMessageDetailsResultImpl;
import org.apache.hupa.shared.data.GetMessageRawActionImpl;
import org.apache.hupa.shared.data.GetMessageRawResultImpl;
import org.apache.hupa.shared.data.ImapFolderImpl;
import org.apache.hupa.shared.data.LogoutUserActionImpl;
import org.apache.hupa.shared.data.MailHeaderImpl;
import org.apache.hupa.shared.data.MessageAttachmentImpl;
import org.apache.hupa.shared.data.MessageDetailsImpl;
import org.apache.hupa.shared.data.MoveMessageActionImpl;
import org.apache.hupa.shared.data.RenameFolderActionImpl;
import org.apache.hupa.shared.data.SendForwardMessageActionImpl;
import org.apache.hupa.shared.data.SendMessageActionImpl;
import org.apache.hupa.shared.data.SendReplyMessageActionImpl;
import org.apache.hupa.shared.data.SetFlagActionImpl;
import org.apache.hupa.shared.data.SmtpMessageImpl;
import org.apache.hupa.shared.data.TagImpl;
import org.apache.hupa.shared.data.UserImpl;
import org.apache.hupa.shared.domain.CreateFolderAction;
import org.apache.hupa.shared.domain.DeleteFolderAction;
import org.apache.hupa.shared.domain.DeleteMessageAllAction;
import org.apache.hupa.shared.domain.DeleteMessageByUidAction;
import org.apache.hupa.shared.domain.FetchMessagesAction;
import org.apache.hupa.shared.domain.FetchMessagesResult;
import org.apache.hupa.shared.domain.GenericResult;
import org.apache.hupa.shared.domain.GetMessageDetailsAction;
import org.apache.hupa.shared.domain.GetMessageDetailsResult;
import org.apache.hupa.shared.domain.GetMessageRawAction;
import org.apache.hupa.shared.domain.GetMessageRawResult;
import org.apache.hupa.shared.domain.ImapFolder;
import org.apache.hupa.shared.domain.LogoutUserAction;
import org.apache.hupa.shared.domain.MailHeader;
import org.apache.hupa.shared.domain.MessageAttachment;
import org.apache.hupa.shared.domain.MessageDetails;
import org.apache.hupa.shared.domain.MoveMessageAction;
import org.apache.hupa.shared.domain.RenameFolderAction;
import org.apache.hupa.shared.domain.SendForwardMessageAction;
import org.apache.hupa.shared.domain.SendMessageAction;
import org.apache.hupa.shared.domain.SendReplyMessageAction;
import org.apache.hupa.shared.domain.SetFlagAction;
import org.apache.hupa.shared.domain.Settings;
import org.apache.hupa.shared.domain.SmtpMessage;
import org.apache.hupa.shared.domain.Tag;
import org.apache.hupa.shared.domain.User;
import com.google.inject.AbstractModule;
import com.google.inject.Singleton;
import com.google.inject.name.Names;
import com.google.web.bindery.requestfactory.server.DefaultExceptionHandler;
import com.google.web.bindery.requestfactory.server.ExceptionHandler;
import com.google.web.bindery.requestfactory.server.ServiceLayerDecorator;
/**
*/
public class GuiceServerModule extends AbstractModule {
Properties properties;
public GuiceServerModule(Properties properties) {
this.properties = properties;
}
@Override
protected void configure() {
try {
// Bind addresses and ports for imap and smtp
Names.bindProperties(binder(), properties);
} catch (Exception e) {
throw new RuntimeException("Unable to to configure hupa server,"
+ "\nmake sure that you have a valid /etc/default/hupa file"
+ "\nor the web container has been started with the appropriate parameter:"
+ " -Dhupa.config.file=your_hupa_properties_file", e);
}
bind(ExceptionHandler.class).to(DefaultExceptionHandler.class);
bind(ServiceLayerDecorator.class).to(IocRfServiceDecorator.class);
bind(IocRfServiceLocator.class);
bind(MailHeader.class).to(MailHeaderImpl.class);
bind(User.class).to(UserImpl.class);
bind(Settings.class).toProvider(DefaultUserSettingsProvider.class);
bind(ImapFolder.class).to(ImapFolderImpl.class);
bind(Tag.class).to(TagImpl.class);
bind(MessageDetails.class).to(MessageDetailsImpl.class);
bind(MessageAttachment.class).to(MessageAttachmentImpl.class);
bind(SmtpMessage.class).to(SmtpMessageImpl.class);
bind(GenericResult.class).to(GenericResultImpl.class);
bind(FetchMessagesAction.class).to(FetchMessagesActionImpl.class);
bind(FetchMessagesResult.class).to(FetchMessagesResultImpl.class);
bind(CreateFolderAction.class).to(CreateFolderActionImpl.class);
bind(DeleteFolderAction.class).to(DeleteFolderActionImpl.class);
bind(RenameFolderAction.class).to(RenameFolderActionImpl.class);
bind(DeleteMessageAllAction.class).to(DeleteMessageAllActionImpl.class);
bind(DeleteMessageByUidAction.class).to(DeleteMessageByUidActionImpl.class);
bind(GetMessageDetailsAction.class).to(GetMessageDetailsActionImpl.class);
bind(GetMessageDetailsResult.class).to(GetMessageDetailsResultImpl.class);
bind(SendMessageAction.class).to(SendMessageActionImpl.class);
bind(SendForwardMessageAction.class).to(SendForwardMessageActionImpl.class);
bind(SendReplyMessageAction.class).to(SendReplyMessageActionImpl.class);
bind(GetMessageRawAction.class).to(GetMessageRawActionImpl.class);
bind(GetMessageRawResult.class).to(GetMessageRawResultImpl.class);
bind(LogoutUserAction.class).to(LogoutUserActionImpl.class);
bind(MoveMessageAction.class).to(MoveMessageActionImpl.class);
bind(SetFlagAction.class).to(SetFlagActionImpl.class);
bind(FetchMessagesService.class).to(FetchMessagesServiceImpl.class);
bind(SendMessageService.class).to(SendMessageBaseServiceImpl.class);
bind(SendForwardMessageService.class).to(SendForwardMessageServiceImpl.class);
bind(SendReplyMessageService.class).to(SendReplyMessageServiceImpl.class);
bind(GetMessageDetailsService.class).to(GetMessageDetailsServiceImpl.class);
bind(CheckSessionService.class).to(CheckSessionServiceImpl.class);
bind(LoginUserService.class).to(LoginUserServiceImpl.class);
bind(ImapFolderService.class).to(ImapFolderServiceImpl.class);
bind(FetchFoldersService.class).to(FetchFoldersServiceImpl.class);
bind(CreateFolderService.class).to(CreateFolderServiceImpl.class);
bind(DeleteFolderService.class).to(DeleteFolderServiceImpl.class);
bind(RenameFolderService.class).to(RenameFolderServiceImpl.class);
bind(DeleteMessageAllService.class).to(DeleteMessageAllServiceImpl.class);
bind(DeleteMessageByUidService.class).to(DeleteMessageByUidServiceImpl.class);
bind(GetMessageRawService.class).to(GetMessageRawServiceImpl.class);
bind(LogoutUserService.class).to(LogoutUserServiceImpl.class);
bind(MoveMessageService.class).to(MoveMessageServiceImpl.class);
bind(SetFlagService.class).to(SetFlagServiceImpl.class);
bind(IMAPStoreCache.class).to(getIMAPStoreCacheClass()).in(Singleton.class);
bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
bind(UserPreferencesStorage.class).to(InSessionUserPreferencesStorage.class);
bind(Properties.class).toInstance(properties);
}
protected Class<? extends IMAPStoreCache> getIMAPStoreCacheClass() {
return InMemoryIMAPStoreCache.class;
}
}