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.AnnotationMemberType;
22: import org.apache.beehive.netui.compiler.AnnotationGrammar;
23: import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationValue;
24: import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationInstance;
25: import org.apache.beehive.netui.compiler.typesystem.declaration.MemberDeclaration;
26: import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationTypeElementDeclaration;
27:
28: public class MessageKeyType extends AnnotationMemberType {
29: public MessageKeyType(String requiredRuntimeVersion,
30: AnnotationGrammar parentGrammar) {
31: super (requiredRuntimeVersion, parentGrammar);
32: }
33:
34: public Object onCheck(AnnotationTypeElementDeclaration valueDecl,
35: AnnotationValue member,
36: AnnotationInstance[] parentAnnotations,
37: MemberDeclaration classMember, int annotationArrayIndex) {
38: if (((String) member.getValue()).length() == 0) {
39: addError(member, "error.empty-string-not-allowed");
40: }
41: // We're not currently supporting generation of validation messages.
42: /*
43: //
44: // If there is a list of (generated) validation messages, and if the current message key isn't in it,
45: // output a warning.
46: //
47: TypeDeclaration outerType = CompilerUtils.getOutermostClass( classMember );
48: Collection validationMessages =
49: CompilerUtils.getAnnotationArrayValue( outerType, CONTROLLER_TAG_NAME, VALIDATION_MESSAGES_ATTR, true );
50:
51: if ( validationMessages != null )
52: {
53: String value = ( String ) member.getValue();
54:
55: for ( java.util.Iterator ii = validationMessages.iterator(); ii.hasNext(); )
56: {
57: AnnotationInstance validationMessage = ( AnnotationInstance ) ii.next();
58: String msgKey = CompilerUtils.getString( validationMessage, KEY_ATTR, true );
59: assert msgKey != null;
60: if ( value.equals( msgKey ) ) return null; // ok, we found it.
61: }
62:
63: addWarning( member, "warning.missing-validation-message", VALIDATION_MESSAGE_TAG_NAME, value );
64: }
65: */
66:
67: return null;
68: }
69: }
|