mirror of https://github.com/apache/activemq.git
added the auto-generation of hashcode, equals and toString methods
git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@380217 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8ba8da2388
commit
2ce853a42d
|
@ -17,8 +17,10 @@
|
|||
package org.apache.activemq.openwire.tool;
|
||||
|
||||
import org.codehaus.jam.JClass;
|
||||
import org.codehaus.jam.JProperty;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.*;
|
||||
import java.util.Iterator;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -34,6 +36,53 @@ public abstract class OpenWireCSharpClassesScript extends OpenWireClassesScript
|
|||
|
||||
return super.run();
|
||||
}
|
||||
|
||||
public String makeHashCodeBody() throws Exception {
|
||||
if (simpleName.endsWith("Id")) {
|
||||
StringWriter buffer = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(buffer);
|
||||
out.println(" int answer = 0;");
|
||||
Iterator iter = getProperties().iterator();
|
||||
while (iter.hasNext()) {
|
||||
JProperty property = (JProperty) iter.next();
|
||||
out.println(" answer = (answer * 37) + HashCode(" + property.getSimpleName() + ");");
|
||||
}
|
||||
out.println(" return answer;");
|
||||
return buffer.toString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String makeEqualsBody() throws Exception {
|
||||
if (simpleName.endsWith("Id")) {
|
||||
StringWriter buffer = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(buffer);
|
||||
|
||||
Iterator iter = getProperties().iterator();
|
||||
while (iter.hasNext()) {
|
||||
JProperty property = (JProperty) iter.next();
|
||||
String name = property.getSimpleName();
|
||||
out.println(" if (! Equals(this." + name + ", that." + name + ")) return false;");
|
||||
}
|
||||
out.println(" return true;");
|
||||
return buffer.toString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String makeToStringBody() throws Exception {
|
||||
StringWriter buffer = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(buffer);
|
||||
out.println(" return GetType().Name + \"[\"");
|
||||
Iterator iter = getProperties().iterator();
|
||||
while (iter.hasNext()) {
|
||||
JProperty property = (JProperty) iter.next();
|
||||
String name = property.getSimpleName();
|
||||
out.println(" + \" " + name + "=\" + " + name);
|
||||
}
|
||||
out.println(" + \" ]\";");
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -69,13 +69,41 @@ namespace OpenWire.Client.Commands
|
|||
"""
|
||||
}
|
||||
|
||||
def text = makeHashCodeBody()
|
||||
if (text != null) out <<
|
||||
"""
|
||||
public override int GetHashCode() {
|
||||
$text
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
text = makeEqualsBody()
|
||||
if (text != null) out <<
|
||||
"""
|
||||
public override bool Equals(object that) {
|
||||
if (that is ${className}) {
|
||||
return Equals((${className}) that);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual bool Equals(${className} that) {
|
||||
$text
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
text = makeToStringBody()
|
||||
if (text != null) out << """
|
||||
public override string ToString() {
|
||||
$text
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
out << """
|
||||
|
||||
// TODO generate Equals method
|
||||
// TODO generate GetHashCode method
|
||||
// TODO generate ToString method
|
||||
|
||||
|
||||
public override byte GetDataStructureType() {
|
||||
return ID_${jclass.simpleName};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue