You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2008/10/28 20:47:07 UTC
svn commit: r708649 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/services/ test/app1/
test/java/org/apache/tapestry5/integration/
test/java/org/apache/tapestry5/integration/app1/pages/
test/java/org/apache/t...
Author: hlship
Date: Tue Oct 28 12:47:04 2008
New Revision: 708649
URL: http://svn.apache.org/viewvc?rev=708649&view=rev
Log:
TAP5-105: Defining a component in the class that does not appear in the template should be an exception (not a logged, and ignored, warning)
Added:
tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ComponentsNotInTemplateDemo.tml
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentsNotInTemplateDemo.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLoaderProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Start.tml
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageLoaderImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLoaderProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLoaderProcessor.java?rev=708649&r1=708648&r2=708649&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLoaderProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLoaderProcessor.java Tue Oct 28 12:47:04 2008
@@ -29,7 +29,6 @@
import org.apache.tapestry5.runtime.RenderQueue;
import org.apache.tapestry5.services.BindingSource;
import org.apache.tapestry5.services.ComponentClassResolver;
-import org.slf4j.Logger;
import java.util.List;
import java.util.Locale;
@@ -441,8 +440,6 @@
// Pre-allocate ids to avoid later name collisions.
- Logger logger = loadingComponentModel.getLogger();
-
// Don't have a case-insensitive Set, so we'll make due with a Map
Map<String, Boolean> embeddedIds = CollectionFactory.newCaseInsensitiveMap();
@@ -458,7 +455,10 @@
}
if (!embeddedIds.isEmpty())
- logger.error(ServicesMessages.embeddedComponentsNotInTemplate(embeddedIds.keySet(), componentClassName));
+ throw new TapestryException(
+ ServicesMessages.embeddedComponentsNotInTemplate(embeddedIds.keySet(), componentClassName),
+ loadingElement.getLocation(),
+ null);
addAttributesAsComponentBindings = false;
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ComponentsNotInTemplateDemo.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ComponentsNotInTemplateDemo.tml?rev=708649&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ComponentsNotInTemplateDemo.tml (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ComponentsNotInTemplateDemo.tml Tue Oct 28 12:47:04 2008
@@ -0,0 +1,14 @@
+<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+
+ <h1>Components Not In Template Demo</h1>
+
+ <p>
+ This is a very common example where there's an @Component BeanEditForm on field form, and a t:form
+ here.
+ </p>
+
+ <!-- This will get an id of "form_0" -->
+ <t:form/>
+
+
+</html>
\ No newline at end of file
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Start.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Start.tml?rev=708649&r1=708648&r2=708649&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Start.tml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/Start.tml Tue Oct 28 12:47:04 2008
@@ -85,6 +85,10 @@
-- demo failure when attaching a page
</li>
+ <li>
+ <a href="componentsNotInTemplateDemo">Components Not In Template Demo</a>
+ -- demo exception when a component is defined in the class but not present in the template
+ </li>
</ul>
</html>
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java?rev=708649&r1=708648&r2=708649&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java Tue Oct 28 12:47:04 2008
@@ -2358,4 +2358,15 @@
assertTextPresent("Form components may not be placed inside other Form components.");
}
+
+ /**
+ * TAP5-105
+ */
+ public void component_in_class_but_not_template_is_an_exception()
+ {
+ start("Components Not In Template Demo");
+
+ assertTextPresent(
+ "Embedded component(s) form are defined within component class org.apache.tapestry5.integration.app1.pages.ComponentsNotInTemplateDemo, but are not present in the component template.");
+ }
}
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentsNotInTemplateDemo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentsNotInTemplateDemo.java?rev=708649&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentsNotInTemplateDemo.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentsNotInTemplateDemo.java Tue Oct 28 12:47:04 2008
@@ -0,0 +1,24 @@
+// Copyright 2008 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.tapestry5.integration.app1.pages;
+
+import org.apache.tapestry5.annotations.Component;
+import org.apache.tapestry5.corelib.components.BeanEditForm;
+
+public class ComponentsNotInTemplateDemo
+{
+ @Component
+ private BeanEditForm form;
+}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageLoaderImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageLoaderImplTest.java?rev=708649&r1=708648&r2=708649&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageLoaderImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageLoaderImplTest.java Tue Oct 28 12:47:04 2008
@@ -19,14 +19,12 @@
import org.apache.tapestry5.internal.parser.EndElementToken;
import org.apache.tapestry5.internal.parser.StartComponentToken;
import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
import org.apache.tapestry5.internal.test.InternalBaseTestCase;
import org.apache.tapestry5.ioc.Location;
import org.apache.tapestry5.ioc.internal.util.TapestryException;
import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.model.EmbeddedComponentModel;
import org.apache.tapestry5.services.ComponentClassResolver;
-import org.slf4j.Logger;
import org.testng.annotations.Test;
import java.util.Arrays;
@@ -51,8 +49,8 @@
InternalComponentResources resources = mockInternalComponentResources();
ComponentModel model = mockComponentModel();
ComponentTemplate template = mockComponentTemplate();
- Logger logger = mockLogger();
ComponentClassResolver resolver = mockComponentClassResolver();
+ Location l = mockLocation();
train_resolvePageNameToClassName(resolver, LOGICAL_PAGE_NAME, PAGE_CLASS_NAME);
@@ -67,23 +65,27 @@
train_isMissing(template, false);
- train_getLogger(model, logger);
-
train_getEmbeddedIds(model, "foo", "bar", "baz");
train_getComponentIds(template, "baz", "biff");
- logger.error(ServicesMessages.embeddedComponentsNotInTemplate(Arrays.asList("foo", "bar"), PAGE_CLASS_NAME));
-
- train_getTokens(template);
+ train_getLocation(rootElement, l);
replay();
PageLoader loader = new PageLoaderImpl(templateSource, elementFactory, null, null, resolver);
- Page page = loader.loadPage(LOGICAL_PAGE_NAME, LOCALE);
-
- assertSame(page.getLogicalName(), LOGICAL_PAGE_NAME);
+ try
+ {
+ loader.loadPage(LOGICAL_PAGE_NAME, LOCALE);
+ unreachable();
+ }
+ catch (TapestryException ex)
+ {
+ assertEquals(ex.getMessage(), ServicesMessages.embeddedComponentsNotInTemplate(Arrays.asList("foo", "bar"),
+ PAGE_CLASS_NAME));
+ assertSame(ex.getLocation(), l);
+ }
verify();
}
@@ -97,7 +99,6 @@
InternalComponentResources resources = mockInternalComponentResources();
ComponentModel model = mockComponentModel();
ComponentTemplate template = mockComponentTemplate();
- Logger logger = mockLogger();
EmbeddedComponentModel emodel = mockEmbeddedComponentModel();
Location l = mockLocation();
ComponentClassResolver resolver = mockComponentClassResolver();
@@ -114,8 +115,6 @@
train_isMissing(template, false);
- train_getLogger(model, logger);
-
train_getEmbeddedIds(model, "foo");
train_getComponentIds(template, "foo");