Package org.codehaus.groovy.classgen
Class Verifier
- java.lang.Object
- 
- org.codehaus.groovy.classgen.Verifier
 
- 
- All Implemented Interfaces:
- GroovyClassVisitor,- org.objectweb.asm.Opcodes
 
 public class Verifier extends java.lang.Object implements GroovyClassVisitor, org.objectweb.asm.Opcodes Verifies the AST node and adds any default AST code before bytecode generation occurs.Checks include: - Methods with duplicate signatures
- Duplicate interfaces
- Reassigned final variables/parameters
- Uninitialized variables
- Bad code in object initializers or constructors
- Mismatches in modifiers or return types between implementations and interfaces/abstract classes
 - Methods needed to implement GroovyObject
- Property accessor methods
- Covariant methods
- Additional methods/constructors as needed for default parameters
 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static interfaceVerifier.DefaultArgsAction
 - 
Field SummaryFields Modifier and Type Field Description static java.lang.String__TIMESTAMPstatic java.lang.String__TIMESTAMP__static java.lang.StringDEFAULT_PARAMETER_GENERATEDstatic java.lang.StringINITIAL_EXPRESSIONstatic java.lang.StringSTATIC_METACLASS_BOOLstatic java.lang.StringSWAP_INIT- 
Fields inherited from interface org.objectweb.asm.OpcodesAALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V9
 
- 
 - 
Constructor SummaryConstructors Constructor Description Verifier()
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidaddClosureCode(InnerClassNode node)protected voidaddConstructor(Parameter[] newParams, ConstructorNode ctor, Statement code, ClassNode type)protected voidaddCovariantMethods(ClassNode classNode)protected voidaddDefaultConstructor(ClassNode node)protected voidaddDefaultParameterConstructors(ClassNode node)Creates a new constructor for each combination of default parameter expressions.protected voidaddDefaultParameterMethods(ClassNode node)Creates a new method for each combination of default parameter expressions.protected voidaddDefaultParameters(java.lang.Iterable<? extends MethodNode> methods, Verifier.DefaultArgsAction action)Creates a new helper method for each combination of default parameter expressions.protected voidaddDefaultParameters(Verifier.DefaultArgsAction action, MethodNode method)protected voidaddFieldInitialization(java.util.List list, java.util.List staticList, FieldNode fieldNode, boolean isEnumClassNode, java.util.List initStmtsAfterEnumValuesInit, java.util.Set explicitStaticPropsInEnum)protected voidaddGroovyObjectInterfaceAndMethods(ClassNode node, java.lang.String classInternalName)protected voidaddInitialization(ClassNode node)protected voidaddInitialization(ClassNode node, ConstructorNode constructorNode)protected MethodNodeaddMethod(ClassNode node, boolean shouldBeSynthetic, java.lang.String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)Helper method to add a new method to a ClassNode.protected voidaddMethod$$bridge(ClassNode node, boolean shouldBeSynthetic, java.lang.String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)protected voidaddPropertyMethod(MethodNode method)protected voidaddReturnIfNeeded(MethodNode node)protected voidaddTimeStamp(ClassNode node)Deprecated.static java.lang.Stringcapitalize(java.lang.String name)Capitalizes the start of the given bean property name.protected StatementcreateGetterBlock(PropertyNode propertyNode, FieldNode field)protected StatementcreateSetterBlock(PropertyNode propertyNode, FieldNode field)ClassNodegetClassNode()protected FinalVariableAnalyzer.VariableNotFinalCallbackgetFinalVariablesCallback()MethodNodegetMethodNode()static longgetTimestamp(java.lang.Class clazz)static java.lang.LonggetTimestampFromFieldName(java.lang.String fieldName)protected voidsetClassNode(ClassNode classNode)static ConstantExpressiontransformToPrimitiveConstantIfPossible(ConstantExpression constantExpression)When constant expressions are created, the value is always wrapped to a non primitive type.voidvisitClass(ClassNode node)Visit a ClassNode.voidvisitConstructor(ConstructorNode node)Visit a ConstructorNode.voidvisitField(FieldNode node)Visit a FieldNode.voidvisitGenericType(GenericsType genericsType)voidvisitMethod(MethodNode node)Visit a MethodNode.voidvisitProperty(PropertyNode node)Visit a PropertyNode.
 
- 
- 
- 
Field Detail- 
STATIC_METACLASS_BOOLpublic static final java.lang.String STATIC_METACLASS_BOOL - See Also:
- Constant Field Values
 
 - 
SWAP_INITpublic static final java.lang.String SWAP_INIT - See Also:
- Constant Field Values
 
 - 
INITIAL_EXPRESSIONpublic static final java.lang.String INITIAL_EXPRESSION - See Also:
- Constant Field Values
 
 - 
DEFAULT_PARAMETER_GENERATEDpublic static final java.lang.String DEFAULT_PARAMETER_GENERATED - See Also:
- Constant Field Values
 
 - 
__TIMESTAMPpublic static final java.lang.String __TIMESTAMP - See Also:
- Constant Field Values
 
 - 
__TIMESTAMP__public static final java.lang.String __TIMESTAMP__ - See Also:
- Constant Field Values
 
 
- 
 - 
Method Detail- 
getClassNodepublic ClassNode getClassNode() 
 - 
setClassNodeprotected void setClassNode(ClassNode classNode) 
 - 
getMethodNodepublic MethodNode getMethodNode() 
 - 
visitClasspublic void visitClass(ClassNode node) Description copied from interface:GroovyClassVisitorVisit a ClassNode.- Specified by:
- visitClassin interface- GroovyClassVisitor
 
 - 
getFinalVariablesCallbackprotected FinalVariableAnalyzer.VariableNotFinalCallback getFinalVariablesCallback() 
 - 
addDefaultConstructorprotected void addDefaultConstructor(ClassNode node) 
 - 
addGroovyObjectInterfaceAndMethodsprotected void addGroovyObjectInterfaceAndMethods(ClassNode node, java.lang.String classInternalName) 
 - 
addMethodprotected MethodNode addMethod(ClassNode node, boolean shouldBeSynthetic, java.lang.String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) Helper method to add a new method to a ClassNode. Depending on the shouldBeSynthetic flag the call will either be made to ClassNode.addSyntheticMethod() or ClassNode.addMethod(). If a non-synthetic method is to be added the ACC_SYNTHETIC modifier is removed if it has been accidentally supplied.
 - 
addMethod$$bridgeprotected void addMethod$$bridge(ClassNode node, boolean shouldBeSynthetic, java.lang.String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) 
 - 
addTimeStamp@Deprecated protected void addTimeStamp(ClassNode node) Deprecated.
 - 
visitConstructorpublic void visitConstructor(ConstructorNode node) Description copied from interface:GroovyClassVisitorVisit a ConstructorNode.- Specified by:
- visitConstructorin interface- GroovyClassVisitor
 
 - 
visitMethodpublic void visitMethod(MethodNode node) Description copied from interface:GroovyClassVisitorVisit a MethodNode.- Specified by:
- visitMethodin interface- GroovyClassVisitor
 
 - 
addReturnIfNeededprotected void addReturnIfNeeded(MethodNode node) 
 - 
visitFieldpublic void visitField(FieldNode node) Description copied from interface:GroovyClassVisitorVisit a FieldNode.- Specified by:
- visitFieldin interface- GroovyClassVisitor
 
 - 
visitPropertypublic void visitProperty(PropertyNode node) Description copied from interface:GroovyClassVisitorVisit a PropertyNode.- Specified by:
- visitPropertyin interface- GroovyClassVisitor
 
 - 
addPropertyMethodprotected void addPropertyMethod(MethodNode method) 
 - 
addDefaultParameterMethodsprotected void addDefaultParameterMethods(ClassNode node) Creates a new method for each combination of default parameter expressions.
 - 
addDefaultParameterConstructorsprotected void addDefaultParameterConstructors(ClassNode node) Creates a new constructor for each combination of default parameter expressions.
 - 
addConstructorprotected void addConstructor(Parameter[] newParams, ConstructorNode ctor, Statement code, ClassNode type) 
 - 
addDefaultParametersprotected void addDefaultParameters(java.lang.Iterable<? extends MethodNode> methods, Verifier.DefaultArgsAction action) Creates a new helper method for each combination of default parameter expressions.
 - 
addDefaultParametersprotected void addDefaultParameters(Verifier.DefaultArgsAction action, MethodNode method) 
 - 
addClosureCodeprotected void addClosureCode(InnerClassNode node) 
 - 
addInitializationprotected void addInitialization(ClassNode node) 
 - 
addInitializationprotected void addInitialization(ClassNode node, ConstructorNode constructorNode) 
 - 
addFieldInitializationprotected void addFieldInitialization(java.util.List list, java.util.List staticList, FieldNode fieldNode, boolean isEnumClassNode, java.util.List initStmtsAfterEnumValuesInit, java.util.Set explicitStaticPropsInEnum)
 - 
capitalizepublic static java.lang.String capitalize(java.lang.String name) Capitalizes the start of the given bean property name.
 - 
createGetterBlockprotected Statement createGetterBlock(PropertyNode propertyNode, FieldNode field) 
 - 
createSetterBlockprotected Statement createSetterBlock(PropertyNode propertyNode, FieldNode field) 
 - 
visitGenericTypepublic void visitGenericType(GenericsType genericsType) 
 - 
getTimestampFromFieldNamepublic static java.lang.Long getTimestampFromFieldName(java.lang.String fieldName) 
 - 
getTimestamppublic static long getTimestamp(java.lang.Class clazz) 
 - 
addCovariantMethodsprotected void addCovariantMethods(ClassNode classNode) 
 - 
transformToPrimitiveConstantIfPossiblepublic static ConstantExpression transformToPrimitiveConstantIfPossible(ConstantExpression constantExpression) When constant expressions are created, the value is always wrapped to a non primitive type. Some constant expressions are optimized to return primitive types, but not all primitives are handled. This method guarantees to return a similar constant expression but with a primitive type instead of a boxed type. Additionally, single char strings are converted to 'char' types.- Parameters:
- constantExpression- a constant expression
- Returns:
- the same instance of constant expression if the type is already primitive, or a primitive constant if possible.
 
 
- 
 
-