@Override public Node visit(ClassOrInterfaceDeclaration _n, Object _arg) { JavadocComment javaDoc = cloneNodes(_n.getJavaDoc(), _arg); List<AnnotationExpr> annotations = visit(_n.getAnnotations(), _arg); List<TypeParameter> typeParameters = visit(_n.getTypeParameters(), _arg); List<ClassOrInterfaceType> extendsList = visit(_n.getExtends(), _arg); List<ClassOrInterfaceType> implementsList = visit(_n.getImplements(), _arg); List<BodyDeclaration> members = visit(_n.getMembers(), _arg); Comment comment = cloneNodes(_n.getComment(), _arg); ClassOrInterfaceDeclaration r = new ClassOrInterfaceDeclaration( _n.getBeginLine(), _n.getBeginColumn(), _n.getEndLine(), _n.getEndColumn(), _n.getModifiers(), annotations, _n.isInterface(), _n.getName(), typeParameters, extendsList, implementsList, members ); r.setComment(comment); return r; }
@Override public void visit(ClassOrInterfaceDeclaration n, List<String> excludedMethods) { n.setAnnotations(null); List<MethodDeclaration> methodToRemove = new ArrayList<MethodDeclaration>(); for (BodyDeclaration bodyDeclaration : n.getMembers()) { if(bodyDeclaration instanceof MethodDeclaration) { MethodDeclaration methodDeclaration = (MethodDeclaration) bodyDeclaration; if (excludedMethods.contains(methodDeclaration.getName())) { methodToRemove.add(methodDeclaration); } } } n.getMembers().removeAll(methodToRemove); // if (n.getAnnotations() != null) annotationExprs.addAll(n.getAnnotations()); n.setName(name); super.visit(n, excludedMethods); }
@Override public Boolean visit(final ClassOrInterfaceDeclaration n1, final Node arg) { final ClassOrInterfaceDeclaration n2 = (ClassOrInterfaceDeclaration) arg; // javadoc are checked at CompilationUnit if (n1.getModifiers() != n2.getModifiers()) { return Boolean.FALSE; } if (n1.isInterface() != n2.isInterface()) { return Boolean.FALSE; } if (!objEquals(n1.getName(), n2.getName())) { return Boolean.FALSE; } if (!nodesEquals(n1.getAnnotations(), n2.getAnnotations())) { return Boolean.FALSE; } if (!nodesEquals(n1.getTypeParameters(), n2.getTypeParameters())) { return Boolean.FALSE; } if (!nodesEquals(n1.getExtends(), n2.getExtends())) { return Boolean.FALSE; } if (!nodesEquals(n1.getImplements(), n2.getImplements())) { return Boolean.FALSE; } if (!nodesEquals(n1.getMembers(), n2.getMembers())) { return Boolean.FALSE; } return Boolean.TRUE; }
@Override public void visit(final ClassOrInterfaceDeclaration n, final A arg) { visitComment(n.getComment(), arg); if (n.getJavaDoc() != null) { n.getJavaDoc().accept(this, arg); if (n.getAnnotations() != null) { for (final AnnotationExpr a : n.getAnnotations()) { a.accept(this, arg); if (n.getTypeParameters() != null) { for (final TypeParameter t : n.getTypeParameters()) { t.accept(this, arg); if (n.getExtends() != null) { for (final ClassOrInterfaceType c : n.getExtends()) { c.accept(this, arg); if (n.getImplements() != null) { for (final ClassOrInterfaceType c : n.getImplements()) { c.accept(this, arg); if (n.getMembers() != null) { for (final BodyDeclaration member : n.getMembers()) { member.accept(this, arg);
@Override public void visit(final ClassOrInterfaceDeclaration n, final String mappedClass) { annotationHelper.visitPre(n, mappedClass); ParserUtil.deconstructMultiDeclarations(ParserUtil.getFieldMembers(n.getMembers())); if (n.getMembers() != null) { for (final BodyDeclaration member : n.getMembers()) { member.accept(this, mappedClass); } } annotationHelper.visitPost(n, mappedClass); }
@Override public void visit(ClassOrInterfaceDeclaration n, Object arg) { if (n.getAnnotations() != null) annotationExprs.addAll(n.getAnnotations()); List<FieldInfo> fieldInfos = new ArrayList<FieldInfo>(); n.setModifiers(n.getModifiers() & ~Modifier.ABSTRACT & ~Modifier.PUBLIC); for (BodyDeclaration bodyDeclaration : n.getMembers()) { if (bodyDeclaration instanceof MethodDeclaration) { MethodDeclaration methodDeclaration = (MethodDeclaration) bodyDeclaration; n.getMembers().add(fieldDeclaration); for (BodyDeclaration bodyDeclaration : n.getMembers()) { if (bodyDeclaration instanceof MethodDeclaration) { MethodDeclaration methodDeclaration = (MethodDeclaration) bodyDeclaration; for (MethodDeclaration methodDeclaration : methodToRemove) n.getMembers().remove(methodDeclaration); if (n.getAnnotations() != null) annotationExprs.addAll(n.getAnnotations()); super.visit(n, arg);
@Override public void visit(ClassOrInterfaceDeclaration n, Object arg) { currentClass = new CGEntry(CGEntry.TYPE.CLASS, currentClass, null, n.getName()); if (mainClass == null) { mainClass = currentClass; mainClass.setMainClass(true); mainClass.setPackage(pack); } if (isDebug()) System.out.println("C:" + currentClass); list.add(currentClass); List<AnnotationExpr> annos = n.getAnnotations(); if (annos != null) { for (AnnotationExpr anno : annos) { if (isDebug()) System.out.println("A:" + anno.getName()); currentClass.addAnnotation(new CGEntry(TYPE.ANNOTATION, currentClass, currentMethod, anno.getName().getName())); } } super.visit(n, arg); if (currentClass != null ) currentClass = currentClass.getClazz(); }
private NodeAndImports<ClassOrInterfaceDeclaration> createPrimaryKeyClass(String parentName, Collection<FieldDescriptor> primaryKeyDescriptors) { final String newName = parentName + "Id"; final Collection<ImportDeclaration> requiredImports = new ArrayList<ImportDeclaration>(); final ClassOrInterfaceDeclaration dclr = new ClassOrInterfaceDeclaration(ModifierSet.PUBLIC | ModifierSet.STATIC | ModifierSet.FINAL, false, newName); dclr.setInterface(false); final List<ClassOrInterfaceType> implmnts = new ArrayList<ClassOrInterfaceType>(); implmnts.add(new ClassOrInterfaceType("Serializable")); implmnts.add(comparableImplmnts); dclr.setImplements(implmnts); requiredImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr("java.io"), "Serializable"), false, false)); final List<BodyDeclaration> members = new ArrayList<BodyDeclaration>(); dclr.setMembers(members);
@Test public void testMakeAbstract() throws Exception { CompilerAssert<File, File> helper = incrementalCompiler("metamodel.controller").formalErrorReporting(); helper.assertCompile(); // JavaFile file = helper.assertJavaSource("metamodel.controller.A"); ClassOrInterfaceDeclaration a = file.assertDeclaration(); a.setModifiers(a.getModifiers() | Modifier.ABSTRACT); file.assertSave(); List<CompilationError> errors = helper.failCompile(); CompilationError error = errors.get(0); assertEquals(ControllerMetaModel.CONTROLLER_IS_ABSTRACT, error.getCode()); assertTrue("Was expecting " + error.getSource() + " to end with A.java", error.getSource().endsWith("A.java")); } }
if (!"Dummy".equals(classDeclaration.getName())) { throw new ParseException(MessageFormat.format( "Expected [{0}] as type declaration.", "Dummy"));
final TypeDeclaration existingNestedDeclaration = findTypeDeclaration(members, nodes.nestedDeclaration.getName()); nodes.nestedDeclaration.setParentNode(parent); LOG.info("adding nested declaration " + nodes.nestedDeclaration.getName() + " to " + getTypeOrFieldNameForMsg(n) + "."); members.add(nodes.nestedDeclaration);
ret = new TypeDeclarationStmt(typeDecl.getBeginLine(), typeDecl.getBeginColumn(), token.endLine, token.endColumn, typeDecl); } else if (jj_2_37(2147483647)) { expr = VariableDeclarationExpression();
ClassOrInterfaceDeclaration tmp = new ClassOrInterfaceDeclaration(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, isInterface, null, typePar, extList, impList, members); tmp.setNameExpr(name);
{if (true) return new ClassOrInterfaceDeclaration(line, column, token.endLine, token.endColumn,popJavadoc(), modifier.modifiers, modifier.annotations, isInterface, name, typePar, extList, impList, members);} throw new Error("Missing return statement in function");
public void visit(ClassOrInterfaceDeclaration n, Object arg) { printJavadoc(n.getJavaDoc(), arg); printMemberAnnotations(n.getAnnotations(), arg); printModifiers(n.getModifiers()); if (n.isInterface()) { printer.print("interface "); } else { printer.print(n.getName()); printTypeParameters(n.getTypeParameters(), arg); if (n.getExtends() != null) { printer.print(" extends "); for (Iterator<ClassOrInterfaceType> i = n.getExtends().iterator(); i.hasNext();) { ClassOrInterfaceType c = i.next(); c.accept(this, arg); if (n.getImplements() != null) { printer.print(" implements "); for (Iterator<ClassOrInterfaceType> i = n.getImplements().iterator(); i.hasNext();) { ClassOrInterfaceType c = i.next(); c.accept(this, arg); if (n.getMembers() != null) { printMembers(n.getMembers(), arg);
@Override public R visit(final ClassOrInterfaceDeclaration n, final A arg) { if (n.getJavaDoc() != null) { R result = n.getJavaDoc().accept(this, arg); if (result != null) { return result; if (n.getAnnotations() != null) { for (final AnnotationExpr a : n.getAnnotations()) { if (n.getTypeParameters() != null) { for (final TypeParameter t : n.getTypeParameters()) { if (n.getExtends() != null) { for (final ClassOrInterfaceType c : n.getExtends()) { if (n.getImplements() != null) { for (final ClassOrInterfaceType c : n.getImplements()) { if (n.getMembers() != null) { for (final BodyDeclaration member : n.getMembers()) {
/** * In Java variables can be defined like the following: * int i, j, k; * * When mapping fields in xml this is not a problem. However when using annotation on a field, * Each field should be defined separately. This helper will deconstruct these fields such * that later AST analysis will not need to account for field defined on a separate line. */ public static void deconstructMultiDeclarations(Collection<FieldDeclaration> fields) { for (FieldDeclaration field : fields) { ClassOrInterfaceDeclaration parent = (ClassOrInterfaceDeclaration) field.getParentNode(); //these are chained together if (field.getVariables().size() > 1) { int index = parent.getMembers().indexOf(field); parent.getMembers().remove(index); List<FieldDeclaration> deconstructed = new ArrayList<FieldDeclaration>(); for (VariableDeclarator v : field.getVariables()) { FieldDeclaration f = new FieldDeclaration(field.getJavaDoc(), field.getModifiers(), field.getAnnotations(), field.getType(), Collections.singletonList(v)); f.setComment(field.getComment()); f.setParentNode(field.getParentNode()); deconstructed.add(f); } parent.getMembers().addAll(index, deconstructed); } } }
@Test public void testMakeAbstract() throws Exception { CompilerAssert<File, File> helper = incrementalCompiler("metamodel.controller").formalErrorReporting(); helper.assertCompile(); // JavaFile file = helper.assertJavaSource("metamodel.controller.A"); ClassOrInterfaceDeclaration a = file.assertDeclaration(); a.setModifiers(a.getModifiers() | Modifier.ABSTRACT); file.assertSave(); List<CompilationError> errors = helper.failCompile(); CompilationError error = errors.get(0); assertEquals(ControllerMetaModel.CONTROLLER_IS_ABSTRACT, error.getCode()); assertTrue("Was expecting " + error.getSource() + " to end with A.java", error.getSource().endsWith("A.java")); } }
@Override public NodeData resolve(Node node, String mappedClass) { if (!(node instanceof ClassOrInterfaceDeclaration)) { throw new IllegalArgumentException("this annotation belongs only on ClassOrInterfaceDeclaration"); } final TypeDeclaration dclr = (TypeDeclaration) node; if (!(dclr.getParentNode() instanceof CompilationUnit)) { //handling nested classes return null; } final String name = dclr.getName(); final Collection<FieldDescriptor> primaryKeyDescriptors = getPrimaryKeyDescriptors(mappedClass); if (primaryKeyDescriptors != null && primaryKeyDescriptors.size() > 1 && nodeContainsPkFields(dclr, primaryKeyDescriptors)) { final NodeAndImports<ClassOrInterfaceDeclaration> primaryKeyClass = createPrimaryKeyClass(name, primaryKeyDescriptors); final String pkClassName = primaryKeyClass.node.getName(); return new NodeData(new SingleMemberAnnotationExpr(new NameExpr(SIMPLE_NAME), new NameExpr(name + "." + pkClassName + ".class")), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false), primaryKeyClass.imprts, primaryKeyClass.node); } return null; }
modifier = Modifiers(); typeDecl = ClassOrInterfaceDeclaration(modifier); ret = new TypeDeclarationStmt(typeDecl.getBeginLine(), typeDecl.getBeginColumn(), token.endLine, token.endColumn, typeDecl); } else if (jj_2_37(2147483647)) { expr = VariableDeclarationExpression();