Mercury-IMs fork of [jxmpp](
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Paul Schaub 8965990e95 Merge branch 'gradleWrapper' into mercury_master 1 year ago
config Fix various typos and wordings 1 year ago
gradle/wrapper Add gradle wrapper 1 year ago
jxmpp-core Fix NPEs in parser methods 1 year ago
jxmpp-jid Simplify equals() method in JidUtil 1 year ago
jxmpp-repl repl: add project description 2 years ago
jxmpp-stringprep-icu4j Add XMPP Strings Testframework 2 years ago
jxmpp-stringprep-libidn Add XMPP Strings Testframework 2 years ago
jxmpp-stringprep-rocksxmppprecis stringprep-rocksxmppprecis: Validate further excluded chars in localpart 2 years ago
jxmpp-strings-testframework Fix various typos and wordings 1 year ago
jxmpp-util-cache Fix various typos and wordings 1 year ago
misc Add Eclipse Formatter 5 years ago
.gitignore Add .idea to .gitignore 1 year ago
.travis.yml Make java(c|doc) use --release when available 2 years ago
LICENSE Add LICENSE 7 years ago Add XMPP Strings Testframework 2 years ago
build.gradle Merge remote-tracking branch 'vanitas/fulljidnpe' into mercury_master 1 year ago
gradlew Add gradle wrapper 1 year ago
gradlew.bat Add gradle wrapper 1 year ago
repl Add a REPL for JXMPP 5 years ago
settings.gradle Add XMPP Strings Testframework 2 years ago
test-xmpp-strings Add XMPP Strings Testframework 2 years ago
version jxmpp 1.0.1-alpha1-SNAPSHOT 2 years ago


Build Status Project Stats Coverage Status


JXMPP is an Open Source Java base library for XMPP. It provides often used functionality needed to build an XMPP stack.


JXMPP Components

JXMPP consists of several components, you can use all of them or decide to pick only the ones that suit your needs.


Provides core functionality most software that interacts with XMPP requires. Highlights include


A utility to parse date/time Strings in the various formats used within XMPP to a Date instance in a efficient manner without depending on third party libraries


Contains various String operations often needed when using XMPP


A utility to apply the various string transformation profiles required by XMPP in a efficient manner. Does also utilize a Cache for maximum efficiency.


Abstracts XMPP JIDs with Java classes, performing string preparation and validation. Although JIDs are split over five classes, jxmpp-jid is designed so that you often only need to use the simple Jid type. It therefore combines the simplicity of the single JID class approach, where JIDs are represented by a single class no matter what kind of JID they are, which the expressiveness of the JID class hierarchy approach, where you can express in a method signature the required JID type (e.g. foo(BareJid bareJid).

        /       / \       \
EntityFullJid  /   \     DomainFullJid
              /     \
     EntityBareJid  DomainBareJid

There are also the BareJid, FullJid, EntityJid and DomainJid interfaces, which are implemented by the Jid types as follows:

         BareJid                            FullJid
         /    \                             /   \
        /      \                           /     \
EntityBareJid  DomainBareJid     EntityFullJid  DomainFullJid

        EntityJid                         DomainJid
         /    \                             /   \
        /      \                           /     \
EntityBareJid  EntityFullJid     DomainBareJid  DomainFullJid

Jid instances are created with the help of the JidCreate utility:

Jid jid = JidCreate.from("foo@bar.example");


Perform XMPP's StringPrep with the help of libidn.

Use LibIdnXmppStringprep.setup() to make XmppStringPrepUtil use libidn.


Provides a lightweight and efficient Cache without external dependencies used by various JXMPP Components.


A framework to test "XMPP Strings".

Simply run

$ ./test-xmpp-strings

to run the testframework.