- static @NonNull EncapsulatedValueCodec of(final Class<?> typeClz, final TypeDefinition<?> typeDef)
- throws ExecutionException {
- return CACHE.get(typeClz, () -> {
- final Method m = typeClz.getMethod(BindingMapping.SCALAR_TYPE_OBJECT_GET_VALUE_NAME);
- final Lookup lookup = MethodHandles.publicLookup();
- final MethodHandle getter = lookup.unreflect(m).asType(OBJ_METHOD);
- final Class<?> valueType = m.getReturnType();
- final MethodHandle constructor = lookup.findConstructor(typeClz,
- MethodType.methodType(void.class, valueType)).asType(OBJ_METHOD);
- return new EncapsulatedValueCodec(typeClz, constructor, getter, valueType);
- });
+ static @NonNull EncapsulatedValueCodec of(final Class<?> typeClz) throws ExecutionException {
+ // FIXME: require base class to be ScalarTypeObject
+ return CACHE.get(typeClz);