package org.hotswap.agent.plugin.proxy.hscglib; import org.hotswap.agent.util.ReflectionHelper; /** * Parameters for new Cglib proxy creation * * @author Erki Ehtla * */ public class GeneratorParams { private Object generator; private Object param; public GeneratorParams(Object generator, Object param) { this.generator = generator; this.param = param; } public Object getGenerator() { return generator; } public void setGenerator(Object generator) { this.generator = generator; } public Object getParam() { return param; } public void setParam(Object params) { this.param = params; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((generator == null) ? 0 : generator.hashCode()); result = prime * result + ((param == null) ? 0 : param.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; GeneratorParams other = (GeneratorParams) obj; if (generator == null) { if (other.generator != null) return false; } else if (!generator.equals(other.generator)) return false; if (param == null) { if (other.param != null) return false; } else if (!param.equals(other.param)) return false; return true; } /** * Return an instance in this classloader * * @param paramsFromOtherClassLoader * instamce in another classlaoder * @return instance in this classloader * @throws Exception */ public static GeneratorParams valueOf(Object paramsFromOtherClassLoader) throws Exception { if (paramsFromOtherClassLoader.getClass().getClassLoader() == GeneratorParams.class.getClassLoader()) { return (GeneratorParams) paramsFromOtherClassLoader; } Object params = ReflectionHelper.get(paramsFromOtherClassLoader, "param"); Object generator = ReflectionHelper.get(paramsFromOtherClassLoader, "generator"); return new GeneratorParams(generator, params); } }