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 2010/05/20 02:19:05 UTC
svn commit: r946492 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/services/
main/java/org/apache/tapestry5/internal/services/templates/
main/java/org/apache/tapestry5/services/ main/java/org/apache/tapestry5/...
Author: hlship
Date: Thu May 20 00:19:04 2010
New Revision: 946492
URL: http://svn.apache.org/viewvc?rev=946492&view=rev
Log:
TAP5-1159: Easy way to customize search locations for page and component templates
Added:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java (with props)
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java (contents, props changed)
- copied, changed from r946491, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageTemplateLocatorImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java (with props)
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/PageTemplateLocatorTest.groovy
Removed:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageTemplateLocator.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageTemplateLocatorImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageTemplateLocatorImplTest.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java?rev=946492&r1=946491&r2=946492&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java Thu May 20 00:19:04 2010
@@ -4,7 +4,7 @@
// 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
+// 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,
@@ -22,11 +22,13 @@ import org.apache.tapestry5.internal.uti
import org.apache.tapestry5.internal.util.URLChangeTracker;
import org.apache.tapestry5.ioc.Location;
import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.ioc.annotations.Primary;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.services.InvalidationEventHub;
import org.apache.tapestry5.services.UpdateListener;
+import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
import java.util.Collections;
import java.util.List;
@@ -36,12 +38,12 @@ import java.util.Map;
/**
* Service implementation that manages a cache of parsed component templates.
*/
-public final class ComponentTemplateSourceImpl extends InvalidationEventHubImpl implements ComponentTemplateSource, UpdateListener
+public final class ComponentTemplateSourceImpl extends InvalidationEventHubImpl implements ComponentTemplateSource,
+ UpdateListener
{
-
private final TemplateParser parser;
- private final PageTemplateLocator locator;
+ private final ComponentTemplateLocator locator;
private final URLChangeTracker tracker;
@@ -90,13 +92,13 @@ public final class ComponentTemplateSour
}
};
- public ComponentTemplateSourceImpl(TemplateParser parser, PageTemplateLocator locator,
- ClasspathURLConverter classpathURLConverter)
+ public ComponentTemplateSourceImpl(TemplateParser parser, @Primary
+ ComponentTemplateLocator templateLocator, ClasspathURLConverter classpathURLConverter)
{
- this(parser, locator, new URLChangeTracker(classpathURLConverter));
+ this(parser, templateLocator, new URLChangeTracker(classpathURLConverter));
}
- ComponentTemplateSourceImpl(TemplateParser parser, PageTemplateLocator locator, URLChangeTracker tracker)
+ ComponentTemplateSourceImpl(TemplateParser parser, ComponentTemplateLocator locator, URLChangeTracker tracker)
{
this.parser = parser;
this.locator = locator;
@@ -104,9 +106,8 @@ public final class ComponentTemplateSour
}
/**
- * Resolves the component name to a {@link Resource} and finds the localization of that resource (the combination of
- * component name and locale is resolved to a resource). The localized resource is used as the key to a cache of
- * {@link ComponentTemplate}s.
+ * Resolves the component name to a localized {@link Resource} (using the {@link ComponentTemplateLocator} chain of
+ * command service). The localized resource is used as the key to a cache of {@link ComponentTemplate}s.
* <p/>
* If a template doesn't exist, then the missing ComponentTemplate is returned.
*/
@@ -144,7 +145,8 @@ public final class ComponentTemplateSour
// In a race condition, we may parse the same template more than once. This will likely add
// the resource to the tracker multiple times. Not likely this will cause a big issue.
- if (!r.exists()) return missingTemplate;
+ if (!r.exists())
+ return missingTemplate;
tracker.add(r.toURL());
@@ -156,25 +158,10 @@ public final class ComponentTemplateSour
ComponentModel model = initialModel;
while (model != null)
{
+ Resource localized = locator.locateTemplate(model, locale);
- Resource baseResource = baseResourceForModel(model);
- Resource localized = baseResource.forLocale(locale);
-
- // In a race condition, we may hit this method a couple of times, and overwrite previous
- // results with identical new results.
-
- // If found a properly localized version of the base resource for the model,
- // then we've found a match (even if we had to ascend a couple of levels
- // to reach it).
-
- if (localized != null) return localized;
-
- // Not on the classpath, the the locator see if its a) a page and b) a resource inside
- // the context
-
- localized = locator.findPageTemplateResource(model, locale);
-
- if (localized != null) return localized;
+ if (localized != null)
+ return localized;
// Otherwise, this component doesn't have its own template ... lets work up to its
// base class and check there.
@@ -185,12 +172,7 @@ public final class ComponentTemplateSour
// This will be a Resource whose URL is null, which will be picked up later and force the
// return of the empty template.
- return baseResourceForModel(initialModel);
- }
-
- private Resource baseResourceForModel(ComponentModel model)
- {
- return model.getBaseResource().withExtension(TapestryConstants.TEMPLATE_EXTENSION);
+ return initialModel.getBaseResource().withExtension(TapestryConstants.TEMPLATE_EXTENSION);
}
/**
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java?rev=946492&r1=946491&r2=946492&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java Thu May 20 00:19:04 2010
@@ -27,6 +27,7 @@ import org.apache.tapestry5.ioc.ScopeCon
import org.apache.tapestry5.ioc.ServiceBinder;
import org.apache.tapestry5.ioc.annotations.Autobuild;
import org.apache.tapestry5.ioc.annotations.Marker;
+import org.apache.tapestry5.ioc.annotations.Primary;
import org.apache.tapestry5.ioc.annotations.Scope;
import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.ioc.internal.services.CtClassSource;
@@ -36,6 +37,7 @@ import org.apache.tapestry5.ioc.services
import org.apache.tapestry5.ioc.services.PerthreadManager;
import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
import org.slf4j.Logger;
/**
@@ -115,14 +117,6 @@ public class InternalModule
return service;
}
- public static PageTemplateLocator buildPageTemplateLocator(@ContextProvider
- AssetFactory contextAssetFactory,
-
- ComponentClassResolver componentClassResolver)
- {
- return new PageTemplateLocatorImpl(contextAssetFactory.getRootResource(), componentClassResolver);
- }
-
public ComponentInstantiatorSource buildComponentInstantiatorSource(@Builtin
ClassFactory classFactory,
@@ -237,8 +231,8 @@ public class InternalModule
return service;
}
- public ComponentTemplateSource buildComponentTemplateSource(TemplateParser parser, PageTemplateLocator locator,
- ClasspathURLConverter classpathURLConverter)
+ public ComponentTemplateSource buildComponentTemplateSource(TemplateParser parser, @Primary
+ ComponentTemplateLocator locator, ClasspathURLConverter classpathURLConverter)
{
ComponentTemplateSourceImpl service = new ComponentTemplateSourceImpl(parser, locator, classpathURLConverter);
Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java?rev=946492&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java Thu May 20 00:19:04 2010
@@ -0,0 +1,31 @@
+// Copyright 2010 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.internal.services.templates;
+
+import java.util.Locale;
+
+import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.model.ComponentModel;
+import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
+
+public class DefaultTemplateLocator implements ComponentTemplateLocator
+{
+ public Resource locateTemplate(ComponentModel model, Locale locale)
+ {
+ return model.getBaseResource().withExtension(TapestryConstants.TEMPLATE_EXTENSION).forLocale(locale);
+ }
+
+}
Propchange: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java (from r946491, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageTemplateLocatorImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java?p2=tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java&p1=tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageTemplateLocatorImpl.java&r1=946491&r2=946492&rev=946492&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageTemplateLocatorImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java Thu May 20 00:19:04 2010
@@ -1,10 +1,10 @@
-// Copyright 2007, 2010 The Apache Software Foundation
+// Copyright 2010 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
+// 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,
@@ -12,36 +12,44 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.internal.services.templates;
+
+import static java.lang.String.format;
+
+import java.util.Locale;
import org.apache.tapestry5.TapestryConstants;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.ioc.internal.util.InternalUtils;
import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
-import static java.lang.String.format;
-import java.util.Locale;
-
-public class PageTemplateLocatorImpl implements PageTemplateLocator
+/**
+ * The special case for pages, where the template is searched for in the web application context.
+ *
+ * @since 5.2.0
+ */
+public class PageTemplateLocator implements ComponentTemplateLocator
{
private final Resource contextRoot;
private final ComponentClassResolver resolver;
- public PageTemplateLocatorImpl(Resource contextRoot, ComponentClassResolver resolver)
+ public PageTemplateLocator(Resource contextRoot, ComponentClassResolver resolver)
{
this.contextRoot = contextRoot;
this.resolver = resolver;
}
- public Resource findPageTemplateResource(ComponentModel model, Locale locale)
+ public Resource locateTemplate(ComponentModel model, Locale locale)
{
String className = model.getComponentClassName();
// A bit of a hack, but should work.
- if (!className.contains(".pages.")) return null;
+ if (!className.contains(".pages."))
+ return null;
String logicalName = resolver.resolvePageClassNameToPageName(className);
Propchange: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=946492&r1=946491&r2=946492&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Thu May 20 00:19:04 2010
@@ -83,6 +83,8 @@ import org.apache.tapestry5.internal.ser
import org.apache.tapestry5.internal.services.meta.ContentTypeExtractor;
import org.apache.tapestry5.internal.services.meta.MetaAnnotationExtractor;
import org.apache.tapestry5.internal.services.meta.MetaWorkerImpl;
+import org.apache.tapestry5.internal.services.templates.DefaultTemplateLocator;
+import org.apache.tapestry5.internal.services.templates.PageTemplateLocator;
import org.apache.tapestry5.internal.transform.*;
import org.apache.tapestry5.internal.translator.NumericTranslator;
import org.apache.tapestry5.internal.translator.NumericTranslatorSupport;
@@ -116,6 +118,7 @@ import org.apache.tapestry5.services.mes
import org.apache.tapestry5.services.meta.FixedExtractor;
import org.apache.tapestry5.services.meta.MetaDataExtractor;
import org.apache.tapestry5.services.meta.MetaWorker;
+import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
import org.apache.tapestry5.util.StringToEnumCoercion;
import org.apache.tapestry5.validator.Email;
import org.apache.tapestry5.validator.Max;
@@ -2905,4 +2908,36 @@ public final class TapestryModule
configuration.add(Secure.class, new FixedExtractor(MetaDataConstants.SECURE_PAGE));
configuration.addInstance(ContentType.class, ContentTypeExtractor.class);
}
+
+ /**
+ * Builds the {@link ComponentTemplateLocator} as a chain of command.
+ *
+ * @since 5.2.0
+ */
+ @Marker(Primary.class)
+ public ComponentTemplateLocator buildComponentTemplateLocator(List<ComponentTemplateLocator> configuration)
+ {
+ return chainBuilder.build(ComponentTemplateLocator.class, configuration);
+ }
+
+ /**
+ * Contributes two template locators:
+ * <dl>
+ * <dt>Default</dt>
+ * <dd>Searches for the template on the classpath ({@link DefaultTemplateLocator}</dd>
+ * <dt>Page (after:Default)</dt>
+ * <dd>Searches for <em>page</em> templates in the context ({@link PageTemplateLocator})</dd>
+ * </dl>
+ *
+ * @since 5.2.0
+ */
+ public static void contributeComponentTemplateLocator(OrderedConfiguration<ComponentTemplateLocator> configuration,
+ @ContextProvider
+ AssetFactory contextAssetFactory, ComponentClassResolver componentClassResolver)
+ {
+ configuration.add("Default", new DefaultTemplateLocator());
+ configuration
+ .add("Page", new PageTemplateLocator(contextAssetFactory.getRootResource(), componentClassResolver),
+ "after:Default");
+ }
}
Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java?rev=946492&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java Thu May 20 00:19:04 2010
@@ -0,0 +1,44 @@
+// Copyright 2010 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.services.templates;
+
+import java.util.Locale;
+
+import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
+import org.apache.tapestry5.model.ComponentModel;
+
+/**
+ * Chain-of-command interface used to locate page and component templates. Contributions to this service support
+ * alternate naming schemes for template files, or alternate locations in which to search for template files.
+ *
+ * @see TapestryConstants#TEMPLATE_EXTENSION
+ * @since 5.2.0
+ */
+@UsesOrderedConfiguration(ComponentTemplateLocator.class)
+public interface ComponentTemplateLocator
+{
+ /**
+ * Locates the template for the given model as a {@link Resource}.
+ *
+ * @param model
+ * defines the component, especially its {@linkplain ComponentModel#getBaseResource() base resource}
+ * @param locale
+ * to which the
+ * @return localized template resource if found, or null if not found
+ */
+ Resource locateTemplate(ComponentModel model, Locale locale);
+}
Propchange: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml?rev=946492&r1=946491&r2=946492&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml Thu May 20 00:19:04 2010
@@ -42,6 +42,7 @@
<package name="org.apache.tapestry5.internal.services.assets"/>
<package name="org.apache.tapestry5.internal.services.messages"/>
<package name="org.apache.tapestry5.internal.services.meta"/>
+ <package name="org.apache.tapestry5.internal.services.templates"/>
<package name="org.apache.tapestry5.internal.structure"/>
<package name="org.apache.tapestry5.internal.test"/>
<package name="org.apache.tapestry5.internal.transform"/>
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/PageTemplateLocatorTest.groovy
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/PageTemplateLocatorTest.groovy?rev=946492&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/PageTemplateLocatorTest.groovy (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/PageTemplateLocatorTest.groovy Thu May 20 00:19:04 2010
@@ -0,0 +1,119 @@
+// Copyright 2010 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.internal.services.templates;
+
+import java.util.Locale;
+
+import org.apache.tapestry5.internal.test.InternalBaseTestCase;
+import org.testng.annotations.Test
+
+class PageTemplateLocatorTest extends InternalBaseTestCase
+{
+ void execute(root, resolver, closure) {
+
+ replay()
+
+ closure.call(new PageTemplateLocator(root, resolver))
+
+ verify()
+ }
+
+ @Test
+ void not_a_page_class() {
+ def model = mockComponentModel()
+ def root = mockResource()
+ def resolver = mockComponentClassResolver()
+
+ train_getComponentClassName(model, "foo.bar.Baz")
+
+ execute (root, resolver) {
+
+ assert it.locateTemplate (model, Locale.FRENCH) == null
+ }
+ }
+
+ @Test
+ void template_found() {
+ def model = mockComponentModel()
+ def root = mockResource()
+ def withExtension = mockResource()
+ def forLocale = mockResource()
+ def resolver = mockComponentClassResolver()
+ def locale = Locale.FRENCH
+ def className = "myapp.pages.Foo"
+
+ train_getComponentClassName(model, className)
+
+ train_resolvePageClassNameToPageName(resolver, className, "Foo")
+
+ train_forFile(root, "Foo.tml", withExtension)
+ train_forLocale(withExtension, locale, forLocale)
+
+ execute (root, resolver) {
+
+ assertSame it.locateTemplate(model, locale), forLocale
+ }
+ }
+
+ /**
+ * Because of how Tapestry maps class names to logical page names, part of the name may be have been stripped off
+ * and we want to make sure we get it back.
+ */
+ @Test
+ void uses_simple_class_name_in_folders() {
+
+ def model = mockComponentModel()
+ def root = mockResource()
+ def withExtension = mockResource()
+ def forLocale = mockResource()
+ def resolver = mockComponentClassResolver()
+
+ def locale = Locale.FRENCH
+ def className = "myapp.pages.foo.CreateFoo"
+
+
+ train_getComponentClassName(model, className)
+ train_resolvePageClassNameToPageName (resolver, className, "foo/Create")
+
+ train_forFile(root, "foo/CreateFoo.tml", withExtension)
+ train_forLocale(withExtension, locale, forLocale)
+
+ execute (root, resolver){
+
+ assertSame it.locateTemplate (model, locale), forLocale
+ }
+ }
+
+ @Test
+ void template_not_found() {
+ def model = mockComponentModel()
+ def root = mockResource()
+ def withExtension = mockResource()
+ def resolver = mockComponentClassResolver()
+ def locale= Locale.GERMAN;
+ def className = "myapp.pages.bar.Baz"
+
+ train_getComponentClassName (model, className)
+ train_resolvePageClassNameToPageName (resolver, className, "bar/Baz")
+
+ train_forFile(root, "bar/Baz.tml", withExtension)
+ train_forLocale(withExtension, locale, null)
+
+ execute (root, resolver) {
+
+ assertNull it.locateTemplate(model, locale)
+ }
+ }
+}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java?rev=946492&r1=946491&r2=946492&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java Thu May 20 00:19:04 2010
@@ -4,7 +4,7 @@
// 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
+// 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,
@@ -14,6 +14,13 @@
package org.apache.tapestry5.internal.services;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Locale;
+import java.util.UUID;
+
import org.apache.tapestry5.TapestryConstants;
import org.apache.tapestry5.internal.parser.ComponentTemplate;
import org.apache.tapestry5.internal.test.InternalBaseTestCase;
@@ -23,15 +30,9 @@ import org.apache.tapestry5.ioc.internal
import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
import org.apache.tapestry5.model.ComponentModel;
import org.apache.tapestry5.services.InvalidationListener;
+import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
import org.testng.annotations.Test;
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Locale;
-import java.util.UUID;
-
public class ComponentTemplateSourceImplTest extends InternalBaseTestCase
{
private static final String PACKAGE = "org.apache.tapestry5.internal.pageload";
@@ -39,29 +40,28 @@ public class ComponentTemplateSourceImpl
static public final String PATH = "org/apache/tapestry5/internal/pageload";
private final ClassLoader loader = Thread.currentThread().getContextClassLoader();
-
+
private final ClasspathURLConverter converter = new ClasspathURLConverterImpl();
/**
* Creates a new class loader, whose parent is the thread's context class loader, but adds a single classpath root
* from the filesystem.
- *
+ *
* @see #createClasspathRoot()
*/
- protected final URLClassLoader newLoaderWithClasspathRoot(File rootDir)
- throws MalformedURLException
+ protected final URLClassLoader newLoaderWithClasspathRoot(File rootDir) throws MalformedURLException
{
String urlPath = rootDir.toURL().toString();
// URLs for folders must end with a slash to make URLClassLoader happy.
URL url = new URL(urlPath + "/");
return new URLClassLoader(new URL[]
- {url}, loader);
+ { url }, loader);
}
/**
* Creates a new temporary directory which can act as a classpath root.
- *
+ *
* @see #newLoaderWithClasspathRoot(File)
*/
protected final File createClasspathRoot()
@@ -75,22 +75,24 @@ public class ComponentTemplateSourceImpl
@Test
public void caching()
{
- Resource baseResource = newResource("Fred.class");
-
TemplateParser parser = mockTemplateParser();
ComponentTemplate template = mockComponentTemplate();
ComponentModel model = mockComponentModel();
+ Resource resource = mockResource();
+ ComponentTemplateLocator locator = mockComponentTemplateLocator();
train_getComponentClassName(model, PACKAGE + ".Fred");
- train_getBaseResource(model, baseResource);
+ expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(resource);
+
+ expect(resource.exists()).andReturn(true);
+ expect(resource.toURL()).andReturn(null);
- train_parseTemplate(parser, baseResource
- .withExtension(TapestryConstants.TEMPLATE_EXTENSION), template);
+ train_parseTemplate(parser, resource, template);
replay();
- ComponentTemplateSource source = new ComponentTemplateSourceImpl(parser, null, converter);
+ ComponentTemplateSource source = new ComponentTemplateSourceImpl(parser, locator, converter);
assertSame(source.getTemplate(model, Locale.ENGLISH), template);
@@ -102,6 +104,11 @@ public class ComponentTemplateSourceImpl
verify();
}
+ protected final ComponentTemplateLocator mockComponentTemplateLocator()
+ {
+ return newMock(ComponentTemplateLocator.class);
+ }
+
/**
* Tests resource invalidation.
*/
@@ -125,16 +132,17 @@ public class ComponentTemplateSourceImpl
TemplateParser parser = mockTemplateParser();
ComponentTemplate template = mockComponentTemplate();
InvalidationListener listener = mockInvalidationListener();
+ ComponentTemplateLocator locator = mockComponentTemplateLocator();
train_getComponentClassName(model, "baz.Biff");
- train_getBaseResource(model, baseResource);
+ expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(localized);
train_parseTemplate(parser, localized, template);
replay();
- ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser, null, converter);
+ ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser, locator, converter);
source.addInvalidationListener(listener);
assertSame(source.getTemplate(model, Locale.ENGLISH), template);
@@ -166,7 +174,7 @@ public class ComponentTemplateSourceImpl
train_getComponentClassName(model, "baz.Biff");
- train_getBaseResource(model, baseResource);
+ expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(localized);
train_parseTemplate(parser, localized, template);
@@ -183,22 +191,26 @@ public class ComponentTemplateSourceImpl
@Test
public void localization_to_same()
{
- Resource baseResource = newResource("Fred.class");
-
+ Resource resource = mockResource();
TemplateParser parser = mockTemplateParser();
ComponentTemplate template = mockComponentTemplate();
ComponentModel model = mockComponentModel();
+ ComponentTemplateLocator locator = mockComponentTemplateLocator();
train_getComponentClassName(model, PACKAGE + ".Fred");
- train_getBaseResource(model, baseResource);
+ expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(resource);
+
+ expect(resource.exists()).andReturn(true).anyTimes();
+ expect(resource.toURL()).andReturn(null).anyTimes();
- train_parseTemplate(parser, baseResource
- .withExtension(TapestryConstants.TEMPLATE_EXTENSION), template);
+ expect(locator.locateTemplate(model, Locale.FRENCH)).andReturn(resource);
+
+ train_parseTemplate(parser, resource, template);
replay();
- ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser, null, converter);
+ ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser, locator, converter);
assertSame(source.getTemplate(model, Locale.ENGLISH), template);
@@ -215,53 +227,25 @@ public class ComponentTemplateSourceImpl
}
@Test
- public void page_template_found_in_context()
- {
- Resource baseResource = newResource("NotInClasspath.class");
-
- // Simpler to do it this way ...
-
- Resource contextTemplateResource = newResource("Fred.tml");
-
- TemplateParser parser = mockTemplateParser();
- ComponentTemplate template = mockComponentTemplate();
- ComponentModel model = mockComponentModel();
- PageTemplateLocator locator = mockPageTemplateLocator();
- Locale locale = Locale.FRENCH;
-
- train_getComponentClassName(model, PACKAGE + ".NotInClasspath");
-
- train_getBaseResource(model, baseResource);
-
- train_findPageTemplateResource(locator, model, locale, contextTemplateResource);
-
- train_parseTemplate(parser, contextTemplateResource, template);
-
- replay();
-
- ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser, locator, converter);
-
- assertSame(source.getTemplate(model, locale), template);
-
- verify();
- }
-
- @Test
public void no_template_found()
{
TemplateParser parser = mockTemplateParser();
ComponentModel model = mockComponentModel();
- PageTemplateLocator locator = mockPageTemplateLocator();
-
- Resource baseResource = newResource("Barney.class");
+ ComponentTemplateLocator locator = mockComponentTemplateLocator();
+ Resource baseResource = mockResource();
+ Resource missingResource = mockResource();
train_getComponentClassName(model, PACKAGE + ".Barney");
+ expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(null);
+
+ train_getParentModel(model, null);
+
train_getBaseResource(model, baseResource);
- train_findPageTemplateResource(locator, model, Locale.ENGLISH, null);
+ expect(baseResource.withExtension(TapestryConstants.TEMPLATE_EXTENSION)).andReturn(missingResource);
- train_getParentModel(model, null);
+ expect(missingResource.exists()).andReturn(false);
replay();
@@ -277,29 +261,25 @@ public class ComponentTemplateSourceImpl
@Test
public void child_component_inherits_parent_template()
{
- Resource baseFred = newResource("Fred.class");
- Resource baseBarney = baseFred.forFile("Barney.class");
- PageTemplateLocator locator = mockPageTemplateLocator();
-
TemplateParser parser = mockTemplateParser();
ComponentTemplate template = mockComponentTemplate();
ComponentModel model = mockComponentModel();
ComponentModel parentModel = mockComponentModel();
+ Resource resource = mockResource();
+ ComponentTemplateLocator locator = mockComponentTemplateLocator();
- train_getComponentClassName(model, PACKAGE + ".Barney");
-
- train_getBaseResource(model, baseBarney);
+ train_getComponentClassName(model, "foo.Bar");
- train_findPageTemplateResource(locator, model, Locale.ENGLISH, null);
+ expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(null);
train_getParentModel(model, parentModel);
- train_getBaseResource(parentModel, baseFred);
+ expect(locator.locateTemplate(parentModel, Locale.ENGLISH)).andReturn(resource);
+
+ expect(resource.exists()).andReturn(true);
+ expect(resource.toURL()).andReturn(null);
- train_parseTemplate(
- parser,
- baseFred.withExtension(TapestryConstants.TEMPLATE_EXTENSION),
- template);
+ train_parseTemplate(parser, resource, template);
replay();
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java?rev=946492&r1=946491&r2=946492&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java Thu May 20 00:19:04 2010
@@ -4,7 +4,7 @@
// 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
+// 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,
@@ -37,27 +37,7 @@ import org.apache.tapestry5.internal.Syn
import org.apache.tapestry5.internal.SyntheticSymbolSourceContributionDef;
import org.apache.tapestry5.internal.parser.ComponentTemplate;
import org.apache.tapestry5.internal.parser.TemplateToken;
-import org.apache.tapestry5.internal.services.ActionRenderResponseGenerator;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
-import org.apache.tapestry5.internal.services.ComponentModelSource;
-import org.apache.tapestry5.internal.services.ComponentTemplateSource;
-import org.apache.tapestry5.internal.services.DocumentLinker;
-import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.internal.services.LinkSource;
-import org.apache.tapestry5.internal.services.PageContentTypeAnalyzer;
-import org.apache.tapestry5.internal.services.PageElementFactory;
-import org.apache.tapestry5.internal.services.PageLoader;
-import org.apache.tapestry5.internal.services.PagePool;
-import org.apache.tapestry5.internal.services.PageRenderQueue;
-import org.apache.tapestry5.internal.services.PageResponseRenderer;
-import org.apache.tapestry5.internal.services.PageTemplateLocator;
-import org.apache.tapestry5.internal.services.RequestPageCache;
-import org.apache.tapestry5.internal.services.RequestPathOptimizer;
-import org.apache.tapestry5.internal.services.RequestSecurityManager;
-import org.apache.tapestry5.internal.services.ResourceCache;
-import org.apache.tapestry5.internal.services.ResourceStreamer;
-import org.apache.tapestry5.internal.services.TemplateParser;
+import org.apache.tapestry5.internal.services.*;
import org.apache.tapestry5.internal.structure.ComponentPageElement;
import org.apache.tapestry5.internal.structure.ComponentPageElementResources;
import org.apache.tapestry5.internal.structure.Page;
@@ -114,8 +94,8 @@ public class InternalBaseTestCase extend
// A synthetic module to ensure that the tapestry.alias-mode is set correctly.
SymbolProvider provider = new SingleKeySymbolProvider(InternalSymbols.ALIAS_MODE, "servlet");
- ContributionDef contribution = new SyntheticSymbolSourceContributionDef("AliasMode",
- provider, "before:ApplicationDefaults");
+ ContributionDef contribution = new SyntheticSymbolSourceContributionDef("AliasMode", provider,
+ "before:ApplicationDefaults");
ModuleDef module = new SyntheticModuleDef(contribution);
@@ -192,8 +172,8 @@ public class InternalBaseTestCase extend
return newMock(ComponentTemplate.class);
}
- protected final <T> void train_getService(InternalRegistry registry, String serviceId,
- Class<T> serviceInterface, T service)
+ protected final <T> void train_getService(InternalRegistry registry, String serviceId, Class<T> serviceInterface,
+ T service)
{
expect(registry.getService(serviceId, serviceInterface)).andReturn(service);
}
@@ -228,8 +208,7 @@ public class InternalBaseTestCase extend
return newMock(RenderQueue.class);
}
- protected final void train_parseTemplate(TemplateParser parser, Resource resource,
- ComponentTemplate template)
+ protected final void train_parseTemplate(TemplateParser parser, Resource resource, ComponentTemplate template)
{
expect(parser.parseTemplate(resource)).andReturn(template);
}
@@ -264,8 +243,8 @@ public class InternalBaseTestCase extend
expect(request.getContextPath()).andReturn(contextPath).atLeastOnce();
}
- protected final void train_resolvePageClassNameToPageName(ComponentClassResolver resolver,
- String pageClassName, String pageName)
+ protected final void train_resolvePageClassNameToPageName(ComponentClassResolver resolver, String pageClassName,
+ String pageName)
{
expect(resolver.resolvePageClassNameToPageName(pageClassName)).andReturn(pageName);
}
@@ -275,8 +254,7 @@ public class InternalBaseTestCase extend
expect(element.getContainingPage()).andReturn(page).atLeastOnce();
}
- protected final void train_getComponentResources(ComponentPageElement element,
- InternalComponentResources resources)
+ protected final void train_getComponentResources(ComponentPageElement element, InternalComponentResources resources)
{
expect(element.getComponentResources()).andReturn(resources).atLeastOnce();
}
@@ -337,8 +315,8 @@ public class InternalBaseTestCase extend
expect(model.getEmbeddedComponentIds()).andReturn(Arrays.asList(ids));
}
- protected void train_getTemplate(ComponentTemplateSource templateSource, ComponentModel model,
- Locale locale, ComponentTemplate template)
+ protected void train_getTemplate(ComponentTemplateSource templateSource, ComponentModel model, Locale locale,
+ ComponentTemplate template)
{
expect(templateSource.getTemplate(model, locale)).andReturn(template);
}
@@ -357,8 +335,7 @@ public class InternalBaseTestCase extend
{
Instantiator ins = newMock(Instantiator.class);
- expect(ins.newInstance(EasyMock.isA(InternalComponentResources.class)))
- .andReturn(component);
+ expect(ins.newInstance(EasyMock.isA(InternalComponentResources.class))).andReturn(component);
return ins;
}
@@ -368,8 +345,7 @@ public class InternalBaseTestCase extend
return newMock(RequestPageCache.class);
}
- protected final void train_getComponentElementByNestedId(Page page, String nestedId,
- ComponentPageElement element)
+ protected final void train_getComponentElementByNestedId(Page page, String nestedId, ComponentPageElement element)
{
expect(page.getComponentElementByNestedId(nestedId)).andReturn(element).atLeastOnce();
}
@@ -399,8 +375,7 @@ public class InternalBaseTestCase extend
return newMock(ResourceCache.class);
}
- protected final void train_requiresDigest(ResourceCache cache, Resource resource,
- boolean requiresChecksum)
+ protected final void train_requiresDigest(ResourceCache cache, Resource resource, boolean requiresChecksum)
{
expect(cache.requiresDigest(resource)).andReturn(requiresChecksum);
}
@@ -410,8 +385,7 @@ public class InternalBaseTestCase extend
return newMock(InvalidationListener.class);
}
- protected final void train_getTimeModified(ResourceCache cache, Resource resource,
- long timeModified)
+ protected final void train_getTimeModified(ResourceCache cache, Resource resource, long timeModified)
{
expect(cache.getTimeModified(resource)).andReturn(timeModified).atLeastOnce();
}
@@ -426,17 +400,6 @@ public class InternalBaseTestCase extend
expect(cache.get(pageName)).andReturn(page).atLeastOnce();
}
- protected final void train_findPageTemplateResource(PageTemplateLocator locator,
- ComponentModel model, Locale locale, Resource resource)
- {
- expect(locator.findPageTemplateResource(model, locale)).andReturn(resource).atLeastOnce();
- }
-
- protected final PageTemplateLocator mockPageTemplateLocator()
- {
- return newMock(PageTemplateLocator.class);
- }
-
/**
* Returns the default validator messages.
*/
@@ -444,8 +407,7 @@ public class InternalBaseTestCase extend
{
if (validationMessages == null)
{
- ResourceBundle bundle = ResourceBundle
- .getBundle("org.apache.tapestry5.internal.ValidationMessages");
+ ResourceBundle bundle = ResourceBundle.getBundle("org.apache.tapestry5.internal.ValidationMessages");
validationMessages = new MessagesImpl(Locale.ENGLISH, bundle);
}
@@ -473,8 +435,7 @@ public class InternalBaseTestCase extend
expect(resolver.isPageName(isA(String.class))).andStubReturn(result);
}
- protected final void train_isPageName(ComponentClassResolver resolver, String pageName,
- boolean result)
+ protected final void train_isPageName(ComponentClassResolver resolver, String pageName, boolean result)
{
expect(resolver.isPageName(pageName)).andReturn(result);
}
@@ -523,8 +484,8 @@ public class InternalBaseTestCase extend
return newMock(DocumentLinker.class);
}
- protected final void train_canonicalizePageName(ComponentClassResolver resolver,
- String pageName, String canonicalized)
+ protected final void train_canonicalizePageName(ComponentClassResolver resolver, String pageName,
+ String canonicalized)
{
expect(resolver.canonicalizePageName(pageName)).andReturn(canonicalized);
}
@@ -534,11 +495,10 @@ public class InternalBaseTestCase extend
expect(page.getName()).andReturn(pageName).atLeastOnce();
}
- protected final void train_resolvePageNameToClassName(ComponentClassResolver resolver,
- String pageName, String pageClassName)
+ protected final void train_resolvePageNameToClassName(ComponentClassResolver resolver, String pageName,
+ String pageClassName)
{
- expect(resolver.resolvePageNameToClassName(pageName)).andReturn(pageClassName)
- .atLeastOnce();
+ expect(resolver.resolvePageNameToClassName(pageName)).andReturn(pageClassName).atLeastOnce();
}
protected final void train_getLocale(Page page, Locale locale)
@@ -566,8 +526,7 @@ public class InternalBaseTestCase extend
return newMock(ComponentClassCache.class);
}
- protected void train_findContentType(PageContentTypeAnalyzer analyzer, Page page,
- ContentType contentType)
+ protected void train_findContentType(PageContentTypeAnalyzer analyzer, Page page, ContentType contentType)
{
expect(analyzer.findContentType(page)).andReturn(contentType).atLeastOnce();
}
@@ -582,8 +541,7 @@ public class InternalBaseTestCase extend
return newMock(RequestPathOptimizer.class);
}
- protected final void train_optimizePath(RequestPathOptimizer optimizer, String path,
- String optimizedPath)
+ protected final void train_optimizePath(RequestPathOptimizer optimizer, String path, String optimizedPath)
{
expect(optimizer.optimizePath(path)).andReturn(optimizedPath);
}
@@ -608,14 +566,12 @@ public class InternalBaseTestCase extend
return newMock(ComponentPageElementResources.class);
}
- protected final void train_toClass(ComponentPageElementResources resources, String className,
- Class toClass)
+ protected final void train_toClass(ComponentPageElementResources resources, String className, Class toClass)
{
expect(resources.toClass(className)).andReturn(toClass).atLeastOnce();
}
- protected final <S, T> void train_coerce(
- ComponentPageElementResources componentPageElementResources, S input,
+ protected final <S, T> void train_coerce(ComponentPageElementResources componentPageElementResources, S input,
Class<T> expectedType, T coercedValue)
{
expect(componentPageElementResources.coerce(input, expectedType)).andReturn(coercedValue);
@@ -636,11 +592,10 @@ public class InternalBaseTestCase extend
expect(context.getCount()).andReturn(count).atLeastOnce();
}
- protected final void train_getPropertyAdapter(ClassPropertyAdapter classPropertyAdapter,
- String propertyName, PropertyAdapter propertyAdapter)
+ protected final void train_getPropertyAdapter(ClassPropertyAdapter classPropertyAdapter, String propertyName,
+ PropertyAdapter propertyAdapter)
{
- expect(classPropertyAdapter.getPropertyAdapter(propertyName)).andReturn(propertyAdapter)
- .atLeastOnce();
+ expect(classPropertyAdapter.getPropertyAdapter(propertyName)).andReturn(propertyAdapter).atLeastOnce();
}
protected final void train_getAdapter(PropertyAccess access, Object object,
@@ -672,8 +627,8 @@ public class InternalBaseTestCase extend
return newMock(FieldComponent.class);
}
- protected final void train_setLocaleFromLocaleName(LocalizationSetter localizationSetter,
- String localeName, boolean recognized)
+ protected final void train_setLocaleFromLocaleName(LocalizationSetter localizationSetter, String localeName,
+ boolean recognized)
{
expect(localizationSetter.setLocaleFromLocaleName(localeName)).andReturn(recognized);
}