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.mime4j.field.address;
21  
22  import java.io.Serializable;
23  import java.util.AbstractList;
24  import java.util.ArrayList;
25  import java.util.Collections;
26  import java.util.List;
27  
28  /**
29   * An immutable, random-access list of Mailbox objects.
30   */
31  public class MailboxList extends AbstractList<Mailbox> implements Serializable {
32  
33      private static final long serialVersionUID = 1L;
34  
35      private final List<Mailbox> mailboxes;
36  
37      /**
38       * @param mailboxes
39       *            A List that contains only Mailbox objects.
40       * @param dontCopy
41       *            true iff it is not possible for the mailboxes list to be
42       *            modified by someone else.
43       */
44      public MailboxList(List<Mailbox> mailboxes, boolean dontCopy) {
45          if (mailboxes != null)
46              this.mailboxes = dontCopy ? mailboxes : new ArrayList<Mailbox>(
47                      mailboxes);
48          else
49              this.mailboxes = Collections.emptyList();
50      }
51  
52      /**
53       * The number of elements in this list.
54       */
55      @Override
56      public int size() {
57          return mailboxes.size();
58      }
59  
60      /**
61       * Gets an address.
62       */
63      @Override
64      public Mailbox get(int index) {
65          return mailboxes.get(index);
66      }
67  
68      /**
69       * Dumps a representation of this mailbox list to stdout, for debugging
70       * purposes.
71       */
72      public void print() {
73          for (int i = 0; i < size(); i++) {
74              Mailbox mailbox = get(i);
75              System.out.println(mailbox.toString());
76          }
77      }
78  
79  }