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

io.yawp.repository.Feature Maven / Gradle / Ivy

There is a newer version: 2.08alpha
Show newest version
package io.yawp.repository;

import io.yawp.commons.http.RequestContext;
import io.yawp.commons.utils.JsonUtils;
import io.yawp.repository.query.QueryBuilder;
import org.apache.commons.beanutils.PropertyUtils;

import java.util.List;
import java.util.Map;

public class Feature {

    protected Repository yawp;

    protected RequestContext requestContext;

    public void setRepository(Repository yawp) {
        this.yawp = yawp;
        this.requestContext = yawp.getRequestContext();
    }

    public  QueryBuilder yawp(Class clazz) {
        return yawp.query(clazz);
    }

    public  QueryBuilder yawpWithHooks(Class clazz) {
        return yawp.queryWithHooks(clazz);
    }

    public boolean isOnRequest() {
        return requestContext != null;
    }

    public  T feature(Class clazz) {
        try {
            T feature = clazz.newInstance();
            feature.setRepository(yawp);
            return feature;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public  IdRef id(Class clazz, Long id) {
        return IdRef.create(yawp, clazz, id);
    }

    public  IdRef id(Class clazz, String name) {
        return IdRef.create(yawp, clazz, name);
    }

    public  T from(String json, Class clazz) {
        return JsonUtils.from(yawp, json, clazz);
    }

    public  List fromList(String json, Class clazz) {
        return JsonUtils.fromList(yawp, json, clazz);
    }

    public String to(Object object) {
        return JsonUtils.to(object);
    }

    protected Map asMap(Object object) {
        try {
            Map map = PropertyUtils.describe(object);
            map.remove("class");
            return map;
        } catch (ReflectiveOperationException e) {
            throw new RuntimeException(e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy