Author: jdonnerstag
Date: Sat Feb 19 13:47:52 2011
New Revision: 1072328

URL: http://svn.apache.org/viewvc?rev=1072328&view=rev
Log:
fixed: Value exchange in a wicket:message throws an exception (if inside a 
border)
Issue: WICKET-3454

Added:
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.html
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.java
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.html
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.java
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.html
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.java
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.properties
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePageExpectedResult.html
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/WicketMessageResolverTest.java
Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/WicketMessageResolverTest.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java?rev=1072328&r1=1072327&r2=1072328&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
 Sat Feb 19 13:47:52 2011
@@ -344,10 +344,12 @@ public class WicketMessageResolver imple
                                while (markupStream.hasMore() && 
!markupStream.get().closes(openTag))
                                {
                                        MarkupElement element = 
markupStream.get();
+
                                        // If it a tag like <wicket..> or <span 
wicket:id="..." >
                                        if ((element instanceof ComponentTag) 
&& !markupStream.atCloseTag())
                                        {
-                                               String id = 
((ComponentTag)element).getId();
+                                               ComponentTag currentTag = 
(ComponentTag)element;
+                                               String id = currentTag.getId();
 
                                                // Temporarily replace the web 
response with a String response
                                                final Response webResponse = 
getResponse();
@@ -358,6 +360,18 @@ public class WicketMessageResolver imple
                                                        
getRequestCycle().setResponse(response);
 
                                                        Component component = 
getParent().get(id);
+                                                       if (component == null)
+                                                       {
+                                                               component = 
ComponentResolvers.resolve(getParent(), markupStream,
+                                                                       
currentTag, null);
+
+                                                               // Must not be 
a Page and it must be connected to a parent.
+                                                               if 
(component.getParent() == null)
+                                                               {
+                                                                       
component = null;
+                                                               }
+                                                       }
+
                                                        if (component != null)
                                                        {
                                                                
component.render();

Modified: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/WicketMessageResolverTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/WicketMessageResolverTest.java?rev=1072328&r1=1072327&r2=1072328&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/WicketMessageResolverTest.java
 (original)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/WicketMessageResolverTest.java
 Sat Feb 19 13:47:52 2011
@@ -24,7 +24,6 @@ import org.apache.wicket.WicketTestCase;
  */
 public class WicketMessageResolverTest extends WicketTestCase
 {
-
        /**
         * @throws Exception
         */
@@ -76,7 +75,6 @@ public class WicketMessageResolverTest e
                        assertEquals(text, ex.getMessage().substring(0, 
text.length()));
                        return;
                }
-
        }
 
        /**

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.html?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.html
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.html
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<html 
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd";>
+       <body>
+               <wicket:border>
+                       <span>Marker for border start</span>
+                       <wicket:body />
+                       <span>Marker for border end</span>
+               </wicket:border>
+       </body>
+</html>

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.java?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.java
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BaseBorder.java
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.resolver.border;
+
+import org.apache.wicket.markup.html.border.Border;
+
+/**
+ * 
+ */
+public class BaseBorder extends Border
+{
+       private static final long serialVersionUID = 1L;
+
+       /**
+        * Construct.
+        * 
+        * @param id
+        */
+       public BaseBorder(String id)
+       {
+               super(id);
+       }
+}
\ No newline at end of file

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.html?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.html
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.html
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd";>
+       <head>
+           <title>Title</title>
+       </head>
+       <body>
+               <div wicket:id="myborder" id="page">
+                       <wicket:child />
+               </div>
+       </body>
+</html>
\ No newline at end of file

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.java?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.java
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/BasePage.java
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.resolver.border;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.border.Border;
+
+/**
+ * 
+ */
+public class BasePage extends WebPage
+{
+       private static final long serialVersionUID = 1L;
+
+       private Border border;
+
+       /**
+        * Construct.
+        */
+       public BasePage()
+       {
+               super();
+       }
+
+       /**
+        * 
+        * @param child
+        * @return child
+        */
+       public final MarkupContainer add(final Component child)
+       {
+               if (borderMustBeInitialized())
+               {
+                       initializeBorder();
+               }
+               addToBorder(child);
+               return this;
+       }
+
+       private boolean borderMustBeInitialized()
+       {
+               return border == null;
+       }
+
+       private void initializeBorder()
+       {
+               border = new BaseBorder("myborder");
+               super.add(border);
+       }
+
+       private void addToBorder(final Component child)
+       {
+               border.addToBorderBody(child);
+       }
+}
\ No newline at end of file

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.html?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.html
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.html
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<html 
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd";>
+       <wicket:extend>
+               <div id="pagebody">
+                       <p>
+                               <wicket:message key="item.pricedisclaimer1">
+                                       [Disclaimer 1]
+                                       <span 
wicket:id="vat1value">[Vat1]</span>.
+                                       <span 
wicket:id="vat2value">[Vat2]</span>.
+                               </wicket:message>
+                           <wicket:message 
key="item.pricedisclaimer2">[Disclaimer 2]</wicket:message>
+                           <a href="#">
+                               <wicket:message 
key="item.pricedisclaimer3">[Disclaimer 3]</wicket:message>
+                           </a>.
+                       </p>
+        </div>
+       </wicket:extend>
+</html>
\ No newline at end of file

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.java?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.java
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.java
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.resolver.border;
+
+import org.apache.wicket.markup.html.basic.Label;
+
+/**
+ * 
+ */
+public class HomePage extends BasePage
+{
+       private static final long serialVersionUID = 1L;
+
+       /**
+        * Construct.
+        */
+       public HomePage()
+       {
+               add(new Label("vat1value", String.valueOf(19)));
+               add(new Label("vat2value", String.valueOf(7)));
+       }
+}
\ No newline at end of file

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.properties
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.properties?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.properties
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePage.properties
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,3 @@
+item.pricedisclaimer1=Alle Preise enthalten die gesetzliche MwSt. von 
${vat1value}% bzw. ${vat2value}%.
+item.pricedisclaimer2=Bitte beachten Sie unsere
+item.pricedisclaimer3=Versandkosten
\ No newline at end of file

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePageExpectedResult.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePageExpectedResult.html?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePageExpectedResult.html
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/HomePageExpectedResult.html
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd";>
+       <head>
+           <title>Title</title>
+       </head>
+       <body>
+               <div wicket:id="myborder" id="page"><wicket:border>
+                       <span>Marker for border start</span>
+                       <wicket:body>
+                       <wicket:child><wicket:extend>
+               <div id="pagebody">
+                       <p>
+                               <wicket:message 
key="item.pricedisclaimer1">Alle Preise enthalten die gesetzliche MwSt. von 
<span wicket:id="vat1value">19</span>% bzw. <span 
wicket:id="vat2value">7</span>%.</wicket:message>
+                           <wicket:message key="item.pricedisclaimer2">Bitte 
beachten Sie unsere</wicket:message>
+                           <a href="#">
+                               <wicket:message 
key="item.pricedisclaimer3">Versandkosten</wicket:message>
+                           </a>.
+                       </p>
+        </div>
+       </wicket:extend></wicket:child>
+               </wicket:body>
+                       <span>Marker for border end</span>
+               </wicket:border></div>
+       </body>
+</html>
\ No newline at end of file

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/WicketMessageResolverTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/WicketMessageResolverTest.java?rev=1072328&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/WicketMessageResolverTest.java
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/resolver/border/WicketMessageResolverTest.java
 Sat Feb 19 13:47:52 2011
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.resolver.border;
+
+import org.apache.wicket.WicketTestCase;
+
+/**
+ * 
+ */
+public class WicketMessageResolverTest extends WicketTestCase
+{
+       /**
+        * @throws Exception
+        */
+       public void test_1() throws Exception
+       {
+               executeTest(HomePage.class, "HomePageExpectedResult.html");
+       }
+}


Reply via email to