Java Code Examples for com.ibm.icu.text.Normalizer#normalize()

The following examples show how to use com.ibm.icu.text.Normalizer#normalize() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ICU4Jv26TextNormalizer.java    From oacc-core with Apache License 2.0 6 votes vote down vote up
@Override
public char[] normalizeToNfc(char[] source) {
   int destBufferSize = 3 * source.length;
   char[] result = null;
   do {
      char[] destBuffer = new char[destBufferSize];
      try {
         final int destBufferUsedCount = Normalizer.normalize(source, destBuffer, Normalizer.NFC, 0);
         result = copyContents(destBuffer, destBufferUsedCount);
      }
      catch (IndexOutOfBoundsException e) {
         // NOTE: since we allocate an initial buffer that is 3x of
         // the source text length we never expect this to happen

         // try the next loop iteration with a larger buffer
         destBufferSize += source.length;
      }
      finally {
         // zero out the current dest buffer
         zeroOut(destBuffer);
      }
   } while (result == null);

   return result;
}
 
Example 2
Source File: ICU4Jv26TextNormalizer.java    From oacc-core with Apache License 2.0 5 votes vote down vote up
private ICU4Jv26TextNormalizer() {
   // this "no-op" call to the Normalize class is *very* important, without it when the
   // com.ibm.icu.text.Normalizer class is not present in the classpath a load of the
   // class will not fail until it is attempted in the normalizeToNfc() method below -- which
   // is too late. The class load needs to fail here to cause the getInstance() method below to
   // propagate the class load exception and correctly trigger the fallback to the JDK based
   // TextNormalizer implementation in the parent class's TextNormalizer#getInstance().
   Normalizer.normalize("", Normalizer.NFC, 0);
}
 
Example 3
Source File: ICU4Jv26TextNormalizerWorstCaseExpansionTest.java    From oacc-core with Apache License 2.0 5 votes vote down vote up
@Test
public void testExpansion() throws Exception {
   final int expectedMaxExpansionSize = 3 * src.length();

   // allocate the destination to be 3x of the source length
   char[] dest = new char[expectedMaxExpansionSize];

   // normalize the text
   final int actualDestLen = Normalizer.normalize(src.toCharArray(), dest, Normalizer.NFC, 0);
   assertThat("Note: " +
                    "if this test fails, then the ICU4J library in use does not maintain our bounded expansion " +
                    "and could leak passwords; use a different library or adjust the expansion factor",
              actualDestLen, lessThanOrEqualTo(expectedMaxExpansionSize));
}
 
Example 4
Source File: ICU4Jv26TextNormalizerParityTest.java    From oacc-core with Apache License 2.0 4 votes vote down vote up
private char[] normalizeDirect() {
   // normalize using direct call to underlying normalizer
   final String dest = Normalizer.normalize(new String(srcCharArray), Normalizer.NFC);
   return dest.toCharArray();
}