Details
-
JEP
-
Resolution: Delivered
-
P3
-
Sergey Malenkov
-
Feature
-
Open
-
JDK
-
-
L
-
L
-
Completed
-
256
Description
Summary
Replace @beaninfo
Javadoc tags with proper annotations, and process
those annotations at run time to generate BeanInfo
classes dynamically.
Motivation
Simplify the creation of custom BeanInfo
classes and enable the
modularization of the client library.
Description
Most BeanInfo
classes are automatically generated at runtime, but many
Swing classes still generate BeanInfo
classes from @beaninfo
Javadoc
tags at compile time. We propose to replace the @beaninfo
tags with
the following annotations, and extend the existing introspection
algorithm to interpret them:
package java.beans;
public @interface JavaBean {
String description() default "";
String defaultProperty() default "";
String defaultEventSet() default "";
}
package java.beans;
public @interface BeanProperty {
boolean bound() default true;
boolean expert() default false;
boolean hidden() default false;
boolean preferred() default false;
boolean visualUpdate() default false;
String description() default "";
String[] enumerationValues() default {};
}
package javax.swing;
public @interface SwingContainer {
boolean value() default true;
String delegate() default "";
}
For further detail, see the Javadoc for JavaBean, BeanProperty, and SwingContainer.
These annotations will set the corresponding feature attributes during
BeanInfo
generation at run time. It will be easier for developers to
specify these attributes directly in Bean classes rather than create a
separate BeanInfo
class for every Bean class. It will also allow the
removal of the automatically-generated classes, which will make it easier
to modularize the client library.
Testing
We'll need to verify that the new introspection algorithm behaves as expected. We'll also need to verify that the new introspection algorithm doesn't break backward compatibility, or else ensure that cases in which compatibility is broken are rare.
Risks and Assumptions
The new introspection algorithm may behave somewhat differently, but we do not expect any serious backward incompatibilities.
We do not expect any performance degradation. The refactoring of the introspection algorithm might improve performance.
Attachments
Issue Links
- blocks
-
JDK-8131754 AquaTreeUI.getCollapsedIcon() issue reported in java beans tests with a modular build
- Resolved
- relates to
-
JDK-4763438 Replace uses of @beaninfo with meta facility in core j2se
- Resolved
-
JDK-7179078 Remove @beaninfo processing from the makefiles
- Resolved
-
JDK-4058433 RFE: tool for creating BeanInfo template
- Resolved
1.
|
Create some tests according to SQE Test Plan for BeanInfo Annotations | Resolved | Alexander Stepanov | 2016-05-19 |