1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/**
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * class for breaking up an OID into it's component tokens, ala
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * java.util.StringTokenizer. We need this class as some of the
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * lightweight Java environment don't support classes like
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * StringTokenizer.
8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class OIDTokenizer
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private String  oid;
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private int     index;
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public OIDTokenizer(
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        String oid)
16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.oid = oid;
18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.index = 0;
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public boolean hasMoreTokens()
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return (index != -1);
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public String nextToken()
27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        if (index == -1)
29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            return null;
31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        String  token;
34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        int     end = oid.indexOf('.', index);
35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        if (end == -1)
37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            token = oid.substring(index);
39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            index = -1;
40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            return token;
41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        token = oid.substring(index, end);
44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        index = end + 1;
46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return token;
47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
49