private ServiceResponse<KieScannerResource> startScanner(String id, KieScannerResource resource, KieContainerInstance kci) {
if (kci.getScanner() == null) {
ServiceResponse<KieScannerResource> response = createScanner(id, kci);
if (ResponseType.FAILURE.equals(response.getType())) {
return response;
}
}
if (KieScannerStatus.STOPPED.equals(mapStatus(kci.getScanner().getStatus())) &&
resource.getPollInterval() != null) {
kci.getScanner().start(resource.getPollInterval());
return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS,
"Kie scanner successfully created.",
getScannerResource(kci));
} else if (!KieScannerStatus.STOPPED.equals(mapStatus(kci.getScanner().getStatus()))) {
return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE,
"Invalid kie scanner status: " + mapStatus(kci.getScanner().getStatus()),
getScannerResource(kci));
} else if (resource.getPollInterval() == null) {
return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE,
"Invalid polling interval: " + resource.getPollInterval(),
getScannerResource(kci));
}
return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE,
"Unknown error starting scanner. Scanner was not started." + resource,
getScannerResource(kci));
}