summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/isode/stroke/jid/JID.java13
-rw-r--r--test/com/isode/stroke/jid/JIDTest.java10
2 files changed, 15 insertions, 8 deletions
diff --git a/src/com/isode/stroke/jid/JID.java b/src/com/isode/stroke/jid/JID.java
index 59eef52..8b62ca1 100644
--- a/src/com/isode/stroke/jid/JID.java
+++ b/src/com/isode/stroke/jid/JID.java
@@ -1,8 +1,8 @@
/*
- * Copyright (c) 2010-2012, Isode Limited, London, England.
+ * Copyright (c) 2010-2016, Isode Limited, London, England.
* All rights reserved.
*/
/*
* Copyright (c) 2010, Remko Tronçon.
* All rights reserved.
*/
@@ -11,19 +11,19 @@
* Licensed under the simplified BSD license.
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
package com.isode.stroke.jid;
-import com.isode.stroke.idn.ICUConverter;
-import com.isode.stroke.idn.IDNConverter;
-import com.ibm.icu.text.StringPrepParseException;
-import com.isode.stroke.base.NotNull;
import java.util.Arrays;
import java.util.List;
+import com.isode.stroke.base.NotNull;
+import com.isode.stroke.idn.ICUConverter;
+import com.isode.stroke.idn.IDNConverter;
+
/**
* JID helper.
*
* This represents the JID used in XMPP
* (RFC6120 - http://tools.ietf.org/html/rfc6120 particularly section 1.4),
* further defined in XMPP Address Format (http://tools.ietf.org/html/rfc6122 ).
@@ -144,12 +144,15 @@ public class JID implements Comparable<JID> {
*/
public JID(String node, String domain, String resource) {
NotNull.exceptIfNull(node, "node");
NotNull.exceptIfNull(domain, "domain");
valid_ = true;
hasResource_ = (resource != null);
+ if (hasResource_ && resource.isEmpty()) {
+ valid_ = false;
+ }
nameprepAndSetComponents(node, domain, resource);
}
private void nameprepAndSetComponents(String node, String domain, String resource) {
if (domain.isEmpty() || idnConverter.getIDNAEncoded(domain) == null) {
valid_ = false;
diff --git a/test/com/isode/stroke/jid/JIDTest.java b/test/com/isode/stroke/jid/JIDTest.java
index 96de429..69bee05 100644
--- a/test/com/isode/stroke/jid/JIDTest.java
+++ b/test/com/isode/stroke/jid/JIDTest.java
@@ -9,18 +9,16 @@
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
package com.isode.stroke.jid;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+
import org.junit.Test;
-import com.isode.stroke.jid.JID;
public class JIDTest {
public JIDTest() {
}
@@ -152,12 +150,18 @@ public class JIDTest {
@Test
public void testConstructorWithStrings_EmptyDomain() {
JID testling = new JID("foo", "", "baz");
assertFalse(testling.isValid());
}
+
+ @Test
+ public void testConstructorWithStrings_EmptyResource() {
+ JID testling = new JID("foo","bar","");
+ assertFalse(testling.isValid());
+ }
@Test
public void testIsBare() {
assertTrue(new JID("foo@bar").isBare());
}