<Swing Dev> Swing and imageio-related types that are candidates to be FunctionalInterfaces in JDK 8

Phil Race philip.race at oracle.com
Mon Feb 11 22:21:34 UTC 2013


Joe,

Note that Swing is a single threaded API. You can't update the UI from
any thread other than the EDT.
Where any automatic usage of processing in parallel from additional threads
is performed by the lambda implementation it will violate that requirement.
So you should be circumspect in tagging Swing classes.

-phil.

On 2/5/2013 2:41 PM, Joe Darcy wrote:
> Hello,
>
> As part of Project Lambda, a FunctionalInterface annotation type was 
> added to the platform to mark interfaces that are intended to be used 
> in lambda expressions.  I've sent out a code review request to add 
> this annotation to types in the core-libs area [1].
>
> To assist the swing team in adding analogous annotations to your 
> types, the list of candidate types in for swing and imageio-related 
> classes in java.* and javax.* is given below.  I recommend sub-tasks 
> of JDK-8005297 "Add FunctionalInterface support to the platform" be 
> used to track the work of adding @FunctionalInterface annotations to 
> swing types.
>
> Thanks,
>
> -Joe
>
> [1] 
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-February/014292.html
>
> jdk/src/share/classes/javax/print/FlavorException.java:39: Note: 
> Candidate functional interface
> public interface FlavorException {
>        ^
> jdk/src/share/classes/javax/print/event/PrintServiceAttributeListener.java:37: 
> Note: Candidate functional interface
> public interface PrintServiceAttributeListener {
>        ^
> jdk/src/share/classes/javax/print/event/PrintJobAttributeListener.java:34: 
> Note: Candidate functional interface
> public interface PrintJobAttributeListener {
>        ^
> jdk/src/share/classes/javax/swing/TransferHandler.java:128: Note: 
> Candidate functional interface
>     interface HasGetTransferHandler {
>     ^
> jdk/src/share/classes/javax/swing/tree/TreeCellRenderer.java:42: Note: 
> Candidate functional interface
> public interface TreeCellRenderer {
>        ^
> jdk/src/share/classes/javax/swing/tree/RowMapper.java:36: Note: 
> Candidate functional interface
> public interface RowMapper
>        ^
> jdk/src/share/classes/javax/swing/table/TableCellRenderer.java:38: 
> Note: Candidate functional interface
> public interface TableCellRenderer {
>        ^
> jdk/src/share/classes/javax/swing/event/ChangeListener.java:36: Note: 
> Candidate functional interface
> public interface ChangeListener extends EventListener {
>        ^
> jdk/src/share/classes/javax/swing/event/HyperlinkListener.java:35: 
> Note: Candidate functional interface
> public interface HyperlinkListener extends EventListener {
>        ^
> jdk/src/share/classes/javax/swing/event/RowSorterListener.java:34: 
> Note: Candidate functional interface
> public interface RowSorterListener extends java.util.EventListener {
>        ^
> jdk/src/share/classes/javax/swing/event/CaretListener.java:36: Note: 
> Candidate functional interface
> public interface CaretListener extends EventListener {
>        ^
> jdk/src/share/classes/javax/swing/event/ListSelectionListener.java:41: 
> Note: Candidate functional interface
> public interface ListSelectionListener extends EventListener
>        ^
> jdk/src/share/classes/javax/swing/event/UndoableEditListener.java:37: 
> Note: Candidate functional interface
> public interface UndoableEditListener extends java.util.EventListener {
>        ^
> jdk/src/share/classes/javax/swing/event/TableModelListener.java:38: 
> Note: Candidate functional interface
> public interface TableModelListener extends java.util.EventListener
>        ^
> jdk/src/share/classes/javax/swing/event/TreeSelectionListener.java:43: 
> Note: Candidate functional interface
> public interface TreeSelectionListener extends EventListener
>        ^
> jdk/src/share/classes/javax/swing/ListCellRenderer.java:89: Note: 
> Candidate functional interface
> public interface ListCellRenderer<E>
>        ^
> jdk/src/share/classes/javax/swing/text/html/CSSBorder.java:257: Note: 
> Candidate functional interface
>     interface BorderPainter {
>     ^
> jdk/src/share/classes/javax/swing/text/html/Map.java:234: Note: 
> Candidate functional interface
>     interface RegionContainment {
>     ^
> jdk/src/share/classes/javax/swing/text/TabExpander.java:34: Note: 
> Candidate functional interface
> public interface TabExpander {
>        ^
> jdk/src/share/classes/javax/swing/text/ViewFactory.java:36: Note: 
> Candidate functional interface
> public interface ViewFactory {
>        ^
> jdk/src/share/classes/javax/swing/text/Position.java:49: Note: 
> Candidate functional interface
> public interface Position {
>        ^
> jdk/src/share/classes/javax/swing/text/Highlighter.java:112: Note: 
> Candidate functional interface
>     public interface HighlightPainter {
>            ^
> jdk/src/share/classes/javax/swing/Painter.java:63: Note: Candidate 
> functional interface
> public interface Painter<T> {
>        ^
> jdk/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java:52: 
> Note: Candidate functional interface
>     public static interface BeforeDrag {
>                   ^
> jdk/src/share/classes/javax/swing/UIDefaults.java:951: Note: Candidate 
> functional interface
>     public interface LazyValue {
>            ^
> jdk/src/share/classes/javax/swing/UIDefaults.java:984: Note: Candidate 
> functional interface
>     public interface ActiveValue {
>            ^
> jdk/src/share/classes/javax/swing/JComboBox.java:1484: Note: Candidate 
> functional interface
>     public interface KeySelectionManager {
>            ^
> jdk/src/share/classes/javax/imageio/IIOParamController.java:99: Note: 
> Candidate functional interface
> public interface IIOParamController {
>        ^
> jdk/src/share/classes/javax/imageio/event/IIOWriteWarningListener.java:46: 
> Note: Candidate functional interface
> public interface IIOWriteWarningListener extends EventListener {
>        ^
> jdk/src/share/classes/javax/imageio/event/IIOReadWarningListener.java:46: 
> Note: Candidate functional interface
> public interface IIOReadWarningListener extends EventListener {
>        ^
> jdk/src/share/classes/javax/imageio/metadata/IIOMetadataController.java:67: 
> Note: Candidate functional interface
> public interface IIOMetadataController {
>        ^
> jdk/src/share/classes/javax/imageio/spi/ServiceRegistry.java:464: 
> Note: Candidate functional interface
>     public interface Filter {




More information about the swing-dev mailing list