@Override public RegisteredService save(final RegisteredService registeredService) { if (registeredService.getId() == RegisteredService.INITIAL_IDENTIFIER_VALUE) { registeredService.setId(findHighestId() + 1); } val svc = findServiceById(registeredService.getId()); if (svc != null) { this.registeredServices.remove(svc); } this.registeredServices.add(registeredService); return registeredService; }
@Override public RegisteredService save(final RegisteredService service) { if (service.getId() == RegisteredService.INITIAL_IDENTIFIER_VALUE) { LOGGER.debug("Service id not set. Calculating id based on system time..."); service.setId(System.currentTimeMillis()); } val f = getRegisteredServiceFileName(service); try (val out = Files.newOutputStream(f.toPath())) { val result = this.registeredServiceSerializers.stream().anyMatch(s -> { try { s.to(out, service); return true; } catch (final Exception e) { LOGGER.debug(e.getMessage(), e); return false; } }); if (!result) { throw new IOException("The service definition file could not be saved at " + f.getCanonicalPath()); } if (this.serviceMap.containsKey(service.getId())) { LOGGER.debug("Found existing service definition by id [{}]. Saving...", service.getId()); } this.serviceMap.put(service.getId(), service); LOGGER.debug("Saved service to [{}]", f.getCanonicalPath()); } catch (final IOException e) { throw new IllegalArgumentException("IO error opening file stream.", e); } return findServiceById(service.getId()); }