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

io.vertx.up.atom.container.VInstance Maven / Gradle / Ivy

There is a newer version: 0.9.0
Show newest version
package io.vertx.up.atom.container;

import io.vertx.up.fn.Fn;

import java.lang.reflect.Proxy;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

public class VInstance {
    private static final ConcurrentMap, VInstance> V_POOL =
        new ConcurrentHashMap<>();
    private transient final Class interfaceCls;

    private VInstance(final Class interfaceCls) {
        this.interfaceCls = interfaceCls;
    }

    public static VInstance create(final Class interfaceCls) {
        return Fn.pool(V_POOL, interfaceCls, () -> new VInstance(interfaceCls));
    }

    @SuppressWarnings("unchecked")
    public  T proxy() {
        final Class[] interfaces = new Class[]{this.interfaceCls};
        return (T) Proxy.newProxyInstance(this.interfaceCls.getClassLoader(), interfaces, new VInvoker());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy