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)