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>