Author: kmalhi
Date: Thu Jul 15 14:01:21 2010
New Revision: 964436

URL: http://svn.apache.org/viewvc?rev=964436&view=rev
Log:
Updated the framework to support different key types i.e. errors , warnings and 
failures. Now you can specify what a key represents. If you are expecting a key 
to throw warnings instead of failures, you can specify it like 
@Keys(@Key(value="foo",type=KeyType.WARNING))

Added:
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeyType.java
Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvokeMethod.java
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvokeMethod.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvokeMethod.java?rev=964436&r1=964435&r2=964436&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvokeMethod.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvokeMethod.java
 Thu Jul 15 14:01:21 2010
@@ -16,13 +16,18 @@
  */
 package org.apache.openejb.config.rules;
 
+import static 
org.apache.openejb.config.rules.ValidationAssertions.assertErrors;
 import static 
org.apache.openejb.config.rules.ValidationAssertions.assertFailures;
+import static 
org.apache.openejb.config.rules.ValidationAssertions.assertWarnings;
 import static org.junit.Assert.fail;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.ResourceBundle;
 import java.util.Set;
+import java.util.Map.Entry;
 
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.assembler.classic.SecurityServiceInfo;
@@ -59,19 +64,27 @@ public class InvokeMethod extends Statem
 
     @Override
     public void evaluate() throws Throwable {
-        List<String> expectedKeys = validateKeys();
+        Map<KeyType, List<String>> expectedKeys = validateKeys();
         setUp();
         Object obj = testMethod.invokeExplosively(target);
         if (obj instanceof EjbJar) {
             EjbJar ejbJar = (EjbJar) obj;
             try {
                 
assembler.createApplication(config.configureApplication(ejbJar));
-                if (!expectedKeys.isEmpty()) {
+                if (!isEmpty(expectedKeys)) {
                     fail("A ValidationFailedException should have been 
thrown");
                 }
             } catch (ValidationFailedException vfe) {
-                if (!expectedKeys.isEmpty()) {
-                    assertFailures(expectedKeys, vfe);
+                if (!isEmpty(expectedKeys)) {
+                    if (!expectedKeys.get(KeyType.FAILURE).isEmpty()) {
+                        assertFailures(expectedKeys.get(KeyType.FAILURE), vfe);
+                    }
+                    if (!expectedKeys.get(KeyType.WARNING).isEmpty()) {
+                        assertWarnings(expectedKeys.get(KeyType.WARNING), vfe);
+                    }
+                    if (!expectedKeys.get(KeyType.ERROR).isEmpty()) {
+                        assertErrors(expectedKeys.get(KeyType.ERROR), vfe);
+                    }
                 } else {
                     for (ValidationFailure failure : vfe.getFailures()) {
                         System.out.println("failure = " + 
failure.getMessageKey());
@@ -101,7 +114,7 @@ public class InvokeMethod extends Statem
      * @return
      * @throws Exception
      */
-    private List<String> validateKeys() throws Exception {
+    private Map<KeyType, List<String>> validateKeys() throws Exception {
         Keys annotation = testMethod.getAnnotation(Keys.class);
         Key[] keys = annotation.value();
         ArrayList<String> wrongKeys = new ArrayList<String>();
@@ -113,12 +126,28 @@ public class InvokeMethod extends Statem
             }
         }
         if (wrongKeys.isEmpty()) {
-            ArrayList<String> validKeys = new ArrayList<String>();
+            Map<KeyType, List<String>> validKeys = new HashMap<KeyType, 
List<String>>();
+            ArrayList<String> failureKeys = new ArrayList<String>();
+            ArrayList<String> warningKeys = new ArrayList<String>();
+            ArrayList<String> errorKeys = new ArrayList<String>();
             for (Key key : keys) {
                 for (int i = 0; i < key.count(); i++) {
-                    validKeys.add(key.value());
+                    switch (key.type()) {
+                    case FAILURE:
+                        failureKeys.add(key.value());
+                        break;
+                    case WARNING:
+                        warningKeys.add(key.value());
+                        break;
+                    case ERROR:
+                        errorKeys.add(key.value());
+                        break;
+                    }
                 }
             }
+            validKeys.put(KeyType.FAILURE, failureKeys);
+            validKeys.put(KeyType.WARNING, warningKeys);
+            validKeys.put(KeyType.ERROR, errorKeys);
             return validKeys;
         } else {
             String commaDelimitedKeys = Join.join(",", wrongKeys);
@@ -127,4 +156,13 @@ public class InvokeMethod extends Statem
                     + " . Only keys listed in 
org.apache.openejb.config.rules.Messages.properties are allowed to be used in 
this annotation. ");
         }
     }
+    private boolean isEmpty(Map<KeyType, List<String>> expectedKeys) {
+        boolean empty = true;
+        Set<Entry<KeyType, List<String>>> entrySet = expectedKeys.entrySet();
+        for (Entry<KeyType, List<String>> entry : entrySet) {
+            empty = entry.getValue().size() == 0;
+            if(!empty) return empty;
+        }
+        return empty;
+    }
 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java?rev=964436&r1=964435&r2=964436&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java
 Thu Jul 15 14:01:21 2010
@@ -27,4 +27,5 @@ public @interface Key {
     String value();
 
     int count() default 1;
+    KeyType type() default KeyType.FAILURE;
 }

Added: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeyType.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeyType.java?rev=964436&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeyType.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeyType.java
 Thu Jul 15 14:01:21 2010
@@ -0,0 +1,5 @@
+package org.apache.openejb.config.rules;
+
+public enum KeyType {
+    FAILURE,WARNING,ERROR
+}


Reply via email to