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);


Reply via email to