@Before public void setUp() throws Exception { explicitAuxiliaryTypes = Collections.singletonList(firstAuxiliary); when(engine.create(any(Instrumentation.Context.ExtractableView.class))).thenReturn(MAIN); when(firstAuxiliary.getTypeDescription()).thenReturn(otherAuxiliaryDescription); when(firstAuxiliary.getBytes()).thenReturn(FIRST); }
@Override public int hashCode() { int result = super.hashCode(); result = 31 * result + placeholderType.hashCode(); result = 31 * result + methodNameTransformer.hashCode(); return result; }
@Override protected Resolution rebase(MethodDescription.InDefinedShape methodDescription) { return methodDescription.isConstructor() ? Resolution.ForRebasedConstructor.of( methodDescription, placeholderType.getTypeDescription()) : Resolution.ForRebasedMethod.of(methodDescription, methodNameTransformer); }
@Override public boolean equals(Object other) { return this == other || !(other == null || getClass() != other.getClass()) && super.equals(other) && placeholderType.equals(((Enabled) other).placeholderType) && methodNameTransformer.equals(((Enabled) other).methodNameTransformer); }
@Test public void testDynamicTypeCreation() throws Exception { DynamicType dynamicType = new TypeWriter.Default<Object>( instrumentedType, loadedTypeInitializer, typeInitializer, explicitAuxiliaryTypes, classFileVersion, engine) .make(); assertThat(dynamicType.getBytes(), is(MAIN)); assertThat(dynamicType.getTypeDescription(), is(instrumentedType)); assertThat( dynamicType.getLoadedTypeInitializers().get(instrumentedType), is(loadedTypeInitializer)); assertThat(dynamicType.getRawAuxiliaryTypes().size(), is(1)); assertThat(dynamicType.getRawAuxiliaryTypes().get(otherAuxiliaryDescription), is(FIRST)); }
@Test public void testPlain() throws Exception { when(classFileVersion.getMinorMajorVersion()) .thenReturn(ClassFileVersion.JAVA_V5.getMinorMajorVersion()); DynamicType dynamicType = TrivialType.PLAIN.make(FOO, classFileVersion, methodAccessorFactory); assertThat(dynamicType.getTypeDescription().getName(), is(FOO)); assertThat(dynamicType.getTypeDescription().getModifiers(), is(Opcodes.ACC_SYNTHETIC)); assertThat(dynamicType.getTypeDescription().getDeclaredAnnotations().size(), is(0)); assertThat(dynamicType.getAuxiliaryTypes().size(), is(0)); assertThat( dynamicType.getLoadedTypeInitializers().get(dynamicType.getTypeDescription()).isAlive(), is(false)); }
@Test public void testEager() throws Exception { when(classFileVersion.getMinorMajorVersion()) .thenReturn(ClassFileVersion.JAVA_V5.getMinorMajorVersion()); DynamicType dynamicType = TrivialType.SIGNATURE_RELEVANT.make(FOO, classFileVersion, methodAccessorFactory); assertThat(dynamicType.getTypeDescription().getName(), is(FOO)); assertThat(dynamicType.getTypeDescription().getModifiers(), is(Opcodes.ACC_SYNTHETIC)); assertThat(dynamicType.getTypeDescription().getDeclaredAnnotations().size(), is(1)); assertThat( dynamicType .getTypeDescription() .getDeclaredAnnotations() .isAnnotationPresent(AuxiliaryType.SignatureRelevant.class), is(true)); assertThat(dynamicType.getAuxiliaryTypes().size(), is(0)); assertThat( dynamicType.getLoadedTypeInitializers().get(dynamicType.getTypeDescription()).isAlive(), is(false)); }