
com.github.rschmitt.dynamicobject.Metadata Maven / Gradle / Ivy
package com.github.rschmitt.dynamicobject;
import static com.github.rschmitt.dynamicobject.ClojureStuff.*;
public class Metadata {
static Class> getTypeMetadata(Object obj) {
Object meta = META.invoke(obj);
if (meta == null) return null;
Object tag = GET.invoke(meta, TYPE);
if (tag == null) return null;
try {
return Class.forName((String) NAME.invoke(tag));
} catch (ReflectiveOperationException ex) {
throw new IllegalStateException(ex);
}
}
static Object withTypeMetadata(Object obj, Class> type) {
Object meta = META.invoke(obj);
if (meta == null) meta = EMPTY_MAP;
Object newMeta = ASSOC.invoke(meta, TYPE, cachedRead(":" + type.getTypeName()));
return WITH_META.invoke(obj, newMeta);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy