test_class.declarator: compilerFacade = new JavaCompilerFacade(
              JavaCompilerBeanPropertyReaderFactory.class.getClassLoader())
test_class.modifier: private final
test_class.original_string: private final JavaCompilerFacade compilerFacade = new JavaCompilerFacade(
              JavaCompilerBeanPropertyReaderFactory.class.getClassLoader());
test_class.type: JavaCompilerFacade
test_class.var_name: compilerFacade
test_class.declarator: reflections = new DefaultReflections()
test_class.modifier: private final
test_class.original_string: private final Reflections reflections = new DefaultReflections();
test_class.type: Reflections
test_class.var_name: reflections
test_class.declarator: fallback = new ReflectionFieldWriterFactory(reflections)
test_class.modifier: private
test_class.original_string: private FieldWriterFactory fallback = new ReflectionFieldWriterFactory(reflections);
test_class.type: FieldWriterFactory
test_class.var_name: fallback
test_class.declarator: factory = new JavaCompilerFieldWriterFactory(compilerFacade, reflections, fallback)
test_class.modifier: private
test_class.original_string: private FieldWriterFactory factory = new JavaCompilerFieldWriterFactory(compilerFacade, reflections, fallback);
test_class.type: FieldWriterFactory
test_class.var_name: factory
test_class.file: artemis-core/src/test/java/org/jnosql/artemis/reflection/JavaCompilerFieldWriterFactoryTest.java
test_class.identifier: JavaCompilerFieldWriterFactoryTest
test_case.body: @Test
      public void shouldCreateFieldWriter() {
          Foo foo = new Foo();
          foo.setBar("bar");
          FieldWriter writer = factory.apply(Foo.class.getDeclaredFields()[0]);
          Assertions.assertNotNull(writer);
          writer.write(foo, "bar");
          Assertions.assertEquals("bar", foo.getBar());
      }
test_case.class_method_signature: JavaCompilerFieldWriterFactoryTest.shouldCreateFieldWriter()
test_case.full_signature: @Test public void shouldCreateFieldWriter()
test_case.identifier: shouldCreateFieldWriter
test_case.invocations: setBar apply getDeclaredFields assertNotNull write assertEquals getBar
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void shouldCreateFieldWriter()
focal_class.declarator: LOGGER = Logger.getLogger(JavaCompilerFieldWriterFactory.class.getName())
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOGGER = Logger.getLogger(JavaCompilerFieldWriterFactory.class.getName());
focal_class.type: Logger
focal_class.var_name: LOGGER
focal_class.declarator: TEMPLATE_FILE = "FieldWriter.template"
focal_class.modifier: private static final
focal_class.original_string: private static final String TEMPLATE_FILE = "FieldWriter.template";
focal_class.type: String
focal_class.var_name: TEMPLATE_FILE
focal_class.declarator: TEMPLATE = TemplateReader.INSTANCE.apply(TEMPLATE_FILE)
focal_class.modifier: private static final
focal_class.original_string: private static final String TEMPLATE = TemplateReader.INSTANCE.apply(TEMPLATE_FILE);
focal_class.type: String
focal_class.var_name: TEMPLATE
focal_class.declarator: compilerFacade
focal_class.modifier: private final
focal_class.original_string: private final JavaCompilerFacade compilerFacade;
focal_class.type: JavaCompilerFacade
focal_class.var_name: compilerFacade
focal_class.declarator: reflections
focal_class.modifier: private final
focal_class.original_string: private final Reflections reflections;
focal_class.type: Reflections
focal_class.var_name: reflections
focal_class.declarator: fallback
focal_class.modifier: private final
focal_class.original_string: private final FieldWriterFactory fallback;
focal_class.type: FieldWriterFactory
focal_class.var_name: fallback
focal_class.file: artemis-core/src/main/java/org/jnosql/artemis/reflection/JavaCompilerFieldWriterFactory.java
focal_class.identifier: JavaCompilerFieldWriterFactory
focal_class.interfaces: implements FieldWriterFactory
focal_class.class_method_signature: JavaCompilerFieldWriterFactory.JavaCompilerFieldWriterFactory(JavaCompilerFacade compilerFacade, Reflections reflections, FieldWriterFactory fallback)
focal_class.full_signature:   JavaCompilerFieldWriterFactory(JavaCompilerFacade compilerFacade, Reflections reflections, FieldWriterFactory fallback)
focal_class.identifier: JavaCompilerFieldWriterFactory
focal_class.parameters: (JavaCompilerFacade compilerFacade, Reflections reflections, FieldWriterFactory fallback)
focal_class.signature:  JavaCompilerFieldWriterFactory(JavaCompilerFacade compilerFacade, Reflections reflections, FieldWriterFactory fallback)
focal_class.class_method_signature: JavaCompilerFieldWriterFactory.apply(Field field)
focal_class.full_signature: @Override public FieldWriter apply(Field field)
focal_class.identifier: apply
focal_class.modifiers: @Override public
focal_class.parameters: (Field field)
focal_class.return: FieldWriter
focal_class.signature: FieldWriter apply(Field field)
focal_class.class_method_signature: JavaCompilerFieldWriterFactory.compile(Class<?> declaringClass, Class<?> type)
focal_class.full_signature: private Function<String, FieldWriter> compile(Class<?> declaringClass, Class<?> type)
focal_class.identifier: compile
focal_class.modifiers: private
focal_class.parameters: (Class<?> declaringClass, Class<?> type)
focal_class.return: Function<String, FieldWriter>
focal_class.signature: Function<String, FieldWriter> compile(Class<?> declaringClass, Class<?> type)
focal_class.class_method_signature: JavaCompilerFieldWriterFactory.getMethodName(Class<?> declaringClass, Field field)
focal_class.full_signature: private Optional<String> getMethodName(Class<?> declaringClass, Field field)
focal_class.identifier: getMethodName
focal_class.modifiers: private
focal_class.parameters: (Class<?> declaringClass, Field field)
focal_class.return: Optional<String>
focal_class.signature: Optional<String> getMethodName(Class<?> declaringClass, Field field)
focal_method.body: @Override
      public FieldWriter apply(Field field) {
  
          Class<?> declaringClass = field.getDeclaringClass();
          Optional<String> methodName = getMethodName(declaringClass, field);
  
          FieldWriter fieldWriter = methodName.map(compile(declaringClass, field.getType()))
                  .orElseGet(() -> fallback.apply(field));
  
          return fieldWriter;
      }
focal_method.class_method_signature: JavaCompilerFieldWriterFactory.apply(Field field)
focal_method.full_signature: @Override public FieldWriter apply(Field field)
focal_method.identifier: apply
focal_method.invocations: getDeclaringClass getMethodName orElseGet map compile getType apply
focal_method.modifiers: @Override public
focal_method.parameters: (Field field)
focal_method.return: FieldWriter
focal_method.signature: FieldWriter apply(Field field)