org.bouncycastle.asn1.x509.X509NameTokenizer.java Source code

Java tutorial

Introduction

Here is the source code for org.bouncycastle.asn1.x509.X509NameTokenizer.java

Source

package org.bouncycastle.asn1.x509;

/**
 * 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.
 * @deprecated use X500NameTokenizer
 */
public class X509NameTokenizer {
    private String value;
    private int index;
    private char separator;
    private StringBuffer buf = new StringBuffer();

    public X509NameTokenizer(String oid) {
        this(oid, ',');
    }

    public X509NameTokenizer(String oid, char separator) {
        this.value = oid;
        this.index = -1;
        this.separator = separator;
    }

    public boolean hasMoreTokens() {
        return (index != value.length());
    }

    public String nextToken() {
        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;
                }
                buf.append(c);
                escaped = false;
            } else {
                if (escaped || quoted) {
                    buf.append(c);
                    escaped = false;
                } else if (c == '\\') {
                    buf.append(c);
                    escaped = true;
                } else if (c == separator) {
                    break;
                } else {
                    buf.append(c);
                }
            }
            end++;
        }

        index = end;

        return buf.toString();
    }
}