Skip to content

Commit 4f75499

Browse files
committed
More refactoring. Fixes federated disco#info issue.
1 parent 20979ab commit 4f75499

5 files changed

Lines changed: 20 additions & 13 deletions

File tree

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@
22

33
import java.util.HashMap;
44
import java.util.List;
5-
import java.util.concurrent.BlockingQueue;
6-
import org.buddycloud.channelserver.channel.node.configuration.Helper;
5+
76
import org.apache.log4j.Logger;
87
import org.buddycloud.channelserver.channel.ChannelManager;
8+
import org.buddycloud.channelserver.channel.node.configuration.Helper;
99
import org.buddycloud.channelserver.db.exception.NodeStoreException;
1010
import org.buddycloud.channelserver.packetprocessor.PacketProcessor;
1111
import org.buddycloud.channelserver.queue.FederatedQueueManager;
1212
import org.buddycloud.channelserver.queue.UnknownFederatedPacketException;
1313
import org.dom4j.Element;
1414
import org.xmpp.component.ComponentException;
1515
import org.xmpp.packet.IQ;
16-
import org.xmpp.packet.Packet;
1716

1817
public class DiscoResult implements PacketProcessor<IQ> {
1918

@@ -36,7 +35,8 @@ public void process(IQ reqIQ) throws Exception {
3635
requestIq = reqIQ;
3736
node = requestIq.getElement().element("query")
3837
.attributeValue("node");
39-
if (null == node) {
38+
if (federatedQueueManager.isFederatedDiscoInfoRequest(
39+
reqIQ.getID())) {
4040
federatedRequest();
4141
return;
4242
}
@@ -48,10 +48,11 @@ public void process(IQ reqIQ) throws Exception {
4848
}
4949
}
5050

51+
@SuppressWarnings("unchecked")
5152
private void federatedRequest() throws ComponentException {
5253
List<Element> identities = requestIq.getChildElement().elements(
5354
"identity");
54-
federatedQueueManager.processInfoResponses(requestIq.getFrom(),
55+
federatedQueueManager.processDiscoInfoResponse(requestIq.getFrom(),
5556
requestIq.getID(), identities);
5657
}
5758

src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/discoitems/DiscoResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ public DiscoResult(BlockingQueue<Packet> outQueue,
3333
public void process(IQ reqIQ) throws Exception {
3434
this.requestIq = reqIQ;
3535
List<Element> items = requestIq.getChildElement().elements("item");
36-
federatedQueueManager.sendInfoRequests(requestIq.getFrom(), items);
36+
federatedQueueManager.processDiscoItemsResponse(requestIq.getFrom(), items);
3737
}
3838
}

src/main/java/org/buddycloud/channelserver/queue/FederatedQueueManager.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ private int getId() {
6464

6565
public void process(Packet packet) throws ComponentException {
6666

67+
logger.debug("Packet payload " + packet.toXML() + " going to federation.");
68+
6769
String to = packet.getTo().toString();
6870

6971
String uniqueId = generateUniqueId(packet);
@@ -140,7 +142,7 @@ private void discoverRemoteChannelServer(String remoteDomain, String id)
140142
remoteChannelDiscoveryStatus.put(remoteDomain, DISCO_ITEMS);
141143
}
142144

143-
public void sendInfoRequests(JID from, List<Element> items)
145+
public void processDiscoItemsResponse(JID from, List<Element> items)
144146
throws ComponentException {
145147

146148
for (Element item : items) {
@@ -170,11 +172,15 @@ public void sendInfoRequests(JID from, List<Element> items)
170172
remoteChannelDiscoveryStatus.put(from.toString(), DISCO_INFO);
171173
}
172174

175+
public boolean isFederatedDiscoInfoRequest(String packetId) {
176+
return remoteServerInfoRequestIds.containsKey(packetId);
177+
}
178+
173179
private void setDiscoveredServer(String server, String handler) {
174180
discoveredServers.put(server, handler);
175181
}
176182

177-
public void processInfoResponses(JID from, String id,
183+
public void processDiscoInfoResponse(JID from, String id,
178184
List<Element> identities) throws ComponentException {
179185
String originatingServer = remoteServerInfoRequestIds.get(id);
180186
if (originatingServer == null) {

src/test/java/org/buddycloud/channelserver/packetHandler/iq/namespace/discoinfo/DiscoResultTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void testPassingThroughServerDiscoInfoResultStanzaHandsOffToDoServerDisco
4444
discoResult.process(result);
4545

4646
Mockito.verify(federatedQueueManager, Mockito.times(1))
47-
.processInfoResponses(Mockito.any(JID.class),
47+
.processDiscoInfoResponse(Mockito.any(JID.class),
4848
Mockito.anyString(), Mockito.anyList());
4949
}
5050
}

src/test/java/org/buddycloud/channelserver/queue/FederatedQueueManagerTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void testResponseToDiscoItemsRequestResultsInDiscoInfoRequests()
7676
ArrayList<Element> items = new ArrayList<Element>();
7777
items.add(item);
7878

79-
queueManager.sendInfoRequests(new JID("capulet.lit"), items);
79+
queueManager.processDiscoItemsResponse(new JID("capulet.lit"), items);
8080

8181
Assert.assertEquals(1, channelsEngine.size());
8282
Packet discoInfoRequest = channelsEngine.poll();
@@ -107,11 +107,11 @@ public void testNotProvidingChannelServerInItemsResponseResultsInErrorStanazaRet
107107
item.addAttribute("jid", "channels.capulet.lit");
108108
ArrayList<Element> items = new ArrayList<Element>();
109109
items.add(item);
110-
queueManager.sendInfoRequests(new JID("capulet.lit"), items);
110+
queueManager.processDiscoItemsResponse(new JID("capulet.lit"), items);
111111
channelsEngine.poll();
112112

113113
// Response to disco#info with no identities
114-
queueManager.processInfoResponses(new JID("channels.capulter.lit"),
114+
queueManager.processDiscoInfoResponse(new JID("channels.capulter.lit"),
115115
channelsEngine.poll().getID(), new ArrayList<Element>());
116116

117117
// Expect error response to original packet
@@ -150,7 +150,7 @@ public void testPassingChannelServerIdentifierViaItemsResultsInQueuedPacketSendi
150150
item.addAttribute("name", "buddycloud-server");
151151
ArrayList<Element> items = new ArrayList<Element>();
152152
items.add(item);
153-
queueManager.sendInfoRequests(new JID("topics.capulet.lit"), items);
153+
queueManager.processDiscoItemsResponse(new JID("topics.capulet.lit"), items);
154154

155155
// Note original packet now sent with remote channel server tag
156156
Packet originalPacketRedirected = channelsEngine.poll();

0 commit comments

Comments
 (0)