mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-27 00:32:07 +01:00
SMACK-163 Fixed NPE in accessing form field information.
git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@12200 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
parent
9176bf4a83
commit
8a8b8ccd79
2 changed files with 59 additions and 11 deletions
|
@ -21,6 +21,7 @@
|
||||||
package org.jivesoftware.smackx.muc;
|
package org.jivesoftware.smackx.muc;
|
||||||
|
|
||||||
import org.jivesoftware.smackx.Form;
|
import org.jivesoftware.smackx.Form;
|
||||||
|
import org.jivesoftware.smackx.FormField;
|
||||||
import org.jivesoftware.smackx.packet.DiscoverInfo;
|
import org.jivesoftware.smackx.packet.DiscoverInfo;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
@ -88,17 +89,14 @@ public class RoomInfo {
|
||||||
// Get the information based on the discovered extended information
|
// Get the information based on the discovered extended information
|
||||||
Form form = Form.getFormFrom(info);
|
Form form = Form.getFormFrom(info);
|
||||||
if (form != null) {
|
if (form != null) {
|
||||||
this.description =
|
FormField descField = form.getField("muc#roominfo_description");
|
||||||
form.getField("muc#roominfo_description").getValues().next();
|
this.description = descField == null ? "" : descField.getValues().next();
|
||||||
Iterator<String> values = form.getField("muc#roominfo_subject").getValues();
|
|
||||||
if (values.hasNext()) {
|
FormField subjField = form.getField("muc#roominfo_subject");
|
||||||
this.subject = values.next();
|
this.subject = subjField == null ? "" : subjField.getValues().next();
|
||||||
}
|
|
||||||
else {
|
FormField occCountField = form.getField("muc#roominfo_occupants");
|
||||||
this.subject = "";
|
this.occupantsCount = occCountField == null ? -1 : Integer.parseInt(occCountField.getValues()
|
||||||
}
|
|
||||||
this.occupantsCount =
|
|
||||||
Integer.parseInt(form.getField("muc#roominfo_occupants").getValues()
|
|
||||||
.next());
|
.next());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
50
test-unit/org/jivesoftware/smackx/muc/RoomInfoTest.java
Normal file
50
test-unit/org/jivesoftware/smackx/muc/RoomInfoTest.java
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
package org.jivesoftware.smackx.muc;
|
||||||
|
|
||||||
|
import org.jivesoftware.smackx.FormField;
|
||||||
|
import org.jivesoftware.smackx.muc.RoomInfo;
|
||||||
|
import org.jivesoftware.smackx.packet.DataForm;
|
||||||
|
import org.jivesoftware.smackx.packet.DiscoverInfo;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class RoomInfoTest
|
||||||
|
{
|
||||||
|
@Test
|
||||||
|
public void validateRoomWithEmptyForm()
|
||||||
|
{
|
||||||
|
DataForm dataForm = new DataForm("result");
|
||||||
|
|
||||||
|
DiscoverInfo discoInfo = new DiscoverInfo();
|
||||||
|
discoInfo.addExtension(dataForm);
|
||||||
|
RoomInfo roomInfo = new RoomInfo(discoInfo);
|
||||||
|
assertTrue(roomInfo.getDescription().isEmpty());
|
||||||
|
assertTrue(roomInfo.getSubject().isEmpty());
|
||||||
|
assertEquals(-1, roomInfo.getOccupantsCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void validateRoomWithForm()
|
||||||
|
{
|
||||||
|
DataForm dataForm = new DataForm("result");
|
||||||
|
|
||||||
|
FormField desc = new FormField("muc#roominfo_description");
|
||||||
|
desc.addValue("The place for all good witches!");
|
||||||
|
dataForm.addField(desc);
|
||||||
|
|
||||||
|
FormField subject = new FormField("muc#roominfo_subject");
|
||||||
|
subject.addValue("Spells");
|
||||||
|
dataForm.addField(subject);
|
||||||
|
|
||||||
|
FormField occupants = new FormField("muc#roominfo_occupants");
|
||||||
|
occupants.addValue("3");
|
||||||
|
dataForm.addField(occupants);
|
||||||
|
|
||||||
|
DiscoverInfo discoInfo = new DiscoverInfo();
|
||||||
|
discoInfo.addExtension(dataForm);
|
||||||
|
RoomInfo roomInfo = new RoomInfo(discoInfo);
|
||||||
|
assertEquals("The place for all good witches!", roomInfo.getDescription());
|
||||||
|
assertEquals("Spells", roomInfo.getSubject());
|
||||||
|
assertEquals(3, roomInfo.getOccupantsCount());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue