package com.brightgenerous.injection; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import javax.inject.Provider; import javax.sql.DataSource; import com.brightgenerous.commons.EqualsUtils; import com.brightgenerous.commons.HashCodeUtils; import com.brightgenerous.commons.ToStringUtils; public class InjectorConfig implements Serializable { private static final long serialVersionUID = -4376299232759423461L; private Class<? extends Provider<DataSource>> dataSourceProviderType; private Map<String, String> dbProperties; private Class<?>[] transactionPackages; private Filter<Class<?>> transactionClassFilter; private Filter<Method> transactionMethodFilter; private Class<?>[] mapperPackages; private Filter<Class<?>> mapperClassFilter; private ImplResolver mapperImplResolver; private Class<?>[] beanPackages; private Filter<Class<?>> beanClassFilter; // for serialize private void writeObject(ObjectOutputStream stream) throws IOException { if ((dbProperties != null) && !(dbProperties instanceof Serializable)) { dbProperties = new HashMap<>(dbProperties); // to java.io.Serializable } stream.defaultWriteObject(); } public Class<? extends Provider<DataSource>> getDataSourceProviderType() { return dataSourceProviderType; } public void setDataSourceProviderType( Class<? extends Provider<DataSource>> dataSourceProviderType) { this.dataSourceProviderType = dataSourceProviderType; } public Map<String, String> getDbProperties() { return dbProperties; } public void setDbProperties(Map<String, String> dbProperties) { this.dbProperties = dbProperties; } public Class<?>[] getTransactionPackages() { return transactionPackages; } public void setTransactionPackages(Class<?>... transactionPackages) { this.transactionPackages = transactionPackages; } public Filter<Class<?>> getTransactionClassFilter() { return transactionClassFilter; } public void setTransactionClassFilter(Filter<Class<?>> transactionClassFilter) { this.transactionClassFilter = transactionClassFilter; } public Filter<Method> getTransactionMethodFilter() { return transactionMethodFilter; } public void setTransactionMethodFilter(Filter<Method> transactionMethodFilter) { this.transactionMethodFilter = transactionMethodFilter; } public Class<?>[] getMapperPackages() { return mapperPackages; } public void setMapperPackages(Class<?>... mapperPackages) { this.mapperPackages = mapperPackages; } public Filter<Class<?>> getMapperClassFilter() { return mapperClassFilter; } public void setMapperClassFilter(Filter<Class<?>> mapperClassFilter) { this.mapperClassFilter = mapperClassFilter; } public ImplResolver getMapperImplResolver() { return mapperImplResolver; } public void setMapperImplResolver(ImplResolver mapperImplResolver) { this.mapperImplResolver = mapperImplResolver; } public Class<?>[] getBeanPackages() { return beanPackages; } public void setBeanPackages(Class<?>... beanPackages) { this.beanPackages = beanPackages; } public Filter<Class<?>> getBeanClassFilter() { return beanClassFilter; } public void setBeanClassFilter(Filter<Class<?>> beanClassFilter) { this.beanClassFilter = beanClassFilter; } @Override public int hashCode() { if (HashCodeUtils.resolved()) { return HashCodeUtils.hashCodeAlt(null, this); } return super.hashCode(); } @Override public boolean equals(Object obj) { if (EqualsUtils.resolved()) { return EqualsUtils.equalsAlt(null, this, obj); } return super.equals(obj); } @Override public String toString() { if (ToStringUtils.resolved()) { return ToStringUtils.toStringAlt(this); } return super.toString(); } }