test_class.declarator: sagaTypes
test_class.modifier: private
test_class.original_string: private Collection<Class<? extends Saga>> sagaTypes;
test_class.type: Collection<Class<? extends Saga>>
test_class.var_name: sagaTypes
test_class.declarator: sut
test_class.modifier: private
test_class.original_string: private AnnotationSagaAnalyzer sut;
test_class.type: AnnotationSagaAnalyzer
test_class.var_name: sut
test_class.file: saga-lib/src/test/java/com/codebullets/sagalib/startup/AnnotationSagaAnalyzerTest.java
test_class.identifier: AnnotationSagaAnalyzerTest
test_case.body: @Test
      public void scanHandledMessageTypes_testSagaFound_returnsStartHandlerOfTypeString() throws NoSuchMethodException {
          // given
          sagaTypes.add(TestSaga.class);
  
          // when
          Map<Class<? extends Saga>, SagaHandlersMap> scanResult = sut.scanHandledMessageTypes();
  
          // then
          SagaHandlersMap handlers = scanResult.get(TestSaga.class);
          assertThat(
                  "Handler has entry with start saga flag set.",
                  handlers.messageHandlers(),
                  hasItem(samePropertyValuesAs(new MessageHandler(String.class, TestSaga.startupMethod(), true))));
      }
test_case.class_method_signature: AnnotationSagaAnalyzerTest.scanHandledMessageTypes_testSagaFound_returnsStartHandlerOfTypeString()
test_case.full_signature: @Test public void scanHandledMessageTypes_testSagaFound_returnsStartHandlerOfTypeString()
test_case.identifier: scanHandledMessageTypes_testSagaFound_returnsStartHandlerOfTypeString
test_case.invocations: add scanHandledMessageTypes get assertThat messageHandlers hasItem samePropertyValuesAs startupMethod
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void scanHandledMessageTypes_testSagaFound_returnsStartHandlerOfTypeString()
focal_class.declarator: LOG = LoggerFactory.getLogger(AnnotationSagaAnalyzer.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOG = LoggerFactory.getLogger(AnnotationSagaAnalyzer.class);
focal_class.type: Logger
focal_class.var_name: LOG
focal_class.declarator: sync = new Object()
focal_class.modifier: private final
focal_class.original_string: private final Object sync = new Object();
focal_class.type: Object
focal_class.var_name: sync
focal_class.declarator: scanner
focal_class.modifier: private final
focal_class.original_string: private final TypeScanner scanner;
focal_class.type: TypeScanner
focal_class.var_name: scanner
focal_class.declarator: scanResult
focal_class.modifier: private
focal_class.original_string: private Map<Class<? extends Saga>, SagaHandlersMap> scanResult;
focal_class.type: Map<Class<? extends Saga>, SagaHandlersMap>
focal_class.var_name: scanResult
focal_class.declarator: startSagaAnnotations = new ArrayList<>()
focal_class.modifier: private final
focal_class.original_string: private final Collection<Class<? extends Annotation>> startSagaAnnotations = new ArrayList<>();
focal_class.type: Collection<Class<? extends Annotation>>
focal_class.var_name: startSagaAnnotations
focal_class.declarator: handlerAnnotations = new ArrayList<>()
focal_class.modifier: private final
focal_class.original_string: private final Collection<Class<? extends Annotation>> handlerAnnotations = new ArrayList<>();
focal_class.type: Collection<Class<? extends Annotation>>
focal_class.var_name: handlerAnnotations
focal_class.file: saga-lib/src/main/java/com/codebullets/sagalib/startup/AnnotationSagaAnalyzer.java
focal_class.identifier: AnnotationSagaAnalyzer
focal_class.interfaces: implements SagaAnalyzer
focal_class.class_method_signature: AnnotationSagaAnalyzer.AnnotationSagaAnalyzer(final TypeScanner typeScanner)
focal_class.full_signature: @Inject public  AnnotationSagaAnalyzer(final TypeScanner typeScanner)
focal_class.identifier: AnnotationSagaAnalyzer
focal_class.modifiers: @Inject public
focal_class.parameters: (final TypeScanner typeScanner)
focal_class.signature:  AnnotationSagaAnalyzer(final TypeScanner typeScanner)
focal_class.class_method_signature: AnnotationSagaAnalyzer.scanHandledMessageTypes()
focal_class.full_signature: @Override public Map<Class<? extends Saga>, SagaHandlersMap> scanHandledMessageTypes()
focal_class.identifier: scanHandledMessageTypes
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Map<Class<? extends Saga>, SagaHandlersMap>
focal_class.signature: Map<Class<? extends Saga>, SagaHandlersMap> scanHandledMessageTypes()
focal_class.class_method_signature: AnnotationSagaAnalyzer.addStartSagaAnnotation(final Class<? extends Annotation> annotationClass)
focal_class.full_signature: public void addStartSagaAnnotation(final Class<? extends Annotation> annotationClass)
focal_class.identifier: addStartSagaAnnotation
focal_class.modifiers: public
focal_class.parameters: (final Class<? extends Annotation> annotationClass)
focal_class.return: void
focal_class.signature: void addStartSagaAnnotation(final Class<? extends Annotation> annotationClass)
focal_class.class_method_signature: AnnotationSagaAnalyzer.addHandlerAnnotation(final Class<? extends Annotation> annotationClass)
focal_class.full_signature: public void addHandlerAnnotation(final Class<? extends Annotation> annotationClass)
focal_class.identifier: addHandlerAnnotation
focal_class.modifiers: public
focal_class.parameters: (final Class<? extends Annotation> annotationClass)
focal_class.return: void
focal_class.signature: void addHandlerAnnotation(final Class<? extends Annotation> annotationClass)
focal_class.class_method_signature: AnnotationSagaAnalyzer.populateSagaHandlers()
focal_class.full_signature: private void populateSagaHandlers()
focal_class.identifier: populateSagaHandlers
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void populateSagaHandlers()
focal_class.class_method_signature: AnnotationSagaAnalyzer.determineMessageHandlers(final Class<? extends Saga> sagaType)
focal_class.full_signature: private SagaHandlersMap determineMessageHandlers(final Class<? extends Saga> sagaType)
focal_class.identifier: determineMessageHandlers
focal_class.modifiers: private
focal_class.parameters: (final Class<? extends Saga> sagaType)
focal_class.return: SagaHandlersMap
focal_class.signature: SagaHandlersMap determineMessageHandlers(final Class<? extends Saga> sagaType)
focal_class.class_method_signature: AnnotationSagaAnalyzer.isHandlerMethod(final Method method)
focal_class.full_signature: private boolean isHandlerMethod(final Method method)
focal_class.identifier: isHandlerMethod
focal_class.modifiers: private
focal_class.parameters: (final Method method)
focal_class.return: boolean
focal_class.signature: boolean isHandlerMethod(final Method method)
focal_class.class_method_signature: AnnotationSagaAnalyzer.hasHandlerAnnotation(final Method method)
focal_class.full_signature: private boolean hasHandlerAnnotation(final Method method)
focal_class.identifier: hasHandlerAnnotation
focal_class.modifiers: private
focal_class.parameters: (final Method method)
focal_class.return: boolean
focal_class.signature: boolean hasHandlerAnnotation(final Method method)
focal_class.class_method_signature: AnnotationSagaAnalyzer.hasStartSagaAnnotation(final Method method)
focal_class.full_signature: private boolean hasStartSagaAnnotation(final Method method)
focal_class.identifier: hasStartSagaAnnotation
focal_class.modifiers: private
focal_class.parameters: (final Method method)
focal_class.return: boolean
focal_class.signature: boolean hasStartSagaAnnotation(final Method method)
focal_class.class_method_signature: AnnotationSagaAnalyzer.hasAnnotation(final Collection<Class<? extends Annotation>> annotations, final Method method)
focal_class.full_signature: private boolean hasAnnotation(final Collection<Class<? extends Annotation>> annotations, final Method method)
focal_class.identifier: hasAnnotation
focal_class.modifiers: private
focal_class.parameters: (final Collection<Class<? extends Annotation>> annotations, final Method method)
focal_class.return: boolean
focal_class.signature: boolean hasAnnotation(final Collection<Class<? extends Annotation>> annotations, final Method method)
focal_method.body: @Override
      public Map<Class<? extends Saga>, SagaHandlersMap> scanHandledMessageTypes() {
          if (scanResult == null) {
              populateSagaHandlers();
          }
  
          return scanResult;
      }
focal_method.class_method_signature: AnnotationSagaAnalyzer.scanHandledMessageTypes()
focal_method.full_signature: @Override public Map<Class<? extends Saga>, SagaHandlersMap> scanHandledMessageTypes()
focal_method.identifier: scanHandledMessageTypes
focal_method.invocations: populateSagaHandlers
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: Map<Class<? extends Saga>, SagaHandlersMap>
focal_method.signature: Map<Class<? extends Saga>, SagaHandlersMap> scanHandledMessageTypes()