JsonDomAttribute.java
- // Generated by delombok at Fri Nov 29 09:48:08 UTC 2024
- package de.larssh.json.dom;
- import static java.util.Collections.emptyList;
- import java.util.Iterator;
- import java.util.function.Supplier;
- import org.w3c.dom.Attr;
- import org.w3c.dom.TypeInfo;
- import de.larssh.utils.Nullables;
- import edu.umd.cs.findbugs.annotations.NonNull;
- import edu.umd.cs.findbugs.annotations.Nullable;
- /**
- * JSON DOM implementation of {@link Attr}.
- *
- * @param <T> implementation specific JSON element type
- */
- public class JsonDomAttribute<T> extends JsonDomNode<T> implements Attr {
- /**
- * Supplier providing the attribute value when requested. The value is not
- * cached.
- *
- * @return value provider
- */
- private final Supplier<String> valueProvider;
- /**
- * Constructor of {@link JsonDomAttribute}.
- *
- * @param parentNode parent node
- * @param nodeName node name
- * @param valueProvider value provider
- */
- public JsonDomAttribute(final JsonDomElement<T> parentNode, final String nodeName, final Supplier<String> valueProvider) {
- super(parentNode, nodeName);
- this.valueProvider = valueProvider;
- }
- /**
- * {@inheritDoc}
- */
- @Nullable
- @Override
- @SuppressWarnings("PMD.ReturnEmptyCollectionRatherThanNull")
- public JsonDomNamedNodeMap<JsonDomAttribute<T>> getAttributes() {
- return null;
- }
- /**
- * {@inheritDoc}
- */
- @NonNull
- @Override
- public JsonDomNodeList<JsonDomNode<T>> getChildNodes() {
- return new JsonDomNodeList<>(emptyList());
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public T getJsonElement() {
- return Nullables.orElseThrow(getParentNode()).getJsonElement();
- }
- /**
- * {@inheritDoc}
- */
- @NonNull
- @Override
- public String getName() {
- return getNodeName();
- }
- /**
- * {@inheritDoc}
- */
- @Nullable
- @Override
- @SuppressWarnings({"PMD.CompareObjectsWithEquals", "PMD.LooseCoupling"})
- public JsonDomAttribute<T> getNextSibling() {
- final JsonDomNode<T> parentNode = Nullables.orElseThrow(getParentNode());
- final JsonDomNamedNodeMap<JsonDomAttribute<T>> attributes = Nullables.orElseThrow(parentNode.getAttributes());
- final Iterator<JsonDomAttribute<T>> iterator = attributes.values().iterator();
- while (iterator.hasNext()) {
- if (iterator.next() == this) {
- return iterator.hasNext() ? iterator.next() : null;
- }
- }
- return null;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public short getNodeType() {
- return ATTRIBUTE_NODE;
- }
- /**
- * {@inheritDoc}
- */
- @NonNull
- @Override
- public String getNodeValue() {
- return getValue();
- }
- /**
- * {@inheritDoc}
- */
- @NonNull
- @Override
- public JsonDomDocument<T> getOwnerDocument() {
- return Nullables.orElseThrow(getParentNode()).getOwnerDocument();
- }
- /**
- * {@inheritDoc}
- */
- @NonNull
- @Override
- public JsonDomElement<T> getOwnerElement() {
- return (JsonDomElement<T>) Nullables.orElseThrow(getParentNode());
- }
- /**
- * {@inheritDoc}
- */
- @Nullable
- @Override
- @SuppressWarnings({"PMD.CompareObjectsWithEquals", "PMD.LooseCoupling"})
- public JsonDomAttribute<T> getPreviousSibling() {
- JsonDomAttribute<T> previousSibling = null;
- JsonDomAttribute<T> currentSibling = null;
- final JsonDomNode<T> parentNode = Nullables.orElseThrow(getParentNode());
- final JsonDomNamedNodeMap<JsonDomAttribute<T>> attributes = Nullables.orElseThrow(parentNode.getAttributes());
- final Iterator<JsonDomAttribute<T>> iterator = attributes.values().iterator();
- while (currentSibling != this) {
- previousSibling = currentSibling;
- currentSibling = iterator.next();
- }
- return previousSibling;
- }
- /**
- * {@inheritDoc}
- */
- @Nullable
- @Override
- public TypeInfo getSchemaTypeInfo() {
- return null;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean getSpecified() {
- return true;
- }
- /**
- * {@inheritDoc}
- */
- @NonNull
- @Override
- public String getTextContent() {
- return getValue();
- }
- /**
- * {@inheritDoc}
- */
- @NonNull
- @Override
- public String getValue() {
- return valueProvider.get();
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isId() {
- return false;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public void setValue(@Nullable @SuppressWarnings("unused") final String value) {
- throw new UnsupportedOperationException();
- }
- @java.lang.Override
- @java.lang.SuppressWarnings("all")
- @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(justification = "generated code")
- @lombok.Generated
- public boolean equals(@edu.umd.cs.findbugs.annotations.Nullable final java.lang.Object o) {
- if (o == this) return true;
- if (!(o instanceof JsonDomAttribute)) return false;
- final JsonDomAttribute<?> other = (JsonDomAttribute<?>) o;
- if (!other.canEqual((java.lang.Object) this)) return false;
- if (!super.equals(o)) return false;
- final java.lang.Object this$valueProvider = this.valueProvider;
- final java.lang.Object other$valueProvider = other.valueProvider;
- if (this$valueProvider == null ? other$valueProvider != null : !this$valueProvider.equals(other$valueProvider)) return false;
- return true;
- }
- @java.lang.SuppressWarnings("all")
- @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(justification = "generated code")
- @lombok.Generated
- protected boolean canEqual(@edu.umd.cs.findbugs.annotations.Nullable final java.lang.Object other) {
- return other instanceof JsonDomAttribute;
- }
- @java.lang.Override
- @java.lang.SuppressWarnings("all")
- @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(justification = "generated code")
- @lombok.Generated
- public int hashCode() {
- final int PRIME = 59;
- int result = super.hashCode();
- final java.lang.Object $valueProvider = this.valueProvider;
- result = result * PRIME + ($valueProvider == null ? 43 : $valueProvider.hashCode());
- return result;
- }
- }