All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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