001
014
015 package com.liferay.portal.kernel.resiliency.spi.provider;
016
017 import com.liferay.portal.kernel.resiliency.spi.SPI;
018
019 import java.util.Map;
020 import java.util.concurrent.ConcurrentHashMap;
021 import java.util.concurrent.SynchronousQueue;
022
023
026 public class SPISynchronousQueueUtil {
027
028 public static SynchronousQueue<SPI> createSynchronousQueue(String spiUUID) {
029 SynchronousQueue<SPI> synchronousQueue = new SynchronousQueue<SPI>();
030
031 _synchronousQueues.put(spiUUID, synchronousQueue);
032
033 return synchronousQueue;
034 }
035
036 public static void destroySynchronousQueue(String spiUUID) {
037 _synchronousQueues.remove(spiUUID);
038 }
039
040 public static void notifySynchronousQueue(String spiUUID, SPI spi)
041 throws InterruptedException {
042
043 SynchronousQueue<SPI> synchronousQueue = _synchronousQueues.remove(
044 spiUUID);
045
046 if (synchronousQueue == null) {
047 throw new IllegalStateException(
048 "No SPI synchronous queue with uuid " + spiUUID);
049 }
050
051 synchronousQueue.put(spi);
052 }
053
054 private static Map<String, SynchronousQueue<SPI>> _synchronousQueues =
055 new ConcurrentHashMap<String, SynchronousQueue<SPI>>();
056
057 }