/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0 
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.vaaclipse.addons.common.event;

import javax.inject.Inject;
import javax.inject.Named;

import org.eclipse.e4.core.di.annotations.Optional;

/**
 * Wraps and unwraps the event topics.
 */
public class EventTopicNormalizer {

	/** The application instance id. */
	@Inject
	@Named("e4ApplicationInstanceId")
	@Optional
	String applicationInstanceId;

	/**
	 * Wrap topic.
	 *
	 * @param topic
	 *            the topic
	 * @return the string
	 */
	public String wrapTopic(String topic) {
		return applicationInstanceId + "/" + topic;
	}

	/**
	 * Unwrap topic.
	 *
	 * @param topic
	 *            the topic
	 * @return the string
	 */
	public String unwrapTopic(String topic) {
		return topic.replace(applicationInstanceId + "/", "");
	}
}
