Skip to content

Commit ebdecf9

Browse files
committed
Moving checks for local domains, jids and nodes to the Configuration
class.
1 parent e7712ad commit ebdecf9

72 files changed

Lines changed: 404 additions & 580 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/org/buddycloud/channelserver/ChannelsEngine.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.apache.log4j.Logger;
88
import org.buddycloud.channelserver.channel.ChannelManagerFactory;
99
import org.buddycloud.channelserver.channel.ChannelManagerFactoryImpl;
10-
import org.buddycloud.channelserver.channel.Conf;
1110
import org.buddycloud.channelserver.db.DefaultNodeStoreFactoryImpl;
1211
import org.buddycloud.channelserver.db.NodeStoreFactory;
1312
import org.buddycloud.channelserver.db.exception.NodeStoreException;
@@ -109,8 +108,7 @@ private void setupManagers() throws ComponentException {
109108
throw new ComponentException(e);
110109
}
111110

112-
channelManagerFactory = new ChannelManagerFactoryImpl(configuration,
113-
nodeStoreFactory);
111+
channelManagerFactory = new ChannelManagerFactoryImpl(nodeStoreFactory);
114112
federatedQueueManager = new FederatedQueueManager(this,
115113
configuration);
116114
onlineUsers = new OnlineResourceManager(configuration, channelManagerFactory.create());

src/main/java/org/buddycloud/channelserver/Configuration.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.Properties;
1212

1313
import org.apache.log4j.Logger;
14+
import org.buddycloud.channelserver.channel.LocalDomainChecker;
1415
import org.xmpp.packet.JID;
1516

1617
public class Configuration extends Properties {
@@ -19,6 +20,7 @@ public class Configuration extends Properties {
1920
private static final long serialVersionUID = 1L;
2021

2122
private static final String ARRAY_PROPERTY_SEPARATOR = ";";
23+
private static final String INVALID_NODE = "Illegal node format";
2224

2325
public static final String CONFIGURATION_SERVER_DOMAIN = "server.domain";
2426
public static final String CONFIGURATION_SERVER_CHANNELS_DOMAIN = "server.domain.channels";
@@ -95,6 +97,10 @@ public static Configuration getInstance() {
9597
}
9698
return instance;
9799
}
100+
101+
public static void reset() {
102+
instance = null;
103+
}
98104

99105
public String getProperty(String key) {
100106
return conf.getProperty(key);
@@ -112,6 +118,10 @@ public void clear() {
112118
public String getProperty(String key, String defaultValue) {
113119
return conf.getProperty(key, defaultValue);
114120
}
121+
122+
public void putProperty(String key, String value) {
123+
conf.put(key, value);
124+
}
115125

116126
public void load(InputStream inputStream) throws IOException {
117127
conf.load(inputStream);
@@ -199,4 +209,22 @@ public String getComponentPort() {
199209
public String getXmppHost() {
200210
return this.getProperty(XMPP_HOST, "127.0.0.1");
201211
}
212+
213+
public boolean isLocalDomain(String domain) {
214+
return LocalDomainChecker.isLocal(domain, this);
215+
}
216+
217+
public boolean isLocalNode(String nodeId) {
218+
if (false == nodeId.matches("/user/.+@.+/.+")) {
219+
LOGGER.debug("Node " + nodeId + " has an invalid format");
220+
throw new IllegalArgumentException(INVALID_NODE);
221+
}
222+
String domain = new JID(nodeId.split("/")[2]).getDomain();
223+
return isLocalDomain(domain);
224+
}
225+
226+
public boolean isLocalJID(JID jid) {
227+
String domain = jid.getDomain();
228+
return isLocalDomain(domain);
229+
}
202230
}

src/main/java/org/buddycloud/channelserver/channel/ChannelManager.java

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -19,40 +19,6 @@ public interface ChannelManager extends NodeStore {
1919
* @throws NodeStoreException
2020
*/
2121
void createPersonalChannel(JID ownerJID) throws NodeStoreException;
22-
23-
/**
24-
* Determines whether the node id given refers to a local node.
25-
*
26-
* @param nodeId
27-
* the node id
28-
* @return <code>true</code> if the node appears to be local,
29-
* <code>false</code> otherwise.
30-
* @throws NodeStoreException
31-
*/
32-
boolean isLocalNode(String nodeId) throws NodeStoreException;
33-
34-
/**
35-
* Determines whether the jid refers to a local user.
36-
*
37-
* @param jid
38-
* the user's jid
39-
* @return <code>true</code> if the jid appears to be local,
40-
* <code>false</code> otherwise.
41-
* @throws NodeStoreException
42-
*/
43-
boolean isLocalJID(JID jid) throws NodeStoreException;
44-
45-
/**
46-
* Determines whether the domain is served by this server.
47-
*
48-
* @param domain
49-
* the domain name
50-
* @return <code>true</code> if the domain appears to be local,
51-
* <code>false</code> otherwise.
52-
* @throws NodeStoreException
53-
*/
54-
boolean isLocalDomain(String domain) throws NodeStoreException;
55-
5622

5723
/**
5824
* Deletes all data from remote nodes
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
package org.buddycloud.channelserver.channel;
22

3-
import java.util.Properties;
4-
53
import org.buddycloud.channelserver.db.NodeStoreFactory;
64

75
public class ChannelManagerFactoryImpl implements ChannelManagerFactory {
86

9-
private final Properties configuration;
107
private final NodeStoreFactory nodeStoreFactory;
118

12-
public ChannelManagerFactoryImpl(final Properties configuration, final NodeStoreFactory nodeStoreFactory) {
13-
this.configuration = configuration;
9+
public ChannelManagerFactoryImpl(final NodeStoreFactory nodeStoreFactory) {
1410
this.nodeStoreFactory = nodeStoreFactory;
1511
}
1612

1713
@Override
1814
public ChannelManager create() {
19-
return new ChannelManagerImpl(nodeStoreFactory.create(), configuration);
15+
return new ChannelManagerImpl(nodeStoreFactory.create());
2016
}
2117

2218
}

src/main/java/org/buddycloud/channelserver/channel/ChannelManagerImpl.java

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import java.util.Date;
55
import java.util.List;
66
import java.util.Map;
7-
import java.util.Properties;
87

98
import org.apache.log4j.Logger;
9+
import org.buddycloud.channelserver.Configuration;
1010
import org.buddycloud.channelserver.db.ClosableIteratorImpl;
1111
import org.buddycloud.channelserver.db.CloseableIterator;
1212
import org.buddycloud.channelserver.db.NodeStore;
@@ -28,12 +28,10 @@
2828
public class ChannelManagerImpl implements ChannelManager {
2929

3030
private final NodeStore nodeStore;
31-
private final Properties configuration;
3231

3332
private static final Logger logger = Logger
3433
.getLogger(ChannelManagerImpl.class);
3534

36-
private static final String INVALID_NODE = "Illegal node format";
3735
private static final String REMOTE_NODE = "Illegal remote node";
3836

3937
/**
@@ -42,10 +40,8 @@ public class ChannelManagerImpl implements ChannelManager {
4240
* @param nodeStore
4341
* the backing {@link NodeStore}.
4442
*/
45-
public ChannelManagerImpl(final NodeStore nodeStore,
46-
final Properties configuration) {
43+
public ChannelManagerImpl(final NodeStore nodeStore) {
4744
this.nodeStore = nodeStore;
48-
this.configuration = configuration;
4945
}
5046

5147
@Override
@@ -220,7 +216,7 @@ public Transaction beginTransaction() throws NodeStoreException {
220216

221217
@Override
222218
public void createPersonalChannel(JID owner) throws NodeStoreException {
223-
if (false == isLocalJID(owner)) {
219+
if (false == Configuration.getInstance().isLocalJID(owner)) {
224220
throw new IllegalArgumentException(REMOTE_NODE);
225221
}
226222
if (!nodeExists(Conf.getPostChannelNodename(owner))) {
@@ -249,27 +245,6 @@ public void createPersonalChannel(JID owner) throws NodeStoreException {
249245
}
250246
}
251247

252-
@Override
253-
public boolean isLocalDomain(String domain) {
254-
return LocalDomainChecker.isLocal(domain, configuration);
255-
}
256-
257-
@Override
258-
public boolean isLocalNode(String nodeId) {
259-
if (false == nodeId.matches("/user/.+@.+/.+")) {
260-
logger.debug("Node " + nodeId + " has an invalid format");
261-
throw new IllegalArgumentException(INVALID_NODE);
262-
}
263-
String domain = new JID(nodeId.split("/")[2]).getDomain();
264-
return isLocalDomain(domain);
265-
}
266-
267-
@Override
268-
public boolean isLocalJID(JID jid) {
269-
String domain = jid.getDomain();
270-
return isLocalDomain(domain);
271-
}
272-
273248
@Override
274249
public void close() throws NodeStoreException {
275250
nodeStore.close();

src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/discoinfo/DiscoInfoGet.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.TreeMap;
55
import java.util.concurrent.BlockingQueue;
66
import org.apache.log4j.Logger;
7+
import org.buddycloud.channelserver.Configuration;
78
import org.buddycloud.channelserver.channel.ChannelManager;
89
import org.buddycloud.channelserver.channel.node.configuration.field.AccessModel;
910
import org.buddycloud.channelserver.db.exception.NodeStoreException;
@@ -46,14 +47,14 @@ public void process(IQ reqIQ) throws Exception {
4647
node = elm.attributeValue("node");
4748
query = result.setChildElement(ELEMENT_NAME,
4849
JabberDiscoInfo.NAMESPACE_URI);
49-
if (false == channelManager.isLocalJID(requestIq.getFrom())) {
50+
if (false == Configuration.getInstance().isLocalJID(requestIq.getFrom())) {
5051
result.getElement().addAttribute("remote-server-discover", "false");
5152
}
5253
if ((node == null) || (true == node.equals(""))) {
5354
sendServerDiscoInfo();
5455
return;
5556
}
56-
if (false == channelManager.isLocalNode(node)
57+
if (false == Configuration.getInstance().isLocalNode(node)
5758
&& (false == channelManager.isCachedNode(node))) {
5859
logger.info("Node " + node + " is remote and not cached so "
5960
+ "we're going off to get disco#info");
@@ -92,7 +93,7 @@ private void sendNodeConfigurationInformation() throws Exception {
9293
value = configuration.get(key);
9394
if ((true == key.equals(AccessModel.FIELD_NAME))
9495
&& (value.equals(AccessModel.local.toString()))
95-
&& (false == channelManager.isLocalJID(requestIq.getFrom()))) {
96+
&& (false == Configuration.getInstance().isLocalJID(requestIq.getFrom()))) {
9697
value = AccessModel.authorize.toString();
9798
}
9899
x.addField(key, null, null).addValue(value);

src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/mam/MessageArchiveManagement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.concurrent.BlockingQueue;
66

77
import org.apache.log4j.Logger;
8+
import org.buddycloud.channelserver.Configuration;
89
import org.buddycloud.channelserver.channel.ChannelManager;
910
import org.buddycloud.channelserver.channel.Conf;
1011
import org.buddycloud.channelserver.db.CloseableIterator;
@@ -59,7 +60,7 @@ public void process(IQ reqIQ) throws Exception {
5960
requestIq = reqIQ;
6061
reply = IQ.createResultIQ(requestIq);
6162

62-
if (false == channelManager.isLocalJID(requestIq.getFrom())) {
63+
if (false == Configuration.getInstance().isLocalJID(requestIq.getFrom())) {
6364
this._sendNotHandledStanza();
6465
return;
6566
}

src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/get/AffiliationsGet.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@
33
import java.util.concurrent.BlockingQueue;
44

55
import org.apache.log4j.Logger;
6+
import org.buddycloud.channelserver.Configuration;
67
import org.buddycloud.channelserver.channel.ChannelManager;
78
import org.buddycloud.channelserver.db.exception.NodeStoreException;
89
import org.buddycloud.channelserver.packetprocessor.iq.namespace.pubsub.JabberPubsub;
910
import org.buddycloud.channelserver.packetprocessor.iq.namespace.pubsub.PubSubElementProcessor;
1011
import org.buddycloud.channelserver.packetprocessor.iq.namespace.pubsub.PubSubGet;
1112
import org.buddycloud.channelserver.pubsub.affiliation.Affiliations;
12-
import org.buddycloud.channelserver.pubsub.model.NodeAffiliation;
1313
import org.buddycloud.channelserver.pubsub.model.NodeMembership;
1414
import org.buddycloud.channelserver.pubsub.subscription.Subscriptions;
15-
import org.buddycloud.channelserver.queue.FederatedQueueManager;
1615
import org.buddycloud.channelserver.utils.node.item.payload.Buddycloud;
1716
import org.dom4j.Element;
1817
import org.xmpp.packet.IQ;
@@ -29,11 +28,7 @@ public class AffiliationsGet implements PubSubElementProcessor {
2928
private String node;
3029
private JID actorJid;
3130
private IQ result;
32-
private Element resultSetManagement;
3331
private String firstItem;
34-
private String lastItem;
35-
private int totalEntriesCount;
36-
private Boolean isOwnerModerator;
3732

3833
private static final Logger logger = Logger
3934
.getLogger(AffiliationsGet.class);
@@ -51,9 +46,8 @@ public void process(Element elm, JID actorJID, IQ reqIQ, Element rsm)
5146
requestIq = reqIQ;
5247
actorJid = actorJID;
5348
node = elm.attributeValue("node");
54-
resultSetManagement = rsm;
5549

56-
if (false == channelManager.isLocalJID(requestIq.getFrom())) {
50+
if (false == Configuration.getInstance().isLocalJID(requestIq.getFrom())) {
5751
result.getElement().addAttribute("remote-server-discover", "false");
5852
}
5953
String namespace = JabberPubsub.NS_PUBSUB_OWNER;
@@ -82,7 +76,7 @@ public void process(Element elm, JID actorJID, IQ reqIQ, Element rsm)
8276

8377
private boolean getNodeAffiliations(Element affiliations)
8478
throws NodeStoreException, InterruptedException {
85-
if (false == channelManager.isLocalNode(node)
79+
if (false == Configuration.getInstance().isLocalNode(node)
8680
&& (false == channelManager.isCachedNode(node))) {
8781
makeRemoteRequest(node.split("/")[2]);
8882
return false;
@@ -91,7 +85,7 @@ private boolean getNodeAffiliations(Element affiliations)
9185
nodeMemberships = channelManager.getNodeMemberships(node);
9286

9387
if ((0 == nodeMemberships.size())
94-
&& (false == channelManager.isLocalNode(node))) {
88+
&& (false == Configuration.getInstance().isLocalNode(node))) {
9589
makeRemoteRequest(node.split("/")[2]);
9690
return false;
9791
}
@@ -111,8 +105,9 @@ private boolean getNodeAffiliations(Element affiliations)
111105
logger.trace("Adding affiliation for " + nodeMembership.getUser()
112106
+ " affiliation " + nodeMembership.getAffiliation());
113107

114-
if (null == firstItem) firstItem = nodeMembership.getUser().toString();
115-
lastItem = nodeMembership.getUser().toString();
108+
if (null == firstItem) {
109+
firstItem = nodeMembership.getUser().toString();
110+
}
116111

117112
affiliations
118113
.addElement("affiliation")
@@ -132,7 +127,7 @@ private boolean isOwnerModerator() throws NodeStoreException {
132127
private boolean getUserMemberships(Element affiliations)
133128
throws NodeStoreException, InterruptedException {
134129

135-
if (false == channelManager.isLocalJID(actorJid)
130+
if (false == Configuration.getInstance().isLocalJID(actorJid)
136131
&& (false == channelManager.isCachedJID(requestIq.getFrom()))) {
137132
makeRemoteRequest(actorJid.getDomain());
138133
return false;
@@ -157,7 +152,6 @@ private boolean getUserMemberships(Element affiliations)
157152
+ " (no node provided)");
158153

159154
if (null == firstItem) firstItem = membership.getNodeId();
160-
lastItem = membership.getNodeId();
161155

162156
affiliations
163157
.addElement("affiliation")

src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/get/NodeConfigureGet.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.concurrent.BlockingQueue;
55

66
import org.apache.log4j.Logger;
7+
import org.buddycloud.channelserver.Configuration;
78
import org.buddycloud.channelserver.channel.ChannelManager;
89
import org.buddycloud.channelserver.channel.node.configuration.field.AccessModel;
910
import org.buddycloud.channelserver.db.exception.NodeStoreException;
@@ -52,7 +53,7 @@ public void process(Element elm, JID actorJID, IQ reqIQ, Element rsm)
5253
return;
5354
}
5455

55-
if (!channelManager.isLocalNode(node) && !channelManager.isCachedNodeConfig(node)) {
56+
if (!Configuration.getInstance().isLocalNode(node) && !channelManager.isCachedNodeConfig(node)) {
5657
makeRemoteRequest();
5758
return;
5859
}
@@ -90,7 +91,7 @@ private void getNodeConfiguration() throws Exception {
9091
value = nodeConf.get(key);
9192
if ((true == key.equals(AccessModel.FIELD_NAME))
9293
&& (value.equals(AccessModel.local.toString()))
93-
&& (false == channelManager.isLocalJID(actor))) {
94+
&& (false == Configuration.getInstance().isLocalJID(actor))) {
9495
value = AccessModel.authorize.toString();
9596
}
9697
x.addField(key, null, null).addValue(value);

0 commit comments

Comments
 (0)