01: /*
02: * FindBugs - Find Bugs in Java programs
03: * Copyright (C) 2005, University of Maryland
04: *
05: * This library is free software; you can redistribute it and/or
06: * modify it under the terms of the GNU Lesser General Public
07: * License as published by the Free Software Foundation; either
08: * version 2.1 of the License, or (at your option) any later version.
09: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library; if not, write to the Free Software
17: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18: */
19:
20: package edu.umd.cs.findbugs.ba;
21:
22: import edu.umd.cs.findbugs.annotations.CheckForNull;
23:
24: /**
25: * @author pugh
26: */
27: public class NullnessAnnotation extends
28: AnnotationEnumeration<NullnessAnnotation> {
29: public final static NullnessAnnotation CHECK_FOR_NULL = new NullnessAnnotation(
30: "CheckForNull", 3);
31:
32: public final static NullnessAnnotation NONNULL = new NullnessAnnotation(
33: "NonNull", 1);
34:
35: public final static NullnessAnnotation NULLABLE = new NullnessAnnotation(
36: "Nullable", 2);
37:
38: public final static NullnessAnnotation UNKNOWN_NULLNESS = new NullnessAnnotation(
39: "UnknownNullness", 0);
40:
41: private final static NullnessAnnotation[] myValues = {
42: UNKNOWN_NULLNESS, NONNULL, NULLABLE, CHECK_FOR_NULL };
43:
44: public static class Parser {
45: @CheckForNull
46: public static NullnessAnnotation parse(String s) {
47: if (s.equals("com.google.common.base.Nullable"))
48: return CHECK_FOR_NULL;
49: for (NullnessAnnotation v : myValues)
50: if (s.endsWith(v.name))
51: return v;
52: if (s.endsWith("PossiblyNull"))
53: return CHECK_FOR_NULL;
54: return null;
55: }
56: }
57:
58: public static NullnessAnnotation[] values() {
59: return myValues.clone();
60: }
61:
62: private NullnessAnnotation(String s, int i) {
63: super(s, i);
64:
65: }
66:
67: }
|