View Javadoc

1   /****************************************************************
2    * Licensed to the Apache Software Foundation (ASF) under one   *
3    * or more contributor license agreements.  See the NOTICE file *
4    * distributed with this work for additional information        *
5    * regarding copyright ownership.  The ASF licenses this file   *
6    * to you under the Apache License, Version 2.0 (the            *
7    * "License"); you may not use this file except in compliance   *
8    * with the License.  You may obtain a copy of the License at   *
9    *                                                              *
10   *   http://www.apache.org/licenses/LICENSE-2.0                 *
11   *                                                              *
12   * Unless required by applicable law or agreed to in writing,   *
13   * software distributed under the License is distributed on an  *
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15   * KIND, either express or implied.  See the License for the    *
16   * specific language governing permissions and limitations      *
17   * under the License.                                           *
18   ****************************************************************/
19  
20  package org.apache.james.mailrepository.javamail;
21  
22  import javax.mail.FetchProfile;
23  import javax.mail.Flags;
24  import javax.mail.Folder;
25  import javax.mail.Message;
26  import javax.mail.MessagingException;
27  import javax.mail.Store;
28  import javax.mail.URLName;
29  import javax.mail.event.ConnectionListener;
30  import javax.mail.event.FolderListener;
31  import javax.mail.event.MessageChangedListener;
32  import javax.mail.event.MessageCountListener;
33  import javax.mail.search.SearchTerm;
34  
35  /**
36   * Simple 1:1 wrapper that holds a javax.mail.Folder internally to be accessed
37   * through the FolderInterface
38   */
39  
40  public class FolderAdapter implements FolderInterface {
41      
42      protected Folder folder;
43  
44      /**
45       * Constructor
46       * 
47       * @param folder the Folder 
48       */
49      public FolderAdapter(Folder folder) {
50          this.folder=folder;
51      }
52  
53      /**
54       * @see javax.mail.Folder#addConnectionListener(ConnectionListener)
55       */
56      public void addConnectionListener(ConnectionListener l) {
57          folder.addConnectionListener(l);
58      }
59  
60      /**
61       * @see javax.mail.Folder#addFolderListener(FolderListener)
62       */
63      public void addFolderListener(FolderListener l) {
64          folder.addFolderListener(l);
65      }
66  
67      /**
68       * @see javax.mail.Folder#addMessageChangedListener(MessageChangedListener)
69       */
70      public void addMessageChangedListener(MessageChangedListener l) {
71          folder.addMessageChangedListener(l);
72      }
73  
74      /**
75       * @see javax.mail.Folder#addMessageCountListener(MessageCountListener)
76       */
77      public void addMessageCountListener(MessageCountListener l) {
78          folder.addMessageCountListener(l);
79      }
80  
81      /**
82       * @see org.apache.james.mailrepository.javamail.FolderInterface#appendMessages(javax.mail.Message[])
83       */
84      public void appendMessages(Message[] msgs) throws MessagingException {
85          folder.appendMessages(msgs);
86      }
87  
88      /**
89       * @see org.apache.james.mailrepository.javamail.FolderInterface#close(boolean)
90       */
91      public void close(boolean expunge) throws MessagingException {
92          folder.close(expunge);
93      }
94  
95      /**
96       * @see javax.mail.Folder#copyMessages(Message[], Folder)
97       */
98      public void copyMessages(Message[] msgs, Folder folder) throws MessagingException {
99          this.folder.copyMessages(msgs, folder);
100     }
101 
102     /**
103      * @see org.apache.james.mailrepository.javamail.FolderInterface#create(int)
104      */
105     public boolean create(int type) throws MessagingException {
106         return folder.create(type);
107     }
108 
109     /**
110      * @see org.apache.james.mailrepository.javamail.FolderInterface#delete(boolean)
111      */
112     public boolean delete(boolean recurse) throws MessagingException {
113         return folder.delete(recurse);
114     }
115 
116     /**
117      * @see javax.mail.Folder#equals(Object)
118      */
119     public boolean equals(Object obj) {
120         return folder.equals(obj);
121     }
122 
123     /**
124      * @see org.apache.james.mailrepository.javamail.FolderInterface#exists()
125      */
126     public boolean exists() throws MessagingException {
127         return folder.exists();
128     }
129 
130     /**
131      * @see org.apache.james.mailrepository.javamail.FolderInterface#expunge()
132      */
133     public Message[] expunge() throws MessagingException {
134         return folder.expunge();
135     }
136 
137     /**
138      * @see javax.mail.Folder#fetch(Message[], FetchProfile)
139      */
140     public void fetch(Message[] msgs, FetchProfile fp) throws MessagingException {
141         folder.fetch(msgs, fp);
142     }
143 
144     /**
145      * @see javax.mail.Folder#getDeletedMessageCount()
146      */
147     public int getDeletedMessageCount() throws MessagingException {
148         return folder.getDeletedMessageCount();
149     }
150 
151     /**
152      * @see javax.mail.Folder#getFolder(String)
153      */
154     public Folder getFolder(String name) throws MessagingException {
155         return folder.getFolder(name);
156     }
157 
158     /**
159      * @see org.apache.james.mailrepository.javamail.FolderInterface#getFullName()
160      */
161     public String getFullName() {
162         // FIXME ugly workaround for buggy getFullName in javamaildir
163         String fn=folder.getFullName();
164         if (fn.length()>1) {
165             if (fn.charAt(0)=='.') {
166                 fn=fn.substring(1);
167             }
168         }
169         return fn;
170     }
171 
172     /**
173      * @see org.apache.james.mailrepository.javamail.FolderInterface#getMessage(int)
174      */
175     public Message getMessage(int msgnum) throws MessagingException {
176         return folder.getMessage(msgnum);
177     }
178 
179     /**
180      * @see org.apache.james.mailrepository.javamail.FolderInterface#getMessageCount()
181      */
182     public int getMessageCount() throws MessagingException {
183         return folder.getMessageCount();
184     }
185 
186     /**
187      * @see org.apache.james.mailrepository.javamail.FolderInterface#getMessages()
188      */
189     public Message[] getMessages() throws MessagingException {
190         return folder.getMessages();
191     }
192 
193     /**
194      * @see javax.mail.Folder#getMessages(int, int)
195      */
196     public Message[] getMessages(int start, int end) throws MessagingException {
197         return folder.getMessages(start, end);
198     }
199 
200     /**
201      * @see javax.mail.Folder#getMessages(int[])
202      */
203     public Message[] getMessages(int[] msgnums) throws MessagingException {
204         return folder.getMessages(msgnums);
205     }
206 
207     /**
208      * @see javax.mail.Folder#getMode()
209      */
210     public int getMode() {
211         return folder.getMode();
212     }
213 
214     /**
215      * @see org.apache.james.mailrepository.javamail.FolderInterface#getName()
216      */
217     public String getName() {
218         return folder.getName();
219     }
220 
221     /**
222      * @see org.apache.james.mailrepository.javamail.FolderInterface#getNewMessageCount()
223      */
224     public int getNewMessageCount() throws MessagingException {
225         return folder.getNewMessageCount();
226     }
227 
228     
229     /**
230      * @see javax.mail.Folder#getParent()
231      */
232     public Folder getParent() throws MessagingException {
233         return folder.getParent();
234     }
235 
236     /**
237      * @see org.apache.james.mailrepository.javamail.FolderInterface#getPermanentFlags()
238      */
239     public Flags getPermanentFlags() {
240         return folder.getPermanentFlags();
241     }
242 
243     /**
244      * @see javax.mail.Folder#getSeparator()
245      */
246     public char getSeparator() throws MessagingException {
247         return folder.getSeparator();
248     }
249 
250     /**
251      * @see javax.mail.Folder#getStore()
252      */
253     public Store getStore() {
254         return folder.getStore();
255     }
256 
257     /**
258      * @see org.apache.james.mailrepository.javamail.FolderInterface#getType()
259      */
260     public int getType() throws MessagingException {
261         return folder.getType();
262     }
263 
264     /**
265      * @see org.apache.james.mailrepository.javamail.FolderInterface#getUnreadMessageCount()
266      */
267     public int getUnreadMessageCount() throws MessagingException {
268         return folder.getUnreadMessageCount();
269     }
270 
271     /**
272      * @see javax.mail.Folder#getURLName()
273      */
274     public URLName getURLName() throws MessagingException {
275         return folder.getURLName();
276     }
277 
278     /**
279      * @see javax.mail.Folder#hashCode()
280      */
281     public int hashCode() {
282         return folder.hashCode();
283     }
284 
285     /**
286      * @see javax.mail.Folder#hasNewMessages()
287      */
288     public boolean hasNewMessages() throws MessagingException {
289         return folder.hasNewMessages();
290     }
291 
292     /**
293      * @see org.apache.james.mailrepository.javamail.FolderInterface#isOpen()
294      */
295     public boolean isOpen() {
296         return folder.isOpen();
297     }
298 
299     /**
300      * @see javax.mail.Folder#isSubscribed()
301      */
302     public boolean isSubscribed() {
303         return folder.isSubscribed();
304     }
305 
306     /**
307      * @see javax.mail.Folder#list()
308      */
309     public Folder[] list() throws MessagingException {
310         return folder.list();
311     }
312 
313     /**
314      * @see org.apache.james.mailrepository.javamail.FolderInterface#list(java.lang.String)
315      */
316     public FolderInterface[] list(String pattern) throws MessagingException {
317         return wrapFolders(folder.list(pattern));
318     }
319 
320     /**
321      * @see javax.mail.Folder#listSubscribed()
322      */
323     public Folder[] listSubscribed() throws MessagingException {
324         return folder.listSubscribed();
325     }
326 
327     /**
328      * @see javax.mail.Folder#listSubscribed(String)
329      */
330     public Folder[] listSubscribed(String pattern) throws MessagingException {
331         return folder.listSubscribed(pattern);
332     }
333 
334     /**
335      * @see org.apache.james.mailrepository.javamail.FolderInterface#open(int)
336      */
337     public void open(int mode) throws MessagingException {
338         folder.open(mode);
339     }
340 
341     /**
342      * @see javax.mail.Folder#removeConnectionListener(ConnectionListener)
343      */
344     public void removeConnectionListener(ConnectionListener l) {
345         folder.removeConnectionListener(l);
346     }
347     
348     /**
349      * @see javax.mail.Folder#removeFolderListener(FolderListener)
350      */
351     public void removeFolderListener(FolderListener l) {
352         folder.removeFolderListener(l);
353     }
354 
355     /**
356      * @see javax.mail.Folder#removeMessageChangedListener(MessageChangedListener)
357      */
358     public void removeMessageChangedListener(MessageChangedListener l) {
359         folder.removeMessageChangedListener(l);
360     }
361 
362     /**
363      * @see javax.mail.Folder#removeMessageCountListener(MessageCountListener)
364      */
365     public void removeMessageCountListener(MessageCountListener l) {
366         folder.removeMessageCountListener(l);
367     }
368 
369     /**
370      * @see org.apache.james.mailrepository.javamail.FolderInterface#renameTo(javax.mail.Folder)
371      */
372     public boolean renameTo(Folder f) throws MessagingException {
373         return folder.renameTo(f);
374     }
375 
376     /**
377      * @see javax.mail.Folder#search(SearchTerm, Message[])
378      */
379     public Message[] search(SearchTerm term, Message[] msgs) throws MessagingException {
380         return folder.search(term, msgs);
381     }
382 
383     /**
384      * @see javax.mail.Folder#search(SearchTerm)
385      */
386     public Message[] search(SearchTerm term) throws MessagingException {
387         return folder.search(term);
388     }
389 
390     /**
391      * @see javax.mail.Folder#setFlags(int, int, Flags, boolean)
392      */
393     public void setFlags(int start, int end, Flags flag, boolean value) throws MessagingException {
394         folder.setFlags(start, end, flag, value);
395     }
396 
397     /**
398      * @see javax.mail.Folder#setFlags(int[], Flags, boolean)
399      */
400     public void setFlags(int[] msgnums, Flags flag, boolean value) throws MessagingException {
401         folder.setFlags(msgnums, flag, value);
402     }
403 
404     /**
405      * @see javax.mail.Folder#setFlags(Message[], Flags, boolean)
406      */
407     public void setFlags(Message[] msgs, Flags flag, boolean value) throws MessagingException {
408         folder.setFlags(msgs, flag, value);
409     }
410 
411     /**
412      * @see javax.mail.Folder#setSubscribed(boolean)
413      */
414     public void setSubscribed(boolean subscribe) throws MessagingException {
415         folder.setSubscribed(subscribe);
416     }
417 
418     /**
419      * @see javax.mail.Folder#toString()
420      */
421     public String toString() {
422         return folder.toString();
423     }
424 
425     /**
426      * Wrap Folder in this class 
427      * 
428      * @param folder the folder to wrap
429      * @return new instance of this class wrapped 
430      */
431     protected FolderInterface wrapFolder(Folder folder) {
432         return new FolderAdapter(folder);
433     }
434     
435     /**
436      * @see #wrapFolder(Folder)
437      */
438     protected FolderInterface[] wrapFolders(Folder[] folders) {
439         FolderInterface[] fis=new FolderInterface[folders.length];
440         for (int i = 0; i < folders.length; i++) {
441             fis[i]=wrapFolder(folders[i]);
442             
443         }
444         return fis;
445     }
446 }