Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -340,10 +340,10 @@ static int getConversionWeight(Object fromObj, TypeInfo to) {
return 1;
} else if (to.isInstance(fromObj)) {
return 2;
} else if (to.isCharacter()) {
return 3;
} else if (to.isPrimitive()) {
if (to.isCharacter()) {
return 3;
} else if (!to.isBoolean()) {
if (!to.isBoolean()) {
return 4;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,27 @@ public void testIntLongMap() {
expect(js, "Integer 4 Long 2 Long 2");
}

@Test
public void testCharacters() {
String js = "bean.primitiveChar = 'a';\nbean.primitiveChar";
FieldBasedBean fieldBasedBean = new FieldBasedBean();
MethodBasedBean methodBasedBean = new MethodBasedBean();
expect(js, "97", Map.of("bean", fieldBasedBean));
Assertions.assertEquals('a', fieldBasedBean.primitiveChar);
expect(js, "97", Map.of("bean", methodBasedBean));
Assertions.assertEquals('a', methodBasedBean.getPrimitiveChar());

js = "bean.complexChar = 'b';\nbean.complexChar";
expect(js, "b", Map.of("bean", fieldBasedBean));
Assertions.assertEquals('b', fieldBasedBean.complexChar);
expect(js, "b", Map.of("bean", methodBasedBean));
Assertions.assertEquals('b', methodBasedBean.getComplexChar());

js = "bean.setComplexChar('c');\nbean.complexChar";
expect(js, "c", Map.of("bean", methodBasedBean));
Assertions.assertEquals('c', methodBasedBean.getComplexChar());
}

private static void expect(String script, String expected) {
var bindings = new HashMap<String, Object>();
bindings.put("intList", IntegerArrayList.createTestObject());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
public class FieldBasedBean implements Serializable {
private static final long serialVersionUID = 1L;

public char primitiveChar = 0;
public Character complexChar = null;

public List<Integer> integers = new ArrayList<>();
private List<Double> doubles = new ArrayList<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
public class MethodBasedBean implements Serializable {
private static final long serialVersionUID = 1L;

private char primitiveChar = 0;
private Character complexChar = null;

private List<Integer> integers = new ArrayList<>();
private List<Double> doubles = new ArrayList<>();
private List<Number> numbers = new ArrayList<>();
Expand All @@ -29,6 +32,22 @@ public class MethodBasedBean implements Serializable {
private GenericBean<Integer> intBean2 = new IntegerGenericBean();
private GenericBean<Double> dblBean2 = new DoubleGenericBean();

public char getPrimitiveChar() {
return primitiveChar;
}

public void setPrimitiveChar(char primitiveChar) {
this.primitiveChar = primitiveChar;
}

public Character getComplexChar() {
return complexChar;
}

public void setComplexChar(Character complexChar) {
this.complexChar = complexChar;
}

public List<Double> getDoubles() {
return doubles;
}
Expand Down
Loading