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   *   https://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  package org.apache.bcel.util;
20  
21  import java.util.HashMap;
22  import java.util.Map;
23  
24  import org.apache.bcel.classfile.JavaClass;
25  import org.apache.commons.lang3.ArrayUtils;
26  
27  /**
28   * Utility class implementing a (type-safe) set of JavaClass objects. Since JavaClass has no equals() method, the name of the class is used for comparison.
29   *
30   * @see ClassStack
31   */
32  public class ClassSet {
33  
34      private final Map<String, JavaClass> map = new HashMap<>();
35  
36      public boolean add(final JavaClass clazz) {
37          return map.putIfAbsent(clazz.getClassName(), clazz) != null;
38      }
39  
40      public boolean empty() {
41          return map.isEmpty();
42      }
43  
44      public String[] getClassNames() {
45          return map.keySet().toArray(ArrayUtils.EMPTY_STRING_ARRAY);
46      }
47  
48      public void remove(final JavaClass clazz) {
49          map.remove(clazz.getClassName());
50      }
51  
52      public JavaClass[] toArray() {
53          return map.values().toArray(JavaClass.EMPTY_ARRAY);
54      }
55  }