This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
It seems to be impossible to create a new interface, enum or annotation type via TreeMaker api. I found only a factory to create ClassTree, TreeMaker.Class(). The only way how to work around this seems to be using TreeMaker.Modifiers(long flags, List<? extends AnnotationTree> annotations) factory. BUT the flags content is an implementation detail, not an api AFAIK.
Checking in src/org/netbeans/api/java/source/TreeMaker.java; /cvs/java/source/src/org/netbeans/api/java/source/TreeMaker.java,v <-- TreeMaker.java new revision: 1.11; previous revision: 1.10 done Checking in src/org/netbeans/modules/java/source/builder/TreeFactory.java; /cvs/java/source/src/org/netbeans/modules/java/source/builder/TreeFactory.java,v <-- TreeFactory.java new revision: 1.10; previous revision: 1.9 done Checking in src/org/netbeans/modules/java/source/engine/TreeMakerInt.java; /cvs/java/source/src/org/netbeans/modules/java/source/engine/TreeMakerInt.java,v <-- TreeMakerInt.java new revision: 1.5; previous revision: 1.4 done Checking in src/org/netbeans/modules/java/source/pretty/VeryPretty.java; /cvs/java/source/src/org/netbeans/modules/java/source/pretty/VeryPretty.java,v <-- VeryPretty.java new revision: 1.10; previous revision: 1.9 done Checking in test/unit/src/org/netbeans/api/java/source/gen/ClassMemberTest.java; /cvs/java/source/test/unit/src/org/netbeans/api/java/source/gen/ClassMemberTest.java,v <-- ClassMemberTest.java new revision: 1.12; previous revision: 1.11 done
Thanks! I would only propose to restrict signatures of new factories to not accept illegal arguments. TreeMaker.Enum should not allow to pass 'extendsClause' since enum cannot extend anything and 'typeParameters'. public ClassTree Enum(ModifiersTree modifiers, CharSequence simpleName, // remove List<? extends TypeParameterTree> typeParameters, // remove Tree extendsClause, List<? extends ExpressionTree> implementsClauses, List<? extends Tree> memberDecls) { TreeMaker.Interface should not allow to pass 'implementsClauses' but 'extendsClauses' as a list. public ClassTree Interface(ModifiersTree modifiers, CharSequence simpleName, List<? extends TypeParameterTree> typeParameters, // remove Tree extendsClause, List<? extends ExpressionTree> extendsClauses, // rename List<? extends Tree> memberDecls) { TreeMaker.AnnotationType should not allow to pass 'typeParameters', 'extendsClause' and 'implementsClauses'. public ClassTree AnnotationType(ModifiersTree modifiers, CharSequence simpleName, // remove List<? extends TypeParameterTree> typeParameters, // remove Tree extendsClause, // remove List<? extends ExpressionTree> implementsClauses, List<? extends Tree> memberDecls) {
fixed signatures introduced in: /cvs/java/source/src/org/netbeans/modules/java/source/engine/TreeMakerInt.java,v <-- TreeMakerInt.java new revision: 1.6; previous revision: 1.5 done Checking in src/org/netbeans/modules/java/source/builder/TreeFactory.java; /cvs/java/source/src/org/netbeans/modules/java/source/builder/TreeFactory.java,v <-- TreeFactory.java new revision: 1.11; previous revision: 1.10 done Checking in test/unit/src/org/netbeans/api/java/source/gen/ClassMemberTest.java; /cvs/java/source/test/unit/src/org/netbeans/api/java/source/gen/ClassMemberTest.java,v <-- ClassMemberTest.java new revision: 1.15; previous revision: 1.14 done Checking in src/org/netbeans/api/java/source/TreeMaker.java; /cvs/java/source/src/org/netbeans/api/java/source/TreeMaker.java,v <-- TreeMaker.java new revision: 1.12; previous revision: 1.11