directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shevek (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DIRSERVER-1929) HardwareAddress fromString does not parse output of toString
Date Thu, 12 Dec 2013 09:44:07 GMT
Shevek created DIRSERVER-1929:
---------------------------------

             Summary: HardwareAddress fromString does not parse output of toString
                 Key: DIRSERVER-1929
                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1929
             Project: Directory ApacheDS
          Issue Type: Bug
          Components: dhcp
    Affects Versions: 2.0.0-M15
            Reporter: Shevek


fromString parses "1 aa:bb:cc:dd:ee:ff" but toString generates "1/aa:bb:cc:dd:ee:ff"

Here is code which parses both native and toString values:

    @Nonnull
    public static HardwareAddress fromString(@Nonnull String text) {
        int idx = text.indexOf('/');
        HardwareAddressType hardwareAddressType = HardwareAddressType.Ethernet;
        if (idx != -1) {
            try {
                int hardwareAddressTypeCode = Integer.parseInt(text.substring(0, idx));
                hardwareAddressType = HardwareAddressType.forTypeCode(hardwareAddressTypeCode);
            } catch (IllegalArgumentException e) {
                hardwareAddressType = HardwareAddressType.valueOf(text.substring(0, idx));
            }
            text = text.substring(idx + 1);
        }

        CharMatcher separator = CharMatcher.BREAKING_WHITESPACE.or(CharMatcher.anyOf(":-"));
        List<String> parts = Splitter.on(separator).omitEmptyStrings().trimResults().splitToList(text);
        byte[] out = new byte[parts.size()];
        for (int i = 0; i < parts.size(); i++)
            out[i] = (byte) Integer.parseInt(parts.get(i), 16);

        if (hardwareAddressType.getAddressLength() != -1)
            out = Arrays.copyOf(out, hardwareAddressType.getAddressLength());

        return new HardwareAddress(hardwareAddressType.getHardwareType(), (short) out.length,
out);
    }




--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Mime
View raw message