01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: * $Header:$
18: */
19: package org.apache.beehive.netui.compiler.grammar;
20:
21: import org.apache.beehive.netui.compiler.typesystem.env.CoreAnnotationProcessorEnv;
22: import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationInstance;
23: import org.apache.beehive.netui.compiler.typesystem.declaration.MemberDeclaration;
24: import org.apache.beehive.netui.compiler.typesystem.declaration.MethodDeclaration;
25: import org.apache.beehive.netui.compiler.typesystem.type.TypeInstance;
26: import org.apache.beehive.netui.compiler.typesystem.type.PrimitiveType;
27: import org.apache.beehive.netui.compiler.Diagnostics;
28: import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
29: import org.apache.beehive.netui.compiler.FatalCompileTimeException;
30:
31: public class ValidateRequiredGrammar extends BaseValidationRuleGrammar {
32: public ValidateRequiredGrammar(CoreAnnotationProcessorEnv env,
33: Diagnostics diags, RuntimeVersionChecker rvc) {
34: super (env, diags, rvc);
35: }
36:
37: protected boolean onBeginCheck(AnnotationInstance annotation,
38: AnnotationInstance[] parentAnnotations,
39: MemberDeclaration classMember)
40: throws FatalCompileTimeException {
41: //
42: // Add a warning when this annotation is on a getter method which returns a primitive type.
43: // In that case, it will never be null.
44: //
45: if (classMember instanceof MethodDeclaration) {
46: TypeInstance returnType = ((MethodDeclaration) classMember)
47: .getReturnType();
48:
49: if (returnType instanceof PrimitiveType) {
50: addWarning(annotation,
51: "warning.validate-required-on-primitive-type",
52: ANNOTATION_INTERFACE_PREFIX
53: + VALIDATE_REQUIRED_TAG_NAME);
54: }
55: }
56:
57: return super.onBeginCheck(annotation, parentAnnotations,
58: classMember);
59: }
60: }
|