feat: Optional при получении аттрибутов
This commit is contained in:
@@ -14,7 +14,7 @@ compileJava {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "ru.di9"
|
group = "ru.di9"
|
||||||
version = "1.1"
|
version = "1.2"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
|
|||||||
@@ -56,21 +56,30 @@ public class XmlElement implements Iterable<XmlElement> {
|
|||||||
return element.hasAttribute(key);
|
return element.hasAttribute(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAttribute(String key) {
|
public Optional<String> getAttribute(String key) {
|
||||||
return element.getAttribute(key);
|
if (element.hasAttribute(key)) {
|
||||||
|
return Optional.of(element.getAttribute(key));
|
||||||
|
} else {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getAttributeAsInt(String key) {
|
public OptionalInt getAttributeAsInt(String key) {
|
||||||
var value = element.getAttribute(key);
|
if (element.hasAttribute(key)) {
|
||||||
return StringUtils.isEmpty(value) ? 0 : Integer.parseInt(value);
|
return OptionalInt.of(Integer.parseInt(element.getAttribute(key)));
|
||||||
|
} else {
|
||||||
|
return OptionalInt.empty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getAttributeAsBool(String key) {
|
public Optional<Boolean> getAttributeAsBool(String key) {
|
||||||
var value = element.getAttribute(key);
|
if (element.hasAttribute(key)) {
|
||||||
return !StringUtils.isEmpty(value) && Boolean.parseBoolean(value);
|
return Optional.of(Boolean.parseBoolean(element.getAttribute(key)));
|
||||||
|
} else {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("NullableProblems")
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<XmlElement> iterator() {
|
public Iterator<XmlElement> iterator() {
|
||||||
return new XmlElementIterator(element.getChildNodes());
|
return new XmlElementIterator(element.getChildNodes());
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class XmlElementTest {
|
|||||||
assertEquals("root", rootElement.getTagName());
|
assertEquals("root", rootElement.getTagName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("OptionalGetWithoutIsPresent")
|
||||||
@Test
|
@Test
|
||||||
void testIterator() {
|
void testIterator() {
|
||||||
Iterator<XmlElement> iteratorElement = rootElement.iterator();
|
Iterator<XmlElement> iteratorElement = rootElement.iterator();
|
||||||
@@ -47,13 +48,22 @@ class XmlElementTest {
|
|||||||
|
|
||||||
assertEquals(tagName, element.getTagName());
|
assertEquals(tagName, element.getTagName());
|
||||||
switch (element.getTagName()) {
|
switch (element.getTagName()) {
|
||||||
case "node_str" -> assertEquals(attr, element.getAttribute("attr"));
|
case "node_str" -> {
|
||||||
case "node_int" -> assertEquals(attr, element.getAttributeAsInt("attr"));
|
assertTrue(element.getAttribute("attr").isPresent());
|
||||||
case "node_bool" -> assertEquals(attr, element.getAttributeAsBool("attr"));
|
assertEquals(attr, element.getAttribute("attr").get());
|
||||||
|
}
|
||||||
|
case "node_int" -> {
|
||||||
|
assertTrue(element.getAttribute("attr").isPresent());
|
||||||
|
assertEquals(attr, element.getAttributeAsInt("attr").getAsInt());
|
||||||
|
}
|
||||||
|
case "node_bool" -> {
|
||||||
|
assertTrue(element.getAttribute("attr").isPresent());
|
||||||
|
assertEquals(attr, element.getAttributeAsBool("attr").get());
|
||||||
|
}
|
||||||
case "empty" -> {
|
case "empty" -> {
|
||||||
assertTrue(StringUtils.isEmpty(element.getValue()));
|
assertTrue(StringUtils.isEmpty(element.getValue()));
|
||||||
assertFalse(element.hasAttribute("attr"));
|
assertFalse(element.hasAttribute("attr"));
|
||||||
assertTrue(StringUtils.isEmpty(element.getAttribute("attr")));
|
assertTrue(element.getAttribute("attr").isEmpty());
|
||||||
}
|
}
|
||||||
default -> fail("Unknown tag '%s'".formatted(element.getTagName()));
|
default -> fail("Unknown tag '%s'".formatted(element.getTagName()));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user