Merge pull request #33 from processing/fix_can_access

Fixed Table's use of deprecated isAccessible
This commit is contained in:
Ben Fry
2019-11-26 05:42:10 -05:00
committed by GitHub
2 changed files with 54 additions and 9 deletions

View File

@@ -1065,7 +1065,7 @@ public class Table {
con = target.getDeclaredConstructor(new Class[] { enclosingClass });
// PApplet.println("enclosed by " + enclosingClass.getName());
}
if (!con.isAccessible()) {
if (!con.canAccess(null)) {
// System.out.println("setting constructor to public");
con.setAccessible(true);
}
@@ -1080,11 +1080,6 @@ public class Table {
for (Field field : fields) {
String name = field.getName();
if (getColumnIndex(name, false) != -1) {
// System.out.println("found field " + name);
if (!field.isAccessible()) {
// PApplet.println(" changing field access");
field.setAccessible(true);
}
inuse.add(field);
} else {
// System.out.println("skipping field " + name);
@@ -1099,12 +1094,23 @@ public class Table {
//item = target.newInstance();
item = con.newInstance();
} else {
item = con.newInstance(new Object[] { enclosingObject });
item = con.newInstance(enclosingObject);
}
// Only needed once
if (index == 0) {
for (Field field : inuse) {
if (!field.canAccess(item)) {
// PApplet.println(" changing field access");
field.setAccessible(true);
}
}
}
//Object item = defaultCons.newInstance(new Object[] { });
for (Field field : inuse) {
String name = field.getName();
//PApplet.println("gonna set field " + name);
// PApplet.println("gonna set field " + name);
if (field.getType() == String.class) {
field.set(item, row.getString(name));
@@ -1151,7 +1157,7 @@ public class Table {
// list.add(item);
Array.set(outgoing, index++, item);
}
if (!targetField.isAccessible()) {
if (!targetField.canAccess(enclosingObject)) {
// PApplet.println("setting target field to public");
targetField.setAccessible(true);
}

View File

@@ -0,0 +1,39 @@
package processing.data;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class TableTest {
class Person {
public String name;
public int age;
public Person() {
name = "";
age = -1;
}
}
Person[] people;
@Test
public void parseInto() {
Table table = new Table();
table.addColumn("name");
table.addColumn("age");
TableRow row = table.addRow();
row.setString("name", "Person1");
row.setInt("age", 30);
table.parseInto(this, "people");
Assert.assertEquals(people[0].name, "Person1");
Assert.assertEquals(people[0].age, 30);
}
}