package org.simpleflatmapper.reflect.test.asm.sample; import org.simpleflatmapper.reflect.test.BuilderInstantiatorDefinitionFactoryTest; import org.simpleflatmapper.reflect.Getter; import org.simpleflatmapper.reflect.Instantiator; import org.simpleflatmapper.reflect.primitive.IntGetter; import java.io.InputStream; import java.util.Map; public final class BuilderInstantiator implements Instantiator<InputStream, BuilderInstantiatorDefinitionFactoryTest.ClassBuilderWithMethod> { final Instantiator<Void, BuilderInstantiatorDefinitionFactoryTest.ClassBuilderWithMethod.Builder> builderInstantiator; final IntGetter<InputStream> getter_id; final Getter<InputStream, String> getter_name; @SuppressWarnings("unchecked") public BuilderInstantiator(final Map<String, Getter<InputStream, ?>> injections, Instantiator<Void, BuilderInstantiatorDefinitionFactoryTest.ClassBuilderWithMethod.Builder> builderInstantiator) { this.builderInstantiator = builderInstantiator; this.getter_id = (IntGetter<InputStream>) injections.get("id"); this.getter_name = (Getter<InputStream, String>) injections.get("name"); } @Override public BuilderInstantiatorDefinitionFactoryTest.ClassBuilderWithMethod newInstance(InputStream source) throws Exception { BuilderInstantiatorDefinitionFactoryTest.ClassBuilderWithMethod.Builder builder = builderInstantiator.newInstance(null); builder = builder.id(getter_id.getInt(source)); builder.name(getter_name.get(source)); return builder.build(); } }