package hudson.plugins.jabber.im.transport;
import hudson.Util;
/**
* Jabber related utility methods.
*
* @author kutzi
*/
public class JabberUtil {
private JabberUtil() {
// no instances
}
/**
* Returns the user part (aka. 'node') of a jabber ID in the form:
*
* <user>[@<domain>[/<resource]]
*
* @return the part before '@' or jabberId unchanged if '@' was not found
*/
public static String getUserPart(String jabberId) {
int idx = jabberId.indexOf('@');
if (idx == -1)
return jabberId;
else {
String userPart = jabberId.substring(0, idx);
if (Util.fixEmptyAndTrim(userPart) == null) {
throw new IllegalArgumentException("Missing user part in " + jabberId);
}
return userPart;
}
}
/**
* Returns the domain part of a jabber ID in the form:
*
* <user>[@<domain>[/<resource]]
*
* @return the domain or null if no '@' was found
*/
public static String getDomainPart(String jabberId) {
int atIdx = jabberId.indexOf('@');
if (atIdx == -1) {
return null;
} else {
int slashIdx = jabberId.indexOf('/', atIdx);
if (slashIdx == -1) {
if (atIdx + 1 < jabberId.length()) {
return jabberId.substring(atIdx + 1);
} else {
return null;
}
} else {
// filter out 'resource' part
return jabberId.substring(atIdx + 1, slashIdx);
}
}
}
/**
* Returns the resource part of a jabber ID in the form:
*
* <user>[@<domain>[/<resource]]
*
* @return the domain or null if no '@' and '/' was found
*/
public static String getResourcePart(String jabberId) {
int atIdx = jabberId.indexOf('@');
if (atIdx == -1) {
return null;
} else {
int slashIdx = jabberId.indexOf('/', atIdx);
if (slashIdx == -1) {
return null;
} else if (slashIdx + 1 < jabberId.length()){
return jabberId.substring(slashIdx+1);
} else {
return null;
}
}
}
}