mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-12-12 14:01:08 +01:00
Merge branch '4.1'
Conflicts: smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java smack-core/src/main/java/org/jivesoftware/smack/PacketCollector.java smack-core/src/main/java/org/jivesoftware/smack/PacketListener.java smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java smack-core/src/main/java/org/jivesoftware/smack/debugger/SmackDebugger.java smack-core/src/main/java/org/jivesoftware/smack/packet/Packet.java smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java smack-core/src/test/java/org/jivesoftware/smack/ThreadedDummyConnection.java smack-extensions/src/main/java/org/jivesoftware/smackx/address/provider/MultipleAddressesProvider.java smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/DataListener.java smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FaultTolerantNegotiator.java smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IBBTransferNegotiator.java smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/Socks5TransferNegotiator.java smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/StreamNegotiator.java smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSub.java smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java smack-extensions/src/test/java/org/jivesoftware/smackx/receipts/DeliveryReceiptTest.java smack-im/src/main/java/org/jivesoftware/smack/chat/ChatManager.java smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/provider/JingleProvider.java smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/UserID.java smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/provider/RosterExchangeProvider.java smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java version.gradle
This commit is contained in:
commit
701aa7d9c4
298 changed files with 2402 additions and 1562 deletions
|
|
@ -27,6 +27,7 @@ import org.jivesoftware.smack.XMPPConnection;
|
|||
import org.jivesoftware.smack.XMPPConnectionRegistry;
|
||||
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
import org.jivesoftware.smack.packet.id.StanzaIdUtil;
|
||||
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
|
||||
import org.jivesoftware.smackx.vcardtemp.packet.VCard;
|
||||
import org.jxmpp.jid.BareJid;
|
||||
|
|
@ -95,7 +96,12 @@ public class VCardManager extends Manager {
|
|||
* @throws InterruptedException
|
||||
*/
|
||||
public void saveVCard(VCard vcard) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||
// XEP-54 § 3.2 "A user may publish or update his or her vCard by sending an IQ of type "set" with no 'to' address…"
|
||||
vcard.setTo((Jid) null);
|
||||
vcard.setType(IQ.Type.set);
|
||||
// Also make sure to generate a new stanza id (the given vcard could be a vcard result), in which case we don't
|
||||
// want to use the same stanza id again (although it wouldn't break if we did)
|
||||
vcard.setStanzaId(StanzaIdUtil.newStanzaId());
|
||||
connection().createPacketCollectorAndSend(vcard).nextResultOrThrow();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -569,23 +569,27 @@ public class VCard extends IQ {
|
|||
xml.rightAngleBracket();
|
||||
if (hasNameField()) {
|
||||
xml.openElement("N");
|
||||
xml.element("FAMILY", lastName);
|
||||
xml.element("GIVEN", firstName);
|
||||
xml.element("MIDDLE", middleName);
|
||||
xml.optElement("FAMILY", lastName);
|
||||
xml.optElement("GIVEN", firstName);
|
||||
xml.optElement("MIDDLE", middleName);
|
||||
xml.closeElement("N");
|
||||
}
|
||||
if (hasOrganizationFields()) {
|
||||
xml.openElement("ORG");
|
||||
xml.element("ORGNAME", organization);
|
||||
xml.element("ORGUNIT", organizationUnit);
|
||||
xml.optElement("ORGNAME", organization);
|
||||
xml.optElement("ORGUNIT", organizationUnit);
|
||||
xml.closeElement("ORG");
|
||||
}
|
||||
for (Entry<String, String> entry : otherSimpleFields.entrySet()) {
|
||||
xml.element(entry.getKey(), entry.getValue());
|
||||
xml.optElement(entry.getKey(), entry.getValue());
|
||||
}
|
||||
for (Entry<String, String> entry : otherUnescapableFields.entrySet()) {
|
||||
final String value = entry.getValue();
|
||||
if (value == null) {
|
||||
continue;
|
||||
}
|
||||
xml.openElement(entry.getKey());
|
||||
xml.append(entry.getValue());
|
||||
xml.append(value);
|
||||
xml.closeElement(entry.getKey());
|
||||
}
|
||||
if (photoBinval != null) {
|
||||
|
|
@ -611,24 +615,36 @@ public class VCard extends IQ {
|
|||
xml.closeElement("EMAIL");
|
||||
}
|
||||
for (Entry<String, String> phone : workPhones.entrySet()) {
|
||||
final String number = phone.getValue();
|
||||
if (number == null) {
|
||||
continue;
|
||||
}
|
||||
xml.openElement("TEL");
|
||||
xml.emptyElement("WORK");
|
||||
xml.emptyElement(phone.getKey());
|
||||
xml.element("NUMBER", phone.getValue());
|
||||
xml.element("NUMBER", number);
|
||||
xml.closeElement("TEL");
|
||||
}
|
||||
for (Entry<String, String> phone : homePhones.entrySet()) {
|
||||
final String number = phone.getValue();
|
||||
if (number == null) {
|
||||
continue;
|
||||
}
|
||||
xml.openElement("TEL");
|
||||
xml.emptyElement("HOME");
|
||||
xml.emptyElement(phone.getKey());
|
||||
xml.element("NUMBER", phone.getValue());
|
||||
xml.element("NUMBER", number);
|
||||
xml.closeElement("TEL");
|
||||
}
|
||||
if (!workAddr.isEmpty()) {
|
||||
xml.openElement("ADR");
|
||||
xml.emptyElement("WORK");
|
||||
for (Entry<String, String> entry : workAddr.entrySet()) {
|
||||
xml.element(entry.getKey(), entry.getValue());
|
||||
final String value = entry.getValue();
|
||||
if (value == null) {
|
||||
continue;
|
||||
}
|
||||
xml.element(entry.getKey(), value);
|
||||
}
|
||||
xml.closeElement("ADR");
|
||||
}
|
||||
|
|
@ -636,7 +652,11 @@ public class VCard extends IQ {
|
|||
xml.openElement("ADR");
|
||||
xml.emptyElement("HOME");
|
||||
for (Entry<String, String> entry : homeAddr.entrySet()) {
|
||||
xml.element(entry.getKey(), entry.getValue());
|
||||
final String value = entry.getValue();
|
||||
if (value == null) {
|
||||
continue;
|
||||
}
|
||||
xml.element(entry.getKey(), value);
|
||||
}
|
||||
xml.closeElement("ADR");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue