/** * Returns the loaded version of the given {@link JavaConstant}. The value is loaded from the written class's constant pool. * * @param fixedValue The type to return from the method. * @return An implementation for the given {@code value}. */ public static AssignerConfigurable value(JavaConstant fixedValue) { return new ForPoolValue(new JavaConstantValue(fixedValue), fixedValue.getType()); }
/** * {@inheritDoc} */ public Resolved resolve(TypeDescription instrumentedType, MethodDescription instrumentedMethod, Assigner assigner, Assigner.Typing typing) { return new Resolved.Simple(new JavaConstantValue(javaConstant), javaConstant.getType()); }
/** * Defines the given Java instances to be provided as arguments to the invoked method where the given * instances are stored in the generated class's constant pool. * * @param javaConstant The Java instances to provide as arguments. * @return A method call that hands the provided arguments to the invoked method. */ public MethodCall with(JavaConstant... javaConstant) { List<ArgumentLoader.Factory> argumentLoaders = new ArrayList<ArgumentLoader.Factory>(javaConstant.length); for (JavaConstant aJavaConstant : javaConstant) { argumentLoaders.add(new ArgumentLoader.ForStackManipulation(new JavaConstantValue(aJavaConstant), aJavaConstant.getType())); } return with(argumentLoaders); }
/** * {@inheritDoc} */ public Composable setsValue(JavaConstant constant) { return setsValue(new JavaConstantValue(constant), constant.getType().asGenericType()); }
return new MethodDelegationBinder.ParameterBinding.Anonymous(IntegerConstant.forValue(source.getModifiers())); } else if (parameterType.equals(JavaType.METHOD_HANDLE.getTypeStub())) { return new MethodDelegationBinder.ParameterBinding.Anonymous(new JavaConstantValue(JavaConstant.MethodHandle.of(source.asDefined()))); } else if (parameterType.equals(JavaType.METHOD_TYPE.getTypeStub())) { return new MethodDelegationBinder.ParameterBinding.Anonymous(new JavaConstantValue(JavaConstant.MethodType.of(source.asDefined()))); } else { throw new IllegalStateException("The " + target + " method's " + target.getIndex() +
return new ForPoolValue(DoubleConstant.forValue((Double) fixedValue), double.class); } else if (JavaType.METHOD_HANDLE.getTypeStub().isAssignableFrom(type)) { return new ForPoolValue(new JavaConstantValue(JavaConstant.MethodHandle.ofLoaded(fixedValue)), type); } else if (JavaType.METHOD_TYPE.getTypeStub().represents(type)) { return new ForPoolValue(new JavaConstantValue(JavaConstant.MethodType.ofLoaded(fixedValue)), type); } else { return reference(fixedValue);
return new ForStackManipulation(ClassConstant.of(TypeDescription.ForLoadedType.of((Class<?>) value)), Class.class); } else if (JavaType.METHOD_HANDLE.getTypeStub().isInstance(value)) { return new ForStackManipulation(new JavaConstantValue(JavaConstant.MethodHandle.ofLoaded(value)), JavaType.METHOD_HANDLE.getTypeStub()); } else if (JavaType.METHOD_TYPE.getTypeStub().isInstance(value)) { return new ForStackManipulation(new JavaConstantValue(JavaConstant.MethodType.ofLoaded(value)), JavaType.METHOD_TYPE.getTypeStub()); } else if (value instanceof Enum<?>) { EnumerationDescription enumerationDescription = new EnumerationDescription.ForLoadedEnumeration((Enum<?>) value);
suppliedType = TypeDescription.CLASS; } else if (JavaType.METHOD_HANDLE.getTypeStub().isInstance(value)) { stackManipulation = new JavaConstantValue(JavaConstant.MethodHandle.ofLoaded(value)); suppliedType = JavaType.METHOD_HANDLE.getTypeStub(); } else if (value instanceof JavaConstant.MethodHandle) { stackManipulation = new JavaConstantValue((JavaConstant.MethodHandle) value); suppliedType = JavaType.METHOD_HANDLE.getTypeStub(); } else if (JavaType.METHOD_TYPE.getTypeStub().isInstance(value)) { stackManipulation = new JavaConstantValue(JavaConstant.MethodType.ofLoaded(value)); suppliedType = JavaType.METHOD_HANDLE.getTypeStub(); } else if (value instanceof JavaConstant.MethodType) { stackManipulation = new JavaConstantValue((JavaConstant.MethodType) value); suppliedType = JavaType.METHOD_HANDLE.getTypeStub(); } else {
return setsValue(DoubleConstant.forValue((Double) value), double.class); } else if (JavaType.METHOD_HANDLE.getTypeStub().isAssignableFrom(type)) { return setsValue(new JavaConstantValue(JavaConstant.MethodHandle.ofLoaded(value)), type); } else if (JavaType.METHOD_TYPE.getTypeStub().represents(type)) { return setsValue(new JavaConstantValue(JavaConstant.MethodType.ofLoaded(value)), type); } else { return setsReference(value);