001 /* 002 * Copyright 2010 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package com.hs.mail.imap.processor; 017 018 import java.util.Hashtable; 019 import java.util.Map; 020 021 import com.hs.mail.exception.LookupException; 022 import com.hs.mail.imap.message.request.AppendRequest; 023 import com.hs.mail.imap.message.request.AuthenticateRequest; 024 import com.hs.mail.imap.message.request.CapabilityRequest; 025 import com.hs.mail.imap.message.request.CheckRequest; 026 import com.hs.mail.imap.message.request.CloseRequest; 027 import com.hs.mail.imap.message.request.CopyRequest; 028 import com.hs.mail.imap.message.request.CreateRequest; 029 import com.hs.mail.imap.message.request.DeleteRequest; 030 import com.hs.mail.imap.message.request.ExamineRequest; 031 import com.hs.mail.imap.message.request.ExpungeRequest; 032 import com.hs.mail.imap.message.request.FetchRequest; 033 import com.hs.mail.imap.message.request.ImapRequest; 034 import com.hs.mail.imap.message.request.ListRequest; 035 import com.hs.mail.imap.message.request.LoginRequest; 036 import com.hs.mail.imap.message.request.LogoutRequest; 037 import com.hs.mail.imap.message.request.LsubRequest; 038 import com.hs.mail.imap.message.request.NoopRequest; 039 import com.hs.mail.imap.message.request.RenameRequest; 040 import com.hs.mail.imap.message.request.SearchRequest; 041 import com.hs.mail.imap.message.request.SelectRequest; 042 import com.hs.mail.imap.message.request.StatusRequest; 043 import com.hs.mail.imap.message.request.StoreRequest; 044 import com.hs.mail.imap.message.request.SubscribeRequest; 045 import com.hs.mail.imap.message.request.UnsubscribeRequest; 046 import com.hs.mail.imap.message.request.ext.GetQuotaRequest; 047 import com.hs.mail.imap.message.request.ext.GetQuotaRootRequest; 048 import com.hs.mail.imap.message.request.ext.NamespaceRequest; 049 import com.hs.mail.imap.message.request.ext.SetQuotaRequest; 050 import com.hs.mail.imap.processor.ext.GetQuotaProcessor; 051 import com.hs.mail.imap.processor.ext.GetQuotaRootProcessor; 052 import com.hs.mail.imap.processor.ext.NamespaceProcessor; 053 import com.hs.mail.imap.processor.ext.SetQuotaProcessor; 054 import com.hs.mail.imap.processor.fetch.FetchProcessor; 055 056 /** 057 * <p> 058 * Factory class for IMAP command processor 059 * </p> 060 * 061 * @author Won Chul Doh 062 * @since Sep 3, 2010 063 * 064 */ 065 public class ImapProcessorFactory { 066 067 public static void registerProcessors() { 068 registerProcess(AppendRequest.class, new AppendProcessor()); 069 registerProcess(AuthenticateRequest.class, new AuthenticateProcessor()); 070 registerProcess(CapabilityRequest.class, new CapabilityProcessor()); 071 registerProcess(CheckRequest.class, new CheckProcessor()); 072 registerProcess(CloseRequest.class, new CloseProcessor()); 073 registerProcess(CopyRequest.class, new CopyProcessor()); 074 registerProcess(CreateRequest.class, new CreateProcessor()); 075 registerProcess(DeleteRequest.class, new DeleteProcessor()); 076 registerProcess(ExamineRequest.class, new ExamineProcessor()); 077 registerProcess(ExpungeRequest.class, new ExpungeProcessor()); 078 registerProcess(FetchRequest.class, new FetchProcessor()); 079 registerProcess(ListRequest.class, new ListProcessor()); 080 registerProcess(LoginRequest.class, new LoginProcessor()); 081 registerProcess(LogoutRequest.class, new LogoutProcessor()); 082 registerProcess(LsubRequest.class, new LsubProcessor()); 083 registerProcess(NoopRequest.class, new NoopProcessor()); 084 registerProcess(RenameRequest.class, new RenameProcessor()); 085 registerProcess(SearchRequest.class, new SearchProcessor()); 086 registerProcess(SelectRequest.class, new SelectProcessor()); 087 registerProcess(StatusRequest.class, new StatusProcessor()); 088 registerProcess(StoreRequest.class, new StoreProcessor()); 089 registerProcess(SubscribeRequest.class, new SubscribeProcessor()); 090 registerProcess(UnsubscribeRequest.class, new UnsubscribeProcessor()); 091 registerProcess(GetQuotaRequest.class, new GetQuotaProcessor()); 092 registerProcess(GetQuotaRootRequest.class, new GetQuotaRootProcessor()); 093 registerProcess(NamespaceRequest.class, new NamespaceProcessor()); 094 registerProcess(SetQuotaRequest.class, new SetQuotaProcessor()); 095 } 096 097 private static void registerProcess(Class<? extends ImapRequest> clazz, 098 ImapProcessor processor) { 099 processorMap.put(clazz.getName(), processor); 100 } 101 102 public static ImapProcessor createImapProcessor(ImapRequest request) { 103 ImapProcessor processor = processorMap 104 .get(request.getClass().getName()); 105 if (null == processor) 106 throw new LookupException(""); 107 return processor; 108 } 109 110 private static Map<String, ImapProcessor> processorMap = new Hashtable<String, ImapProcessor>(); 111 112 }