
org.polyglotted.xpathstax.data.AbstractValue Maven / Gradle / Ivy
package org.polyglotted.xpathstax.data;
import java.util.regex.Pattern;
abstract class AbstractValue {
private static final Pattern NUMBER = Pattern.compile("\\d+(\\.\\d+)?");
protected final Object data;
protected AbstractValue(Object data) {
this.data = data;
}
public boolean isNull() {
return data == null;
}
public boolean isNumeric() {
return (data instanceof Number) || NUMBER.matcher(asString("")).matches();
}
public boolean instanceOf(Class> clazz) {
return (data != null) && clazz.isAssignableFrom(data.getClass());
}
public Object get() {
return data;
}
public Object get(Object defaultValue) {
return data == null ? defaultValue : data;
}
public V get(Class clazz, V defaultValue) {
return instanceOf(clazz) ? clazz.cast(data) : defaultValue;
}
public String asString() {
return asString("");
}
public String asString(String defaultValue) {
return isNull() ? defaultValue : String.valueOf(data);
}
@Override
public int hashCode() {
return 31 * 1 + ((data == null) ? 0 : data.hashCode());
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AbstractValue other = (AbstractValue) obj;
if (data != null ? !data.equals(other.data) : other.data != null)
return false;
return true;
}
@Override
public String toString() {
return asString(null);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy