Skip to content

Commit

Permalink
8298200: Clean up raw type warnings in javafx.beans.property.* and co…
Browse files Browse the repository at this point in the history
…m.sun.javafx.property.*

Reviewed-by: kcr, nlisker
  • Loading branch information
hjohn authored and nlisker committed Dec 14, 2022
1 parent 8763e8b commit f217d5e
Show file tree
Hide file tree
Showing 38 changed files with 153 additions and 162 deletions.
Expand Up @@ -58,7 +58,7 @@ public static <T> ReadOnlyObjectProperty<T> createReadOnlyJavaBeanProperty(Objec
private static void init() {
if (!initialized) {
try {
Class accessor = Class.forName(
Class<?> accessor = Class.forName(
"com.sun.javafx.property.adapter.JavaBeanQuickAccessor",
true, JavaBeanAccessHelper.class.getClassLoader());
JAVA_BEAN_QUICK_ACCESSOR_CREATE_RO =
Expand Down
Expand Up @@ -43,16 +43,16 @@
* of the associated Runnable object will be called.
*/
public class Disposer implements Runnable {
private static final ReferenceQueue queue = new ReferenceQueue();
private static final Map<Object, Runnable> records = new ConcurrentHashMap<>();
private static final ReferenceQueue<Object> queue = new ReferenceQueue<>();
private static final Map<Reference<?>, Runnable> records = new ConcurrentHashMap<>();
private static Disposer disposerInstance;

static {
disposerInstance = new Disposer();

@SuppressWarnings("removal")
var dummy = java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction() {
new java.security.PrivilegedAction<>() {
@Override
public Object run() {
/* The thread must be a member of a thread group
Expand Down Expand Up @@ -81,17 +81,17 @@ public Object run() {
* @param rec the associated Runnable object
*/
public static void addRecord(Object target, Runnable rec) {
PhantomReference ref = new PhantomReference<>(target, queue);
PhantomReference<Object> ref = new PhantomReference<>(target, queue);
records.put(ref, rec);
}

@Override
public void run() {
while (true) {
try {
Object obj = queue.remove();
((Reference)obj).clear();
Runnable rec = records.remove(obj);
Reference<?> reference = queue.remove();
reference.clear();
Runnable rec = records.remove(reference);
rec.run();
} catch (Exception e) {
System.out.println("Exception while removing reference: " + e);
Expand Down
Expand Up @@ -30,7 +30,7 @@

/**
*/
public class JavaBeanPropertyBuilderHelper {
public class JavaBeanPropertyBuilderHelper<T> {

private static final String IS_PREFIX = "is";
private static final String GET_PREFIX = "get";
Expand All @@ -43,7 +43,7 @@ public class JavaBeanPropertyBuilderHelper {
private String setterName;
private Method getter;
private Method setter;
private PropertyDescriptor descriptor;
private PropertyDescriptor<T> descriptor;

public void name(String propertyName) {
if ((propertyName == null)? this.propertyName != null : !propertyName.equals(this.propertyName)) {
Expand Down Expand Up @@ -104,7 +104,7 @@ public void setter(Method setter) {
}
}

public PropertyDescriptor getDescriptor() throws NoSuchMethodException {
public PropertyDescriptor<T> getDescriptor() throws NoSuchMethodException {
if (descriptor == null) {
if (propertyName == null) {
throw new NullPointerException("Property name has to be specified");
Expand Down Expand Up @@ -134,7 +134,7 @@ public PropertyDescriptor getDescriptor() throws NoSuchMethodException {
setterMethod = beanClass.getMethod(SET_PREFIX + capitalizedName, type);
}
}
descriptor = new PropertyDescriptor(propertyName, beanClass, getterMethod, setterMethod);
descriptor = new PropertyDescriptor<>(propertyName, beanClass, getterMethod, setterMethod);
}
return descriptor;
}
Expand Down
Expand Up @@ -39,7 +39,7 @@

/**
*/
public class PropertyDescriptor extends ReadOnlyPropertyDescriptor {
public class PropertyDescriptor<T> extends ReadOnlyPropertyDescriptor<T> {

private static final String ADD_VETOABLE_LISTENER_METHOD_NAME = "addVetoableChangeListener";
private static final String REMOVE_VETOABLE_LISTENER_METHOD_NAME = "removeVetoableChangeListener";
Expand Down Expand Up @@ -142,7 +142,7 @@ public void removeListener(ReadOnlyListener listener) {
}
}

public class Listener<T> extends ReadOnlyListener<T> implements ChangeListener<T>, VetoableChangeListener {
public class Listener extends ReadOnlyListener implements ChangeListener<T>, VetoableChangeListener {

private boolean updating;

Expand Down Expand Up @@ -173,8 +173,7 @@ public void changed(ObservableValue<? extends T> observable, T oldValue, T newVa
@Override
public void vetoableChange(PropertyChangeEvent propertyChangeEvent) throws PropertyVetoException {
if (bean.equals(propertyChangeEvent.getSource()) && name.equals(propertyChangeEvent.getPropertyName())) {
final ReadOnlyJavaBeanProperty<T> property = checkRef();
if ((property instanceof Property) && (((Property)property).isBound()) && !updating) {
if ((checkRef() instanceof Property<?> property) && property.isBound() && !updating) {
throw new PropertyVetoException("A bound value cannot be set.", propertyChangeEvent);
}
}
Expand Down
Expand Up @@ -30,7 +30,7 @@

/**
*/
public class ReadOnlyJavaBeanPropertyBuilderHelper {
public class ReadOnlyJavaBeanPropertyBuilderHelper<T> {

private static final String IS_PREFIX = "is";
private static final String GET_PREFIX = "get";
Expand All @@ -40,7 +40,7 @@ public class ReadOnlyJavaBeanPropertyBuilderHelper {
private Object bean;
private String getterName;
private Method getter;
private ReadOnlyPropertyDescriptor descriptor;
private ReadOnlyPropertyDescriptor<T> descriptor;

public void name(String propertyName) {
if ((propertyName == null)? this.propertyName != null : !propertyName.equals(this.propertyName)) {
Expand Down Expand Up @@ -87,7 +87,7 @@ public void getter(Method getter) {
}
}

public ReadOnlyPropertyDescriptor getDescriptor() throws NoSuchMethodException {
public ReadOnlyPropertyDescriptor<T> getDescriptor() throws NoSuchMethodException {
if (descriptor == null) {
if ((propertyName == null) || (bean == null)) {
throw new NullPointerException("Bean and property name have to be specified");
Expand All @@ -107,7 +107,7 @@ public ReadOnlyPropertyDescriptor getDescriptor() throws NoSuchMethodException {
}
}
}
descriptor = new ReadOnlyPropertyDescriptor(propertyName, beanClass, getter);
descriptor = new ReadOnlyPropertyDescriptor<>(propertyName, beanClass, getter);
}
return descriptor;
}
Expand Down
Expand Up @@ -40,7 +40,7 @@

/**
*/
public class ReadOnlyPropertyDescriptor {
public class ReadOnlyPropertyDescriptor<T> {

private static final String ADD_LISTENER_METHOD_NAME = "addPropertyChangeListener";
private static final String REMOVE_LISTENER_METHOD_NAME = "removePropertyChangeListener";
Expand Down Expand Up @@ -149,7 +149,7 @@ public void removeListener(ReadOnlyListener listener) {
}
}

public class ReadOnlyListener<T> implements PropertyChangeListener, WeakListener {
public class ReadOnlyListener implements PropertyChangeListener, WeakListener {

protected final Object bean;
private final WeakReference<ReadOnlyJavaBeanProperty<T>> propertyRef;
Expand Down
Expand Up @@ -27,6 +27,8 @@

import java.util.List;
import java.util.ListIterator;
import java.util.Objects;

import javafx.beans.binding.Bindings;
import javafx.beans.binding.ListExpression;
import javafx.collections.ObservableList;
Expand Down Expand Up @@ -111,23 +113,19 @@ public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof List)) {
return false;
}
final List list = (List)obj;

if (size() != list.size()) {
if (!(obj instanceof List<?> otherList) || size() != otherList.size()) {
return false;
}

ListIterator<E> e1 = listIterator();
ListIterator e2 = list.listIterator();
ListIterator<?> e2 = otherList.listIterator();

while (e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : o1.equals(o2)))
if (!Objects.equals(e1.next(), e2.next())) {
return false;
}
}

return true;
}

Expand Down
Expand Up @@ -107,34 +107,30 @@ public void unbindContent(Object object) {

@Override
public boolean equals(Object obj) {
if (obj == this)
if (obj == this) {
return true;

if (!(obj instanceof Map))
return false;
Map<K,V> m = (Map<K,V>) obj;
if (m.size() != size())
}
if (!(obj instanceof Map<?, ?> otherMap) || otherMap.size() != size()) {
return false;
}

try {
for (Entry<K,V> e : entrySet()) {
for (Entry<K, V> e : entrySet()) {
K key = e.getKey();
V value = e.getValue();
if (value == null) {
if (!(m.get(key)==null && m.containsKey(key)))
return false;
} else {
if (!value.equals(m.get(key)))
if (otherMap.get(key) != null || !otherMap.containsKey(key)) {
return false;
}
} else if (!value.equals(otherMap.get(key))) {
return false;
}
}
} catch (ClassCastException unused) {
return false;
} catch (NullPointerException unused) {

return true;
} catch (ClassCastException | NullPointerException unused) {
return false;
}

return true;
}

/**
Expand Down
Expand Up @@ -106,19 +106,16 @@ public void unbindContent(Object object) {

@Override
public boolean equals(Object obj) {
if (obj == this)
if (obj == this) {
return true;

if (!(obj instanceof Set))
return false;
Set c = (Set) obj;
if (c.size() != size())
}
if (!(obj instanceof Set<?> otherSet) || otherSet.size() != size()) {
return false;
}

try {
return containsAll(c);
} catch (ClassCastException unused) {
return false;
} catch (NullPointerException unused) {
return containsAll(otherSet);
} catch (ClassCastException | NullPointerException unused) {
return false;
}
}
Expand Down
Expand Up @@ -28,19 +28,19 @@

import com.sun.javafx.property.adapter.ReadOnlyPropertyDescriptor;

class DescriptorListenerCleaner implements Runnable{
class DescriptorListenerCleaner<T> implements Runnable {

private final ReadOnlyPropertyDescriptor pd;
private final WeakReference<ReadOnlyPropertyDescriptor.ReadOnlyListener<?>> lRef;
private final ReadOnlyPropertyDescriptor<T> pd;
private final WeakReference<ReadOnlyPropertyDescriptor<T>.ReadOnlyListener> lRef;

DescriptorListenerCleaner(ReadOnlyPropertyDescriptor pd, ReadOnlyPropertyDescriptor.ReadOnlyListener<?> l) {
DescriptorListenerCleaner(ReadOnlyPropertyDescriptor<T> pd, ReadOnlyPropertyDescriptor<T>.ReadOnlyListener l) {
this.pd = pd;
this.lRef = new WeakReference<>(l);
}

@Override
public void run() {
ReadOnlyPropertyDescriptor.ReadOnlyListener<?> l = lRef.get();
ReadOnlyPropertyDescriptor<T>.ReadOnlyListener l = lRef.get();
if (l != null) {
pd.removeListener(l);
}
Expand Down
Expand Up @@ -90,20 +90,20 @@
*/
public final class JavaBeanBooleanProperty extends BooleanProperty implements JavaBeanProperty<Boolean> {

private final PropertyDescriptor descriptor;
private final PropertyDescriptor.Listener<Boolean> listener;
private final PropertyDescriptor<Boolean> descriptor;
private final PropertyDescriptor<Boolean>.Listener listener;

private ObservableValue<? extends Boolean> observable = null;
private ExpressionHelper<Boolean> helper = null;

@SuppressWarnings("removal")
private final AccessControlContext acc = AccessController.getContext();

JavaBeanBooleanProperty(PropertyDescriptor descriptor, Object bean) {
JavaBeanBooleanProperty(PropertyDescriptor<Boolean> descriptor, Object bean) {
this.descriptor = descriptor;
this.listener = descriptor.new Listener<>(bean, this);
this.listener = descriptor.new Listener(bean, this);
descriptor.addListener(listener);
Disposer.addRecord(this, new DescriptorListenerCleaner(descriptor, listener));
Disposer.addRecord(this, new DescriptorListenerCleaner<>(descriptor, listener));
}

/**
Expand Down
Expand Up @@ -59,7 +59,7 @@
*/
public final class JavaBeanBooleanPropertyBuilder {

private final JavaBeanPropertyBuilderHelper helper = new JavaBeanPropertyBuilderHelper();
private final JavaBeanPropertyBuilderHelper<Boolean> helper = new JavaBeanPropertyBuilderHelper<>();

private JavaBeanBooleanPropertyBuilder() {}

Expand All @@ -82,7 +82,7 @@ public static JavaBeanBooleanPropertyBuilder create() {
* {@code boolean} or {@code Boolean}
*/
public JavaBeanBooleanProperty build() throws NoSuchMethodException {
final PropertyDescriptor descriptor = helper.getDescriptor();
final PropertyDescriptor<Boolean> descriptor = helper.getDescriptor();
if (!boolean.class.equals(descriptor.getType()) && !Boolean.class.equals(descriptor.getType())) {
throw new IllegalArgumentException("Not a boolean property");
}
Expand Down
Expand Up @@ -90,20 +90,20 @@
*/
public final class JavaBeanDoubleProperty extends DoubleProperty implements JavaBeanProperty<Number> {

private final PropertyDescriptor descriptor;
private final PropertyDescriptor.Listener<Number> listener;
private final PropertyDescriptor<Number> descriptor;
private final PropertyDescriptor<Number>.Listener listener;

private ObservableValue<? extends Number> observable = null;
private ExpressionHelper<Number> helper = null;

@SuppressWarnings("removal")
private final AccessControlContext acc = AccessController.getContext();

JavaBeanDoubleProperty(PropertyDescriptor descriptor, Object bean) {
JavaBeanDoubleProperty(PropertyDescriptor<Number> descriptor, Object bean) {
this.descriptor = descriptor;
this.listener = descriptor.new Listener<>(bean, this);
this.listener = descriptor.new Listener(bean, this);
descriptor.addListener(listener);
Disposer.addRecord(this, new DescriptorListenerCleaner(descriptor, listener));
Disposer.addRecord(this, new DescriptorListenerCleaner<>(descriptor, listener));
}

/**
Expand Down
Expand Up @@ -59,7 +59,7 @@
*/
public final class JavaBeanDoublePropertyBuilder {

private final JavaBeanPropertyBuilderHelper helper = new JavaBeanPropertyBuilderHelper();
private final JavaBeanPropertyBuilderHelper<Number> helper = new JavaBeanPropertyBuilderHelper<>();

private JavaBeanDoublePropertyBuilder() {}

Expand All @@ -82,7 +82,7 @@ public static JavaBeanDoublePropertyBuilder create() {
* {@code double} or {@code Double}
*/
public JavaBeanDoubleProperty build() throws NoSuchMethodException {
final PropertyDescriptor descriptor = helper.getDescriptor();
final PropertyDescriptor<Number> descriptor = helper.getDescriptor();
if (!double.class.equals(descriptor.getType()) && !Number.class.isAssignableFrom(descriptor.getType())) {
throw new IllegalArgumentException("Not a double property");
}
Expand Down

0 comments on commit f217d5e

Please sign in to comment.