1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.exchangesimple;
35
36 import info.magnolia.cms.exchange.Subscriber;
37 import info.magnolia.cms.exchange.Subscription;
38
39 import java.util.ArrayList;
40 import java.util.Collection;
41 import java.util.Iterator;
42
43
44
45
46
47
48 public class DefaultSubscriber implements Subscriber {
49
50 private String url;
51
52 private boolean active;
53
54 private String name;
55
56
57
58
59 private int readTimeout = 600000;
60
61
62
63
64 private int connectTimeout = 10000;
65
66 Collection subscriptions = new ArrayList();
67
68 private final String authMethod = "Basic";
69
70 @Override
71 public String getName() {
72 return this.name;
73 }
74
75 @Override
76 public void setName(String name) {
77 this.name = name;
78 }
79
80 @Override
81 public String getURL() {
82 return url;
83 }
84
85 @Override
86 public void setURL(String url) {
87 this.url = url;
88 }
89
90 @Override
91 public boolean isActive() {
92 return active;
93 }
94
95 @Override
96 public void setActive(boolean active) {
97 this.active = active;
98 }
99
100 @Override
101 public void setSubscriptions(Collection subscriptions) {
102 this.subscriptions = subscriptions;
103 }
104
105 @Override
106 public Collection getSubscriptions() {
107 return this.subscriptions;
108 }
109
110 @Override
111 public void addSubscriptions(Subscription subscription) {
112 this.subscriptions.add(subscription);
113 }
114
115 @Override
116 public Subscription getMatchedSubscription(String path, String repositoryId) {
117 Iterator subscriptions = this.getSubscriptions().iterator();
118 Subscription matchedSubscription = null;
119 int highestVote = -1;
120 while (subscriptions.hasNext()) {
121 Subscription subscription = (Subscription) subscriptions.next();
122 if (repositoryId.equalsIgnoreCase(subscription.getRepository())) {
123 int vote = subscription.vote(path);
124 if (highestVote < vote) {
125 highestVote = vote;
126 matchedSubscription = subscription;
127 }
128 }
129 }
130 return matchedSubscription;
131 }
132
133 @Override
134 public boolean isSubscribed(String path, String repositoryId) {
135 return (null != this.getMatchedSubscription(path, repositoryId));
136 }
137
138 public String getDocumentBase(String path, String repositoryId) {
139 String documentBase = null;
140 Subscription subscription = this.getMatchedSubscription(path, repositoryId);
141 if (null != subscription) {
142 documentBase = subscription.getToURI();
143 if (null == documentBase) {
144
145
146 documentBase = subscription.getFromURI();
147 }
148 }
149 return documentBase;
150 }
151
152 public String getSubscribedPath(String path, String repositoryId) {
153 Subscription subscription = this.getMatchedSubscription(path, repositoryId);
154 String subscribedPath = null;
155 if (null != subscription) {
156 subscribedPath = subscription.getFromURI();
157 }
158 return subscribedPath;
159 }
160
161 @Override
162 public int getConnectTimeout() {
163 return connectTimeout;
164 }
165
166 @Override
167 public int getReadTimeout() {
168
169 return readTimeout;
170 }
171
172 @Override
173 public void setConnectTimeout(int timeoutMillis) {
174 this.connectTimeout = timeoutMillis;
175 }
176
177 @Override
178 public void setReadTimeout(int timeoutMillis) {
179 this.readTimeout = timeoutMillis;
180 }
181
182 }