2

から属性を解析する方法はありStringますか? たとえば、次のような場合:

CN=Doe, John: Markets (LDN),OU=Users,DC=FOOCORP,DC=COM

Attributesそれを-sのまたはセットに入れたいのAttributeですが、適切なエスケープをすべて行うために使用できるユーティリティクラスはありますか?それとも、独自の実装をノックアップする必要がありますか?

次のコードがあります。

    String cnBase = "CN=Doe\\, John: Markets (LDN),OU=Users,DC=FOOCORP,DC=COM";

    StringTokenizer st = new StringTokenizer(cnBase, "=");

    Attributes attributes = new BasicAttributes();

    String attributeId = null;
    String attributeValue = null;
    String previousToken = null;

    while (st.hasMoreTokens())
    {
        String token = st.nextToken();

        if (previousToken == null && attributeId == null)
        {
            // Get the attribute's id
            attributeId = token;
            continue;
        }

        if (attributeId != null)
        {
            if (token.contains(","))
            {
                attributeValue = token.substring(0, token.lastIndexOf(","));
            }
            else
            {
                attributeValue = token;
            }
        }

        if (attributeId != null && attributeValue != null)
        {
            // Add a new Attribute to the attributes object
            Attribute attribute = new BasicAttribute(attributeId, attributeValue);
            attributes.put(attribute);

            System.out.println(attribute.toString());

            attributeId = token.substring(token.lastIndexOf(",") + 1, token.length());
            attributeValue = null;
        }

        previousToken = token;
    }

よりスマートな方法で書き直すことができると思います。

4

1 に答える 1

2

JNDI には、識別名LdapNameを表す (misnamed)というクラスがあります。古い RFC に基づいていますが、満足のいくものかもしれません。

こちらもご覧ください

于 2013-11-06T20:31:48.540 に答える