From 9ddddc3a89771fccd40bd6a7d4e5a3357dae10ab Mon Sep 17 00:00:00 2001 From: rfeng Date: Tue, 11 Aug 2009 05:14:38 +0000 Subject: Remove hashCode and equals methods in base OperationImpl and InterfaceImpl to improve performance git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@802989 13f79535-47bb-0310-9956-ffa450edef68 --- .../interfacedef/java/impl/JavaInterfaceImpl.java | 50 +++++++++++----- .../interfacedef/wsdl/impl/WSDLInterfaceImpl.java | 54 +++++++++++------- .../sca/interfacedef/impl/InterfaceImpl.java | 40 ------------- .../sca/interfacedef/impl/OperationImpl.java | 66 ---------------------- .../impl/InterfaceContractTestCase.java | 4 +- 5 files changed, 74 insertions(+), 140 deletions(-) (limited to 'java/sca') diff --git a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java index 294127910f..9f0071410e 100644 --- a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java +++ b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java @@ -69,6 +69,9 @@ public class JavaInterfaceImpl extends InterfaceImpl implements JavaInterface { public void setJavaClass(Class javaClass) { this.javaClass = javaClass; + if (javaClass != null) { + this.className = javaClass.getName(); + } } public Class getCallbackClass() { @@ -84,29 +87,48 @@ public class JavaInterfaceImpl extends InterfaceImpl implements JavaInterface { return getName(); } + @Override + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } + @Override public int hashCode() { - return String.valueOf(getName()).hashCode(); + final int prime = 31; + int result = 1; + result = prime * result + ((className == null) ? 0 : className.hashCode()); + return result; } - + @Override public boolean equals(Object obj) { - if (obj == this) { + if (this == obj) return true; - } else if (obj instanceof JavaInterface) { - if (getName() != null) { - return getName().equals(((JavaInterface)obj).getName()); - } else { - return ((JavaInterface)obj).getName() == null; - } - } else { + if (obj == null) + return false; + if (getClass() != obj.getClass()) return false; + JavaInterfaceImpl other = (JavaInterfaceImpl)obj; + if (isUnresolved() || other.isUnresolved()) { + if (className == null) { + if (other.className != null) + return false; + } else if (!className.equals(other.className)) + return false; + } else { + if (javaClass == null) { + if (other.javaClass != null) + return false; + } else if (!javaClass.equals(other.javaClass)) + return false; + if (callbackClass == null) { + if (other.callbackClass != null) + return false; + } else if (!callbackClass.equals(other.callbackClass)) + return false; } - } - @Override - public Object clone() throws CloneNotSupportedException { - return super.clone(); + return true; } } diff --git a/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceImpl.java b/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceImpl.java index 3719bbd79a..e8379ee56b 100644 --- a/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceImpl.java +++ b/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceImpl.java @@ -61,25 +61,8 @@ public class WSDLInterfaceImpl extends InterfaceImpl implements WSDLInterface { public void setPortType(PortType portType) { this.portType = portType; - } - - @Override - public int hashCode() { - return String.valueOf(getName()).hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } else if (obj instanceof WSDLInterface) { - if (getName() != null) { - return getName().equals(((WSDLInterface)obj).getName()); - } else { - return ((WSDLInterface)obj).getName() == null; - } - } else { - return false; + if (portType != null) { + this.name = portType.getQName(); } } @@ -96,4 +79,37 @@ public class WSDLInterfaceImpl extends InterfaceImpl implements WSDLInterface { return (WSDLInterfaceImpl) super.clone(); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.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; + WSDLInterfaceImpl other = (WSDLInterfaceImpl)obj; + if (isUnresolved() || other.isUnresolved()) { + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + } else { + if (portType == null) { + if (other.portType != null) + return false; + } else if (!portType.equals(other.portType)) + return false; + } + return true; + } + } diff --git a/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java b/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java index b6def5a42e..67aae7da4d 100644 --- a/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java +++ b/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java @@ -252,46 +252,6 @@ public class InterfaceImpl implements Interface { return copy; } - /** - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (conversational ? 1231 : 1237); - result = prime * result + ((operations == null) ? 0 : operations.hashCode()); - result = prime * result + (remotable ? 1231 : 1237); - result = prime * result + (unresolved ? 1231 : 1237); - return result; - } - - /** - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final InterfaceImpl other = (InterfaceImpl)obj; - if (conversational != other.conversational) - return false; - if (operations == null) { - if (other.operations != null) - return false; - } else if (!operations.equals(other.operations)) - return false; - if (remotable != other.remotable) - return false; - if (unresolved != other.unresolved) - return false; - return true; - } - public Map getAttributes() { return attributes; } diff --git a/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java b/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java index 7a4b62c4ac..26144e92cb 100644 --- a/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java +++ b/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java @@ -173,72 +173,6 @@ public class OperationImpl implements Operation { this.nonBlocking = nonBlocking; } - @Override - public int hashCode() { - final int PRIME = 31; - int result = 1; - result = PRIME * result + ((conversationSequence == null) ? 0 : conversationSequence.hashCode()); - // result = PRIME * result + ((faultTypes == null) ? 0 : - // faultTypes.hashCode()); - result = PRIME * result + ((inputType == null) ? 0 : inputType.hashCode()); - result = PRIME * result + ((name == null) ? 0 : name.hashCode()); - result = PRIME * result + (nonBlocking ? 1231 : 1237); - result = PRIME * result + ((outputType == null) ? 0 : outputType.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; - } - final OperationImpl other = (OperationImpl)obj; - if (conversationSequence == null) { - if (other.conversationSequence != null) { - return false; - } - } else if (!conversationSequence.equals(other.conversationSequence)) { - return false; - } - /* - * if (faultTypes == null) { if (other.faultTypes != null) { return - * false; } } else if (!faultTypes.equals(other.faultTypes)) { return - * false; } - */ - - if (inputType == null) { - if (other.inputType != null) { - return false; - } - } else if (!inputType.equals(other.inputType)) { - return false; - } - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - if (nonBlocking != other.nonBlocking) { - return false; - } - if (outputType == null) { - if (other.outputType != null) { - return false; - } - } else if (!outputType.equals(other.outputType)) { - return false; - } - return true; - } - /** * @return the wrapperInfo */ diff --git a/java/sca/modules/interface/src/test/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractTestCase.java b/java/sca/modules/interface/src/test/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractTestCase.java index c02b4657d3..d1faa5cf2b 100644 --- a/java/sca/modules/interface/src/test/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractTestCase.java +++ b/java/sca/modules/interface/src/test/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceContractTestCase.java @@ -51,7 +51,9 @@ public class InterfaceContractTestCase { @Test public void testClone() throws Exception { InterfaceContract copy = (InterfaceContract) contract.clone(); - Assert.assertEquals(contract, copy); + Assert.assertNotNull(copy); + Assert.assertNotSame(copy.getCallbackInterface(), contract.getCallbackInterface()); + Assert.assertNotSame(copy.getInterface(), contract.getInterface()); } private static class MockInterfaceContract extends InterfaceContractImpl implements InterfaceContract { -- cgit v1.2.3