2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
8 * Unless otherwise specified, all software contained herein is licensed
9 * under the Apache License, Version 2.0 (the “License”);
10 * you may not use this software except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * Unless otherwise specified, all documentation contained herein is licensed
22 * under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
23 * you may not use this documentation except in compliance with the License.
24 * You may obtain a copy of the License at
26 * https://creativecommons.org/licenses/by/4.0/
28 * Unless required by applicable law or agreed to in writing, documentation
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 * ============LICENSE_END============================================
36 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
38 package org.onap.portalsdk.core.onboarding.ueb;
41 import java.util.concurrent.ConcurrentHashMap;
42 import java.util.concurrent.LinkedBlockingQueue;
44 import org.apache.commons.logging.Log;
45 import org.apache.commons.logging.LogFactory;
48 * A thin wrapper around ConcurrentHashMap that stores a queue for each
49 * Requester that is waiting for a Reply. When a reply is received that has a
50 * matching msgId, that requesters queue is populated with the reply message.
52 * Primarily for the UebManager to track requests while it waits for responses.
54 public class WaitingRequestersQueueList {
55 private final Log logger = LogFactory.getLog(getClass());
57 private final Map<String, LinkedBlockingQueue<UebMsg>> map;
59 public WaitingRequestersQueueList() {
60 map = new ConcurrentHashMap<>();
63 public void addQueueToMap(String msgId, LinkedBlockingQueue<UebMsg> queue) {
64 this.map.put(msgId, queue);
67 public void addMsg(String msgId, UebMsg message) {
68 LinkedBlockingQueue<UebMsg> queue = this.map.get(msgId);
72 logger.warn("Did not find entry in WaitingRequestersQueueList for msgId " + msgId);
76 public void removeQueueFromMap(String msgId) {
77 this.map.remove(msgId);
80 public String toString() {
81 StringBuffer sb = new StringBuffer();
82 sb.append("Map contains " + this.map.size() + " Publishers.");
83 for (Map.Entry<String, LinkedBlockingQueue<UebMsg>> entry : this.map.entrySet()) {
84 String key = entry.getKey().toString();
85 LinkedBlockingQueue<UebMsg> queue = entry.getValue();
86 sb.append("Entry msgId, " + key + " queue " + queue);