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.

Bug 96070 - [api] Missing TreeMaker.[Interface|Enum|AnnotationType]
Summary: [api] Missing TreeMaker.[Interface|Enum|AnnotationType]
Status: RESOLVED FIXED
Alias: None
Product: java
Classification: Unclassified
Component: Source (show other bugs)
Version: 6.x
Hardware: All All
: P1 blocker (vote)
Assignee: Pavel Flaska
URL:
Keywords: API
Depends on:
Blocks:
 
Reported: 2007-02-20 18:01 UTC by Jan Pokorsky
Modified: 2007-02-28 16:34 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Pokorsky 2007-02-20 18:01:30 UTC
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.
Comment 1 Pavel Flaska 2007-02-21 14:24:36 UTC
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
Comment 2 Jan Pokorsky 2007-02-27 10:55:51 UTC
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) {
Comment 3 Jan Pokorsky 2007-02-28 16:34:56 UTC
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