package wicket.contrib.groovy.builder; import java.util.List; /** * A data object representing an overridden class. The idea is that this can be used as a key into a * cache for overridden classes. So, we only have to generate the class dynamically once. After that, * we can pull it from the cache. * * There was some trouble with the cache, so its disabled right now. Also, this should be checked for * completeness. If its not right, dire consequences... * * @author Kevin Galligan * */ public class WicketComponentOverrideDescriptor { Class javaClass; List methods; // List closures; String extraCode; String interfaces; List closureClasses; // protected List getClosureClasses() // { // if(closureClasses == null) // { // closureClasses = new ArrayList(); // for(int i=0; i<closures.size(); i++) // { // closureClasses.add( // ((Closure)closures.get(i)).getClass() // ); // } // } // return closureClasses; // } /* * TODO: Review hashCode and equals to make sure they make sense. * * @see java.lang.Object#hashCode() */ public int hashCode() { final int PRIME = 31; int result = 1; // result = PRIME * result + ((closures == null) ? 0 : getClosureClasses().hashCode()); result = PRIME * result + ((extraCode == null) ? 0 : extraCode.hashCode()); result = PRIME * result + ((interfaces == null) ? 0 : interfaces.hashCode()); result = PRIME * result + ((javaClass == null) ? 0 : javaClass.hashCode()); result = PRIME * result + ((methods == null) ? 0 : methods.hashCode()); return result; } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final WicketComponentOverrideDescriptor other = (WicketComponentOverrideDescriptor) obj; // if (closures == null) // { // if (other.closures != null) // return false; // } // // else if (!getClosureClasses().equals(other.getClosureClasses())) // return false; if (extraCode == null) { if (other.extraCode != null) return false; } else if (!extraCode.equals(other.extraCode)) return false; if (interfaces == null) { if (other.interfaces != null) return false; } else if (!interfaces.equals(other.interfaces)) return false; if (javaClass == null) { if (other.javaClass != null) return false; } else if (!javaClass.equals(other.javaClass)) return false; if (methods == null) { if (other.methods != null) return false; } else if (!methods.equals(other.methods)) return false; return true; } }