FileDocCategorySizeDatePackage
X509NameTokenizer.javaAPI DocAndroid 1.5 API2482Wed May 06 22:41:06 BST 2009org.bouncycastle.asn1.x509

X509NameTokenizer

public class X509NameTokenizer extends Object
class for breaking up an X500 Name into it's component tokens, ala java.util.StringTokenizer. We need this class as some of the lightweight Java environment don't support classes like StringTokenizer.

Fields Summary
private String
value
private int
index
private char
seperator
private StringBuffer
buf
Constructors Summary
public X509NameTokenizer(String oid)


     
          
    
        this(oid, ',");
    
public X509NameTokenizer(String oid, char seperator)

        this.value = oid;
        this.index = -1;
        this.seperator = seperator;
    
Methods Summary
public booleanhasMoreTokens()

        return (index != value.length());
    
public java.lang.StringnextToken()

        if (index == value.length())
        {
            return null;
        }

        int     end = index + 1;
        boolean quoted = false;
        boolean escaped = false;

        buf.setLength(0);

        while (end != value.length())
        {
            char    c = value.charAt(end);

            if (c == '"")
            {
                if (!escaped)
                {
                    quoted = !quoted;
                }
                else
                {
                    buf.append(c);
                }
                escaped = false;
            }
            else
            {
                if (escaped || quoted)
                {
                    // BEGIN android-added
                    // copied from a newer version of BouncyCastle
                    if (c == '#" && buf.charAt(buf.length() - 1) == '=")
                    {
                        buf.append('\\");
                    }
                    else if (c == '+" && seperator != '+")
                    {
                        buf.append('\\");
                    }
                    // END android-added
                    buf.append(c);
                    escaped = false;
                }
                else if (c == '\\")
                {
                    escaped = true;
                }
                else if (c == seperator)
                {
                    break;
                }
                else
                {
                    buf.append(c);
                }
            }
            end++;
        }

        index = end;
        return buf.toString().trim();