mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-12-23 13:07:59 +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;
|
||||
|
||||
import org.jivesoftware.smackx.Form;
|
||||
import org.jivesoftware.smackx.FormField;
|
||||
import org.jivesoftware.smackx.packet.DiscoverInfo;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
@ -88,17 +89,14 @@ public class RoomInfo {
|
|||
// Get the information based on the discovered extended information
|
||||
Form form = Form.getFormFrom(info);
|
||||
if (form != null) {
|
||||
this.description =
|
||||
form.getField("muc#roominfo_description").getValues().next();
|
||||
Iterator<String> values = form.getField("muc#roominfo_subject").getValues();
|
||||
if (values.hasNext()) {
|
||||
this.subject = values.next();
|
||||
}
|
||||
else {
|
||||
this.subject = "";
|
||||
}
|
||||
this.occupantsCount =
|
||||
Integer.parseInt(form.getField("muc#roominfo_occupants").getValues()
|
||||
FormField descField = form.getField("muc#roominfo_description");
|
||||
this.description = descField == null ? "" : descField.getValues().next();
|
||||
|
||||
FormField subjField = form.getField("muc#roominfo_subject");
|
||||
this.subject = subjField == null ? "" : subjField.getValues().next();
|
||||
|
||||
FormField occCountField = form.getField("muc#roominfo_occupants");
|
||||
this.occupantsCount = occCountField == null ? -1 : Integer.parseInt(occCountField.getValues()
|
||||
.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