Skip to content
This repository has been archived by the owner on May 30, 2020. It is now read-only.

Commit

Permalink
support XEP-0280: Message Carbons
Browse files Browse the repository at this point in the history
  • Loading branch information
gerc99 committed Mar 13, 2015
1 parent 2195439 commit 4839402
Show file tree
Hide file tree
Showing 5 changed files with 191 additions and 42 deletions.
8 changes: 8 additions & 0 deletions src/protocol/xmpp/OnIqReceived.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package protocol.xmpp;

/**
* Created by gerc on 12.03.2015.
*/
public interface OnIqReceived {
public void onIqReceived(XmlNode xmlNode);
}
54 changes: 54 additions & 0 deletions src/protocol/xmpp/ServerFeatures.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package protocol.xmpp;

import java.util.HashMap;

/**
* Created by gerc on 12.03.2015.
*/
public class ServerFeatures {
private HashMap<String, String> serverDiscoItems = new HashMap<>();
private String mucServer;
private boolean hasMessageArchiveManagement;
private boolean hasCarbon;
private boolean carbonsEnabled;

public void parse(XmlNode iqQuery, String id) {
while (0 < iqQuery.childrenCount()) {
XmlNode featureNode = iqQuery.popChildNode();
String feature = featureNode.getAttribute("var");
if (feature != null) {
if (feature.equals("http://jabber.org/protocol/muc")) {
mucServer = serverDiscoItems.get(id);
} else if (feature.equals("urn:xmpp:mam:0")) {
hasMessageArchiveManagement = true;
} else if (feature.equals("urn:xmpp:carbons:2")) {
hasCarbon = true;
}
}
}
}

public boolean hasMessageArchiveManagement() {
return hasMessageArchiveManagement;
}

public HashMap<String, String> getServerDiscoItems() {
return serverDiscoItems;
}

public String mucServer() {
return mucServer;
}

public boolean hasCarbon() {
return hasCarbon;
}

public boolean isCarbonsEnabled() {
return carbonsEnabled;
}

public void setCarbonsEnabled(boolean carbonsEnabled) {
this.carbonsEnabled = carbonsEnabled;
}
}
17 changes: 11 additions & 6 deletions src/protocol/xmpp/XmlNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public final class XmlNode {
private XmlNode() {
}

private XmlNode(String name) {
public XmlNode(String name) {
this.name = name;
}

Expand All @@ -50,7 +50,7 @@ public String getAttribute(String key) {
return (String) attribs.get(key);
}

private void putAttribute(String key, String value) {
public void putAttribute(String key, String value) {
if (S_JID.equals(key)) {
key = S_JID;
} else if (S_NAME.equals(key)) {
Expand All @@ -60,12 +60,12 @@ private void putAttribute(String key, String value) {
}

public String getXmlns() {
String xmlns = getAttribute("xmlns");
String xmlns = getAttribute(S_XMLNS);
if (null == xmlns) {
Enumeration e = attribs.keys();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
if (key.startsWith("xmlns:")) {
if (key.startsWith(S_XMLNS + ":")) {
return getAttribute(key);
}
}
Expand Down Expand Up @@ -565,9 +565,14 @@ public void toString(StringBuffer sb) {
sb.append("</").append(name).append(">");
}

public static XmlNode addXmlns(String name, String xmlns) {
XmlNode child = new XmlNode(name);
child.putAttribute(S_XMLNS, xmlns);
return child;
}

public static XmlNode getEmptyVCard() {
XmlNode vCard = new XmlNode("vCard");
vCard.putAttribute(S_XMLNS, "vcard-temp");
XmlNode vCard = XmlNode.addXmlns("vCard", "vcard-temp");
vCard.putAttribute("version", "2.0");
vCard.putAttribute("prodid", "-/" + "/HandGen/" + "/NONSGML vGen v1.0/" + "/EN");
return vCard;
Expand Down

0 comments on commit 4839402

Please sign in to comment.