View Javadoc

1   package org.codehaus.mojo.apt;
2   
3   /*
4    * The MIT License
5    *
6    * Copyright 2006-2008 The Codehaus.
7    *
8    * Permission is hereby granted, free of charge, to any person obtaining a copy of
9    * this software and associated documentation files (the "Software"), to deal in
10   * the Software without restriction, including without limitation the rights to
11   * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
12   * of the Software, and to permit persons to whom the Software is furnished to do
13   * so, subject to the following conditions:
14   *
15   * The above copyright notice and this permission notice shall be included in all
16   * copies or substantial portions of the Software.
17   *
18   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24   * SOFTWARE.
25   */
26  
27  import java.util.ArrayList;
28  import java.util.Collection;
29  import java.util.Collections;
30  import java.util.HashSet;
31  import java.util.List;
32  import java.util.Set;
33  
34  /**
35   * Provides utilities for working with collections.
36   * 
37   * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
38   * @version $Id: CollectionUtils.java 7031 2008-05-22 09:41:31Z mark $
39   */
40  public final class CollectionUtils
41  {
42      // constructors -----------------------------------------------------------
43  
44      private CollectionUtils()
45      {
46          throw new AssertionError();
47      }
48  
49      // public methods ---------------------------------------------------------
50  
51      public static <T> Set<T> defaultSet( Set<T> set )
52      {
53          return defaultSet( set, Collections.<T>emptySet() );
54      }
55  
56      public static <T> Set<T> defaultSet( Set<T> set, Set<T> defaultSet )
57      {
58          return isEmpty( set ) ? defaultSet : set;
59      }
60  
61      public static boolean isEmpty( Collection<?> collection )
62      {
63          return ( collection == null ) || collection.isEmpty();
64      }
65  
66      public static <E> Set<E> genericSet( Set<?> set, Class<E> elementType )
67      {
68          return genericCollection( set, elementType, new HashSet<E>() );
69      }
70  
71      public static <E> List<E> genericList( List<?> list, Class<E> elementType )
72      {
73          return genericCollection( list, elementType, new ArrayList<E>() );
74      }
75  
76      // private methods --------------------------------------------------------
77  
78      private static <T extends Collection<E>, E> T genericCollection( Collection<?> collection, Class<E> elementType,
79                                                                       T genericCollection )
80      {
81          for ( Object element : collection )
82          {
83              genericCollection.add( elementType.cast( element ) );
84          }
85  
86          return genericCollection;
87      }
88  }