1
14
15 package com.liferay.portal.cache.cluster.clusterlink;
16
17 import com.liferay.portal.kernel.cache.cluster.PortalCacheClusterChannel;
18 import com.liferay.portal.kernel.cache.cluster.PortalCacheClusterChannelFactory;
19 import com.liferay.portal.kernel.cache.cluster.PortalCacheClusterException;
20 import com.liferay.portal.kernel.cluster.Priority;
21
22 import java.util.Collections;
23 import java.util.List;
24 import java.util.concurrent.atomic.AtomicInteger;
25
26
32 public class ClusterLinkPortalCacheClusterChannelFactory
33 implements PortalCacheClusterChannelFactory {
34
35 public PortalCacheClusterChannel createPortalCacheClusterChannel()
36 throws PortalCacheClusterException {
37
38 int count = _counter.getAndIncrement();
39
40 if (count >= _priorities.size()) {
41 throw new IllegalStateException(
42 "Cannot create more than " + _priorities.size() + " channels");
43 }
44
45 return new ClusterLinkPortalCacheClusterChannel(
46 _destinationName, _priorities.get(count));
47 }
48
49 public void setDestinationName(String destinationName) {
50 _destinationName = destinationName;
51 }
52
53 public void setPriorities(List<Priority> priorities) {
54 _priorities = priorities;
55
56 Collections.sort(priorities);
57 }
58
59 private AtomicInteger _counter = new AtomicInteger(0);
60 private String _destinationName;
61 private List<Priority> _priorities;
62
63 }