test_class.declarator: publisher
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private ApplicationEventPublisher publisher;
test_class.type: ApplicationEventPublisher
test_class.var_name: publisher
test_class.declarator: routeChangedEventPublisher
test_class.modifier: @InjectMocks
      private
test_class.original_string: @InjectMocks
      private RouteChangedEventPublisher routeChangedEventPublisher;
test_class.type: RouteChangedEventPublisher
test_class.var_name: routeChangedEventPublisher
test_class.file: optaweb-vehicle-routing-backend/src/test/java/org/optaweb/vehiclerouting/plugin/planner/RouteChangedEventPublisherTest.java
test_class.identifier: RouteChangedEventPublisherTest
test_case.body: @Test
      void should_covert_solution_to_event_and_publish_it() {
          routeChangedEventPublisher.publishSolution(SolutionFactory.emptySolution());
          verify(publisher).publishEvent(any(RouteChangedEvent.class));
      }
test_case.class_method_signature: RouteChangedEventPublisherTest.should_covert_solution_to_event_and_publish_it()
test_case.full_signature: @Test void should_covert_solution_to_event_and_publish_it()
test_case.identifier: should_covert_solution_to_event_and_publish_it
test_case.invocations: publishSolution emptySolution publishEvent verify any
test_case.modifiers: @Test
test_case.parameters: ()
test_case.return: void
test_case.signature: void should_covert_solution_to_event_and_publish_it()
focal_class.declarator: logger = LoggerFactory.getLogger(RouteChangedEventPublisher.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger logger = LoggerFactory.getLogger(RouteChangedEventPublisher.class);
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: eventPublisher
focal_class.modifier: private final
focal_class.original_string: private final ApplicationEventPublisher eventPublisher;
focal_class.type: ApplicationEventPublisher
focal_class.var_name: eventPublisher
focal_class.file: optaweb-vehicle-routing-backend/src/main/java/org/optaweb/vehiclerouting/plugin/planner/RouteChangedEventPublisher.java
focal_class.identifier: RouteChangedEventPublisher
focal_class.class_method_signature: RouteChangedEventPublisher.RouteChangedEventPublisher(ApplicationEventPublisher eventPublisher)
focal_class.full_signature: @Autowired  RouteChangedEventPublisher(ApplicationEventPublisher eventPublisher)
focal_class.identifier: RouteChangedEventPublisher
focal_class.modifiers: @Autowired
focal_class.parameters: (ApplicationEventPublisher eventPublisher)
focal_class.signature:  RouteChangedEventPublisher(ApplicationEventPublisher eventPublisher)
focal_class.class_method_signature: RouteChangedEventPublisher.publishSolution(VehicleRoutingSolution solution)
focal_class.full_signature:  void publishSolution(VehicleRoutingSolution solution)
focal_class.identifier: publishSolution
focal_class.parameters: (VehicleRoutingSolution solution)
focal_class.return: void
focal_class.signature: void publishSolution(VehicleRoutingSolution solution)
focal_class.class_method_signature: RouteChangedEventPublisher.solutionToEvent(VehicleRoutingSolution solution, Object source)
focal_class.full_signature: static RouteChangedEvent solutionToEvent(VehicleRoutingSolution solution, Object source)
focal_class.identifier: solutionToEvent
focal_class.modifiers: static
focal_class.parameters: (VehicleRoutingSolution solution, Object source)
focal_class.return: RouteChangedEvent
focal_class.signature: RouteChangedEvent solutionToEvent(VehicleRoutingSolution solution, Object source)
focal_class.class_method_signature: RouteChangedEventPublisher.visitIds(VehicleRoutingSolution solution)
focal_class.full_signature: private static List<Long> visitIds(VehicleRoutingSolution solution)
focal_class.identifier: visitIds
focal_class.modifiers: private static
focal_class.parameters: (VehicleRoutingSolution solution)
focal_class.return: List<Long>
focal_class.signature: List<Long> visitIds(VehicleRoutingSolution solution)
focal_class.class_method_signature: RouteChangedEventPublisher.routes(VehicleRoutingSolution solution)
focal_class.full_signature: private static List<ShallowRoute> routes(VehicleRoutingSolution solution)
focal_class.identifier: routes
focal_class.modifiers: private static
focal_class.parameters: (VehicleRoutingSolution solution)
focal_class.return: List<ShallowRoute>
focal_class.signature: List<ShallowRoute> routes(VehicleRoutingSolution solution)
focal_class.class_method_signature: RouteChangedEventPublisher.vehicleIds(VehicleRoutingSolution solution)
focal_class.full_signature: private static List<Long> vehicleIds(VehicleRoutingSolution solution)
focal_class.identifier: vehicleIds
focal_class.modifiers: private static
focal_class.parameters: (VehicleRoutingSolution solution)
focal_class.return: List<Long>
focal_class.signature: List<Long> vehicleIds(VehicleRoutingSolution solution)
focal_class.class_method_signature: RouteChangedEventPublisher.depotId(VehicleRoutingSolution solution)
focal_class.full_signature: private static Long depotId(VehicleRoutingSolution solution)
focal_class.identifier: depotId
focal_class.modifiers: private static
focal_class.parameters: (VehicleRoutingSolution solution)
focal_class.return: Long
focal_class.signature: Long depotId(VehicleRoutingSolution solution)
focal_method.body: void publishSolution(VehicleRoutingSolution solution) {
          RouteChangedEvent event = solutionToEvent(solution, this);
          logger.info(
                  "New solution with {} depots, {} vehicles, {} visits, distance: {}, score: {}",
                  solution.getDepotList().size(),
                  solution.getVehicleList().size(),
                  solution.getVisitList().size(),
                  event.distance(),
                  solution.getScore());
          logger.debug("Routes: {}", event.routes());
          eventPublisher.publishEvent(event);
      }
focal_method.class_method_signature: RouteChangedEventPublisher.publishSolution(VehicleRoutingSolution solution)
focal_method.full_signature:  void publishSolution(VehicleRoutingSolution solution)
focal_method.identifier: publishSolution
focal_method.invocations: solutionToEvent info size getDepotList size getVehicleList size getVisitList distance getScore debug routes publishEvent
focal_method.parameters: (VehicleRoutingSolution solution)
focal_method.return: void
focal_method.signature: void publishSolution(VehicleRoutingSolution solution)