[
https://issues.apache.org/jira/browse/DIRSERVER-1929?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13846221#comment-13846221
]
Emmanuel Lecharny commented on DIRSERVER-1929:
----------------------------------------------
A few questions :
1) Wouldn't it be enough to replace the PARSER_PATTERN to :
"(\\d+)/(?:(\\p{XDigit}{1,2}):)*(\\p{XDigit}{1,2})?"
(the \\s+ has been replaced by /)
2) What if we don't have any address ? Is the '/' mandatory ? (ie, can we have
something like 802 as an hardware address or should it be 802/ ?)
> 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)