1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-29 09:42:06 +01:00

Add support for MUC Item Actor 'nick'

Fixes SMACK-691.
This commit is contained in:
Florian Schmaus 2015-09-28 13:05:06 +02:00
parent b18c6dac62
commit b746e5caee
2 changed files with 29 additions and 8 deletions

View file

@ -35,32 +35,33 @@ public class MUCItem implements NamedElement {
private final MUCAffiliation affiliation; private final MUCAffiliation affiliation;
private final MUCRole role; private final MUCRole role;
private final Jid actor; private final Jid actor;
private final Resourcepart actorNick;
private final String reason; private final String reason;
private final Jid jid; private final Jid jid;
private final Resourcepart nick; private final Resourcepart nick;
public MUCItem(MUCAffiliation affiliation) { public MUCItem(MUCAffiliation affiliation) {
this(affiliation, null, null, null, null, null); this(affiliation, null, null, null, null, null, null);
} }
public MUCItem(MUCRole role) { public MUCItem(MUCRole role) {
this(null, role, null, null, null, null); this(null, role, null, null, null, null, null);
} }
public MUCItem(MUCRole role, Resourcepart nick) { public MUCItem(MUCRole role, Resourcepart nick) {
this(null, role, null, null, null, nick); this(null, role, null, null, null, nick, null);
} }
public MUCItem(MUCAffiliation affiliation, Jid jid, String reason) { public MUCItem(MUCAffiliation affiliation, Jid jid, String reason) {
this(affiliation, null, null, reason, jid, null); this(affiliation, null, null, reason, jid, null, null);
} }
public MUCItem(MUCAffiliation affiliation, Jid jid) { public MUCItem(MUCAffiliation affiliation, Jid jid) {
this(affiliation, null, null, null, jid, null); this(affiliation, null, null, null, jid, null, null);
} }
public MUCItem(MUCRole role, Resourcepart nick, String reason) { public MUCItem(MUCRole role, Resourcepart nick, String reason) {
this(null, role, null, reason, null, nick); this(null, role, null, reason, null, nick, null);
} }
/** /**
@ -72,15 +73,17 @@ public class MUCItem implements NamedElement {
* @param reason * @param reason
* @param jid * @param jid
* @param nick * @param nick
* @param actorNick
*/ */
public MUCItem(MUCAffiliation affiliation, MUCRole role, Jid actor, public MUCItem(MUCAffiliation affiliation, MUCRole role, Jid actor,
String reason, Jid jid, Resourcepart nick) { String reason, Jid jid, Resourcepart nick, Resourcepart actorNick) {
this.affiliation = affiliation; this.affiliation = affiliation;
this.role = role; this.role = role;
this.actor = actor; this.actor = actor;
this.reason = reason; this.reason = reason;
this.jid = jid; this.jid = jid;
this.nick = nick; this.nick = nick;
this.actorNick = actorNick;
} }
/** /**
@ -92,6 +95,16 @@ public class MUCItem implements NamedElement {
return actor; return actor;
} }
/**
* Get the nickname of the actor.
*
* @return the nickname of the actor.
* @since 4.2
*/
public Resourcepart getActorNick() {
return actorNick;
}
/** /**
* Returns the reason for the item child. The reason is optional and could be used to explain * Returns the reason for the item child. The reason is optional and could be used to explain
* the reason why a user (occupant) was kicked or banned. * the reason why a user (occupant) was kicked or banned.

View file

@ -37,6 +37,7 @@ public class MUCParserUtils {
MUCRole role = MUCRole.fromString(parser.getAttributeValue("", "role")); MUCRole role = MUCRole.fromString(parser.getAttributeValue("", "role"));
Jid jid = ParserUtils.getJidAttribute(parser); Jid jid = ParserUtils.getJidAttribute(parser);
Jid actor = null; Jid actor = null;
Resourcepart actorNick = null;
String reason = null; String reason = null;
outerloop: while (true) { outerloop: while (true) {
int eventType = parser.next(); int eventType = parser.next();
@ -46,6 +47,13 @@ public class MUCParserUtils {
switch (name) { switch (name) {
case "actor": case "actor":
actor = ParserUtils.getJidAttribute(parser); actor = ParserUtils.getJidAttribute(parser);
// TODO change to
// actorNick = Resourcepart.from(parser.getAttributeValue("", "nick"));
// once a newer version of JXMPP is used that supports from(null).
String actorNickString = parser.getAttributeValue("", "nick");
if (actorNickString != null) {
actorNick = Resourcepart.from(actorNickString);
}
break; break;
case "reason": case "reason":
reason = parser.nextText(); reason = parser.nextText();
@ -59,7 +67,7 @@ public class MUCParserUtils {
break; break;
} }
} }
return new MUCItem(affiliation, role, actor, reason, jid, nick); return new MUCItem(affiliation, role, actor, reason, jid, nick, actorNick);
} }
public static Destroy parseDestroy(XmlPullParser parser) throws XmlPullParserException, IOException { public static Destroy parseDestroy(XmlPullParser parser) throws XmlPullParserException, IOException {