.subclass(ExecutingTransformer.class) .name(ExecutingTransformer.class.getName() + "$ByteBuddy$ModuleSupport") .method(named("transform").and(takesArgument(0, JavaType.MODULE.load()))) .intercept(MethodCall.invoke(ExecutingTransformer.class.getDeclaredMethod("transform", Object.class,
public static <E> E createInstance(Class<E> entityClass) { Class<? extends E> loaded = new ByteBuddy() .subclass( entityClass ) .method( ElementMatchers.named( "toString" ) ) .intercept( FixedValue.value( "transformed" ) ) .make() // we use our internal helper to get a class loading strategy suitable for the JDK used .load( entityClass.getClassLoader(), resolveClassLoadingStrategy( entityClass ) ) .getLoaded(); try { return loaded.newInstance(); } catch (Exception e) { throw new RuntimeException( "Unable to create new instance of " + entityClass.getSimpleName(), e ); } }
@Override public <T> T newProxy(Class<T> interfaceType, Object handler) { Class<? extends T> cls = new ByteBuddy() .subclass(interfaceType) .method(ElementMatchers.isDeclaredBy(interfaceType)) .intercept(MethodDelegation.to(handler, "handler")) .make() .load(interfaceType.getClassLoader(), ClassLoadingStrategy.Default.INJECTION) .getLoaded(); try { return cls.newInstance(); } catch (Throwable t) { ThrowUtil.throwException(t); } return null; // never get here } });
static DynamicType.Builder<?> createEqualsAndHashCode(DynamicType.Builder<?> builder) { return builder .method(named("equals")).intercept(MethodDelegation.to(EqualsTarget.class)) .method(named("hashCode")).intercept(MethodDelegation.to(HashCodeTarget.class)); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)) .intercept(MethodDelegation.to(MapInAdjacentVerticesHandler.MapInAdjacentVerticesInterceptor.class)); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)) .intercept(MethodDelegation.to(MapInAdjacentPropertiesHandler.MapInAdjacentPropertiesInterceptor.class)); }
@Override public <T> T newProxy(Class<T> interfaceType, Object handler) { Class<? extends T> cls = new ByteBuddy() .subclass(interfaceType) .method(isDeclaredBy(interfaceType)) .intercept(to(handler, "handler").filter(not(isDeclaredBy(Object.class)))) .make() .load(interfaceType.getClassLoader(), INJECTION) .getLoaded(); return Reflects.newInstance(cls); } });
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)) .intercept(MethodDelegation.to(MapInAdjacentVerticesHandler.MapInAdjacentVerticesInterceptor.class)); }
@Override public final Builder<?> transitionResult(Builder<?> source, TypeDescription typeDescription) { final StackManipulationToken token = methodBodySmt.token(typeDescription); return source .method(elementMatcher) .intercept(new Implementation(token.stackManipulation())) .annotateMethod(new GeneratedInstance()); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)) .intercept(MethodDelegation.to(MapInAdjacentPropertiesHandler.MapInAdjacentPropertiesInterceptor.class)); }
protected T generateProxy() throws Exception { return (T) new net.bytebuddy.ByteBuddy() .subclass(target) .method(net.bytebuddy.matcher.ElementMatchers.any()) .intercept(net.bytebuddy.implementation.InvocationHandlerAdapter.of(this)) .make() .load(target.getClassLoader()).getLoaded().getDeclaredConstructor().newInstance(); }
new NamingStrategy.SuffixingRandom.BaseNameResolver.ForFixedValue( clazz.getName() ) ) ) .subclass( ReflectionOptimizer.InstantiationOptimizer.class ) .method( newInstanceMethodName ) .intercept( MethodCall.construct( constructor ) ) ); new NamingStrategy.SuffixingRandom.BaseNameResolver.ForFixedValue( clazz.getName() ) ) ) .subclass( ReflectionOptimizer.AccessOptimizer.class ) .method( getPropertyValuesMethodName ) .intercept( new Implementation.Simple( new GetPropertyValues( clazz, getters ) ) ) .method( setPropertyValuesMethodName )
Class<? extends T> proxied = builder.method(ElementMatchers.isDeclaredBy( Introspectior.getTypeDescription(RLiveObject.class)) .and(ElementMatchers.isGetter().or(ElementMatchers.isSetter())
Class<? extends T> proxied = builder.method(ElementMatchers.isDeclaredBy( Introspectior.getTypeDescription(RLiveObject.class)) .and(ElementMatchers.isGetter().or(ElementMatchers.isSetter())
@Override public <T> T newProxy(Class<T> interfaceType, Object handler) { Class<? extends T> cls = new ByteBuddy() .subclass(interfaceType) .method(ElementMatchers.isDeclaredBy(interfaceType)) .intercept(MethodDelegation.to(handler, "handler")) .make() .load(interfaceType.getClassLoader(), ClassLoadingStrategy.Default.INJECTION) .getLoaded(); try { return cls.newInstance(); } catch (Throwable t) { ThrowUtil.throwException(t); } return null; // never get here } });
Enhance enhance = typeDescription.getDeclaredAnnotations().ofType(Enhance.class).loadSilent(); if (typeDescription.getDeclaredMethods().filter(isHashCode()).isEmpty()) { builder = builder.method(isHashCode()).intercept(enhance.invokeSuper() .hashCodeMethod(typeDescription) .withIgnoredFields(enhance.includeSyntheticFields() .withStringTypedFieldsFirst(); builder = builder.method(isEquals()).intercept(enhance.permitSubclassEquality() ? equalsMethod.withSubclassEquality() : equalsMethod);
/** * {@inheritDoc} */ public DynamicType.Builder<?> apply(DynamicType.Builder<?> builder, TypeDescription typeDescription, ClassFileLocator classFileLocator) { Enhance enhance = typeDescription.getDeclaredAnnotations().ofType(Enhance.class).loadSilent(); if (typeDescription.getDeclaredMethods().filter(isToString()).isEmpty()) { builder = builder.method(isToString()).intercept(ToStringMethod.prefixedBy(enhance.prefix().getPrefixResolver()) .withIgnoredFields(enhance.includeSyntheticFields() ? ElementMatchers.<FieldDescription>none() : ElementMatchers.<FieldDescription>isSynthetic()) .withIgnoredFields(isAnnotatedWith(Exclude.class))); } return builder; }
/** * {@inheritDoc} */ public DynamicType.Builder<?> apply(DynamicType.Builder<?> builder, FieldDescription fieldDescription, Assigner assigner, MethodAccessorFactory methodAccessorFactory) { return builder .method(is(getterMethod)).intercept(new FieldGetter(fieldDescription, assigner, methodAccessorFactory)) .method(is(setterMethod)).intercept(fieldDescription.isFinal() ? ExceptionMethod.throwing(UnsupportedOperationException.class, "Cannot set final field " + fieldDescription) : new FieldSetter(fieldDescription, assigner, methodAccessorFactory)); } }
/** * {@inheritDoc} */ public DynamicType.Builder<?> apply(DynamicType.Builder<?> builder, FieldDescription fieldDescription, Assigner assigner, MethodAccessorFactory methodAccessorFactory) { return builder.method(is(setterMethod)).intercept(new FieldSetter(fieldDescription, assigner, methodAccessorFactory)); } }
/** * {@inheritDoc} */ public DynamicType.Builder<?> apply(DynamicType.Builder<?> builder, FieldDescription fieldDescription, Assigner assigner, MethodAccessorFactory methodAccessorFactory) { return builder.method(definedMethod(is(getterMethod))).intercept(new FieldGetter(fieldDescription, assigner, methodAccessorFactory)); } }