You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gk...@apache.org on 2007/07/21 13:44:49 UTC

svn commit: r558317 - in /cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src: main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java

Author: gkossakowski
Date: Sat Jul 21 04:44:49 2007
New Revision: 558317

URL: http://svn.apache.org/viewvc?view=rev&rev=558317
Log:
COCOON-2086:
  * thanks to simplified ObjectModel interface it was possible to simplify ObjectModelImpl
  * added test case for handling null values

Modified:
    cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java
    cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java

Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java?view=diff&rev=558317&r1=558316&r2=558317
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java Sat Jul 21 04:44:49 2007
@@ -16,10 +16,8 @@
  */
 package org.apache.cocoon.objectmodel;
 
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.ListIterator;
 import java.util.Map;
 
@@ -67,7 +65,7 @@
     
     public Object put(Object key, Object value) {
         if (!localContexts.empty())
-            ((Collection) localContexts.peek()).add(new DefaultKeyValue(key, value));
+            ((ArrayStack) localContexts.peek()).push(new DefaultKeyValue(key, value));
         
         singleValueMap.put(key, value);
         multiValueMap.put(key, value);
@@ -77,10 +75,10 @@
     
     public void putAll(Map mapToCopy) {
         if (!localContexts.empty()) {
-            Collection entries = (Collection)localContexts.peek();
+            ArrayStack entries = (ArrayStack)localContexts.peek();
             for (Iterator keysIterator = mapToCopy.keySet().iterator(); keysIterator.hasNext();) {
                 Object key = keysIterator.next();
-                entries.add(new DefaultKeyValue(key, mapToCopy.get(key)));
+                entries.push(new DefaultKeyValue(key, mapToCopy.get(key)));
             }
         }
         
@@ -91,25 +89,22 @@
     public void cleanupLocalContext() {
         if (localContexts.empty())
             throw new IllegalStateException("Local contexts stack is empty");
-        Collection removeEntries = (Collection)localContexts.pop();
-        for (Iterator entriesIterator = removeEntries.iterator(); entriesIterator.hasNext();) {
-            KeyValue entry = (KeyValue)entriesIterator.next();
+        ArrayStack removeEntries = (ArrayStack)localContexts.pop();
+        while (!removeEntries.isEmpty()) {
+            KeyValue entry = (KeyValue)removeEntries.pop();
             Object key = entry.getKey();
             Object value = entry.getValue();
-            if (!singleValueMap.containsKey(key))
-                continue;
             
             multiValueMap.remove(key, value);
-            if (!multiValueMap.containsKey(key)) {
-                singleValueMap.remove(key);
-            }
-            else if (singleValueMap.get(key).equals(value))
+            if (multiValueMap.containsKey(key))
                 singleValueMap.put(key, ((StackReversedIteration)multiValueMap.get(key)).peek());
+            else
+                singleValueMap.remove(key);
         }
     }
 
     public void markLocalContext() {
-        localContexts.push(new LinkedList());
+        localContexts.push(new ArrayStack());
     }
     
 }

Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java?view=diff&rev=558317&r1=558316&r2=558317
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java Sat Jul 21 04:44:49 2007
@@ -86,4 +86,23 @@
         assertEquals(false, objectModel.containsKey("abc"));
     }
     
+    public void testNull() {
+        ObjectModel objectModel = new ObjectModelImpl();
+        
+        objectModel.markLocalContext();
+        objectModel.put("foo", "bar");
+        
+        objectModel.markLocalContext();
+        objectModel.put("foo", null);
+        objectModel.put("foo", null);
+        assertEquals(null, objectModel.get("foo"));
+        objectModel.cleanupLocalContext();
+        
+        assertEquals("bar", objectModel.get("foo"));
+        objectModel.cleanupLocalContext();
+        
+        assertTrue(objectModel.isEmpty());
+        assertTrue(objectModel.getAll().isEmpty());
+    }
+    
 }



Re: svn commit: r558317 - in /cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src: main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java

Posted by Homayoun Ashrafzade <ho...@gmail.com>.
please unsubscribe me ...thank you

On 7/21/07, gkossakowski@apache.org <gk...@apache.org> wrote:
>
> Author: gkossakowski
> Date: Sat Jul 21 04:44:49 2007
> New Revision: 558317
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=558317
> Log:
> COCOON-2086:
>   * thanks to simplified ObjectModel interface it was possible to simplify
> ObjectModelImpl
>   * added test case for handling null values
>
> Modified:
>
>     cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java
>
>     cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java
>
> Modified:
> cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java
> URL:
> http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java?view=diff&rev=558317&r1=558316&r2=558317
>
> ==============================================================================
> ---
> cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java
> (original)
> +++
> cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java
> Sat Jul 21 04:44:49 2007
> @@ -16,10 +16,8 @@
>   */
> package org.apache.cocoon.objectmodel;
>
> -import java.util.Collection;
> import java.util.HashMap;
> import java.util.Iterator;
> -import java.util.LinkedList;
> import java.util.ListIterator;
> import java.util.Map;
>
> @@ -67,7 +65,7 @@
>
>      public Object put(Object key, Object value) {
>          if (!localContexts.empty())
> -            ((Collection) localContexts.peek()).add(new
> DefaultKeyValue(key, value));
> +            ((ArrayStack) localContexts.peek()).push(new
> DefaultKeyValue(key, value));
>
>          singleValueMap.put(key, value);
>          multiValueMap.put(key, value);
> @@ -77,10 +75,10 @@
>
>      public void putAll(Map mapToCopy) {
>          if (!localContexts.empty()) {
> -            Collection entries = (Collection)localContexts.peek();
> +            ArrayStack entries = (ArrayStack)localContexts.peek();
>              for (Iterator keysIterator = mapToCopy.keySet().iterator();
> keysIterator.hasNext();) {
>                  Object key = keysIterator.next();
> -                entries.add(new DefaultKeyValue(key, mapToCopy.get
> (key)));
> +                entries.push(new DefaultKeyValue(key, mapToCopy.get
> (key)));
>              }
>          }
>
> @@ -91,25 +89,22 @@
>      public void cleanupLocalContext() {
>          if (localContexts.empty())
>              throw new IllegalStateException("Local contexts stack is
> empty");
> -        Collection removeEntries = (Collection)localContexts.pop();
> -        for (Iterator entriesIterator = removeEntries.iterator();
> entriesIterator.hasNext();) {
> -            KeyValue entry = (KeyValue)entriesIterator.next();
> +        ArrayStack removeEntries = (ArrayStack)localContexts.pop();
> +        while (!removeEntries.isEmpty()) {
> +            KeyValue entry = (KeyValue)removeEntries.pop();
>              Object key = entry.getKey();
>              Object value = entry.getValue();
> -            if (!singleValueMap.containsKey(key))
> -                continue;
>
>              multiValueMap.remove(key, value);
> -            if (!multiValueMap.containsKey(key)) {
> -                singleValueMap.remove(key);
> -            }
> -            else if (singleValueMap.get(key).equals(value))
> +            if (multiValueMap.containsKey(key))
>                  singleValueMap.put(key,
> ((StackReversedIteration)multiValueMap.get(key)).peek());
> +            else
> +                singleValueMap.remove(key);
>          }
>      }
>
>      public void markLocalContext() {
> -        localContexts.push(new LinkedList());
> +        localContexts.push(new ArrayStack());
>      }
>
> }
>
> Modified:
> cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java
> URL:
> http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java?view=diff&rev=558317&r1=558316&r2=558317
>
> ==============================================================================
> ---
> cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java
> (original)
> +++
> cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/objectmodel/ObjectModelImplTestCase.java
> Sat Jul 21 04:44:49 2007
> @@ -86,4 +86,23 @@
>          assertEquals(false, objectModel.containsKey("abc"));
>      }
>
> +    public void testNull() {
> +        ObjectModel objectModel = new ObjectModelImpl();
> +
> +        objectModel.markLocalContext();
> +        objectModel.put("foo", "bar");
> +
> +        objectModel.markLocalContext();
> +        objectModel.put("foo", null);
> +        objectModel.put("foo", null);
> +        assertEquals(null, objectModel.get("foo"));
> +        objectModel.cleanupLocalContext();
> +
> +        assertEquals("bar", objectModel.get("foo"));
> +        objectModel.cleanupLocalContext();
> +
> +        assertTrue(objectModel.isEmpty());
> +        assertTrue(objectModel.getAll().isEmpty());
> +    }
> +
> }
>
>
>