
jaxx.runtime.JAXXContextEntryDef Maven / Gradle / Ivy
The newest version!
package jaxx.runtime;
import java.util.Collections;
import java.util.List;
/**
* To qualify an entry in a {@link JAXXContext}.
*
* Use the factory methods newDef
and newListDef
implements java.io.Serializable {
/** name of the entry, can be nuill for a unamed entry. */
protected String name;
/** class of the entry, can not be null */
protected Class klass;
private static final long serialVersionUID = 1L;
public static JAXXContextEntryDef newDef(Class klass) {
return newDef(null, klass);
}
public static JAXXContextEntryDef newDef(String name, Class klass) {
return new JAXXContextEntryDef(name, klass);
}
public static JAXXContextEntryDef> newListDef() {
return newListDef(null);
}
@SuppressWarnings({"unchecked"})
public static JAXXContextEntryDef> newListDef(String name) {
JAXXContextEntryDef contextEntryDef = new JAXXContextEntryDef>(name, JAXXContextEntryDef.castList());
contextEntryDef.klass = List.class;
return contextEntryDef;
}
public String getName() {
return name;
}
public Class getKlass() {
return klass;
}
public O getContextValue(JAXXContext context) {
return context.getContextValue(klass, name);
}
public void removeContextValue(JAXXContext context) {
context.removeContextValue(klass, name);
}
public void setContextValue(JAXXContext context, O value) {
context.setContextValue(value, name);
}
@Override
public String toString() {
return super.toString() + "<" + klass + ":" + name + ">";
}
protected JAXXContextEntryDef(Class klass) {
this(null, klass);
}
protected JAXXContextEntryDef(String name, Class klass) {
if (klass == null) {
throw new IllegalArgumentException("class can not be null");
}
this.name = name;
this.klass = klass;
}
@SuppressWarnings({"unchecked"})
protected static Class> castList() {
return (Class>) Collections.emptyList().getClass();
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof JAXXContextEntryDef)) {
return false;
}
JAXXContextEntryDef that = (JAXXContextEntryDef) o;
return klass.equals(that.klass) && !(name != null ? !name.equals(that.name) : that.name != null);
}
@Override
public int hashCode() {
int result = (name != null ? name.hashCode() : 0);
return 31 * result + klass.hashCode();
}
public boolean accept(Class> klass, String name) {
if (klass == Object.class && this.klass != Object.class) {
// try on name only
return (this.name != null && name != null && this.name.equals(name));
}
return klass.isAssignableFrom(this.klass) && (this.name == null && name == null
|| (this.name != null && name != null && this.name.equals(name)));
}
public boolean accept2(Class> klass, String name) {
return !(klass == Object.class && this.klass != Object.class) &&
this.klass.isAssignableFrom(klass) && (this.name == null &&
name == null || (this.name != null && name != null && this.name.equals(name)));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy