Author: jdonnerstag
Date: Wed Mar  3 19:54:23 2010
New Revision: 918667

URL: http://svn.apache.org/viewvc?rev=918667&view=rev
Log:
fixed: MarkupCache messed up when using MergedMarkup (e.g. for Page markup 
inheritance) together with IResourceStreams that do NOT also implement 
IFixedLocationResourceStream
Issue: WICKET-2764

Modified:
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/Markup.java
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/resource/IFixedLocationResourceStream.java

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/Markup.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/Markup.java?rev=918667&r1=918666&r2=918667&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/Markup.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/Markup.java
 Wed Mar  3 19:54:23 2010
@@ -103,7 +103,7 @@
         * MergedMarkup) to override their location, as they are composed of 
multiple Markups in
         * different locations. SEE WICKET-1507 (Jeremy Thomerson)
         * 
-        * @return the location of this markup
+        * @return the location of this markup. Return null to avoid caching 
the markup.
         */
        public String locationAsString()
        {

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java?rev=918667&r1=918666&r2=918667&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java
 Wed Mar  3 19:54:23 2010
@@ -459,6 +459,7 @@
                        // couldn't be resolved.
                        locationString = cacheKey;
                }
+
                try
                {
                        Markup markup = getMarkupLoader().loadMarkup(container, 
markupResourceStream, null,
@@ -466,9 +467,10 @@
 
                        if (cacheKey != null)
                        {
-                               if (markup.locationAsString() != null)
+                               String temp = markup.locationAsString();
+                               if (temp != null)
                                {
-                                       locationString = 
markup.locationAsString();
+                                       locationString = temp;
                                }
                                // add the markup to the cache.
                                markupKeyCache.put(cacheKey, locationString);

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java?rev=918667&r1=918666&r2=918667&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java
 Wed Mar  3 19:54:23 2010
@@ -94,6 +94,9 @@
                }
        }
 
+       /**
+        * @see org.apache.wicket.markup.Markup#locationAsString()
+        */
        @Override
        public String locationAsString()
        {
@@ -102,8 +105,14 @@
                 * does, the location is unique to this combination (or vice 
versa) SEE WICKET-1507 (Jeremy
                 * Thomerson)
                 */
-               return 
getMarkupResourceData().getBaseMarkup().locationAsString() + ":" +
-                       
getMarkupResourceData().getResource().locationAsString();
+               String l1 = 
getMarkupResourceData().getBaseMarkup().locationAsString();
+               String l2 = 
getMarkupResourceData().getResource().locationAsString();
+               if ((l1 == null) && (l2 == null))
+               {
+                       return null;
+               }
+
+               return l1 + ":" + l2;
        }
 
        /**

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/resource/IFixedLocationResourceStream.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/resource/IFixedLocationResourceStream.java?rev=918667&r1=918666&r2=918667&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/resource/IFixedLocationResourceStream.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/resource/IFixedLocationResourceStream.java
 Wed Mar  3 19:54:23 2010
@@ -26,7 +26,8 @@
 public interface IFixedLocationResourceStream
 {
        /**
-        * @return The fixed location as a string, e.g. the file name or the URL
+        * @return The fixed location as a string, e.g. the file name or the 
URL. Return null to avoid
+        *         caching the markup.
         */
        String locationAsString();
 }


Reply via email to