Skip to content

Commit f3fced6

Browse files
committed
Add additional test and assure lazy resolution of some modifier properties.
1 parent 6cb310e commit f3fced6

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

.mvn/checksums.sha256

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ codes.rafael.asmjdkbridge:asm-jdk-bridge:jar:0.0.6 1274279e722893d5566dbfeb79441
5252
codes.rafael.asmjdkbridge:asm-jdk-bridge:jar:0.0.7 0f03b065a7f8d2084213b36d7f60eb9b051d37d52dedf0c7b942bb2ae6e3b643
5353
codes.rafael.asmjdkbridge:asm-jdk-bridge:jar:0.0.8 046c716ee03b45d5cd0b801183cc8dff1f2bf7e854c097457c0fee7afbce0d73
5454
codes.rafael.asmjdkbridge:asm-jdk-bridge:jar:0.0.9 3f7a5d593e0a56b1a5e69f0b0474d4fba5ea8d8cb0fe1d2952e71201cb65e20e
55+
codes.rafael.asmjdkbridge:asm-jdk-bridge:jar:sources:0.0.10 170ead3613f036baf2e2142dc6385a5b2320df427f9892a8b3f5c58c54c23711
5556
codes.rafael.asmjdkbridge:asm-jdk-bridge:jar:sources:0.0.2 681eb8c703ddd28797d7eaeb975ce3546068b8e49f5b47a841919689e7ca267f
5657
codes.rafael.asmjdkbridge:asm-jdk-bridge:jar:sources:0.0.4 c76939fe1ecef6fe571d25ba2a3a7c708151152170083b27b01afe104283fa12
5758
codes.rafael.asmjdkbridge:asm-jdk-bridge:jar:sources:0.0.6 3fca530e91539b7a006fb194dbfd31d61e97e6d64bcce5366b68f96cf44bbca0

byte-buddy-dep/src/main/java/net/bytebuddy/description/type/TypeDescription.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8602,6 +8602,26 @@ public int getModifiers() {
86028602
return delegate().getModifiers();
86038603
}
86048604

8605+
@Override
8606+
public boolean isAbstract() {
8607+
return delegate().isAbstract();
8608+
}
8609+
8610+
@Override
8611+
public boolean isEnum() {
8612+
return delegate().isEnum();
8613+
}
8614+
8615+
@Override
8616+
public boolean isInterface() {
8617+
return delegate().isInterface();
8618+
}
8619+
8620+
@Override
8621+
public boolean isAnnotation() {
8622+
return delegate().isAnnotation();
8623+
}
8624+
86058625
@Override
86068626
@MaybeNull
86078627
public String getGenericSignature() {

byte-buddy-dep/src/test/java/net/bytebuddy/pool/TypePoolDefaultWithLazyResolutionTypeDescriptionTest.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,19 @@
77
import net.bytebuddy.dynamic.scaffold.InstrumentedType;
88
import net.bytebuddy.dynamic.scaffold.MethodGraph;
99
import net.bytebuddy.dynamic.scaffold.TypeValidation;
10+
import net.bytebuddy.utility.AsmClassReader;
1011
import org.hamcrest.CoreMatchers;
1112
import org.junit.Test;
1213
import org.junit.runner.RunWith;
1314
import org.junit.runners.Parameterized;
15+
import org.objectweb.asm.ClassVisitor;
1416

1517
import java.lang.reflect.Field;
1618
import java.lang.reflect.Method;
19+
import java.lang.reflect.Modifier;
1720
import java.util.Arrays;
1821
import java.util.Collection;
22+
import java.util.List;
1923

2024
import static net.bytebuddy.matcher.ElementMatchers.is;
2125
import static org.hamcrest.MatcherAssert.assertThat;
@@ -251,6 +255,66 @@ public void testSimpleName() throws Exception {
251255
assertThat(describe($DollarInName.class).getSimpleName(), CoreMatchers.is($DollarInName.class.getSimpleName()));
252256
}
253257

258+
@Test
259+
public void testClassFileIsNotParsedForExtendedProperties() throws Exception {
260+
if (lazinessMode == TypePool.Default.WithLazyResolution.LazinessMode.NAME) {
261+
return;
262+
}
263+
TypeDescription typeDescription = new TypePool.Default.WithLazyResolution(new TypePool.CacheProvider.Simple(),
264+
ClassFileLocator.ForClassLoader.of(NonGenericType.class.getClassLoader()),
265+
TypePool.Default.ReaderMode.EXTENDED,
266+
new AsmClassReader.Factory() {
267+
public AsmClassReader make(byte[] binaryRepresentation) {
268+
return make(Default.IMPLICIT.make(binaryRepresentation));
269+
}
270+
271+
public AsmClassReader make(byte[] binaryRepresentation, boolean experimental) {
272+
return make(Default.IMPLICIT.make(binaryRepresentation, experimental));
273+
}
274+
275+
private AsmClassReader make(final AsmClassReader delegate) {
276+
return new AsmClassReader() {
277+
@Override
278+
public <T> T unwrap(Class<T> type) {
279+
return delegate.unwrap(type);
280+
}
281+
282+
@Override
283+
public int getModifiers() {
284+
return delegate.getModifiers();
285+
}
286+
287+
@Override
288+
public String getInternalName() {
289+
return delegate.getInternalName();
290+
}
291+
292+
@Override
293+
public String getSuperClassInternalName() {
294+
return delegate.getSuperClassInternalName();
295+
}
296+
297+
@Override
298+
public List<String> getInterfaceInternalNames() {
299+
return delegate.getInterfaceInternalNames();
300+
}
301+
302+
@Override
303+
public void accept(ClassVisitor classVisitor, int flags) {
304+
throw new AssertionError();
305+
}
306+
};
307+
}
308+
},
309+
lazinessMode).describe(NonGenericType.class.getName()).resolve();
310+
assertThat(typeDescription.getSuperClass().asErasure().getName(), CoreMatchers.is(NonGenericType.class.getSuperclass().getName()));
311+
assertThat(typeDescription.getInterfaces().get(0).asErasure().getName(), CoreMatchers.is(NonGenericType.class.getInterfaces()[0].getName()));
312+
assertThat(typeDescription.isAbstract(), CoreMatchers.is(Modifier.isAbstract(NonGenericType.class.getModifiers())));
313+
assertThat(typeDescription.isInterface(), CoreMatchers.is(Modifier.isInterface(NonGenericType.class.getModifiers())));
314+
assertThat(typeDescription.isAnnotation(), CoreMatchers.is(Modifier.isInterface(NonGenericType.class.getModifiers())));
315+
assertThat(typeDescription.isEnum(), CoreMatchers.is(NonGenericType.class.isEnum()));
316+
}
317+
254318
private static class SuperClass {
255319
/* empty */
256320
}

0 commit comments

Comments
 (0)