mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-12-14 06:51:08 +01:00
Merge branch '4.4'
This commit is contained in:
commit
89ef46525e
3 changed files with 72 additions and 20 deletions
|
|
@ -211,13 +211,16 @@ public class MultiUserChat {
|
|||
|
||||
switch (presence.getType()) {
|
||||
case available:
|
||||
Presence oldPresence = occupantsMap.put(from, presence);
|
||||
if (mucUser.getStatus().contains(MUCUser.Status.PRESENCE_TO_SELF_110)) {
|
||||
if (!processedReflectedSelfPresence
|
||||
&& mucUser.getStatus().contains(MUCUser.Status.PRESENCE_TO_SELF_110)) {
|
||||
processedReflectedSelfPresence = true;
|
||||
synchronized (this) {
|
||||
notify();
|
||||
}
|
||||
} else if (oldPresence != null) {
|
||||
}
|
||||
|
||||
Presence oldPresence = occupantsMap.put(from, presence);
|
||||
if (oldPresence != null) {
|
||||
// Get the previous occupant's affiliation & role
|
||||
MUCUser mucExtension = MUCUser.from(oldPresence);
|
||||
MUCAffiliation oldAffiliation = mucExtension.getItem().getAffiliation();
|
||||
|
|
|
|||
|
|
@ -50,24 +50,25 @@ public class ItemProvider extends ExtensionElementProvider<Item> {
|
|||
String xmlns = parser.getNamespace();
|
||||
ItemNamespace itemNamespace = ItemNamespace.fromXmlns(xmlns);
|
||||
|
||||
XmlPullParser.Event tag = parser.next();
|
||||
XmlPullParser.TagEvent event = parser.nextTag();
|
||||
switch (event) {
|
||||
case START_ELEMENT:
|
||||
String payloadElemName = parser.getName();
|
||||
String payloadNS = parser.getNamespace();
|
||||
|
||||
if (tag == XmlPullParser.Event.END_ELEMENT) {
|
||||
return new Item(itemNamespace, id, node);
|
||||
}
|
||||
else {
|
||||
String payloadElemName = parser.getName();
|
||||
String payloadNS = parser.getNamespace();
|
||||
|
||||
final ExtensionElementProvider<ExtensionElement> extensionProvider = ProviderManager.getExtensionProvider(payloadElemName, payloadNS);
|
||||
if (extensionProvider == null) {
|
||||
// TODO: Should we use StandardExtensionElement in this case? And probably remove SimplePayload all together.
|
||||
CharSequence payloadText = PacketParserUtils.parseElement(parser, true);
|
||||
return new PayloadItem<>(itemNamespace, id, node, new SimplePayload(payloadText.toString()));
|
||||
}
|
||||
else {
|
||||
return new PayloadItem<>(itemNamespace, id, node, extensionProvider.parse(parser));
|
||||
}
|
||||
final ExtensionElementProvider<ExtensionElement> extensionProvider = ProviderManager.getExtensionProvider(payloadElemName, payloadNS);
|
||||
if (extensionProvider == null) {
|
||||
// TODO: Should we use StandardExtensionElement in this case? And probably remove SimplePayload all together.
|
||||
CharSequence payloadText = PacketParserUtils.parseElement(parser, true);
|
||||
return new PayloadItem<>(itemNamespace, id, node, new SimplePayload(payloadText.toString()));
|
||||
}
|
||||
else {
|
||||
return new PayloadItem<>(itemNamespace, id, node, extensionProvider.parse(parser));
|
||||
}
|
||||
case END_ELEMENT:
|
||||
return new Item(itemNamespace, id, node);
|
||||
default:
|
||||
throw new AssertionError("unknown: " + event);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue