summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/isode/stroke/idn/ICUConverter.java')
-rw-r--r--src/com/isode/stroke/idn/ICUConverter.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/com/isode/stroke/idn/ICUConverter.java b/src/com/isode/stroke/idn/ICUConverter.java
new file mode 100644
index 0000000..bd347df
--- /dev/null
+++ b/src/com/isode/stroke/idn/ICUConverter.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2012-2013 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+/*
+ * Copyright (c) 2015 Tarun Gupta.
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+package com.isode.stroke.idn;
+
+import com.isode.stroke.base.SafeByteArray;
+import com.isode.stroke.idn.IDNConverter;
+import com.isode.stroke.idn.IDNA;
+import com.ibm.icu.text.StringPrep;
+import com.ibm.icu.text.StringPrepParseException;
+
+public class ICUConverter implements IDNConverter {
+
+ public String getStringPrepared(String s, StringPrepProfile profile) throws StringPrepParseException {
+ StringPrep str = StringPrep.getInstance(getICUProfileType(profile));
+
+ String preparedData = str.prepare(s, StringPrep.DEFAULT);
+ return preparedData;
+ }
+
+ public SafeByteArray getStringPrepared(SafeByteArray s, StringPrepProfile profile) throws StringPrepParseException {
+ StringPrep str = StringPrep.getInstance(getICUProfileType(profile));
+
+ String preparedData = str.prepare(s.toString(), StringPrep.DEFAULT);
+ return new SafeByteArray(preparedData);
+ }
+
+ public String getIDNAEncoded(String s) {
+ return IDNA.getEncoded(s);
+ }
+
+ private int getICUProfileType(IDNConverter.StringPrepProfile profile) {
+ switch(profile) {
+ case NamePrep: return StringPrep.RFC3491_NAMEPREP;
+ case XMPPNodePrep: return StringPrep.RFC3920_NODEPREP;
+ case XMPPResourcePrep: return StringPrep.RFC3920_RESOURCEPREP;
+ case SASLPrep: return StringPrep.RFC4013_SASLPREP;
+ }
+ assert(false);
+ return StringPrep.RFC3491_NAMEPREP;
+ }
+} \ No newline at end of file