Author: dkulp
Date: Fri Jul 24 15:10:25 2009
New Revision: 797517
URL: http://svn.apache.org/viewvc?rev=797517&view=rev
Log:
[CXF-2357] Patch from William Tam applied
Added:
cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/outbound/
cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/outbound/ManagedConnectionImplTest.java
(with props)
Modified:
cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/outbound/ManagedConnectionImpl.java
Modified:
cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/outbound/ManagedConnectionImpl.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/outbound/ManagedConnectionImpl.java?rev=797517&r1=797516&r2=797517&view=diff
==============================================================================
---
cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/outbound/ManagedConnectionImpl.java
(original)
+++
cxf/trunk/integration/jca/src/main/java/org/apache/cxf/jca/outbound/ManagedConnectionImpl.java
Fri Jul 24 15:10:25 2009
@@ -346,9 +346,22 @@
LOG.finest("invoke connection spec:" + spec + " method=" +
method);
}
- if ("hashCode".equals(method.getName()) ||
"equals".equals(method.getName())) {
+ if ("hashCode".equals(method.getName())) {
return method.invoke(Proxy.getInvocationHandler(proxy), args);
-
+ }
+
+ if ("equals".equals(method.getName())) {
+ // These are proxies. We don't really care if their targets
are equal.
+ // We do care if these are the same proxy instances that we
created.
+ // Therefore, if their proxy and invocation handler are
consistent,
+ // we believe they are equal.
+ boolean result = false;
+ try {
+ result = proxy == args[0] && this ==
Proxy.getInvocationHandler(args[0]);
+ } catch (Exception e) {
+ // ignore and assume not equal
+ }
+ return result;
}
if ("toString".equals(method.getName())) {
@@ -383,15 +396,13 @@
private Object handleCloseMethod(Object proxy, Method method,
Object[] args) {
+
handles.remove(proxy);
associatedHandle = null;
- if (handles.isEmpty()) {
- isClosed = true;
- ConnectionEvent event = new
ConnectionEvent(ManagedConnectionImpl.this,
- ConnectionEvent.CONNECTION_CLOSED);
- event.setConnectionHandle(proxy);
- sendEvent(event);
- }
+ ConnectionEvent event = new
ConnectionEvent(ManagedConnectionImpl.this,
+ ConnectionEvent.CONNECTION_CLOSED);
+ event.setConnectionHandle(proxy);
+ sendEvent(event);
return null;
}
Added:
cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/outbound/ManagedConnectionImplTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/outbound/ManagedConnectionImplTest.java?rev=797517&view=auto
==============================================================================
---
cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/outbound/ManagedConnectionImplTest.java
(added)
+++
cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/outbound/ManagedConnectionImplTest.java
Fri Jul 24 15:10:25 2009
@@ -0,0 +1,68 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jca.outbound;
+
+import javax.security.auth.Subject;
+import javax.xml.namespace.QName;
+
+import org.apache.hello_world_soap_http.Greeter;
+import org.easymock.classextension.EasyMock;
+import org.easymock.classextension.IMocksControl;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+/**
+ * Unit test for ManagedConnectionImpl
+ */
+public class ManagedConnectionImplTest {
+
+ /**
+ * Verify the connection handle's equals() method
+ */
+ @Test
+ public void testHandleEqualsMethod() throws Exception {
+ IMocksControl control = EasyMock.createNiceControl();
+
+ ManagedConnectionFactoryImpl mcf =
control.createMock(ManagedConnectionFactoryImpl.class);
+
+ CXFConnectionSpec cxRequestInfo = new CXFConnectionSpec();
+
+
cxRequestInfo.setWsdlURL(getClass().getResource("/wsdl/hello_world.wsdl"));
+ cxRequestInfo.setServiceClass(Greeter.class);
+ cxRequestInfo.setEndpointName(new
QName("http://apache.org/hello_world_soap_http", "SoapPort"));
+ cxRequestInfo.setServiceName(new
QName("http://apache.org/hello_world_soap_http", "SOAPService"));
+
+ control.replay();
+
+ Subject subject = new Subject();
+
+ ManagedConnectionImpl conn = new ManagedConnectionImpl(mcf,
cxRequestInfo, subject);
+
+ Object handle1 = conn.getConnection(subject, cxRequestInfo);
+ Object handle2 = conn.getConnection(subject, cxRequestInfo);
+
+ assertEquals(handle1, handle1);
+ assertEquals(handle2, handle2);
+ assertFalse(handle1.equals(handle2));
+
+ }
+
+}
Propchange:
cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/outbound/ManagedConnectionImplTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/trunk/integration/jca/src/test/java/org/apache/cxf/jca/outbound/ManagedConnectionImplTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date