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 2006/08/26 16:20:54 UTC
svn commit: r437167 - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/
main/java/org/apache/tapestry/internal/ioc/services/
main/java/org/apache/tapestry/internal/model/
main/java/org/apache/tapestry/internal/services/ mai...
Author: hlship
Date: Sat Aug 26 07:20:50 2006
New Revision: 437167
URL: http://svn.apache.org/viewvc?rev=437167&view=rev
Log:
Fill in the gaps towards getting a simple page rendered.
Added:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/Start.html
Removed:
tapestry/tapestry5/tapestry-core/trunk/src/test/conf/log4j.properties
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResources.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformer.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformerImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSource.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSourceImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/HTMLDispatcher.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/Instantiator.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.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/PagePool.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRenderer.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRendererImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RenderQueueImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCache.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCacheImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/WebResponseImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElement.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderCommand.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderQueue.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/Dispatcher.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/WebResponse.java
tapestry/tapestry5/tapestry-core/trunk/src/test/app1/WEB-INF/web.xml
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/PageImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResources.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResources.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResources.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResources.java Sat Aug 26 07:20:50 2006
@@ -14,6 +14,8 @@
package org.apache.tapestry;
+import org.apache.tapestry.model.ComponentModel;
+
/**
* Provides a component instance with the resources provided by the framework.
*
@@ -26,4 +28,7 @@
* container. For a page's root component, the value null is returned.
*/
String getId();
+
+ /** Returns the component model object that defines the behavior of the component. */
+ ComponentModel getComponentModel();
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java Sat Aug 26 07:20:50 2006
@@ -19,6 +19,8 @@
import java.util.Iterator;
import org.apache.commons.logging.Log;
+import org.apache.tapestry.internal.annotations.SuppressNullCheck;
+import org.apache.tapestry.util.Defense;
/**
* Used by {@link org.apache.tapestry.internal.ioc.services.LoggingDecoratorImpl} to delegate out
@@ -142,8 +144,11 @@
* @param result
* the return value for the method invocation
*/
+ @SuppressNullCheck
public void exit(String name, Object result)
{
+ Defense.notNull(name, "name");
+
StringBuffer buffer = new StringBuffer();
buffer.append(format("[%s] %s [", EXIT, name));
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java Sat Aug 26 07:20:50 2006
@@ -14,6 +14,7 @@
package org.apache.tapestry.internal.model;
+import org.apache.tapestry.Resource;
import org.apache.tapestry.model.MutableComponentModel;
/**
@@ -23,5 +24,27 @@
*/
public final class MutableComponentModelImpl implements MutableComponentModel
{
+ private Resource _baseResource;
+ private String _componentClassName;
+
+ public Resource getBaseResource()
+ {
+ return _baseResource;
+ }
+
+ public void setBaseResource(Resource baseResource)
+ {
+ _baseResource = baseResource;
+ }
+
+ public String getComponentClassName()
+ {
+ return _componentClassName;
+ }
+
+ public void setComponentClassName(String componentClassName)
+ {
+ _componentClassName = componentClassName;
+ }
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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.services;
import org.apache.tapestry.services.ComponentClassResolver;
@@ -36,7 +50,7 @@
public void setApplicationPackage(String packageName)
{
- _appPagePackage = packageName = ".pages";
+ _appPagePackage = packageName + ".pages";
_componentInstantiatorSource.addPackage(_appPagePackage);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformer.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformer.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformer.java Sat Aug 26 07:20:50 2006
@@ -14,6 +14,8 @@
package org.apache.tapestry.internal.services;
+import org.apache.tapestry.model.ComponentModel;
+
import javassist.CtClass;
/**
@@ -32,4 +34,13 @@
/** Creates a new instantiator instance. */
Instantiator createInstantiator(Class componentClass);
+
+ /**
+ * Returns a component model (which will have been generated by a prevous call to
+ * {@link #transformComponentClass(CtClass)).
+ *
+ * @param componentClass
+ * @return
+ */
+ ComponentModel getComponentModel(Class componentClass);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformerImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformerImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformerImpl.java Sat Aug 26 07:20:50 2006
@@ -26,6 +26,7 @@
import org.apache.tapestry.events.InvalidationListener;
import org.apache.tapestry.internal.annotations.Concurrent;
import org.apache.tapestry.internal.model.MutableComponentModelImpl;
+import org.apache.tapestry.model.ComponentModel;
import org.apache.tapestry.model.MutableComponentModel;
import org.apache.tapestry.services.ComponentClassTransformWorker;
@@ -41,6 +42,8 @@
/** Map from class name to class transformation. */
private final Map<String, InternalClassTransformation> _nameToClassTransformation = newMap();
+ private final Map<String, ComponentModel> _nameToComponentModel = newMap();
+
private final ComponentClassTransformWorker _workerChain;
/**
@@ -60,6 +63,7 @@
public void objectWasInvalidated(InvalidationEvent event)
{
_nameToClassTransformation.clear();
+ _nameToComponentModel.clear();
}
@Concurrent.Write
@@ -96,14 +100,19 @@
return;
// Eventually these will also be cached or published or something.
+ // TODO: child class model should start as deep copy of parent model?
+ // Or have pointer to parent model? Or something.
MutableComponentModel model = new MutableComponentModelImpl();
+
+ model.setComponentClassName(classname);
_workerChain.transform(transformation, model);
transformation.finish();
_nameToClassTransformation.put(classname, transformation);
+ _nameToComponentModel.put(classname, model);
}
@Concurrent.Read
@@ -118,4 +127,18 @@
return ct.createInstantiator(componentClass);
}
+
+ @Concurrent.Read
+ public ComponentModel getComponentModel(Class componentClass)
+ {
+ String className = componentClass.getName();
+
+ ComponentModel result = _nameToComponentModel.get(className);
+
+ if (result == null)
+ throw new RuntimeException(ServicesMessages.classNotTransformed(className));
+
+ return result;
+ }
+
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSource.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSource.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSource.java Sat Aug 26 07:20:50 2006
@@ -15,6 +15,7 @@
package org.apache.tapestry.internal.services;
import org.apache.tapestry.internal.event.InvalidationEventHub;
+import org.apache.tapestry.model.ComponentModel;
/**
* Creates {@link org.apache.tapestry.internal.services.Instantiator}s for components, based on
@@ -37,12 +38,24 @@
* Instantiators are cached, so repeated calls to this method with the same class name will
* return the same instance; however, callers should also be aware that the instantiators may
* lose validity after an invalidation (caused by changes to external Java class files).
+ * <p>
+ * TODO: Perhaps the Instantiator should just be a property of the ComponentModel?
*
* @param classname
* FQCN to find (and perhaps transform and load)
* @return an object which can instantiate an instance of the component
*/
Instantiator findInstantiator(String classname);
+
+ /**
+ * Given the name of a component class, provides the model obtained while loading and
+ * transforming the class.
+ *
+ * @param classname
+ * FQCN to find
+ * @return model defining the behavior of the class
+ */
+ ComponentModel findComponentModel(String classname);
/**
* Adds a controlled package. Only classes within controlled packages are subject to
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSourceImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSourceImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInstantiatorSourceImpl.java Sat Aug 26 07:20:50 2006
@@ -32,6 +32,7 @@
import org.apache.tapestry.events.UpdateListener;
import org.apache.tapestry.internal.event.InvalidationEventHubImpl;
import org.apache.tapestry.internal.util.URLChangeTracker;
+import org.apache.tapestry.model.ComponentModel;
import org.apache.tapestry.util.Defense;
import static org.apache.tapestry.util.CollectionFactory.newMap;
@@ -213,6 +214,13 @@
}
return result;
+ }
+
+ public ComponentModel findComponentModel(String classname)
+ {
+ Class instanceClass = findClass(classname);
+
+ return _transformer.getComponentModel(instanceClass);
}
private Class findClass(String classname)
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/HTMLDispatcher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/HTMLDispatcher.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/HTMLDispatcher.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/HTMLDispatcher.java Sat Aug 26 07:20:50 2006
@@ -14,6 +14,8 @@
package org.apache.tapestry.internal.services;
+import java.io.IOException;
+
import org.apache.tapestry.internal.structure.Page;
import org.apache.tapestry.services.ComponentClassResolver;
import org.apache.tapestry.services.Dispatcher;
@@ -42,7 +44,7 @@
_cache = cache;
}
- public boolean dispatch(WebRequest request, WebResponse response)
+ public boolean dispatch(WebRequest request, WebResponse response) throws IOException
{
String path = request.getPath();
@@ -55,7 +57,9 @@
// We have a match!
- String minimalPageName = path.substring(0, pos);
+ // The first character will be the leading slash
+
+ String minimalPageName = path.substring(1, pos);
String fullPageName = _resolver.resolvePageName(minimalPageName);
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/Instantiator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/Instantiator.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/Instantiator.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/Instantiator.java Sat Aug 26 07:20:50 2006
@@ -16,7 +16,6 @@
import org.apache.tapestry.internal.InternalComponentResources;
import org.apache.tapestry.runtime.ComponentLifecycle;
-import org.apache.tapestry.runtime.ResourceAware;
/**
* An object that can instantiate another object. This is used with enhanced classes, in which the
@@ -30,7 +29,8 @@
{
/**
* Instantiates and returns a new instance of the desired class. Component classes are always
- * modified so that they implement {@link ResourceAware} (and often, other interfaces as well).
+ * modified so that they implement {@link ComponentLifecycle} (and often, other interfaces as
+ * well).
*/
ComponentLifecycle newInstance(InternalComponentResources resources);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java Sat Aug 26 07:20:50 2006
@@ -25,6 +25,7 @@
import org.apache.tapestry.ioc.services.LoggingDecorator;
import org.apache.tapestry.ioc.services.ThreadCleanupHub;
import org.apache.tapestry.services.ComponentClassTransformWorker;
+import org.apache.tapestry.services.MarkupWriterFactory;
/**
* @author Howard M. Lewis Ship
@@ -34,6 +35,8 @@
{
private final ComponentInstantiatorSource _componentInstantiatorSource;
+ private final ComponentTemplateSource _componentTemplateSource;
+
private final UpdateListenerHub _updateListenerHub;
private final ThreadCleanupHub _threadCleanupHub;
@@ -41,11 +44,13 @@
public InternalModule(@InjectService("ComponentInstantiatorSource")
ComponentInstantiatorSource componentInstantiatorSource, @InjectService("UpdateListenerHub")
UpdateListenerHub updateListenerHub, @InjectService("tapestry.ioc.ThreadCleanupHub")
- ThreadCleanupHub threadCleanupHub)
+ ThreadCleanupHub threadCleanupHub, @InjectService("ComponentTemplateSource")
+ ComponentTemplateSource componentTemplateSource)
{
_componentInstantiatorSource = componentInstantiatorSource;
_updateListenerHub = updateListenerHub;
_threadCleanupHub = threadCleanupHub;
+ _componentTemplateSource = componentTemplateSource;
}
public ComponentClassTransformer buildComponentClassTransformer(
@@ -74,8 +79,17 @@
public ComponentTemplateSource buildComponentTemplateSource(@InjectService("TemplateParser")
TemplateParser parser)
{
- // TODO: Make the CTS an UpdateListener and an InvalidationEventHub
- return new ComponentTemplateSourceImpl(parser);
+ ComponentTemplateSourceImpl service = new ComponentTemplateSourceImpl(parser);
+
+ _updateListenerHub.addUpdateListener(service);
+
+ return service;
+ }
+
+ @Lifecycle("perthread")
+ public TemplateParser buildTemplateParser()
+ {
+ return new TemplateParserImpl();
}
public PageElementFactory buildPageElementFactory()
@@ -83,11 +97,10 @@
return new PageElementFactoryImpl(_componentInstantiatorSource);
}
- public PageLoader buildPageLoader(@InjectService("ComponentTemplateSource")
- ComponentTemplateSource templateSource, @InjectService("PageElementFactory")
+ public PageLoader buildPageLoader(@InjectService("PageElementFactory")
PageElementFactory pageElementFactory)
{
- PageLoaderImpl service = new PageLoaderImpl(templateSource, pageElementFactory);
+ PageLoaderImpl service = new PageLoaderImpl(_componentTemplateSource, pageElementFactory);
_componentInstantiatorSource.addInvalidationListener(service);
@@ -149,5 +162,12 @@
_threadCleanupHub.addThreadCleanupListener(service);
return service;
+ }
+
+ public PageResponseRenderer buildPageResponseRenderer(
+ @InjectService("tapestry.MarkupWriterFactory")
+ MarkupWriterFactory markupWriterFactory)
+ {
+ return new PageResponseRendererImpl(markupWriterFactory);
}
}
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?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- 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 Sat Aug 26 07:20:50 2006
@@ -27,6 +27,7 @@
import org.apache.tapestry.internal.structure.PageElement;
import org.apache.tapestry.internal.structure.StartElementPageElement;
import org.apache.tapestry.internal.structure.TextPageElement;
+import org.apache.tapestry.model.ComponentModel;
import org.apache.tapestry.runtime.RenderQueue;
/**
@@ -87,19 +88,21 @@
String componentName = token.getType();
Instantiator instantiator = _componentInstantiatorSource.findInstantiator(componentName);
+ ComponentModel model = _componentInstantiatorSource.findComponentModel(componentName);
// The container for any components is the loading component, regardless of
// how the component elements are nested within the loading component's
// template.
- return new ComponentPageElementImpl(page, container, id, instantiator);
+ return new ComponentPageElementImpl(page, container, id, instantiator, model);
}
public ComponentPageElement newRootComponentElement(Page page, String componentName)
{
Instantiator instantiator = _componentInstantiatorSource.findInstantiator(componentName);
+ ComponentModel model = _componentInstantiatorSource.findComponentModel(componentName);
- return new ComponentPageElementImpl(page, instantiator);
+ return new ComponentPageElementImpl(page, instantiator, model);
}
}
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?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- 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 Sat Aug 26 07:20:50 2006
@@ -117,7 +117,8 @@
// Have to do something here, like consult the ComponentModelSource and get a
// ComponentModel to guide the process. Lots of moving parts.
- ComponentTemplate template = _templateSource.getTemplate("", _locale);
+ ComponentTemplate template = _templateSource.getTemplate(loadingComponent
+ .getComponentModel().getComponentClassName(), _locale);
// Here's the thing. Stuff in this template is part of element's template unless
// it is inside another component, in which case, it is part of the component's
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PagePool.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PagePool.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PagePool.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PagePool.java Sat Aug 26 07:20:50 2006
@@ -16,6 +16,11 @@
import org.apache.tapestry.internal.structure.Page;
+/**
+ * Provides access to pages, creating them as necessary, and pooling them between requests.
+ *
+ * @author Howard M. Lewis Ship
+ */
public interface PagePool
{
/**
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRenderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRenderer.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRenderer.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRenderer.java Sat Aug 26 07:20:50 2006
@@ -14,10 +14,17 @@
package org.apache.tapestry.internal.services;
+import java.io.IOException;
+
import org.apache.tapestry.internal.structure.Page;
import org.apache.tapestry.services.WebResponse;
+/**
+ * Service responsible for writing a full page markup response.
+ *
+ * @author Howard M. Lewis Ship
+ */
public interface PageResponseRenderer
{
- void renderPageResponse(Page page, WebResponse response);
+ void renderPageResponse(Page page, WebResponse response) throws IOException;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRendererImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRendererImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRendererImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageResponseRendererImpl.java Sat Aug 26 07:20:50 2006
@@ -1,17 +1,56 @@
+// Copyright 2006 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.services;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.internal.structure.Page;
import org.apache.tapestry.services.MarkupWriterFactory;
import org.apache.tapestry.services.WebResponse;
+/**
+ * @author Howard M. Lewis Ship
+ */
public class PageResponseRendererImpl implements PageResponseRenderer
{
- private MarkupWriterFactory _markupWriterFactory;
-
- public void renderPageResponse(Page page, WebResponse response)
+ private final MarkupWriterFactory _markupWriterFactory;
+
+ public PageResponseRendererImpl(MarkupWriterFactory markupWriterFactory)
{
+ _markupWriterFactory = markupWriterFactory;
+ }
+
+ public void renderPageResponse(Page page, WebResponse response) throws IOException
+ {
+ MarkupWriter writer = _markupWriterFactory.newMarkupWriter();
+
+ RenderQueueImpl queue = new RenderQueueImpl();
+
+ queue.addFirst(page.getRootElement());
+
+ // Run the queue until empty.
+
+ queue.run(writer);
+
+ PrintWriter pw = response.getPrintWriter();
+
+ writer.toXML(pw);
-
+ pw.flush();
}
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RenderQueueImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RenderQueueImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RenderQueueImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RenderQueueImpl.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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.services;
import java.util.List;
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCache.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCache.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCache.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCache.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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.services;
import org.apache.tapestry.internal.structure.Page;
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCacheImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCacheImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCacheImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/RequestPageCacheImpl.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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.services;
import java.util.Map;
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/WebResponseImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/WebResponseImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/WebResponseImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/WebResponseImpl.java Sat Aug 26 07:20:50 2006
@@ -14,6 +14,9 @@
package org.apache.tapestry.internal.services;
+import java.io.IOException;
+import java.io.PrintWriter;
+
import javax.servlet.http.HttpServletResponse;
import org.apache.tapestry.services.WebResponse;
@@ -29,4 +32,10 @@
{
_response = response;
}
+
+ public PrintWriter getPrintWriter() throws IOException
+ {
+ return _response.getWriter();
+ }
+
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElement.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElement.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElement.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElement.java Sat Aug 26 07:20:50 2006
@@ -24,8 +24,12 @@
*
* @author Howard M. Lewis Ship
*/
-public interface ComponentPageElement extends PageElement, InternalComponentResources, RenderCommand
+public interface ComponentPageElement extends PageElement, InternalComponentResources,
+ RenderCommand
{
+ /** Returns the page which contains this component. */
+ Page getPage();
+
/**
* Containing component (or null for the root component of a page).
*/
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java Sat Aug 26 07:20:50 2006
@@ -21,6 +21,7 @@
import org.apache.tapestry.internal.annotations.SuppressNullCheck;
import org.apache.tapestry.internal.parser.AttributeToken;
import org.apache.tapestry.internal.services.Instantiator;
+import org.apache.tapestry.model.ComponentModel;
import org.apache.tapestry.runtime.ComponentLifecycle;
import org.apache.tapestry.runtime.RenderCommand;
import org.apache.tapestry.runtime.RenderQueue;
@@ -51,6 +52,8 @@
// The user-provided class, with runtime code enhancements.
private final ComponentLifecycle _component;
+ private final ComponentModel _componentModel;
+
private Map<String, ComponentPageElement> _children;
// This is likely to change shortly to something more involved; we need to introduce the concept
@@ -59,12 +62,14 @@
private final Map<String, AttributeToken> _parameters = newMap();
/** Constructor for the root component of a page. */
- public ComponentPageElementImpl(Page page, Instantiator instantiator)
+ public ComponentPageElementImpl(Page page, Instantiator instantiator, ComponentModel model)
{
_page = page;
_container = null;
- _component = instantiator.newInstance(this);
_id = null;
+ _componentModel = model;
+
+ _component = instantiator.newInstance(this);
}
/**
@@ -72,14 +77,21 @@
* the hierarchy.
*/
public ComponentPageElementImpl(Page page, ComponentPageElement container, String id,
- Instantiator instantiator)
+ Instantiator instantiator, ComponentModel model)
{
_page = page;
_container = container;
_id = id;
+ _componentModel = model;
+
_component = instantiator.newInstance(this);
}
+ public Page getPage()
+ {
+ return _page;
+ }
+
public ComponentPageElement getContainer()
{
return _container;
@@ -201,6 +213,11 @@
private int size(List<?> list)
{
return list == null ? 0 : list.size();
+ }
+
+ public ComponentModel getComponentModel()
+ {
+ return _componentModel;
}
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java Sat Aug 26 07:20:50 2006
@@ -14,6 +14,8 @@
package org.apache.tapestry.model;
+import org.apache.tapestry.Resource;
+
/**
* Defines a component in terms of its capabilities, parameters, sub-components, etc. During
* <em>runtime</em>, the component model is immutable. During <em>construction</em> time, when
@@ -24,5 +26,14 @@
*/
public interface ComponentModel
{
+ /** The FQCN of the component. */
+ String getComponentClassName();
+ /**
+ * Returns the resource corresponding to the class file for this component. This is used to find
+ * related resources, such as the component's template and message catalog.
+ *
+ * @return
+ */
+ Resource getBaseResource();
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java Sat Aug 26 07:20:50 2006
@@ -14,6 +14,8 @@
package org.apache.tapestry.model;
+import org.apache.tapestry.Resource;
+
/**
* Mutable version of {@link org.apache.tapestry.model.ComponentModel} used during the
* transformation phase.
@@ -22,5 +24,7 @@
*/
public interface MutableComponentModel extends ComponentModel
{
-
+ void setBaseResource(Resource resource);
+
+ void setComponentClassName(String className);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderCommand.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderCommand.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderCommand.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderCommand.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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.runtime;
import org.apache.tapestry.MarkupWriter;
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderQueue.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderQueue.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderQueue.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/RenderQueue.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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.runtime;
/**
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/Dispatcher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/Dispatcher.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/Dispatcher.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/Dispatcher.java Sat Aug 26 07:20:50 2006
@@ -14,6 +14,7 @@
package org.apache.tapestry.services;
+import java.io.IOException;
/**
* A dispatcher is responsible for recognizing an incoming request
@@ -27,5 +28,5 @@
*
* @return true if a response was delivered
*/
- boolean dispatch(WebRequest request, WebResponse response);
+ boolean dispatch(WebRequest request, WebResponse response) throws IOException;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java Sat Aug 26 07:20:50 2006
@@ -25,11 +25,14 @@
import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.internal.services.ComponentClassResolverImpl;
import org.apache.tapestry.internal.services.ComponentInstantiatorSource;
+import org.apache.tapestry.internal.services.HTMLDispatcher;
import org.apache.tapestry.internal.services.InfrastructureImpl;
import org.apache.tapestry.internal.services.InfrastructureManagerImpl;
import org.apache.tapestry.internal.services.InternalModule;
import org.apache.tapestry.internal.services.MarkupWriterImpl;
+import org.apache.tapestry.internal.services.PageResponseRenderer;
import org.apache.tapestry.internal.services.RequestGlobalsImpl;
+import org.apache.tapestry.internal.services.RequestPageCache;
import org.apache.tapestry.internal.services.WebRequestImpl;
import org.apache.tapestry.internal.services.WebResponseImpl;
import org.apache.tapestry.ioc.Configuration;
@@ -114,16 +117,13 @@
return _chainBuilder.build(ComponentClassTransformWorker.class, configuration);
}
- public Dispatcher buildHTMLDispatcher()
+ /** Dispatcher that recognizes full-page HTML documents by the .html extension. */
+ public Dispatcher buildHTMLDispatcher(@InjectService("ComponentClassResolver")
+ ComponentClassResolver resolver, @InjectService("tapestry.internal.PageResponseRenderer")
+ PageResponseRenderer renderer, @InjectService("tapestry.internal.RequestPageCache")
+ RequestPageCache cache)
{
- return new Dispatcher()
- {
- public boolean dispatch(WebRequest request, WebResponse response)
- {
- return false;
- }
-
- };
+ return new HTMLDispatcher(resolver, renderer, cache);
}
public HttpServletRequestHandler buildHttpServletRequestHandler(Log log,
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/WebResponse.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/WebResponse.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/WebResponse.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/WebResponse.java Sat Aug 26 07:20:50 2006
@@ -14,7 +14,19 @@
package org.apache.tapestry.services;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * API agnostic wrapper for generating a response.
+ *
+ * @author Howard M. Lewis Ship
+ */
public interface WebResponse
{
-
+ /**
+ * Returns a PrintWriter object to which output may be sent. Invoking flush() on the writer will
+ * commit the output.
+ */
+ PrintWriter getPrintWriter() throws IOException;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/app1/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/app1/WEB-INF/web.xml?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/app1/WEB-INF/web.xml (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/app1/WEB-INF/web.xml Sat Aug 26 07:20:50 2006
@@ -1,4 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2006 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.
+-->
+
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java?rev=437167&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/Start.java Sat Aug 26 07:20:50 2006
@@ -0,0 +1,28 @@
+// Copyright 2006 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.integration.app1.pages;
+
+import org.apache.tapestry.annotations.ComponentClass;
+
+/**
+ * Have to start somewhere!
+ *
+ * @author Howard M. Lewis Ship
+ */
+@ComponentClass
+public class Start
+{
+
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PagePoolImplTest.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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.services;
import java.util.Locale;
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RequestPageCacheImplTest.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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.services;
import org.apache.tapestry.internal.structure.Page;
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/PageImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/PageImplTest.java?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/PageImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/PageImplTest.java Sat Aug 26 07:20:50 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 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 java.util.Locale;
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?rev=437167&r1=437166&r2=437167&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties Sat Aug 26 07:20:50 2006
@@ -22,4 +22,6 @@
log4j.appender.A1.layout.ConversionPattern=%c{1} [%p] %m%n
log4j.category.org.apache.tapestry=debug
+log4j.category.tapestry=debug
+log4j.category.tapestry.ioc.ClassFactory=error
Added: 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?rev=437167&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/Start.html (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/Start.html Sat Aug 26 07:20:50 2006
@@ -0,0 +1,6 @@
+<html>
+ <head>
+ <title>First Tapestry 5 Page</title>
+ </head>
+ <body> This is the <span style="color:green">First Tapestry 5 Page, ever!</span>. </body>
+</html>