@Override public String toString() { return "KieServer{" + "id='" + KieServerEnvironment.getServerId() + '\'' + "name='" + KieServerEnvironment.getServerName() + '\'' + "version='" + KieServerEnvironment.getVersion() + '\'' + "location='" + kieServerLocation + '\'' + '}'; }
@Override protected String getEndpointSuffix() { return "templateid=" + KieServerEnvironment.getServerId(); }
private ConversationId(String kieServerId, String containerId, ReleaseId releaseId, String uniqueString) { this.kieServerId = kieServerId; this.containerId = containerId; this.releaseId = releaseId; this.uniqueString = uniqueString; validate(); }
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()); } }
public static ConversationId fromString(String conversationIdString) { try { String conversationId = URLDecoder.decode(conversationIdString, "UTF-8"); String[] conversationIdElements = conversationId.split(SPLIT_PATTERN); if (conversationIdElements.length != 4) { throw new IllegalArgumentException("Non-parsable conversationId '" + conversationIdString + "'"); } String kieServerId = conversationIdElements[0].replaceAll("'", ""); String containerId = conversationIdElements[1]; String[] releaseIdElements = conversationIdElements[2].split(":"); ReleaseId releaseId = new ReleaseId(releaseIdElements[0], releaseIdElements[1], releaseIdElements[2]); String uniqueString = conversationIdElements[3].replaceAll("'", "");; return new ConversationId(kieServerId, containerId, releaseId, uniqueString); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } }
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()); } }
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); }
public boolean disconnectFromSingleController(KieServerInfo serverInfo, KieServerConfig config, String controllerUrl) { String connectAndSyncUrl = null; try { connectAndSyncUrl = controllerUrl + "/server/" + KieServerEnvironment.getServerId()+"/?location="+ URLEncoder.encode(serverInfo.getLocation(), "UTF-8"); String userName = config.getConfigItemValue(KieServerConstants.CFG_KIE_CONTROLLER_USER, "kieserver"); String password = loadControllerPassword(config); String token = config.getConfigItemValue(KieServerConstants.CFG_KIE_CONTROLLER_TOKEN); makeHttpDeleteRequestAndCreateCustomResponse(connectAndSyncUrl, null, userName, password, token); return true; } catch (Exception e) { // let's check all other controllers in case of running in cluster of controllers logger.debug("Exception encountered while syncing with controller at {} error {}", connectAndSyncUrl, e.getMessage(), e); return false; } }
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; }
@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()); }
@After public void cleanUp() { if (kieServer != null) { kieServer.destroy(); } KieServerEnvironment.setServerId(origServerId); System.clearProperty(KieServerConstants.KIE_SERVER_MGMT_API_DISABLED); }
@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 static ConversationId from(String kieServerId, String containerId, ReleaseId releaseId) { return new ConversationId(kieServerId, containerId, releaseId); }
/** * 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); }
@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()); }
@Override public KieServerConfig getConfig() { KieServerState currentState = repository.load(KieServerEnvironment.getServerId()); return currentState.getConfiguration(); }
@Override public void contextDestroyed(ServletContextEvent sce) { KieServerImpl server = KieServerLocator.getInstance(); server.destroy(); logger.info("KieServer (id {}) destroyed successfully", KieServerEnvironment.getServerId()); } }
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 disconnect(KieServerInfo serverInfo) { KieServerState currentState = context.getStateRepository().load(KieServerEnvironment.getServerId()); Set<String> controllers = currentState.getControllers(); KieServerConfig config = currentState.getConfiguration(); for (String controllerUrl : controllers ) { if (controllerUrl != null && !controllerUrl.isEmpty()) { boolean disconnected = disconnectFromSingleController(serverInfo, config, controllerUrl); if (disconnected) { break; } } } }