/* * Copyright (c) 2005 - 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * 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.wso2.carbon.event.input.adapter.wso2event.internal.ds; import org.wso2.carbon.databridge.core.DataBridgeSubscriberService; import org.wso2.carbon.event.input.adapter.wso2event.WSO2EventAdapter; import java.util.concurrent.ConcurrentHashMap; /** * common place to hold some OSGI bundle references. */ public final class WSO2EventAdapterServiceValueHolder { private static DataBridgeSubscriberService dataBridgeSubscriberService; private static ConcurrentHashMap<String, ConcurrentHashMap<String, ConcurrentHashMap<String, WSO2EventAdapter>>> inputEventAdapterListenerMap = new ConcurrentHashMap<String, ConcurrentHashMap<String, ConcurrentHashMap<String, WSO2EventAdapter>>>(); private WSO2EventAdapterServiceValueHolder() { } public static void registerDataBridgeSubscriberService( DataBridgeSubscriberService dataBridgeSubscriberService) { WSO2EventAdapterServiceValueHolder.dataBridgeSubscriberService = dataBridgeSubscriberService; } public static DataBridgeSubscriberService getDataBridgeSubscriberService() { return dataBridgeSubscriberService; } public static synchronized void registerAdapterService(String tenantDomain, String streamId, WSO2EventAdapter wso2EventAdapter) { ConcurrentHashMap<String, ConcurrentHashMap<String, WSO2EventAdapter>> tenantSpecificInputEventAdapterListenerMap = inputEventAdapterListenerMap.get(tenantDomain); if (tenantSpecificInputEventAdapterListenerMap == null) { tenantSpecificInputEventAdapterListenerMap = new ConcurrentHashMap<String, ConcurrentHashMap<String, WSO2EventAdapter>>(); inputEventAdapterListenerMap.put(tenantDomain, tenantSpecificInputEventAdapterListenerMap); } ConcurrentHashMap<String, WSO2EventAdapter> streamSpecificInputEventAdapterListenerMap = tenantSpecificInputEventAdapterListenerMap.get(streamId); if (streamSpecificInputEventAdapterListenerMap == null) { streamSpecificInputEventAdapterListenerMap = new ConcurrentHashMap<String, WSO2EventAdapter>(); tenantSpecificInputEventAdapterListenerMap.put(streamId, streamSpecificInputEventAdapterListenerMap); } streamSpecificInputEventAdapterListenerMap.put(wso2EventAdapter.getEventAdapterName(), wso2EventAdapter); } public static void unregisterAdapterService(String tenantDomain, String streamId, WSO2EventAdapter wso2EventAdapter) { ConcurrentHashMap<String, ConcurrentHashMap<String, WSO2EventAdapter>> tenantSpecificInputEventAdapterListenerMap = inputEventAdapterListenerMap.get(tenantDomain); if (tenantSpecificInputEventAdapterListenerMap != null) { ConcurrentHashMap<String, WSO2EventAdapter> streamSpecificInputEventAdapterListenerMap = tenantSpecificInputEventAdapterListenerMap.get(streamId); if (streamSpecificInputEventAdapterListenerMap != null) { streamSpecificInputEventAdapterListenerMap.remove(wso2EventAdapter.getEventAdapterName()); } } } public static ConcurrentHashMap<String, WSO2EventAdapter> getAdapterService(String tenantDomain, String streamId) { ConcurrentHashMap<String, ConcurrentHashMap<String, WSO2EventAdapter>> tenantSpecificInputEventAdapterListenerMap = inputEventAdapterListenerMap.get(tenantDomain); if (tenantSpecificInputEventAdapterListenerMap != null) { return tenantSpecificInputEventAdapterListenerMap.get(streamId); } return null; } }