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 <[email protected]> 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()); }
