You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/02/08 04:55:42 UTC

[groovy] branch master updated (f98efe0 -> 724cc0d)

This is an automated email from the ASF dual-hosted git repository.

paulk pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git.


    from f98efe0  remove Xlint warnings
     new b5dc8f2  remove deprecated classes
     new 724cc0d  remove Xlint warnings

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../main/java/groovy/inspect/swingui/TableMap.java |  87 ------
 .../java/groovy/inspect/swingui/TableSorter.java   | 327 ---------------------
 .../src/main/java/groovy/model/ClosureModel.java   |  79 -----
 .../main/java/groovy/model/DefaultTableColumn.java |  84 ------
 .../main/java/groovy/model/DefaultTableModel.java  | 215 --------------
 .../src/main/java/groovy/model/FormModel.java      |  47 ---
 .../main/java/groovy/model/NestedValueModel.java   |  28 --
 .../src/main/java/groovy/model/PropertyModel.java  |  81 -----
 .../src/main/java/groovy/model/ValueHolder.java    |  94 ------
 .../src/main/java/groovy/model/ValueModel.java     |  30 --
 .../src/main/java/groovy/model/package.html        |  29 --
 .../main/java/groovy/swing/model/FormModel.java    |   6 +-
 .../main/java/groovy/swing/table/TableSorter.java  |  36 ++-
 .../swing/binding/ClosureTriggerBinding.java       |  13 +-
 .../groovy/swing/binding/PropertyBinding.java      |  18 +-
 .../groovy/swing/extensions/SwingExtensions.java   |  54 ++--
 16 files changed, 68 insertions(+), 1160 deletions(-)
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/inspect/swingui/TableMap.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/inspect/swingui/TableSorter.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/ClosureModel.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/DefaultTableColumn.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/DefaultTableModel.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/FormModel.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/NestedValueModel.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/PropertyModel.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/ValueHolder.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/ValueModel.java
 delete mode 100644 subprojects/groovy-swing/src/main/java/groovy/model/package.html


[groovy] 01/02: remove deprecated classes

Posted by pa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit b5dc8f2a0e40be063929815c93cbdc7003815e99
Author: Paul King <pa...@asert.com.au>
AuthorDate: Sat Feb 8 13:58:23 2020 +1000

    remove deprecated classes
---
 .../main/java/groovy/inspect/swingui/TableMap.java |  87 ------
 .../java/groovy/inspect/swingui/TableSorter.java   | 327 ---------------------
 .../src/main/java/groovy/model/ClosureModel.java   |  79 -----
 .../main/java/groovy/model/DefaultTableColumn.java |  84 ------
 .../main/java/groovy/model/DefaultTableModel.java  | 215 --------------
 .../src/main/java/groovy/model/FormModel.java      |  47 ---
 .../main/java/groovy/model/NestedValueModel.java   |  28 --
 .../src/main/java/groovy/model/PropertyModel.java  |  81 -----
 .../src/main/java/groovy/model/ValueHolder.java    |  94 ------
 .../src/main/java/groovy/model/ValueModel.java     |  30 --
 .../src/main/java/groovy/model/package.html        |  29 --
 11 files changed, 1101 deletions(-)

diff --git a/subprojects/groovy-swing/src/main/java/groovy/inspect/swingui/TableMap.java b/subprojects/groovy-swing/src/main/java/groovy/inspect/swingui/TableMap.java
deleted file mode 100644
index 6908be5..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/inspect/swingui/TableMap.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.inspect.swingui;
-
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.TableModel;
-
-/**
- * In a chain of data manipulators some behaviour is common. TableMap
- * provides most of this behaviour and can be subclassed by filters
- * that only need to override a handful of specific methods. TableMap
- * implements TableModel by routing all requests to its model, and
- * TableModelListener by routing all events to its listeners. Inserting
- * a TableMap which has not been subclassed into a chain of table filters
- * should have no effect.
- */
-@Deprecated
-public class TableMap extends AbstractTableModel implements TableModelListener {
-    protected TableModel model;
-
-    public TableModel getModel() {
-        return model;
-    }
-
-    public void setModel(TableModel model) {
-        this.model = model;
-        model.addTableModelListener(this);
-    }
-
-    // By default, Implement TableModel by forwarding all messages
-    // to the model.
-
-    public Object getValueAt(int aRow, int aColumn) {
-        return model.getValueAt(aRow, aColumn);
-    }
-
-    public void setValueAt(Object aValue, int aRow, int aColumn) {
-        model.setValueAt(aValue, aRow, aColumn);
-    }
-
-    public int getRowCount() {
-        return (model == null) ? 0 : model.getRowCount();
-    }
-
-    public int getColumnCount() {
-        return (model == null) ? 0 : model.getColumnCount();
-    }
-
-    public String getColumnName(int aColumn) {
-        return model.getColumnName(aColumn);
-    }
-
-    public Class getColumnClass(int aColumn) {
-        return model.getColumnClass(aColumn);
-    }
-
-    public boolean isCellEditable(int row, int column) {
-        return model.isCellEditable(row, column);
-    }
-//
-// Implementation of the TableModelListener interface,
-//
-
-    // By default forward all events to all the listeners.
-    public void tableChanged(TableModelEvent e) {
-        fireTableChanged(e);
-    }
-}
-
diff --git a/subprojects/groovy-swing/src/main/java/groovy/inspect/swingui/TableSorter.java b/subprojects/groovy-swing/src/main/java/groovy/inspect/swingui/TableSorter.java
deleted file mode 100644
index 87bbbda..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/inspect/swingui/TableSorter.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.inspect.swingui;
-
-import javax.swing.*;
-import javax.swing.event.TableModelEvent;
-import javax.swing.table.JTableHeader;
-import javax.swing.table.TableColumnModel;
-import javax.swing.table.TableModel;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.Date;
-import java.util.Vector;
-
-/**
- * A sorter for TableModels. The sorter has a model (conforming to TableModel)
- * and itself implements TableModel. TableSorter does not store or copy
- * the data in the TableModel, instead it maintains an array of
- * integers which it keeps the same size as the number of rows in its
- * model. When the model changes it notifies the sorter that something
- * has changed eg. "rowsAdded" so that its internal array of integers
- * can be reallocated. As requests are made of the sorter (like
- * getValueAt(row, col) it redirects them to its model via the mapping
- * array. That way the TableSorter appears to hold another copy of the table
- * with the rows in a different order. The sorting algorithm used is stable
- * which means that it does not move around rows when its comparison
- * function returns 0 to denote that they are equivalent.
- */
-@Deprecated
-public class TableSorter extends TableMap {
-    private static final int[] EMPTY_INT_ARRAY = new int[0];
-    int indexes[];
-    Vector sortingColumns = new Vector();
-    boolean ascending = true;
-    int lastSortedColumn = -1;
-
-    public TableSorter() {
-        indexes = EMPTY_INT_ARRAY; // For consistency.
-    }
-
-    public TableSorter(TableModel model) {
-        setModel(model);
-    }
-
-    public void setModel(TableModel model) {
-        super.setModel(model);
-        reallocateIndexes();
-    }
-
-    public int compareRowsByColumn(int row1, int row2, int column) {
-        Class type = model.getColumnClass(column);
-        TableModel data = model;
-
-        // Check for nulls
-
-        Object o1 = data.getValueAt(row1, column);
-        Object o2 = data.getValueAt(row2, column);
-
-        // If both values are null return 0
-        if (o1 == null && o2 == null) {
-            return 0;
-        } else if (o1 == null) { // Define null less than everything.
-            return -1;
-        } else if (o2 == null) {
-            return 1;
-        }
-
-/* We copy all returned values from the getValue call in case
-an optimised model is reusing one object to return many values.
-The Number subclasses in the JDK are immutable and so will not be used in
-this way but other subclasses of Number might want to do this to save
-space and avoid unnecessary heap allocation.
-*/
-        if (type.getSuperclass() == java.lang.Number.class) {
-            return compareNumbers(data, row1, column, row2);
-        }
-
-        if (type == java.util.Date.class) {
-            return compareDates(data, row1, column, row2);
-        }
-
-        if (type == String.class) {
-            return compareStrings(data, row1, column, row2);
-        }
-
-        if (type == Boolean.class) {
-            return compareBooleans(data, row1, column, row2);
-        }
-        return compareObjects(data, row1, column, row2);
-    }
-
-    private static int compareObjects(TableModel data, int row1, int column, int row2) {
-        Object v1 = data.getValueAt(row1, column);
-        String s1 = v1.toString();
-        Object v2 = data.getValueAt(row2, column);
-        String s2 = v2.toString();
-        int result = s1.compareTo(s2);
-
-        if (result < 0)
-            return -1;
-        if (result > 0)
-            return 1;
-        return 0;
-    }
-
-    private static int compareBooleans(TableModel data, int row1, int column, int row2) {
-        Boolean bool1 = (Boolean) data.getValueAt(row1, column);
-        boolean b1 = bool1;
-        Boolean bool2 = (Boolean) data.getValueAt(row2, column);
-        boolean b2 = bool2;
-
-        if (b1 == b2)
-            return 0;
-        if (b1) // Define false < true
-            return 1;
-        return -1;
-    }
-
-    private static int compareStrings(TableModel data, int row1, int column, int row2) {
-        String s1 = (String) data.getValueAt(row1, column);
-        String s2 = (String) data.getValueAt(row2, column);
-        int result = s1.compareTo(s2);
-
-        if (result < 0)
-            return -1;
-        if (result > 0)
-            return 1;
-        return 0;
-    }
-
-    private static int compareDates(TableModel data, int row1, int column, int row2) {
-        Date d1 = (Date) data.getValueAt(row1, column);
-        long n1 = d1.getTime();
-        Date d2 = (Date) data.getValueAt(row2, column);
-        long n2 = d2.getTime();
-
-        if (n1 < n2)
-            return -1;
-        if (n1 > n2)
-            return 1;
-        return 0;
-    }
-
-    private static int compareNumbers(TableModel data, int row1, int column, int row2) {
-        Number n1 = (Number) data.getValueAt(row1, column);
-        double d1 = n1.doubleValue();
-        Number n2 = (Number) data.getValueAt(row2, column);
-        double d2 = n2.doubleValue();
-
-        if (d1 < d2)
-            return -1;
-        if (d1 > d2)
-            return 1;
-        return 0;
-    }
-
-    public int compare(int row1, int row2) {
-        for (int level = 0; level < sortingColumns.size(); level++) {
-            Integer column = (Integer) sortingColumns.elementAt(level);
-            int result = compareRowsByColumn(row1, row2, column);
-            if (result != 0)
-                return ascending ? result : -result;
-        }
-        return 0;
-    }
-
-    public void reallocateIndexes() {
-        int rowCount = model.getRowCount();
-
-        // Set up a new array of indexes with the right number of elements
-        // for the new data model.
-        indexes = new int[rowCount];
-
-        // Initialise with the identity mapping.
-        for (int row = 0; row < rowCount; row++)
-            indexes[row] = row;
-    }
-
-    public void tableChanged(TableModelEvent e) {
-        reallocateIndexes();
-
-        super.tableChanged(e);
-    }
-
-    public void checkModel() {
-        if (indexes.length != model.getRowCount()) {
-            System.err.println("Sorter not informed of a change in model.");
-        }
-    }
-
-    public void sort(Object sender) {
-        checkModel();
-        shuttlesort((int[]) indexes.clone(), indexes, 0, indexes.length);
-    }
-
-    public void n2sort() {
-        for (int i = 0; i < getRowCount(); i++) {
-            for (int j = i + 1; j < getRowCount(); j++) {
-                if (compare(indexes[i], indexes[j]) == -1) {
-                    swap(i, j);
-                }
-            }
-        }
-    }
-
-    // This is a home-grown implementation which we have not had time
-    // to research - it may perform poorly in some circumstances. It
-    // requires twice the space of an in-place algorithm and makes
-    // NlogN assignments shuttling the values between the two
-    // arrays. The number of compares appears to vary between N-1 and
-    // NlogN depending on the initial order but the main reason for
-    // using it here is that, unlike qsort, it is stable.
-    public void shuttlesort(int from[], int to[], int low, int high) {
-        if (high - low < 2) {
-            return;
-        }
-        int middle = (low + high) / 2;
-        shuttlesort(to, from, low, middle);
-        shuttlesort(to, from, middle, high);
-
-        int p = low;
-        int q = middle;
-
-        /* This is an optional short-cut; at each recursive call,
-        check to see if the elements in this subset are already
-        ordered.  If so, no further comparisons are needed; the
-        sub-array can just be copied.  The array must be copied rather
-        than assigned otherwise sister calls in the recursion might
-        get out of sync.  When the number of elements is three they
-        are partitioned so that the first set, [low, mid), has one
-        element and and the second, [mid, high), has two. We skip the
-        optimisation when the number of elements is three or less as
-        the first compare in the normal merge will produce the same
-        sequence of steps. This optimisation seems to be worthwhile
-        for partially ordered lists but some analysis is needed to
-        find out how the performance drops to Nlog(N) as the initial
-        order diminishes - it may drop very quickly.  */
-
-        if (high - low >= 4 && compare(from[middle - 1], from[middle]) <= 0) {
-            System.arraycopy(from, low, to, low, high - low);
-            return;
-        }
-
-        // A normal merge.
-
-        for (int i = low; i < high; i++) {
-            if (q >= high || (p < middle && compare(from[p], from[q]) <= 0)) {
-                to[i] = from[p++];
-            } else {
-                to[i] = from[q++];
-            }
-        }
-    }
-
-    public void swap(int i, int j) {
-        int tmp = indexes[i];
-        indexes[i] = indexes[j];
-        indexes[j] = tmp;
-    }
-
-    // The mapping only affects the contents of the data rows.
-    // Pass all requests to these rows through the mapping array: "indexes".
-
-    public Object getValueAt(int aRow, int aColumn) {
-        checkModel();
-        return model.getValueAt(indexes[aRow], aColumn);
-    }
-
-    public void setValueAt(Object aValue, int aRow, int aColumn) {
-        checkModel();
-        model.setValueAt(aValue, indexes[aRow], aColumn);
-    }
-
-    public void sortByColumn(int column) {
-        sortByColumn(column, true);
-    }
-
-    public void sortByColumn(int column, boolean ascending) {
-        this.ascending = ascending;
-        sortingColumns.removeAllElements();
-        sortingColumns.addElement(column);
-        sort(this);
-        super.tableChanged(new TableModelEvent(this));
-    }
-
-    // There is no-where else to put this.
-    // Add a mouse listener to the Table to trigger a table sort
-    // when a column heading is clicked in the JTable.
-    public void addMouseListenerToHeaderInTable(JTable table) {
-        final TableSorter sorter = this;
-        final JTable tableView = table;
-        tableView.setColumnSelectionAllowed(false);
-        MouseAdapter listMouseListener = new MouseAdapter() {
-            public void mouseClicked(MouseEvent e) {
-                TableColumnModel columnModel = tableView.getColumnModel();
-                int viewColumn = columnModel.getColumnIndexAtX(e.getX());
-                int column = tableView.convertColumnIndexToModel(viewColumn);
-                if (e.getClickCount() == 1 && column != -1) {
-                    if (lastSortedColumn == column) ascending = !ascending;
-                    sorter.sortByColumn(column, ascending);
-                    lastSortedColumn = column;
-                }
-            }
-        };
-        JTableHeader th = tableView.getTableHeader();
-        th.addMouseListener(listMouseListener);
-    }
-
-
-}
-
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/ClosureModel.java b/subprojects/groovy-swing/src/main/java/groovy/model/ClosureModel.java
deleted file mode 100644
index 80c8055..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/ClosureModel.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.model;
-
-import groovy.lang.Closure;
-
-/**
- * Represents a value model using a closure to extract
- * the value from some source model and an optional write closure
- * for updating the value.
- */
-@Deprecated
-public class ClosureModel implements ValueModel, NestedValueModel {
-
-    private final ValueModel sourceModel;
-    private final Closure readClosure;
-    private final Closure writeClosure;
-    private final Class type;
-
-    public ClosureModel(ValueModel sourceModel, Closure readClosure) {
-        this(sourceModel, readClosure, null);
-    }
-
-    public ClosureModel(ValueModel sourceModel, Closure readClosure, Closure writeClosure) {
-        this(sourceModel, readClosure, writeClosure, Object.class);
-    }
-
-    public ClosureModel(ValueModel sourceModel, Closure readClosure, Closure writeClosure, Class type) {
-        this.sourceModel = sourceModel;
-        this.readClosure = readClosure;
-        this.writeClosure = writeClosure;
-        this.type = type;
-    }
-
-    public ValueModel getSourceModel() {
-        return sourceModel;
-    }
-
-    public Object getValue() {
-        Object source = sourceModel.getValue();
-        if (source != null) {
-            return readClosure.call(source);
-        }
-        return null;
-    }
-
-    public void setValue(Object value) {
-        if (writeClosure != null) {
-            Object source = sourceModel.getValue();
-            if (source != null) {
-                writeClosure.call(source, value);
-            }
-        }
-    }
-
-    public Class getType() {
-        return type;
-    }
-
-    public boolean isEditable() {
-        return writeClosure != null;
-    }
-}
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/DefaultTableColumn.java b/subprojects/groovy-swing/src/main/java/groovy/model/DefaultTableColumn.java
deleted file mode 100644
index a88a1ad..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/DefaultTableColumn.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.model;
-
-import javax.swing.table.TableColumn;
-
-/** 
- * Represents a column using a ValueModel to extract the value.
- */
-@Deprecated
-public class DefaultTableColumn extends TableColumn {
-
-    private ValueModel valueModel;    
-    
-    public DefaultTableColumn(ValueModel valueModel) {
-        this.valueModel = valueModel;
-    }
-
-    public DefaultTableColumn(Object header, ValueModel valueModel) {
-        this(valueModel);
-        setHeaderValue(header);
-    }
-
-    public DefaultTableColumn(Object headerValue, Object identifier, ValueModel columnValueModel) {
-        this(headerValue, columnValueModel);
-        setIdentifier(identifier);
-    }
-
-    public String toString() {
-        return super.toString() + "[header:" + getHeaderValue() + " valueModel:" + valueModel + "]";
-    }
-    
-    /**
-     * Evaluates the value of a cell
-     *
-     * @return the value
-     * @param row the row of interest
-     * @param rowIndex the index of the row of interest
-     * @param columnIndex the column of interest
-     */    
-    public Object getValue(Object row, int rowIndex, int columnIndex) {
-        if (valueModel instanceof NestedValueModel) {
-            NestedValueModel nestedModel = (NestedValueModel) valueModel;
-            nestedModel.getSourceModel().setValue(row);
-        }
-        return valueModel.getValue();
-    }
-
-    public void setValue(Object row, Object value, int rowIndex, int columnIndex) {
-        if (valueModel instanceof NestedValueModel) {
-            NestedValueModel nestedModel = (NestedValueModel) valueModel;
-            nestedModel.getSourceModel().setValue(row);
-        }
-        valueModel.setValue(value);
-    }
-
-    /**
-     * @return the column type
-     */
-    public Class getType() {
-        return valueModel.getType();
-    }
-
-    public ValueModel getValueModel() {
-        return valueModel;
-    }
-
-}
\ No newline at end of file
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/DefaultTableModel.java b/subprojects/groovy-swing/src/main/java/groovy/model/DefaultTableModel.java
deleted file mode 100644
index 280bbd0..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/DefaultTableModel.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.model;
-
-import groovy.lang.Closure;
-import org.codehaus.groovy.runtime.InvokerHelper;
-
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.DefaultTableColumnModel;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * A default table model made up of PropertyModels on a Value model.
- */
-@Deprecated
-public class DefaultTableModel extends AbstractTableModel {
-
-    private ValueModel rowModel;
-    private ValueModel rowsModel;
-    private MyTableColumnModel columnModel = new MyTableColumnModel();
-
-    public DefaultTableModel(ValueModel rowsModel) {
-        this(rowsModel, new ValueHolder());
-    }
-    
-    public DefaultTableModel(ValueModel rowsModel, ValueModel rowModel) {
-        this.rowModel = rowModel;
-        this.rowsModel = rowsModel;
-    }
-    
-    /**
-     * @return the column definitions.
-     */
-    public List getColumnList() {
-        return columnModel.getColumnList();
-    }
-
-    public TableColumnModel getColumnModel() {
-        return columnModel;
-    }
-    
-    /**
-     * Adds a property model column to the table
-     */
-    public DefaultTableColumn addPropertyColumn(Object headerValue, String property, Class type) {
-        return addColumn(headerValue, property, new PropertyModel(rowModel, property, type));
-    }
-    
-    /**
-     * Adds a property model column to the table
-     */
-    public DefaultTableColumn addPropertyColumn(Object headerValue, String property, Class type, boolean editable) {
-        return addColumn(headerValue, property, new PropertyModel(rowModel, property, type, editable));
-    }
-    
-    /**
-     * Adds a closure based column to the table
-     */
-    public DefaultTableColumn addClosureColumn(Object headerValue, Closure readClosure, Closure writeClosure, Class type) {
-        return addColumn(headerValue, new ClosureModel(rowModel, readClosure, writeClosure, type));
-    }
-    
-    public DefaultTableColumn addColumn(Object headerValue, ValueModel columnValueModel) {
-        return addColumn(headerValue, headerValue, columnValueModel);
-    }
-
-    public DefaultTableColumn addColumn(Object headerValue, Object identifier, ValueModel columnValueModel) {
-        DefaultTableColumn answer = new DefaultTableColumn(headerValue, identifier, columnValueModel);
-        addColumn(answer);
-        return answer;
-    }
-    
-    /**
-     * Adds a new column definition to the table
-     */
-    public void addColumn(DefaultTableColumn column) {
-        column.setModelIndex(columnModel.getColumnCount());
-        columnModel.addColumn(column);
-    }
-    
-    /**
-     * Removes a column definition from the table
-     */
-    public void removeColumn(DefaultTableColumn column) {
-        columnModel.removeColumn(column);
-    }
-    
-    public int getRowCount() {
-        return getRows().size();
-    }
-
-    public int getColumnCount() {
-        return columnModel.getColumnCount();
-    }
-    
-    public String getColumnName(int columnIndex) {
-        String answer = null;
-        if (columnIndex < 0 || columnIndex >= columnModel.getColumnCount()) {
-            return answer;
-        }
-        Object value = columnModel.getColumn(columnIndex).getHeaderValue();
-        if (value != null) {
-            return value.toString();
-        }
-        return answer;
-    }
-
-    public Class getColumnClass(int columnIndex) {
-        return getColumnModel(columnIndex).getType();
-    }
-
-    public boolean isCellEditable(int rowIndex, int columnIndex) {
-        return getColumnModel(columnIndex).isEditable();
-    }
-
-    public Object getValueAt(int rowIndex, int columnIndex) {
-        List rows = getRows();
-        Object answer = null;
-        if (rowIndex < 0 || rowIndex >= rows.size()) {
-            return answer;
-        }
-        if (columnIndex < 0 || columnIndex >= columnModel.getColumnCount()) {
-            return answer;
-        }
-        Object row = getRows().get(rowIndex);
-        rowModel.setValue(row);
-        DefaultTableColumn column = (DefaultTableColumn) columnModel.getColumn(columnIndex);
-        if (row == null || column == null) {
-            return answer;
-        }
-        return column.getValue(row, rowIndex, columnIndex);
-    }
-
-    public void setValueAt(Object value, int rowIndex, int columnIndex) {
-        List rows = getRows();
-        if (rowIndex < 0 || rowIndex >= rows.size()) {
-            return;
-        }
-        if (columnIndex < 0 || columnIndex >= columnModel.getColumnCount()) {
-            return;
-        }
-        Object row = getRows().get(rowIndex);
-        rowModel.setValue(row);
-        DefaultTableColumn column = (DefaultTableColumn) columnModel.getColumn(columnIndex);
-        if (row == null || column == null) {
-            return;
-        }
-        column.setValue(row, value, rowIndex, columnIndex);
-    }
-
-    protected ValueModel getColumnModel(int columnIndex) {
-        DefaultTableColumn column = (DefaultTableColumn) columnModel.getColumn(columnIndex);
-        return column.getValueModel();
-    }
-
-    protected List getRows() {
-        Object value = rowsModel.getValue();
-        if (value == null) {
-            return Collections.EMPTY_LIST;
-        }
-        return InvokerHelper.asList(value);
-    }
-
-    protected static class MyTableColumnModel extends DefaultTableColumnModel {
-        public List getColumnList() {
-            return tableColumns;
-        }
-
-        public void removeColumn(TableColumn column) {
-            super.removeColumn(column);
-            renumberTableColumns();
-        }
-
-        public void moveColumn(int columnIndex, int newIndex) {
-            super.moveColumn(columnIndex, newIndex);
-            renumberTableColumns();
-        }
-
-        public void renumberTableColumns() {
-            for (int i = tableColumns.size() - 1; i >= 0; i--) {
-                ((DefaultTableColumn)tableColumns.get(i)).setModelIndex(i);
-            }
-        }
-
-    }
-    
-    public ValueModel getRowModel() {
-        return rowModel;
-    }
-
-    public ValueModel getRowsModel() {
-        return rowsModel;
-    }
-
-
-}
\ No newline at end of file
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/FormModel.java b/subprojects/groovy-swing/src/main/java/groovy/model/FormModel.java
deleted file mode 100644
index 8468caa..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/FormModel.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.model;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Represents a number of field models which can be ValueModel, 
- * PropertyModel, TableModel, TreeModel or nested FormModel instances
- */
-@Deprecated
-public class FormModel {
-    private Map fieldModels;
-
-    public FormModel() {
-        this(new HashMap());
-    }
-    
-    public FormModel(Map fieldModels) {
-        this.fieldModels = fieldModels;
-    }
-
-    public void addModel(String name, Object model) {
-        fieldModels.put(name, model);
-    }
-    
-    public Object getModel(String name) {
-        return fieldModels.get(name);
-    }
-}
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/NestedValueModel.java b/subprojects/groovy-swing/src/main/java/groovy/model/NestedValueModel.java
deleted file mode 100644
index 15e86faa..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/NestedValueModel.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.model;
-
-/**
- * Represents a nested value model such as a PropertyModel
- * or a ClosureModel
- */
-@Deprecated
-public interface NestedValueModel {
-    ValueModel getSourceModel();
-}
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/PropertyModel.java b/subprojects/groovy-swing/src/main/java/groovy/model/PropertyModel.java
deleted file mode 100644
index e4cb9d8..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/PropertyModel.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.model;
-
-import org.codehaus.groovy.runtime.InvokerHelper;
-
-/**
- * Represents a property of a value as a model.
- */
-@Deprecated
-public class PropertyModel implements ValueModel, NestedValueModel {
-
-    private ValueModel sourceModel;
-    private String property;
-    private Class type;
-    boolean editable;
-
-    public PropertyModel(ValueModel sourceModel, String property) {
-        this(sourceModel, property, Object.class, true);
-    }
-
-    public PropertyModel(ValueModel sourceModel, String property, Class type) {
-        this(sourceModel, property, type, true);
-    }
-
-    public PropertyModel(ValueModel sourceModel, String property, Class type, boolean editable) {
-        this.sourceModel = sourceModel;
-        this.property = property;
-        this.type = type;
-        //TODO After 1.1 we should introspect the meta property and set editable to false if the property is read only
-        this.editable = editable;
-    }
-
-    public String getProperty() {
-        return property;
-    }
-
-    public ValueModel getSourceModel() {
-        return sourceModel;
-    }
-
-    public Object getValue() {
-        Object source = sourceModel.getValue();
-        if (source != null) {
-            return InvokerHelper.getProperty(source, property);
-        }
-        return null;
-    }
-
-    public void setValue(Object value) {
-        Object source = sourceModel.getValue();
-        if (source != null) {
-            InvokerHelper.setProperty(source, property, value);
-        }
-    }
-    
-    public Class getType() {
-        return type;
-    }
-
-    public boolean isEditable() {
-        return editable;
-    }
-
-}
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/ValueHolder.java b/subprojects/groovy-swing/src/main/java/groovy/model/ValueHolder.java
deleted file mode 100644
index 4e9bd33..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/ValueHolder.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.model;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-
-/**
- * A simple ValueModel implementation which is a holder of an object value. 
- * Used to share local variables with closures
- */
-@Deprecated
-public class ValueHolder implements ValueModel {
-    private Object value;
-    private final Class type;
-    private PropertyChangeSupport propertyChangeSupport;
-    private boolean editable = true;
-
-    public ValueHolder() {
-        this(Object.class);
-    }
-    
-    public ValueHolder(Class type) {
-        this.type = type;
-    }
-    
-    public ValueHolder(Object value) {
-        this.value = value;
-        this.type = (value != null) ? value.getClass() : Object.class;
-    }
-    
-    /** 
-     * Add a PropertyChangeListener to the listener list.
-     * @param listener The listener to add.
-     */
-    public void addPropertyChangeListener(PropertyChangeListener listener) {
-        if ( propertyChangeSupport == null ) {
-            propertyChangeSupport = new PropertyChangeSupport(this);
-        }
-        propertyChangeSupport.addPropertyChangeListener(listener);
-    }
-    
-    /** 
-     * Removes a PropertyChangeListener from the listener list.
-     * @param listener The listener to remove.
-     */
-    public void removePropertyChangeListener(PropertyChangeListener listener) {
-        if ( propertyChangeSupport != null ) {
-            propertyChangeSupport.removePropertyChangeListener(listener);
-        }
-    }
-    
-
-    public Object getValue() {
-        return value;
-    }
-
-    public void setValue(Object value) {
-        Object oldValue = this.value;
-        this.value = value;
-        if ( propertyChangeSupport != null ) {
-            propertyChangeSupport.firePropertyChange("value", oldValue, value);
-        }
-    }
-
-    public Class getType() {
-        return type;
-    }
-
-    public boolean isEditable() {
-        return editable;
-    }
-    
-    public void setEditable(boolean editable) {
-        this.editable = editable;
-    }
-
-}
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/ValueModel.java b/subprojects/groovy-swing/src/main/java/groovy/model/ValueModel.java
deleted file mode 100644
index b9726a5..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/ValueModel.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package groovy.model;
-
-/**
- * Represents a model of a value
- */
-@Deprecated
-public interface ValueModel {
-    Object getValue();
-    void setValue(Object value);
-    Class getType();
-    boolean isEditable();
-}
diff --git a/subprojects/groovy-swing/src/main/java/groovy/model/package.html b/subprojects/groovy-swing/src/main/java/groovy/model/package.html
deleted file mode 100644
index eae064c..0000000
--- a/subprojects/groovy-swing/src/main/java/groovy/model/package.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-
-     Licensed to the Apache Software Foundation (ASF) under one
-     or more contributor license agreements.  See the NOTICE file
-     distributed with this work for additional information
-     regarding copyright ownership.  The ASF licenses this file
-     to you under the Apache License, Version 2.0 (the
-     "License"); you may not use this file except in compliance
-     with the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing,
-     software distributed under the License is distributed on an
-     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-     KIND, either express or implied.  See the License for the
-     specific language governing permissions and limitations
-     under the License.
-
--->
-<html>
-  <head>
-    <title>package groovy.model.*</title>
-  </head>
-  <body>
-    <p>An MVC model package for working with user interfaces and data structures and arbitrary Java and Groovy objects
-    </p>
-  </body>
-</html>


[groovy] 02/02: remove Xlint warnings

Posted by pa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 724cc0da8aa177189b9c63826e9612f78adc353d
Author: Paul King <pa...@asert.com.au>
AuthorDate: Sat Feb 8 14:55:27 2020 +1000

    remove Xlint warnings
---
 .../main/java/groovy/swing/model/FormModel.java    |  6 +--
 .../main/java/groovy/swing/table/TableSorter.java  | 36 +++++++--------
 .../swing/binding/ClosureTriggerBinding.java       | 13 ++++--
 .../groovy/swing/binding/PropertyBinding.java      | 18 +++++---
 .../groovy/swing/extensions/SwingExtensions.java   | 54 +++++++++++-----------
 5 files changed, 68 insertions(+), 59 deletions(-)

diff --git a/subprojects/groovy-swing/src/main/java/groovy/swing/model/FormModel.java b/subprojects/groovy-swing/src/main/java/groovy/swing/model/FormModel.java
index e1057a7..03aaec8 100644
--- a/subprojects/groovy-swing/src/main/java/groovy/swing/model/FormModel.java
+++ b/subprojects/groovy-swing/src/main/java/groovy/swing/model/FormModel.java
@@ -26,13 +26,13 @@ import java.util.Map;
  * PropertyModel, TableModel, TreeModel or nested FormModel instances
  */
 public class FormModel {
-    private Map fieldModels;
+    private Map<String, Object> fieldModels;
 
     public FormModel() {
-        this(new HashMap());
+        this(new HashMap<>());
     }
     
-    public FormModel(Map fieldModels) {
+    public FormModel(Map<String, Object> fieldModels) {
         this.fieldModels = fieldModels;
     }
 
diff --git a/subprojects/groovy-swing/src/main/java/groovy/swing/table/TableSorter.java b/subprojects/groovy-swing/src/main/java/groovy/swing/table/TableSorter.java
index 018db20..188d2be 100644
--- a/subprojects/groovy-swing/src/main/java/groovy/swing/table/TableSorter.java
+++ b/subprojects/groovy-swing/src/main/java/groovy/swing/table/TableSorter.java
@@ -18,7 +18,7 @@
  */
 package groovy.swing.table;
 
-import javax.swing.*;
+import javax.swing.JTable;
 import javax.swing.event.TableModelEvent;
 import javax.swing.table.JTableHeader;
 import javax.swing.table.TableColumnModel;
@@ -29,7 +29,9 @@ import java.util.Date;
 import java.util.Vector;
 
 /**
- * A sorter for TableModels. The sorter has a model (conforming to TableModel)
+ * A sorter for TableModels.
+ * <p>
+ * The sorter has a model (conforming to TableModel)
  * and itself implements TableModel. TableSorter does not store or copy
  * the data in the TableModel, instead it maintains an array of
  * integers which it keeps the same size as the number of rows in its
@@ -44,8 +46,8 @@ import java.util.Vector;
  */
 public class TableSorter extends TableMap {
     private static final int[] EMPTY_INT_ARRAY = new int[0];
-    int indexes[];
-    Vector sortingColumns = new Vector();
+    int[] indexes;
+    Vector<Integer> sortingColumns = new Vector<>();
     boolean ascending = true;
     int lastSortedColumn = -1;
 
@@ -63,7 +65,7 @@ public class TableSorter extends TableMap {
     }
 
     public int compareRowsByColumn(int row1, int row2, int column) {
-        Class type = model.getColumnClass(column);
+        Class<?> type = model.getColumnClass(column);
         TableModel data = model;
 
         // Check for nulls
@@ -80,12 +82,12 @@ public class TableSorter extends TableMap {
             return 1;
         }
 
-/* We copy all returned values from the getValue call in case
-an optimised model is reusing one object to return many values.
-The Number subclasses in the JDK are immutable and so will not be used in
-this way but other subclasses of Number might want to do this to save
-space and avoid unnecessary heap allocation.
-*/
+        /* We copy all returned values from the getValue call in case
+        an optimised model is reusing one object to return many values.
+        The Number subclasses in the JDK are immutable and so will not be used in
+        this way but other subclasses of Number might want to do this to save
+        space and avoid unnecessary heap allocation.
+        */
         if (type.getSuperclass() == java.lang.Number.class) {
             return compareNumbers(data, row1, column, row2);
         }
@@ -119,10 +121,8 @@ space and avoid unnecessary heap allocation.
     }
 
     private static int compareBooleans(TableModel data, int row1, int column, int row2) {
-        Boolean bool1 = (Boolean) data.getValueAt(row1, column);
-        boolean b1 = bool1;
-        Boolean bool2 = (Boolean) data.getValueAt(row2, column);
-        boolean b2 = bool2;
+        boolean b1 = (Boolean) data.getValueAt(row1, column);
+        boolean b2 = (Boolean) data.getValueAt(row2, column);
 
         if (b1 == b2)
             return 0;
@@ -225,7 +225,7 @@ space and avoid unnecessary heap allocation.
     // arrays. The number of compares appears to vary between N-1 and
     // NlogN depending on the initial order but the main reason for
     // using it here is that, unlike qsort, it is stable.
-    public void shuttlesort(int from[], int to[], int low, int high) {
+    public void shuttlesort(int[] from, int[] to, int low, int high) {
         if (high - low < 2) {
             return;
         }
@@ -298,7 +298,7 @@ space and avoid unnecessary heap allocation.
         super.tableChanged(new TableModelEvent(this));
     }
 
-    // There is no-where else to put this.
+    // There is nowhere else to put this.
     // Add a mouse listener to the Table to trigger a table sort
     // when a column heading is clicked in the JTable.
     public void addMouseListenerToHeaderInTable(JTable table) {
@@ -321,6 +321,4 @@ space and avoid unnecessary heap allocation.
         th.addMouseListener(listMouseListener);
     }
 
-
 }
-
diff --git a/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/ClosureTriggerBinding.java b/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/ClosureTriggerBinding.java
index d2484c3..283b12d 100644
--- a/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/ClosureTriggerBinding.java
+++ b/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/ClosureTriggerBinding.java
@@ -23,6 +23,7 @@ import groovy.lang.GroovyObjectSupport;
 import groovy.lang.Reference;
 import org.codehaus.groovy.reflection.ReflectionUtils;
 
+import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.security.PrivilegedAction;
@@ -78,16 +79,16 @@ public class ClosureTriggerBinding implements TriggerBinding, SourceBinding {
                     Object[] args = new Object[paramCount];
                     args[0] = delegate;
                     for (int i = 1; i < paramCount; i++) {
-                        args[i] = new Reference(new BindPathSnooper());
+                        args[i] = new Reference<Object>(new BindPathSnooper());
                     }
                     try {
-                        boolean acc = constructor.isAccessible();
+                        boolean acc = isAccessible(constructor);
                         ReflectionUtils.trySetAccessible(constructor);
                         Closure localCopy = (Closure) constructor.newInstance(args);
                         if (!acc) { constructor.setAccessible(false); }
                         localCopy.setResolveStrategy(Closure.DELEGATE_ONLY);
                         for (Field f:closureClass.getDeclaredFields()) {
-                            acc = f.isAccessible();
+                            acc = isAccessible(f);
                             ReflectionUtils.trySetAccessible(f);
                             if (f.getType() == Reference.class) {
                                 delegate.fields.put(f.getName(),
@@ -128,6 +129,12 @@ public class ClosureTriggerBinding implements TriggerBinding, SourceBinding {
         return fb;
     }
 
+    // TODO when JDK9+ is minimum, use canAccess and remove suppression
+    @SuppressWarnings("deprecation")
+    private boolean isAccessible(AccessibleObject accessibleObject) {
+        return accessibleObject.isAccessible();
+    }
+
     public Object getSourceValue() {
         return closure.call();
     }
diff --git a/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/PropertyBinding.java b/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/PropertyBinding.java
index a485f35..c28b855 100644
--- a/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/PropertyBinding.java
+++ b/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/binding/PropertyBinding.java
@@ -27,8 +27,8 @@ import org.codehaus.groovy.runtime.InvokerInvocationException;
 import org.codehaus.groovy.runtime.ResourceGroovyMethods;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.SwingUtilities;
+import java.awt.Component;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyVetoException;
@@ -44,14 +44,13 @@ import java.util.concurrent.Executors;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-
 /**
  * @since Groovy 1.1
  */
 public class PropertyBinding implements SourceBinding, TargetBinding, TriggerBinding {
     private static final ExecutorService DEFAULT_EXECUTOR_SERVICE = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
     private static final Logger LOG = Logger.getLogger(PropertyBinding.class.getName());
-    private static final Map<Class, Class<? extends PropertyAccessor>> ACCESSORS = new LinkedHashMap<Class, Class<? extends PropertyAccessor>>();
+    private static final Map<Class<?>, Class<? extends PropertyAccessor>> ACCESSORS = new LinkedHashMap<>();
     private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
 
     static {
@@ -75,7 +74,7 @@ public class PropertyBinding implements SourceBinding, TargetBinding, TriggerBin
             String[] parts = line.split("=");
             if (parts.length == 2) {
                 try {
-                    ACCESSORS.put(cl.loadClass(parts[0].trim()), (Class<? extends PropertyAccessor>) cl.loadClass(parts[1].trim()));
+                    ACCESSORS.put(cl.loadClass(parts[0].trim()), getaAccessorClass(cl, parts[1]));
                 } catch (ClassNotFoundException e) {
                     // ignore
                     // TODO should use a low priority logger
@@ -85,6 +84,11 @@ public class PropertyBinding implements SourceBinding, TargetBinding, TriggerBin
         }
     }
 
+    @SuppressWarnings("unchecked")
+    private static Class<? extends PropertyAccessor> getaAccessorClass(ClassLoader cl, String part) throws ClassNotFoundException {
+        return (Class<? extends PropertyAccessor>) cl.loadClass(part.trim());
+    }
+
     private static Enumeration<URL> fetchUrlsFor(String path) {
         try {
             return Thread.currentThread().getContextClassLoader().getResources(path);
@@ -138,14 +142,14 @@ public class PropertyBinding implements SourceBinding, TargetBinding, TriggerBin
         }
     }
 
-    private PropertyAccessor fetchPropertyAccessor(Class klass) {
+    private PropertyAccessor fetchPropertyAccessor(Class<?> klass) {
         if (klass == null) {
             return DefaultPropertyAccessor.INSTANCE;
         }
 
         Class<? extends PropertyAccessor> accessorClass = ACCESSORS.get(klass);
         if (accessorClass == null) {
-            for (Class c : klass.getInterfaces()) {
+            for (Class<?> c : klass.getInterfaces()) {
                 PropertyAccessor propertyAccessor = fetchPropertyAccessor(c);
                 if (propertyAccessor != DefaultPropertyAccessor.INSTANCE) {
                     return propertyAccessor;
diff --git a/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/extensions/SwingExtensions.java b/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/extensions/SwingExtensions.java
index 2a4da3d..18a1a4c 100644
--- a/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/extensions/SwingExtensions.java
+++ b/subprojects/groovy-swing/src/main/java/org/apache/groovy/swing/extensions/SwingExtensions.java
@@ -122,9 +122,9 @@ public class SwingExtensions {
     public static AbstractButton getAt(ButtonGroup self, int index) {
         int size = self.getButtonCount();
         if (index < 0 || index >= size) return null;
-        Enumeration buttons = self.getElements();
+        Enumeration<AbstractButton> buttons = self.getElements();
         for (int i = 0; i <= index; i++) {
-            AbstractButton b = (AbstractButton) buttons.nextElement();
+            AbstractButton b = buttons.nextElement();
             if (i == index) return b;
         }
         return null;
@@ -162,7 +162,7 @@ public class SwingExtensions {
      * @return the size of the ListModel
      * @since 1.6.4
      */
-    public static int size(ListModel self) {
+    public static int size(ListModel<?> self) {
         return self.getSize();
     }
 
@@ -174,7 +174,7 @@ public class SwingExtensions {
      * @return the element at the given index
      * @since 1.6.4
      */
-    public static Object getAt(ListModel self, int index) {
+    public static Object getAt(ListModel<?> self, int index) {
         return self.getElementAt(index);
     }
 
@@ -185,8 +185,8 @@ public class SwingExtensions {
      * @return an Iterator for a ListModel
      * @since 1.6.4
      */
-    public static Iterator iterator(final ListModel self) {
-        return new Iterator() {
+    public static Iterator<?> iterator(final ListModel<?> self) {
+        return new Iterator<Object>() {
             private int index = 0;
 
             public boolean hasNext() {
@@ -212,7 +212,7 @@ public class SwingExtensions {
      * @return same listModel, after the value was added to it.
      * @since 1.6.4
      */
-    public static DefaultListModel leftShift(DefaultListModel self, Object e) {
+    public static DefaultListModel<?> leftShift(DefaultListModel<Object> self, Object e) {
         self.addElement(e);
         return self;
     }
@@ -228,7 +228,7 @@ public class SwingExtensions {
      * @param e     the element to insert at the given index
      * @since 1.6.4
      */
-    public static void putAt(DefaultListModel self, int index, Object e) {
+    public static void putAt(DefaultListModel<Object> self, int index, Object e) {
         self.set(index, e);
     }
 
@@ -238,7 +238,7 @@ public class SwingExtensions {
      * @param self a DefaultListModel
      * @since 1.6.4
      */
-    public static void clear(DefaultListModel self) {
+    public static void clear(DefaultListModel<?> self) {
         self.removeAllElements();
     }
 
@@ -249,8 +249,8 @@ public class SwingExtensions {
      * @return an Iterator for a DefaultListModel
      * @since 1.6.4
      */
-    public static Iterator iterator(final DefaultListModel self) {
-        return new Iterator() {
+    public static Iterator<?> iterator(final DefaultListModel<Object> self) {
+        return new Iterator<Object>() {
             private int index = 0;
 
             public boolean hasNext() {
@@ -299,7 +299,7 @@ public class SwingExtensions {
      * @return same comboBox, after the value was added to it.
      * @since 1.6.4
      */
-    public static JComboBox leftShift(JComboBox self, Object i) {
+    public static JComboBox<?> leftShift(JComboBox<Object> self, Object i) {
         self.addItem(i);
         return self;
     }
@@ -310,7 +310,7 @@ public class SwingExtensions {
      * @param self a JComboBox
      * @since 1.6.4
      */
-    public static void clear(JComboBox self) {
+    public static void clear(JComboBox<?> self) {
         self.removeAllItems();
     }
 
@@ -321,7 +321,7 @@ public class SwingExtensions {
      * @return an Iterator for a ComboBox
      * @since 1.6.4
      */
-    public static Iterator iterator(JComboBox self) {
+    public static Iterator<?> iterator(JComboBox<Object> self) {
         return iterator(self.getModel());
     }
 
@@ -334,7 +334,7 @@ public class SwingExtensions {
      * @return same model, after the value was added to it.
      * @since 1.6.4
      */
-    public static MutableComboBoxModel leftShift(MutableComboBoxModel self, Object i) {
+    public static MutableComboBoxModel<?> leftShift(MutableComboBoxModel<Object> self, Object i) {
         self.addElement(i);
         return self;
     }
@@ -350,7 +350,7 @@ public class SwingExtensions {
      * @param i     the item to insert at the given index
      * @since 1.6.4
      */
-    public static void putAt(MutableComboBoxModel self, int index, Object i) {
+    public static void putAt(MutableComboBoxModel<Object> self, int index, Object i) {
         self.insertElementAt(i, index);
     }
 
@@ -361,8 +361,8 @@ public class SwingExtensions {
      * @return an Iterator for a MutableComboBoxModel
      * @since 1.6.4
      */
-    public static Iterator iterator(final MutableComboBoxModel self) {
-        return new Iterator() {
+    public static Iterator<?> iterator(final MutableComboBoxModel<Object> self) {
+        return new Iterator<Object>() {
             private int index = 0;
 
             public boolean hasNext() {
@@ -385,7 +385,7 @@ public class SwingExtensions {
      * @param self a DefaultComboBoxModel
      * @since 1.7.3
      */
-    public static void clear(DefaultComboBoxModel self) {
+    public static void clear(DefaultComboBoxModel<?> self) {
         self.removeAllElements();
     }
 
@@ -424,8 +424,8 @@ public class SwingExtensions {
      * @return an Iterator for a TableModel
      * @since 1.6.4
      */
-    public static Iterator iterator(final TableModel self) {
-        return new Iterator() {
+    public static Iterator<?> iterator(final TableModel self) {
+        return new Iterator<Object>() {
             private int row = 0;
 
             public boolean hasNext() {
@@ -497,7 +497,7 @@ public class SwingExtensions {
         int cols = delegate.getColumnCount();
         Object[] rowData = new Object[cols];
         int i = 0;
-        for (Iterator it = DefaultGroovyMethods.iterator(row); it.hasNext() && i < cols;) {
+        for (Iterator<?> it = DefaultGroovyMethods.iterator(row); it.hasNext() && i < cols;) {
             rowData[i++] = it.next();
         }
         return rowData;
@@ -510,8 +510,8 @@ public class SwingExtensions {
      * @return an Iterator for a DefaultTableModel
      * @since 1.6.4
      */
-    public static Iterator iterator(final DefaultTableModel self) {
-        return new Iterator() {
+    public static Iterator<?> iterator(final DefaultTableModel self) {
+        return new Iterator<Object>() {
             private int row = 0;
 
             public boolean hasNext() {
@@ -640,7 +640,7 @@ public class SwingExtensions {
      * @return an Iterator for a TreePath
      * @since 1.6.4
      */
-    public static Iterator iterator(TreePath self) {
+    public static Iterator<?> iterator(TreePath self) {
         return DefaultGroovyMethods.iterator(self.getPath());
     }
 
@@ -833,7 +833,7 @@ public class SwingExtensions {
      * @return an Iterator for a JMenu
      * @since 1.6.4
      */
-    public static Iterator/*<MenuElement>*/ iterator(JMenu self) {
+    public static Iterator<Component> iterator(JMenu self) {
         return DefaultGroovyMethods.iterator(self.getMenuComponents());
     }
 
@@ -881,7 +881,7 @@ public class SwingExtensions {
      * @return an Iterator for a JMenuBar
      * @since 1.6.4
      */
-    public static Iterator/*<JMenu>*/ iterator(JMenuBar self) {
+    public static Iterator<MenuElement> iterator(JMenuBar self) {
         return DefaultGroovyMethods.iterator(self.getSubElements());
     }