01: /*
02: * Copyright 2007 Google Inc.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License"); you may not
05: * use this file except in compliance with the License. You may obtain a copy of
06: * the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13: * License for the specific language governing permissions and limitations under
14: * the License.
15: */
16: package com.google.gwt.core.ext.typeinfo;
17:
18: import java.util.ArrayList;
19: import java.util.List;
20:
21: /**
22: * Type representing a Java enumerated type.
23: */
24: public class JEnumType extends JRealClassType {
25: private JEnumConstant[] lazyEnumConstants;
26:
27: /**
28: * @param oracle
29: * @param cup
30: * @param declaringPackage
31: * @param enclosingType
32: * @param isLocalType
33: * @param name
34: * @param declStart
35: * @param declEnd
36: * @param bodyStart
37: * @param bodyEnd
38: * @param isInterface
39: */
40: public JEnumType(TypeOracle oracle, CompilationUnitProvider cup,
41: JPackage declaringPackage, JClassType enclosingType,
42: boolean isLocalType, String name, int declStart,
43: int declEnd, int bodyStart, int bodyEnd, boolean isInterface) {
44: super (oracle, cup, declaringPackage, enclosingType,
45: isLocalType, name, declStart, declEnd, bodyStart,
46: bodyEnd, isInterface);
47: }
48:
49: /**
50: * Returns the enumeration constants declared by this enumeration.
51: *
52: * @return enumeration constants declared by this enumeration
53: */
54: public JEnumConstant[] getEnumConstants() {
55: if (lazyEnumConstants == null) {
56: List<JEnumConstant> enumConstants = new ArrayList<JEnumConstant>();
57: for (JField field : getFields()) {
58: if (field.isEnumConstant() != null) {
59: enumConstants.add(field.isEnumConstant());
60: }
61: }
62:
63: lazyEnumConstants = enumConstants
64: .toArray(new JEnumConstant[0]);
65: }
66:
67: return lazyEnumConstants;
68: }
69:
70: @Override
71: public JEnumType isEnum() {
72: return this;
73: }
74: }
|