|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2019 the original author or authors. |
| 2 | + * Copyright 2002-2022 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
23 | 23 | import org.junit.jupiter.api.Test;
|
24 | 24 |
|
25 | 25 | import org.springframework.beans.testfixture.beans.TestBean;
|
| 26 | +import org.springframework.core.OverridingClassLoader; |
| 27 | +import org.springframework.core.io.DefaultResourceLoader; |
26 | 28 |
|
27 | 29 | import static org.assertj.core.api.Assertions.assertThat;
|
28 | 30 | import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
@@ -104,7 +106,7 @@ public void checkNotWritablePropertyHoldPossibleMatches() {
|
104 | 106 | .satisfies(ex -> assertThat(ex.getPossibleMatches()).containsExactly("age"));
|
105 | 107 | }
|
106 | 108 |
|
107 |
| - @Test // Can't be shared; there is no such thing as a read-only field |
| 109 | + @Test // Can't be shared; there is no such thing as a read-only field |
108 | 110 | public void setReadOnlyMapProperty() {
|
109 | 111 | TypedReadOnlyMap map = new TypedReadOnlyMap(Collections.singletonMap("key", new TestBean()));
|
110 | 112 | TypedReadOnlyMapClient target = new TypedReadOnlyMapClient();
|
@@ -156,12 +158,34 @@ public void propertyDescriptors() {
|
156 | 158 | BeanWrapper accessor = createAccessor(target);
|
157 | 159 | accessor.setPropertyValue("name", "a");
|
158 | 160 | accessor.setPropertyValue("spouse.name", "b");
|
| 161 | + |
159 | 162 | assertThat(target.getName()).isEqualTo("a");
|
160 | 163 | assertThat(target.getSpouse().getName()).isEqualTo("b");
|
161 | 164 | assertThat(accessor.getPropertyValue("name")).isEqualTo("a");
|
162 | 165 | assertThat(accessor.getPropertyValue("spouse.name")).isEqualTo("b");
|
163 | 166 | assertThat(accessor.getPropertyDescriptor("name").getPropertyType()).isEqualTo(String.class);
|
164 | 167 | assertThat(accessor.getPropertyDescriptor("spouse.name").getPropertyType()).isEqualTo(String.class);
|
| 168 | + |
| 169 | + assertThat(accessor.isReadableProperty("class.package")).isFalse(); |
| 170 | + assertThat(accessor.isReadableProperty("class.module")).isFalse(); |
| 171 | + assertThat(accessor.isReadableProperty("class.classLoader")).isFalse(); |
| 172 | + assertThat(accessor.isReadableProperty("class.name")).isTrue(); |
| 173 | + assertThat(accessor.isReadableProperty("class.simpleName")).isTrue(); |
| 174 | + assertThat(accessor.getPropertyValue("class.name")).isEqualTo(TestBean.class.getName()); |
| 175 | + assertThat(accessor.getPropertyValue("class.simpleName")).isEqualTo(TestBean.class.getSimpleName()); |
| 176 | + assertThat(accessor.getPropertyDescriptor("class.name").getPropertyType()).isEqualTo(String.class); |
| 177 | + assertThat(accessor.getPropertyDescriptor("class.simpleName").getPropertyType()).isEqualTo(String.class); |
| 178 | + |
| 179 | + accessor = createAccessor(new DefaultResourceLoader()); |
| 180 | + |
| 181 | + assertThat(accessor.isReadableProperty("class.package")).isFalse(); |
| 182 | + assertThat(accessor.isReadableProperty("class.module")).isFalse(); |
| 183 | + assertThat(accessor.isReadableProperty("class.classLoader")).isFalse(); |
| 184 | + assertThat(accessor.isReadableProperty("classLoader")).isTrue(); |
| 185 | + assertThat(accessor.isWritableProperty("classLoader")).isTrue(); |
| 186 | + OverridingClassLoader ocl = new OverridingClassLoader(getClass().getClassLoader()); |
| 187 | + accessor.setPropertyValue("classLoader", ocl); |
| 188 | + assertThat(accessor.getPropertyValue("classLoader")).isSameAs(ocl); |
165 | 189 | }
|
166 | 190 |
|
167 | 191 | @Test
|
|
0 commit comments