/** * Publishes pending tariffs to customers and brokers */ private void publishTariffs () { List<Tariff> publishedTariffs = tariffRepo.findTariffsByState(Tariff.State.PENDING); log.info("publishing " + publishedTariffs.size() + " new tariffs"); for (Tariff tariff : publishedTariffs) { tariff.setState(Tariff.State.OFFERED); } List<TariffSpecification> publishedTariffSpecs = new ArrayList<>(); for (Tariff tariff : publishedTariffs) { TariffSpecification spec = tariff.getTariffSpecification(); publishedTariffSpecs.add(spec); log.info("publishing spec " + spec.getId() + " broker: " + spec.getBroker().getUsername() + ", exp: " + spec.getExpiration()); } for (NewTariffListener listener : registrations) { listener.publishNewTariffs(publishedTariffs); } brokerProxyService.broadcastMessages(publishedTariffSpecs); }