1 18 package org.apache.beehive.netui.compiler.grammar; 19 20 import org.apache.beehive.netui.compiler.AnnotationGrammar; 21 import org.apache.beehive.netui.compiler.Diagnostics; 22 import org.apache.beehive.netui.compiler.RuntimeVersionChecker; 23 import org.apache.beehive.netui.compiler.CompilerUtils; 24 import org.apache.beehive.netui.compiler.FatalCompileTimeException; 25 import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment; 26 import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationInstance; 27 import org.apache.beehive.netui.compiler.typesystem.declaration.MemberDeclaration; 28 import org.apache.beehive.netui.compiler.typesystem.declaration.TypeDeclaration; 29 30 public class SharedFlowRefGrammar 31 extends AnnotationGrammar 32 { 33 private static final String [][] REQUIRED_ATTRS = { { NAME_ATTR }, { TYPE_ATTR } }; 34 35 public SharedFlowRefGrammar( AnnotationProcessorEnvironment env, Diagnostics diags, RuntimeVersionChecker rvc ) 36 { 37 super( env, diags, null, rvc ); 38 39 addMemberType( TYPE_ATTR, new TypeNameType( SHARED_FLOW_BASE_CLASS, false, null, this ) ); 41 } 42 43 protected boolean onBeginCheck( AnnotationInstance annotation, AnnotationInstance[] parentAnnotations, 44 MemberDeclaration classMember ) 45 throws FatalCompileTimeException 46 { 47 assert classMember instanceof TypeDeclaration : classMember.getClass().getName(); 49 if ( ! CompilerUtils.isAssignableFrom( JPF_BASE_CLASS, ( TypeDeclaration ) classMember, getEnv() ) ) 50 { 51 addError( annotation, "error.annotation-invalid-base-class", SHARED_FLOW_REF_TAG_NAME, JPF_BASE_CLASS ); 52 return false; 53 } 54 55 return super.onBeginCheck( annotation, parentAnnotations, classMember ); 56 } 57 58 public String [][] getRequiredAttrs() 59 { 60 return REQUIRED_ATTRS; 61 } 62 } 63 | Popular Tags |