FileDocCategorySizeDatePackage
NormalizedStringAdapter.javaAPI DocJava SE 6 API2030Tue Jun 10 00:27:04 BST 2008javax.xml.bind.annotation.adapters

NormalizedStringAdapter

public final class NormalizedStringAdapter extends XmlAdapter
{@link XmlAdapter} to handle xs:normalizedString.

This adapter removes leading and trailing whitespaces, then replace any tab, CR, and LF by a whitespace character ' '.

author
Kohsuke Kawaguchi
since
JAXB 2.0

Fields Summary
Constructors Summary
Methods Summary
protected static booleanisWhiteSpaceExceptSpace(char ch)
Returns true if the specified char is a white space character but not 0x20.

        // most of the characters are non-control characters.
        // so check that first to quickly return false for most of the cases.
        if( ch>=0x20 )   return false;

        // other than we have to do four comparisons.
        return ch == 0x9 || ch == 0xA || ch == 0xD;
    
public java.lang.Stringmarshal(java.lang.String s)
No-op. Just return the same string given as the parameter.

            return s;
        
public java.lang.Stringunmarshal(java.lang.String text)
Replace any tab, CR, and LF by a whitespace character ' ', as specified in the whitespace facet 'replace'

        if(text==null)      return null;    // be defensive

        int i=text.length()-1;

        // look for the first whitespace char.
        while( i>=0 && !isWhiteSpaceExceptSpace(text.charAt(i)) )
            i--;

        if( i<0 )
            // no such whitespace. replace(text)==text.
            return text;

        // we now know that we need to modify the text.
        // allocate a char array to do it.
        char[] buf = text.toCharArray();

        buf[i--] = ' ";
        for( ; i>=0; i-- )
            if( isWhiteSpaceExceptSpace(buf[i]))
                buf[i] = ' ";

        return new String(buf);