Author: veithen
Date: Sat Sep 6 03:48:39 2008
New Revision: 692631
URL: http://svn.apache.org/viewvc?rev=692631&view=rev
Log:
Transport test kit: Simplified resource handling.
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java?rev=692631&r1=692630&r2=692631&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java
Sat Sep 6 03:48:39 2008
@@ -23,14 +23,16 @@
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.HashSet;
-import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
+import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.synapse.transport.testkit.Adapter;
public class TestResource {
+ private enum Status { UNRESOLVED, RESOLVED, SETUP, RECYCLED };
+
private static class Initializer {
private final Method method;
private final Object object;
@@ -66,6 +68,9 @@
private final Set<TestResource> directDependencies = new
HashSet<TestResource>();
private final LinkedList<Initializer> initializers = new
LinkedList<Initializer>();
private final List<Finalizer> finalizers = new LinkedList<Finalizer>();
+ private Status status = Status.UNRESOLVED;
+ private boolean hasHashCode;
+ private int hashCode;
public TestResource(Object instance) {
this.instance = instance;
@@ -77,6 +82,9 @@
}
public void resolve(TestResourceSet resourceSet) {
+ if (status != Status.UNRESOLVED) {
+ return;
+ }
for (Class<?> clazz = target.getClass(); !clazz.equals(Object.class);
clazz = clazz.getSuperclass()) {
for (Method method : clazz.getDeclaredMethods()) {
@@ -123,6 +131,7 @@
}
}
}
+ status = Status.RESOLVED;
}
public Object getInstance() {
@@ -138,28 +147,55 @@
}
public void setUp() throws Exception {
+ if (status != Status.RESOLVED) {
+ throw new IllegalStateException();
+ }
for (Initializer initializer : initializers) {
initializer.execute();
}
+ status = Status.SETUP;
+ }
+
+ public void recycle(TestResource resource) {
+ if (status != Status.RESOLVED || resource.status != Status.SETUP ||
!equals(resource)) {
+ throw new IllegalStateException();
+ }
+ status = Status.SETUP;
+ resource.status = Status.RECYCLED;
}
public void tearDown() throws Exception {
+ if (status != Status.SETUP) {
+ throw new IllegalStateException();
+ }
for (Finalizer finalizer : finalizers) {
finalizer.execute();
}
+ status = Status.RESOLVED;
}
- public Set<TestResource> getAllDependencies() {
- Set<TestResource> set = new LinkedHashSet<TestResource>();
- collectDependencies(set);
- return set;
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof TestResource) {
+ TestResource other = (TestResource)obj;
+ return target == other.target &&
directDependencies.equals(other.directDependencies);
+ } else {
+ return false;
+ }
}
-
- private void collectDependencies(Set<TestResource> set) {
- for (TestResource dependency : directDependencies) {
- set.add(dependency);
- dependency.collectDependencies(set);
+
+ @Override
+ public int hashCode() {
+ int hashCode;
+ if (hasHashCode) {
+ hashCode = this.hashCode;
+ } else {
+ hashCode = new
HashCodeBuilder().append(target).append(directDependencies).toHashCode();
+ if (status != Status.UNRESOLVED) {
+ this.hashCode = hashCode;
+ }
}
+ return hashCode;
}
@Override
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java?rev=692631&r1=692630&r2=692631&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
Sat Sep 6 03:48:39 2008
@@ -22,6 +22,7 @@
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
@@ -153,15 +154,6 @@
}
}
- private TestResource lookup(Object instance) {
- for (TestResource resource : resolvedResources) {
- if (resource.getTarget() == instance) {
- return resource;
- }
- }
- return null;
- }
-
public void setUp(TestResourceSet old) throws Exception {
resolve();
if (status != Status.RESOLVED) {
@@ -173,26 +165,17 @@
List<TestResource> oldResourcesToTearDown = new
LinkedList<TestResource>();
List<TestResource> resourcesToSetUp = new
LinkedList<TestResource>(resolvedResources);
List<TestResource> resourcesToKeep = new LinkedList<TestResource>();
- for (TestResource oldResource : old.resolvedResources) {
- boolean keep;
- TestResource resource = lookup(oldResource.getTarget());
- if (resource == null) {
- keep = false;
- } else {
- keep = true;
- for (TestResource dependency :
oldResource.getAllDependencies()) {
- if (lookup(dependency.getTarget()) == null) {
- keep = false;
- break;
- }
+ outer: for (TestResource oldResource :
filterOnHasLifecycle(old.resolvedResources)) {
+ for (Iterator<TestResource> it = resourcesToSetUp.iterator();
it.hasNext(); ) {
+ TestResource resource = it.next();
+ if (resource.equals(oldResource)) {
+ it.remove();
+ resource.recycle(oldResource);
+ resourcesToKeep.add(oldResource);
+ continue outer;
}
}
- if (keep) {
- resourcesToSetUp.remove(resource);
- resourcesToKeep.add(resource);
- } else {
- oldResourcesToTearDown.add(oldResource);
- }
+ oldResourcesToTearDown.add(oldResource);
}
tearDown(oldResourcesToTearDown);
log.debug("Keeping: " + resourcesToKeep);