@Override protected String getEndpointSuffix() { return "templateid=" + KieServerEnvironment.getServerId(); }
@Override public String toString() { return "KieServer{" + "id='" + KieServerEnvironment.getServerId() + '\'' + "name='" + KieServerEnvironment.getServerName() + '\'' + "version='" + KieServerEnvironment.getVersion() + '\'' + "location='" + kieServerLocation + '\'' + '}'; }
@Override public void contextInitialized(ServletContextEvent sce) { KieServerEnvironment.setContextRoot(sce.getServletContext().getContextPath()); if (KieServerEnvironment.getServerId() == null) { String serverName = sce.getServletContext().getServletContextName() +"@"+ sce.getServletContext().getContextPath(); String serverId = UUID.nameUUIDFromBytes(serverName.getBytes(Charset.forName("UTF-8"))).toString(); KieServerEnvironment.setServerId(serverId.toString()); KieServerEnvironment.setServerName(serverName); } logger.info("KieServer (id {} (name {})) started initialization process", KieServerEnvironment.getServerId(), KieServerEnvironment.getServerName()); KieServerLocator.getInstance(); logger.info("KieServer (id {}) started successfully", KieServerEnvironment.getServerId()); }
@Before public void setupKieServerImpl() throws Exception { System.setProperty(KieServerConstants.KIE_SERVER_MGMT_API_DISABLED, "true"); origServerId = KieServerEnvironment.getServerId(); System.setProperty("org.kie.server.id", KIE_SERVER_ID); KieServerEnvironment.setServerId(KIE_SERVER_ID); FileUtils.deleteDirectory(REPOSITORY_DIR); FileUtils.forceMkdir(REPOSITORY_DIR); kieServer = new KieServerImpl(new KieServerStateFileRepository(REPOSITORY_DIR)); kieServer.init(); MultivaluedHashMap<String, String> mockedRequestHeaders = new MultivaluedHashMap<>(); mockedRequestHeaders.add("Accept", "application/json"); when(headers.getRequestHeaders()).thenReturn(mockedRequestHeaders); }
@After public void cleanUp() { if (kieServer != null) { kieServer.destroy(); } KieServerEnvironment.setServerId(origServerId); System.clearProperty(KieServerConstants.KIE_SERVER_MGMT_API_DISABLED); }
public static File init() { String serverRepo = getValue(KIE_SERVER_STATE_REPO, "KIE_SERVER_REPO", "."); String serverId = getValue(KIE_SERVER_ID, "KIE_SERVER_ID", "kieserver"); KieServerEnvironment.setServerId(serverId); KieServerEnvironment.setServerName(serverId);
@Test public void testInitWithEmptyContextRoot() throws Exception { resetSwaggerConfig(SwaggerContextService.CONFIG_ID_DEFAULT); KieServerEnvironment.setContextRoot(""); SwaggerKieServerExtension extension = new SwaggerKieServerExtension(); extension.init(null, null); BeanConfig config = (BeanConfig) SwaggerConfigLocator.getInstance().getConfig(SwaggerContextService.CONFIG_ID_DEFAULT); assertEquals("/services/rest", config.getBasePath()); }
public ServiceResponse<KieServerInfo> getInfo() { try { Version version = KieServerEnvironment.getVersion(); String versionStr = version != null ? version.toString() : "Unknown-Version"; return new ServiceResponse<KieServerInfo>(ServiceResponse.ResponseType.SUCCESS, "Kie Server info", new KieServerInfo(versionStr)); } catch (Exception e) { logger.error("Error retrieving server info:", e); return new ServiceResponse<KieServerInfo>(ServiceResponse.ResponseType.FAILURE, "Error retrieving kie server info: " + e.getClass().getName() + ": " + e.getMessage()); } }
@Override public void init(KieServerImpl kieServer, KieServerRegistry registry) { this.context = registry; JaxrsScanner jaxrsScanner = new DefaultJaxrsScanner(); jaxrsScanner.setPrettyPrint(true); /* * Set our JAX-RS Scanner with SCANNER_ID_DEFAULT. * We need to do this before creating the BeanConfig, as this prevents the BeanConfig to register itself as the default scanner. * The first one wins. */ SwaggerScannerLocator.getInstance().putScanner((SwaggerContextService.SCANNER_ID_DEFAULT), jaxrsScanner); BeanConfig beanConfig = new BeanConfig(); String contextRoot = KieServerEnvironment.getContextRoot(); if (contextRoot != null) { beanConfig.setBasePath(contextRoot + "/services/rest"); } //Set the Info on the Swagger object, not on the BeanConfig ... otherwise the Info on Swagger (which will be 'null') will override the Info we set on the BeanConfig. beanConfig.getSwagger().setInfo(getInfo()); beanConfig.setScan(true); initialized = true; }
@Test public void buildConversationIdHeaderCreatingContainer() { String kieServerId = "KieServerId"; KieServerEnvironment.setServerId(kieServerId); KieContainerInstanceImpl containerInstanceImpl = new KieContainerInstanceImpl(CONTAINER_ID, KieContainerStatus.CREATING); when(registry.getContainer(CONTAINER_ID)).thenReturn(containerInstanceImpl); Header conversationIdHeader = RestUtils.buildConversationIdHeader(CONTAINER_ID, registry, headers); assertNull(conversationIdHeader); } }
@Test public void testInit() throws Exception { resetSwaggerConfig(SwaggerContextService.CONFIG_ID_DEFAULT); KieServerEnvironment.setContextRoot("kie-server"); SwaggerKieServerExtension extension = new SwaggerKieServerExtension(); extension.init(null, null); BeanConfig config = (BeanConfig) SwaggerConfigLocator.getInstance().getConfig(SwaggerContextService.CONFIG_ID_DEFAULT); assertEquals("/kie-server/services/rest", config.getBasePath()); }
/** * Persists updated KieServer state. * @param kieServerStateConsumer */ private void storeServerState(Consumer<KieServerState> kieServerStateConsumer) { KieServerState currentState = repository.load(KieServerEnvironment.getServerId()); kieServerStateConsumer.accept(currentState); repository.store(KieServerEnvironment.getServerId(), currentState); }
protected KieServerInfo getInfoInternal() { Version version = KieServerEnvironment.getVersion(); String serverId = KieServerEnvironment.getServerId(); String serverName = KieServerEnvironment.getServerName(); String versionStr = version != null ? version.toString() : "Unknown-Version"; List<String> capabilities = new ArrayList<String>(); for (KieServerExtension extension : context.getServerExtensions()) { capabilities.add(extension.getImplementedCapability()); } return new KieServerInfo(serverId, serverName, versionStr, capabilities, kieServerLocation); }
@Test public void buildConversationIdHeaderRunningContainer() { String kieServerId = "KieServerId"; KieServerEnvironment.setServerId(kieServerId); String groupId = "org.kie"; String artifactId = "testArtifact"; String version = "1.0"; ReleaseId releaseId = new ReleaseId(groupId, artifactId, version); KieContainerInstanceImpl containerInstanceImpl = new KieContainerInstanceImpl(CONTAINER_ID, KieContainerStatus.STARTED); containerInstanceImpl.getResource().setReleaseId(releaseId); when(registry.getContainer(CONTAINER_ID)).thenReturn(containerInstanceImpl); Header conversationIdHeader = RestUtils.buildConversationIdHeader(CONTAINER_ID, registry, headers); assertEquals(KieServerConstants.KIE_CONVERSATION_ID_TYPE_HEADER, conversationIdHeader.getName()); assertNotNull(conversationIdHeader.getValue()); assertTrue(conversationIdHeader.getValue().contains(groupId)); assertTrue(conversationIdHeader.getValue().contains(artifactId)); assertTrue(conversationIdHeader.getValue().contains(version)); assertTrue(conversationIdHeader.getValue().contains(CONTAINER_ID)); assertTrue(conversationIdHeader.getValue().contains(kieServerId)); }
public void markAsReady() { kieServerReady.set(true); logger.info("KieServer {} is ready to receive requests", KieServerEnvironment.getServerId()); for (KieServerExtension extension : context.getServerExtensions()) { try { extension.serverStarted(); } catch (Exception e) { logger.error("Error when destroying server extension of type {}", extension, e); } } }
@Override public void contextDestroyed(ServletContextEvent sce) { KieServerImpl server = KieServerLocator.getInstance(); server.destroy(); logger.info("KieServer (id {}) destroyed successfully", KieServerEnvironment.getServerId()); } }
@Override public KieServerConfig getConfig() { KieServerState currentState = repository.load(KieServerEnvironment.getServerId()); return currentState.getConfiguration(); }
public ServiceResponse<KieServerStateInfo> getServerState() { try { KieServerState currentState = repository.load(KieServerEnvironment.getServerId()); KieServerStateInfo state = new KieServerStateInfo(currentState.getControllers(), currentState.getConfiguration(), currentState.getContainers()); return new ServiceResponse<KieServerStateInfo>(ServiceResponse.ResponseType.SUCCESS, "Successfully loaded server state for server id " + KieServerEnvironment.getServerId(), state); } catch (Exception e) { logger.error("Error when loading server state due to {}", e.getMessage(), e); return new ServiceResponse<KieServerStateInfo>(ResponseType.FAILURE, "Error when loading server state due to " + e.getMessage()); } }
public KieServerSetup connectToSingleController(KieServerInfo serverInfo, KieServerConfig config, String controllerUrl) { String connectAndSyncUrl = controllerUrl + "/server/" + KieServerEnvironment.getServerId(); String userName = config.getConfigItemValue(KieServerConstants.CFG_KIE_CONTROLLER_USER, "kieserver"); String password = loadControllerPassword(config); String token = config.getConfigItemValue(KieServerConstants.CFG_KIE_CONTROLLER_TOKEN); try { KieServerSetup kieServerSetup = makeHttpPutRequestAndCreateCustomResponse(connectAndSyncUrl, serialize(serverInfo), KieServerSetup.class, userName, password, token); if (kieServerSetup != null) { // once there is non null list let's return it return kieServerSetup; } } catch (Exception e) { // let's check all other controllers in case of running in cluster of controllers logger.warn("Exception encountered while syncing with controller at {} error {}", connectAndSyncUrl, e.getCause() == null ? e.getMessage() : e.getCause().getMessage()); logger.debug("Exception encountered while syncing with controller at {} error {}", connectAndSyncUrl, e.getMessage(), e); } return null; }
public void startContainer(String containerId) { KieServerState currentState = context.getStateRepository().load(KieServerEnvironment.getServerId()); Set<String> controllers = currentState.getControllers(); KieServerConfig config = currentState.getConfiguration(); if (controllers != null && !controllers.isEmpty()) { for (String controllerUrl : controllers) { if (controllerUrl != null && !controllerUrl.isEmpty()) { String connectAndSyncUrl = controllerUrl + "/management/servers/" + KieServerEnvironment.getServerId() + "/containers/" + containerId + "/status/started"; String userName = config.getConfigItemValue(KieServerConstants.CFG_KIE_CONTROLLER_USER, "kieserver"); String password = loadControllerPassword(config); String token = config.getConfigItemValue(KieServerConstants.CFG_KIE_CONTROLLER_TOKEN); try { makeHttpPostRequestAndCreateCustomResponse(connectAndSyncUrl, "", null, userName, password, token); break; } catch (Exception e) { // let's check all other controllers in case of running in cluster of controllers logger.warn("Exception encountered while syncing with controller at {} error {}", connectAndSyncUrl, e.getCause() == null ? e.getMessage() : e.getCause().getMessage()); logger.debug("Exception encountered while syncing with controller at {} error {}", connectAndSyncUrl, e.getMessage(), e); } } } } }