de.zalando.sprocwrapper.proxy.SProcProxy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of zalando-sprocwrapper Show documentation
Show all versions of zalando-sprocwrapper Show documentation
Library to make PostgreSQL stored procedures available through simple Java "*SProcService" interfaces
including automatic object serialization and deserialization (using typemapper and
convention-over-configuration). Supports sharding, advisory locking, statement timeouts and PostgreSQL types
such as enums and hstore.
package de.zalando.sprocwrapper.proxy;
import java.lang.reflect.Method;
import java.util.HashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.zalando.sprocwrapper.dsprovider.DataSourceProvider;
/**
* @author jmussler
*/
class SProcProxy implements java.lang.reflect.InvocationHandler {
private final HashMap sprocs = new HashMap();
private final DataSourceProvider dataSourceProvider;
private static final Logger LOG = LoggerFactory.getLogger(OtherStoredProcedureParameter.class);
public boolean addStoredProcedure(final Method method, final StoredProcedure p) {
if (sprocs.containsKey(method)) {
return false;
}
sprocs.put(method, p);
return true;
}
public SProcProxy(final DataSourceProvider provider) {
if (provider == null) {
throw new IllegalArgumentException("DataSourceProvider cannot be null");
}
dataSourceProvider = provider;
}
@Override
public Object invoke(final Object proxy, final Method m, final Object[] args) {
StoredProcedure p = sprocs.get(m);
if (p == null) {
LOG.warn("no StoredProcedure found for method {}", m);
return null;
}
return p.execute(dataSourceProvider, new InvocationContext(proxy, m, args));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy