All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kie.server.api.ConversationId Maven / Gradle / Ivy

/*
 * Copyright 2016 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.kie.server.api;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.UUID;

import org.kie.server.api.model.ReleaseId;

/**
 * ConversationId represents unique conversation between client and server that comes with valuable information
 * about the conversation itself:
 * 
    *
  • identifier of kie server
  • *
  • container id
  • *
  • release id (GAV resolved one)
  • *
  • unique UUID string
  • *
*/ public class ConversationId { private static final String WRAP = "'"; private static final String SPLIT_PATTERN = WRAP + ":" + WRAP; private String kieServerId; private String containerId; private ReleaseId releaseId; private String uniqueString; private ConversationId(String kieServerId, String containerId, ReleaseId releaseId) { this(kieServerId, containerId, releaseId, UUID.randomUUID().toString()); } private ConversationId(String kieServerId, String containerId, ReleaseId releaseId, String uniqueString) { this.kieServerId = kieServerId; this.containerId = containerId; this.releaseId = releaseId; this.uniqueString = uniqueString; validate(); } public static ConversationId from(String kieServerId, String containerId, ReleaseId releaseId) { return new ConversationId(kieServerId, containerId, releaseId); } 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 String getKieServerId() { return kieServerId; } public String getContainerId() { return containerId; } public ReleaseId getReleaseId() { return releaseId; } public String getUniqueString() { return uniqueString; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder .append(WRAP) .append(kieServerId) .append(WRAP + ":" + WRAP) .append(containerId) .append(WRAP + ":" + WRAP) .append(releaseId.toExternalForm()) .append(WRAP + ":" + WRAP) .append(uniqueString) .append(WRAP); try { return URLEncoder.encode(builder.toString(), "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } protected void validate() { if (kieServerId == null || kieServerId.isEmpty()) { throw new IllegalArgumentException("ConversationId not valid - missing kieServerId"); } if (containerId == null || containerId.isEmpty()) { throw new IllegalArgumentException("ConversationId not valid - missing containerId"); } if (releaseId == null) { throw new IllegalArgumentException("ConversationId not valid - missing releaseId"); } if (uniqueString == null || uniqueString.isEmpty()) { throw new IllegalArgumentException("ConversationId not valid - missing uniqueString"); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy