public void disposeScanner() { if (this.scanner == null) { throw new IllegalStateException("Can not dispose non-existing (null) scanner!"); } this.scanner.shutdown(); this.scanner = null; this.getResource().setScanner(new KieScannerResource(KieScannerStatus.DISPOSED)); }
public KieContainerInstanceImpl(String containerId, KieContainerStatus status, InternalKieContainer kieContainer, ReleaseId releaseId, KieServerImpl kieServer) { super(); this.kieContainer = kieContainer; this.resource = new KieContainerResource(containerId, releaseId, status); // set the default scanner state to DISPOSED (which is the actual default state) // this way we don't need to do null checks all around for the scanner resource this.resource.setScanner(new KieScannerResource(KieScannerStatus.DISPOSED)); this.marshallers = new ConcurrentHashMap<MarshallingFormat, Marshaller>(); this.serviceContainer = new ConcurrentHashMap<String, Object>(); updateReleaseId(); this.scannerListener = new KieServerScannerEventListener(kieServer, this); }
public void startScanner(long pollingInterval) { if (this.scanner == null) { throw new IllegalStateException("Can not start non-existing (null) scanner!"); } this.scanner.start(pollingInterval); this.scanner.addListener(scannerListener); this.getResource().setScanner(new KieScannerResource(KieScannerStatus.STARTED, pollingInterval)); }
@Test public void testSetRuleConfigAttributesWhenRuleConfigIsNull() { final Map<?, ?> configs = mock(Map.class); doReturn(null).when(configs).get(Capability.RULE); doReturn(configs).when(containerSpec).getConfigs(); instanceManager.setRuleConfigAttributes(containerSpec, containerResource); verify(containerResource, never()).setScanner(any()); }
public ServiceResponse<KieScannerResource> getScannerInfo(String id) { try { KieContainerInstance kci = context.getContainer(id); if (kci != null && kci.getKieContainer() != null) { KieScannerResource info = getScannerResource( kci ); kci.getResource().setScanner( info ); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Scanner info successfully retrieved", info); } else { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Unknown container " + id + "."); } } catch (Exception e) { logger.error("Error retrieving scanner info for container '" + id + "'.", e); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Error retrieving scanner info for container '" + id + "': " + e.getClass().getName() + ": " + e.getMessage()); } }
void setRuleConfigAttributes(final ContainerSpec containerSpec, final KieContainerResource containerResource) { final ContainerConfig containerConfig = containerSpec.getConfigs().get(Capability.RULE); if (containerConfig != null) { final RuleConfig ruleConfig = (RuleConfig) containerConfig; final KieScannerResource scannerResource = new KieScannerResource(); scannerResource.setPollInterval(ruleConfig.getPollInterval()); scannerResource.setStatus(ruleConfig.getScannerStatus()); containerResource.setScanner(scannerResource); } }
public ServiceResponse<KieContainerResource> getContainerInfo(String id) { try { KieContainerInstance ci = context.getContainer(id); if (ci != null) { if( ci.getResource().getScanner() == null ) { ci.getResource().setScanner( getScannerResource( ci ) ); } return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.SUCCESS, "Info for container " + id, ci.getResource()); } return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, "Container " + id + " is not instantiated."); } catch (Exception e) { logger.error("Error retrieving info for container '" + id + "'", e); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, "Error retrieving container info: " + e.getClass().getName() + ": " + e.getMessage()); } }
currentState.getContainers().forEach(containerResource -> { if (containerId.equals(containerResource.getContainerId())) { containerResource.setScanner(scannerState);
@Test public void testSetRuleConfigAttributesWhenRuleConfigIsNotNull() { final Map<?, ?> configs = mock(Map.class); final RuleConfig containerConfig = mock(RuleConfig.class); final ArgumentCaptor<KieScannerResource> scannerResourceCaptor = ArgumentCaptor.forClass(KieScannerResource.class); final Long pollInterval = 1L; final KieScannerStatus scannerStatus = KieScannerStatus.CREATED; doReturn(pollInterval).when(containerConfig).getPollInterval(); doReturn(scannerStatus).when(containerConfig).getScannerStatus(); doReturn(containerConfig).when(configs).get(Capability.RULE); doReturn(configs).when(containerSpec).getConfigs(); instanceManager.setRuleConfigAttributes(containerSpec, containerResource); verify(containerResource).setScanner(scannerResourceCaptor.capture()); final KieScannerResource scannerResource = scannerResourceCaptor.getValue(); assertEquals(pollInterval, scannerResource.getPollInterval()); assertEquals(scannerStatus, scannerResource.getStatus()); }
public void createScanner() { this.scanner = (InternalKieScanner) KieServices.Factory.get().newKieScanner(kieContainer); // we also need to update the underlaying scanner resource to avoid inconsistency KieScannerStatus status = KieContainerInstanceImpl.mapScannerStatus(scanner.getStatus()); long pollingInterval = scanner.getPollingInterval(); resource.setScanner(new KieScannerResource(status, pollingInterval)); }
break; kci.getResource().setScanner( result.getResult() ); // might be null, but that is ok return result; } else {
private ServiceResponse<KieScannerResource> configureScanner(String containerId, KieContainerInstanceImpl kci, KieScannerResource scannerResource) { KieScannerStatus scannerStatus = scannerResource.getStatus(); ServiceResponse<KieScannerResource> result; switch (scannerStatus) { case CREATED: result = createScanner(containerId, kci); break; case STARTED: result = startScanner(containerId, scannerResource.getPollInterval(), kci); break; case STOPPED: result = stopScanner(containerId, kci); break; case SCANNING: result = scanNow(containerId, kci); break; case DISPOSED: result = disposeScanner(containerId, kci); break; default: // error result = new ServiceResponse<KieScannerResource>(ResponseType.FAILURE, "Unknown status '" + scannerStatus + "' for scanner on container " + containerId + "."); break; } kci.getResource().setScanner(result.getResult()); return result; }
scannerResource.setStatus(ruleConfig.getScannerStatus()); containerResource.setScanner(scannerResource);