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 ReflectionFieldReaderFactory(reflections)
test_class.modifier: private
test_class.original_string: private FieldReaderFactory fallback = new ReflectionFieldReaderFactory(reflections);
test_class.type: FieldReaderFactory
test_class.var_name: fallback
test_class.declarator: factory = new JavaCompilerFieldReaderFactory(compilerFacade, reflections, fallback)
test_class.modifier: private
test_class.original_string: private FieldReaderFactory factory = new JavaCompilerFieldReaderFactory(compilerFacade, reflections, fallback);
test_class.type: FieldReaderFactory
test_class.var_name: factory
test_class.file: artemis-core/src/test/java/org/jnosql/artemis/reflection/JavaCompilerFieldReaderFactoryTest.java
test_class.identifier: JavaCompilerFieldReaderFactoryTest
test_case.body: @Test
      public void shouldCreateFieldReader() {
          Foo foo = new Foo();
          foo.setBar("bar");
          FieldReader fieldReader = factory.apply(Foo.class.getDeclaredFields()[0]);
          Assertions.assertNotNull(fieldReader);
          Object value = fieldReader.read(foo);
          Assertions.assertEquals("bar", value);
      }
test_case.class_method_signature: JavaCompilerFieldReaderFactoryTest.shouldCreateFieldReader()
test_case.full_signature: @Test public void shouldCreateFieldReader()
test_case.identifier: shouldCreateFieldReader
test_case.invocations: setBar apply getDeclaredFields assertNotNull read assertEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void shouldCreateFieldReader()
focal_class.declarator: LOGGER = Logger.getLogger(JavaCompilerFieldReaderFactory.class.getName())
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOGGER = Logger.getLogger(JavaCompilerFieldReaderFactory.class.getName());
focal_class.type: Logger
focal_class.var_name: LOGGER
focal_class.declarator: TEMPLATE_FILE = "FieldReader.tempalte"
focal_class.modifier: private static final
focal_class.original_string: private static final String TEMPLATE_FILE = "FieldReader.tempalte";
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 FieldReaderFactory fallback;
focal_class.type: FieldReaderFactory
focal_class.var_name: fallback
focal_class.file: artemis-core/src/main/java/org/jnosql/artemis/reflection/JavaCompilerFieldReaderFactory.java
focal_class.identifier: JavaCompilerFieldReaderFactory
focal_class.interfaces: implements FieldReaderFactory
focal_class.class_method_signature: JavaCompilerFieldReaderFactory.JavaCompilerFieldReaderFactory(JavaCompilerFacade compilerFacade, Reflections reflections, FieldReaderFactory fallback)
focal_class.full_signature:   JavaCompilerFieldReaderFactory(JavaCompilerFacade compilerFacade, Reflections reflections, FieldReaderFactory fallback)
focal_class.identifier: JavaCompilerFieldReaderFactory
focal_class.parameters: (JavaCompilerFacade compilerFacade, Reflections reflections, FieldReaderFactory fallback)
focal_class.signature:  JavaCompilerFieldReaderFactory(JavaCompilerFacade compilerFacade, Reflections reflections, FieldReaderFactory fallback)
focal_class.class_method_signature: JavaCompilerFieldReaderFactory.apply(Field field)
focal_class.full_signature: @Override public FieldReader apply(Field field)
focal_class.identifier: apply
focal_class.modifiers: @Override public
focal_class.parameters: (Field field)
focal_class.return: FieldReader
focal_class.signature: FieldReader apply(Field field)
focal_class.class_method_signature: JavaCompilerFieldReaderFactory.compile(Class<?> declaringClass)
focal_class.full_signature: private Function<String, FieldReader> compile(Class<?> declaringClass)
focal_class.identifier: compile
focal_class.modifiers: private
focal_class.parameters: (Class<?> declaringClass)
focal_class.return: Function<String, FieldReader>
focal_class.signature: Function<String, FieldReader> compile(Class<?> declaringClass)
focal_class.class_method_signature: JavaCompilerFieldReaderFactory.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 FieldReader apply(Field field) {
  
          Class<?> declaringClass = field.getDeclaringClass();
          Optional<String> methodName = getMethodName(declaringClass, field);
  
          FieldReader fieldReader = methodName.map(compile(declaringClass))
                  .orElseGet(() -> fallback.apply(field));
  
          return fieldReader;
      }
focal_method.class_method_signature: JavaCompilerFieldReaderFactory.apply(Field field)
focal_method.full_signature: @Override public FieldReader apply(Field field)
focal_method.identifier: apply
focal_method.invocations: getDeclaringClass getMethodName orElseGet map compile apply
focal_method.modifiers: @Override public
focal_method.parameters: (Field field)
focal_method.return: FieldReader
focal_method.signature: FieldReader apply(Field field)