You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/01/11 18:28:46 UTC

svn commit: r495300 - in /tapestry/tapestry5/tapestry-core/trunk/src: main/java/org/apache/tapestry/internal/services/ main/java/org/apache/tapestry/internal/structure/ test/java/org/apache/tapestry/integration/ test/java/org/apache/tapestry/internal/s...

Author: hlship
Date: Thu Jan 11 09:28:45 2007
New Revision: 495300

URL: http://svn.apache.org/viewvc?view=rev&rev=495300
Log:
All comments in template to properly echo out to the rendered page.

Added:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/CommentPageElement.java
Modified:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactory.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/TemplateParserImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties
    tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/Start.html

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactory.java?view=diff&rev=495300&r1=495299&r2=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactory.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactory.java Thu Jan 11 09:28:45 2007
@@ -17,6 +17,7 @@
 import org.apache.tapestry.ComponentResources;
 import org.apache.tapestry.annotations.Component;
 import org.apache.tapestry.internal.parser.AttributeToken;
+import org.apache.tapestry.internal.parser.CommentToken;
 import org.apache.tapestry.internal.parser.ExpansionToken;
 import org.apache.tapestry.internal.parser.StartElementToken;
 import org.apache.tapestry.internal.parser.TextToken;
@@ -104,4 +105,7 @@
      *            fully qualified class name of the mixin
      */
     void addMixinByClassName(ComponentPageElement component, String mixinClassName);
+
+    /** Creates a new element from the token. */
+    PageElement newCommentElement(CommentToken token);
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java?view=diff&rev=495300&r1=495299&r2=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java Thu Jan 11 09:28:45 2007
@@ -19,10 +19,12 @@
 import org.apache.tapestry.MarkupWriter;
 import org.apache.tapestry.internal.InternalConstants;
 import org.apache.tapestry.internal.parser.AttributeToken;
+import org.apache.tapestry.internal.parser.CommentToken;
 import org.apache.tapestry.internal.parser.ExpansionToken;
 import org.apache.tapestry.internal.parser.StartElementToken;
 import org.apache.tapestry.internal.parser.TextToken;
 import org.apache.tapestry.internal.structure.AttributePageElement;
+import org.apache.tapestry.internal.structure.CommentPageElement;
 import org.apache.tapestry.internal.structure.ComponentPageElement;
 import org.apache.tapestry.internal.structure.ComponentPageElementImpl;
 import org.apache.tapestry.internal.structure.ExpansionPageElement;
@@ -40,11 +42,6 @@
 import org.apache.tapestry.services.ComponentClassResolver;
 import org.apache.tapestry.services.ComponentMessagesSource;
 
-/**
- * Null check suppressed as much as to simplify testing (yea! I can pass a null TypeCoercer) as it
- * is for efficiency.
- */
-
 public class PageElementFactoryImpl implements PageElementFactory
 {
     private final ComponentInstantiatorSource _componentInstantiatorSource;
@@ -215,4 +212,8 @@
         component.addMixin(mixinInstantiator);
     }
 
+    public PageElement newCommentElement(CommentToken token)
+    {
+        return new CommentPageElement(token.getComment());
+    }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java?view=diff&rev=495300&r1=495299&r2=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java Thu Jan 11 09:28:45 2007
@@ -27,6 +27,7 @@
 import org.apache.tapestry.internal.InternalConstants;
 import org.apache.tapestry.internal.event.InvalidationEventHubImpl;
 import org.apache.tapestry.internal.parser.AttributeToken;
+import org.apache.tapestry.internal.parser.CommentToken;
 import org.apache.tapestry.internal.parser.ComponentTemplate;
 import org.apache.tapestry.internal.parser.ExpansionToken;
 import org.apache.tapestry.internal.parser.StartComponentToken;
@@ -200,6 +201,11 @@
             switch (token.getTokenType())
             {
                 // case CDATA: -- not yet supported
+
+                case COMMENT:
+                    add(loadingElement, activeComponent, _pageElementFactory
+                            .newCommentElement((CommentToken) token));
+                    break;
 
                 case TEXT:
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/TemplateParserImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/TemplateParserImpl.java?view=diff&rev=495300&r1=495299&r2=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/TemplateParserImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/TemplateParserImpl.java Thu Jan 11 09:28:45 2007
@@ -501,7 +501,9 @@
 
         processTextBuffer();
 
-        String comment = new String(ch, start, length);
+        // Remove excess whitespace.  The Comment DOM node will add a leadig and trailing space.
+        
+        String comment = new String(ch, start, length).trim();
 
         // TODO: Perhaps comments need to be "aggregated" the same way we aggregate text and CDATA.
         // Hm. Probably not. Any whitespace between one comment and the next will become a

Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/CommentPageElement.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/CommentPageElement.java?view=auto&rev=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/CommentPageElement.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/CommentPageElement.java Thu Jan 11 09:28:45 2007
@@ -0,0 +1,47 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed 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.tapestry.internal.structure;
+
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.internal.parser.CommentToken;
+import org.apache.tapestry.internal.services.PageElementFactory;
+import org.apache.tapestry.runtime.RenderQueue;
+
+/**
+ * Renders a text comment.
+ * 
+ * @see CommentToken
+ * @see PageElementFactory#newCommentElement(CommentToken)
+ */
+public class CommentPageElement implements PageElement
+{
+    private final String _text;
+
+    public CommentPageElement(final String text)
+    {
+        _text = text;
+    }
+
+    public void render(MarkupWriter writer, RenderQueue queue)
+    {
+        writer.comment(_text);
+    }
+
+    @Override
+    public String toString()
+    {
+        return String.format("Comment[%s]", _text);
+    }
+}

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java?view=diff&rev=495300&r1=495299&r2=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java Thu Jan 11 09:28:45 2007
@@ -109,6 +109,8 @@
         // This is text passed from Start.html to Output as a parameter
 
         assertTextPresent("we have basic parameters working");
+        
+        assertSourcePresent("<!-- my comment -->");
     }
 
     @Test

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java?view=diff&rev=495300&r1=495299&r2=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java Thu Jan 11 09:28:45 2007
@@ -227,7 +227,11 @@
 
         CommentToken t = get(tokens, 2);
 
-        assertEquals(t.getComment(), " Single line comment ");
+        // Comments are now trimmed of leading and trailing whitespace. This may mean
+        // that the output isn't precisely what's in the template, but a) its a comment
+        // and b) that's pretty much true of everything in the templates.
+
+        assertEquals(t.getComment(), "Single line comment");
     }
 
     @Test

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties?view=diff&rev=495300&r1=495299&r2=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties Thu Jan 11 09:28:45 2007
@@ -27,6 +27,6 @@
 log4j.category.tapestry.ioc.ClassFactory=error
 
 log4j.category.app=info
-log4j.category.org.apache.tapestry.integration.app1=debug
-log4j.category.org.apache.tapestry.corelib=debug
+log4j.category.org.apache.tapestry.integration.app1=error
+log4j.category.org.apache.tapestry.corelib=error
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/Start.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/Start.html?view=diff&rev=495300&r1=495299&r2=495300
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/Start.html (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/Start.html Thu Jan 11 09:28:45 2007
@@ -9,4 +9,6 @@
         Here's some output from the Echo component:
         <t:comp type="Echo" value="literal:Yep, we have basic parameters working."/>
     </p>
+    
+   <!-- my comment -->
 </t:comp>