@Override public void visitClass(ClassNode classNode) { // if a class invariant is available visit all property nodes else skip this class final MethodNode invariantMethodNode = BaseGenerator.getInvariantMethodNode(classNode); if (invariantMethodNode == null || AnnotationUtils.hasAnnotationOfType(classNode, SPRING_STEREOTYPE_PACKAGE)) return; invariantAssertionBlockStatement = new BlockStatement(); invariantAssertionBlockStatement.addStatement(new ExpressionStatement( new MethodCallExpression(VariableExpression.THIS_EXPRESSION, invariantMethodNode.getName(), ArgumentListExpression.EMPTY_ARGUMENTS) )); List<ConstructorNode> declaredConstructors = classNode.getDeclaredConstructors(); if (declaredConstructors == null || declaredConstructors.isEmpty()) { // create default constructor with class invariant check ConstructorNode constructor = new ConstructorNode(Opcodes.ACC_PUBLIC, invariantAssertionBlockStatement); constructor.setSynthetic(true); classNode.addConstructor(constructor); } super.visitClass(classNode); } }
constructor.setSynthetic(true); node.addConstructor(constructor);
constructor.setSynthetic(true); node.addConstructor(constructor);
constructor.setSynthetic(true); node.addConstructor(constructor);