Author: hlship
Date: Tue Feb 17 19:12:54 2009
New Revision: 745195
URL: http://svn.apache.org/viewvc?rev=745195&view=rev
Log:
TAP5-95: Optimize page construction for repeated construction of the same page
Added:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSource.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSourceImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadMixinIdDemo.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DupeMixinDemo.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnsupportedParameterBlockDemo.java
Added:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java?rev=745195&view=auto
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
(added)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
Tue Feb 17 19:12:54 2009
@@ -0,0 +1,106 @@
+// Copyright 2009 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.pageload;
+
+import org.apache.tapestry5.internal.parser.TemplateToken;
+import org.apache.tapestry5.internal.parser.TokenType;
+import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.runtime.RenderCommand;
+
+import java.util.List;
+
+/**
+ * Used when constructing a {...@link
org.apache.tapestry5.internal.pageload.AssemblerContext}, encapsulating the
+ * assembler, the {...@link
org.apache.tapestry5.internal.pageload.TokenStream} for the component's
template, and helping
+ * to consolidate composable render commands (that is, a series of render
commands that are not components can be
+ * replaced with a single {...@link
org.apache.tapestry5.internal.pageload.CompositeRenderCommand} which reduces
the number
+ * of render operations for the page).
+ */
+class AssemblerContext implements TokenStream
+{
+ final ComponentAssembler assembler;
+
+ final TokenStream stream;
+
+ private final List<RenderCommand> composable = CollectionFactory.newList();
+
+ AssemblerContext(ComponentAssembler assembler, TokenStream stream)
+ {
+ this.assembler = assembler;
+ this.stream = stream;
+ }
+
+ public boolean more()
+ {
+ return stream.more();
+ }
+
+ public TemplateToken next()
+ {
+ return stream.next();
+ }
+
+ public <T extends TemplateToken> T next(Class<T> type)
+ {
+ return stream.next(type);
+ }
+
+ public TokenType peekType()
+ {
+ return stream.peekType();
+ }
+
+ void addComposable(RenderCommand command)
+ {
+ composable.add(command);
+ }
+
+ void flushComposable()
+ {
+ switch (composable.size())
+ {
+ case 0:
+ return;
+
+ case 1:
+ addRenderCommand(composable.get(0));
+ break;
+
+ default:
+ addRenderCommand(new
CompositeRenderCommand(composable.toArray(new
RenderCommand[composable.size()])));
+ break;
+ }
+
+ composable.clear();
+ }
+
+ void add(PageAssemblyAction action)
+ {
+ flushComposable();
+
+ assembler.add(action);
+ }
+
+ private void addRenderCommand(final RenderCommand command)
+ {
+ assembler.add(new PageAssemblyAction()
+ {
+ public void execute(PageAssembly pageAssembly)
+ {
+ pageAssembly.addRenderCommand(command);
+ }
+ });
+ }
+}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java?rev=745195&r1=745194&r2=745195&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
Tue Feb 17 19:12:54 2009
@@ -46,8 +46,6 @@
final List<PageAssemblyAction> deferred = CollectionFactory.newList();
- private final List<RenderCommand> composableRenderCommands =
CollectionFactory.newList();
-
private final Set<String> flags = CollectionFactory.newSet();
PageAssembly(Page page)
@@ -63,49 +61,9 @@
*/
void addRenderCommand(RenderCommand command)
{
- flushComposableRenderCommands();
-
bodyElement.peek().addToBody(command);
}
- /**
- * Adds the command to the list of composable commands. Composable
commands are added to the top element of the body
- * element stack when {...@linkplain #flushComposableRenderCommands()
flushed}.
- *
- * @param command
- */
- void addComposableRenderCommand(RenderCommand command)
- {
- composableRenderCommands.add(command);
- }
-
- /**
- * Adds any composed render commands to the top element of the bodyElement
stack. Render commands may be combined as
- * a {...@link
org.apache.tapestry5.internal.pageload.CompositeRenderCommand}.
- */
- void flushComposableRenderCommands()
- {
- int count = composableRenderCommands.size();
-
- switch (count)
- {
- case 0:
- break;
-
- case 1:
- bodyElement.peek().addToBody(composableRenderCommands.get(0));
- break;
-
- default:
- RenderCommand[] commands =
composableRenderCommands.toArray(new RenderCommand[count]);
-
- bodyElement.peek().addToBody(new
CompositeRenderCommand(commands));
- break;
- }
-
- composableRenderCommands.clear();
- }
-
boolean checkAndSetFlag(String flagName)
{
boolean result = flags.contains(flagName);
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java?rev=745195&r1=745194&r2=745195&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
Tue Feb 17 19:12:54 2009
@@ -89,8 +89,6 @@
{
public void execute(PageAssembly pageAssembly)
{
- pageAssembly.flushComposableRenderCommands();
-
pageAssembly.createdElement.pop();
pageAssembly.bodyElement.pop();
pageAssembly.embeddedAssembler.pop();
@@ -111,22 +109,6 @@
}
};
- private static final PageAssemblyAction END_ELEMENT_ACTION = new
PageAssemblyAction()
- {
- public void execute(PageAssembly pageAssembly)
- {
- pageAssembly.addRenderCommand(END_ELEMENT);
- }
- };
-
- private static final PageAssemblyAction
FLUSH_COMPOSABLE_RENDER_COMMANDS_ACTION = new PageAssemblyAction()
- {
- public void execute(PageAssembly pageAssembly)
- {
- pageAssembly.flushComposableRenderCommands();
- }
- };
-
private final Map<Key, ComponentAssembler> cache =
CollectionFactory.newConcurrentMap();
private final ComponentInstantiatorSource instantiatorSource;
@@ -234,94 +216,99 @@
private void processTemplate(ComponentAssembler assembler,
ComponentTemplate template)
{
+ TokenStream stream = new TokenStreamImpl(template);
+
+ AssemblerContext context = new AssemblerContext(assembler, stream);
+
if (template.isMissing())
{
// Pretend the template has a single <t:body> element.
- body(assembler);
+ body(context);
return;
}
- TokenStream stream = new TokenStreamImpl(template);
- while (stream.more())
+ while (context.more())
{
- processTemplateToken(assembler, stream);
+ processTemplateToken(context);
}
- addFlushAction(assembler);
+ context.flushComposable();
}
- private void processTemplateToken(ComponentAssembler assembler,
TokenStream stream)
+ private void processTemplateToken(AssemblerContext context)
{
// These tokens can appear at the top level, or at lower levels (this
method is invoked
// from token-processing loops inside element(), component(), etc.
- switch (stream.peekType())
+ switch (context.peekType())
{
case TEXT:
- text(assembler, stream.next(TextToken.class));
+ text(context);
break;
case EXPANSION:
- expansion(assembler, stream.next(ExpansionToken.class));
+ expansion(context);
break;
case BODY:
- stream.next();
+ context.next();
- body(assembler);
+ body(context);
break;
case START_ELEMENT:
// Will consume past matching end token
- element(assembler, stream);
+ element(context);
break;
case START_COMPONENT:
// Will consume past matching end token
- component(assembler, stream);
+ component(context);
break;
// ATTRIBUTE and END_ELEMENT can't happen at the top level, they're
// handled at a lower level. (inside element(), component(), etc.)
case COMMENT:
- comment(assembler, stream.next(CommentToken.class));
+ comment(context);
break;
case BLOCK:
// Will consume past matching end token
- block(assembler, stream);
+ block(context);
break;
case PARAMETER:
// Will consume past the matching end token
- parameter(assembler, stream);
+ parameter(context);
break;
case DTD:
- dtd(assembler, stream.next(DTDToken.class));
+ dtd(context);
break;
case DEFINE_NAMESPACE_PREFIX:
- defineNamespacePrefix(assembler,
stream.next(DefineNamespacePrefixToken.class));
+ defineNamespacePrefix(context);
break;
case CDATA:
- cdata(assembler, stream.next(CDATAToken.class));
+ cdata(context);
break;
default:
- throw new IllegalStateException("Not yet implemented: " +
stream.peekType());
+ throw new IllegalStateException("Not yet implemented: " +
context.peekType());
}
}
- private void cdata(ComponentAssembler assembler, final CDATAToken token)
+ private void cdata(AssemblerContext context)
{
+ final CDATAToken token = context.next(CDATAToken.class);
+
RenderCommand command = new RenderCommand()
{
public void render(MarkupWriter writer, RenderQueue queue)
@@ -336,12 +323,14 @@
}
};
- addComposableCommand(assembler, command);
+ context.addComposable(command);
}
- private void defineNamespacePrefix(ComponentAssembler assembler, final
DefineNamespacePrefixToken token)
+ private void defineNamespacePrefix(AssemblerContext context)
{
+ final DefineNamespacePrefixToken token =
context.next(DefineNamespacePrefixToken.class);
+
RenderCommand command = new RenderCommand()
{
public void render(MarkupWriter writer, RenderQueue queue)
@@ -357,12 +346,14 @@
};
- addComposableCommand(assembler, command);
+ context.addComposable(command);
}
- private void dtd(ComponentAssembler assembler, final DTDToken token)
+ private void dtd(AssemblerContext context)
{
- assembler.add(new PageAssemblyAction()
+ final DTDToken token = context.next(DTDToken.class);
+
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
@@ -374,24 +365,22 @@
// It doesn't really matter where this ends up in the tree
as long as its inside
// a portion that always renders.
- pageAssembly.addComposableRenderCommand(command);
+ pageAssembly.addRenderCommand(command);
}
}
});
}
- private void parameter(ComponentAssembler assembler, TokenStream stream)
+ private void parameter(AssemblerContext context)
{
- final ParameterToken token = stream.next(ParameterToken.class);
+ final ParameterToken token = context.next(ParameterToken.class);
- assembler.add(new PageAssemblyAction()
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
String parameterName = token.getName();
- pageAssembly.flushComposableRenderCommands();
-
ComponentPageElement element =
pageAssembly.createdElement.peek();
BlockImpl block = new BlockImpl(token.getLocation(),
@@ -421,14 +410,14 @@
}
});
- consumeToEndElementAndPopBodyElement(assembler, stream);
+ consumeToEndElementAndPopBodyElement(context);
}
- private void block(ComponentAssembler assembler, TokenStream stream)
+ private void block(AssemblerContext context)
{
- final BlockToken token = stream.next(BlockToken.class);
+ final BlockToken token = context.next(BlockToken.class);
- assembler.add(new PageAssemblyAction()
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
@@ -446,29 +435,27 @@
element.addBlock(blockId, block);
// Start directing template content into the Block
- pageAssembly.flushComposableRenderCommands();
pageAssembly.bodyElement.push(block);
}
});
- consumeToEndElementAndPopBodyElement(assembler, stream);
+ consumeToEndElementAndPopBodyElement(context);
}
- private void consumeToEndElementAndPopBodyElement(ComponentAssembler
assembler, TokenStream stream)
+ private void consumeToEndElementAndPopBodyElement(AssemblerContext context)
{
while (true)
{
- switch (stream.peekType())
+ switch (context.peekType())
{
case END_ELEMENT:
- stream.next();
+ context.next();
- assembler.add(new PageAssemblyAction()
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
- pageAssembly.flushComposableRenderCommands();
pageAssembly.bodyElement.pop();
}
});
@@ -476,90 +463,93 @@
return;
default:
- processTemplateToken(assembler, stream);
+ processTemplateToken(context);
}
}
}
- private void comment(ComponentAssembler assembler, CommentToken token)
+ private void comment(AssemblerContext context)
{
+ CommentToken token = context.next(CommentToken.class);
+
RenderCommand commentElement = new
CommentPageElement(token.getComment());
- addComposableCommand(assembler, commentElement);
+ context.addComposable(commentElement);
}
- private void component(ComponentAssembler assembler, TokenStream stream)
+ private void component(AssemblerContext context)
{
- StartComponentToken token = stream.next(StartComponentToken.class);
-
- EmbeddedComponentAssembler embeddedAssembler =
startComponent(assembler, token);
+ EmbeddedComponentAssembler embeddedAssembler = startComponent(context);
while (true)
{
- switch (stream.peekType())
+ switch (context.peekType())
{
case ATTRIBUTE:
- bindAttributeAsParameter(assembler, embeddedAssembler,
stream.next(AttributeToken.class));
+ bindAttributeAsParameter(context, embeddedAssembler);
break;
case END_ELEMENT:
- stream.next();
+ context.next();
- assembler.add(POP_EMBEDDED_COMPONENT_ACTION);
+ context.add(POP_EMBEDDED_COMPONENT_ACTION);
return;
default:
- processTemplateToken(assembler, stream);
+ processTemplateToken(context);
}
}
-
}
- private void bindAttributeAsParameter(ComponentAssembler assembler,
EmbeddedComponentAssembler embeddedAssembler,
- AttributeToken token)
+ private void bindAttributeAsParameter(AssemblerContext context,
EmbeddedComponentAssembler embeddedAssembler)
{
- addParameterBindingAction(assembler, embeddedAssembler,
token.getName(), token.getValue(),
+ AttributeToken token = context.next(AttributeToken.class);
+
+ addParameterBindingAction(context, embeddedAssembler, token.getName(),
token.getValue(),
BindingConstants.LITERAL,
token.getLocation());
}
- private void element(ComponentAssembler assembler, TokenStream stream)
+ private void element(AssemblerContext context)
{
- StartElementToken token = stream.next(StartElementToken.class);
+ StartElementToken token = context.next(StartElementToken.class);
RenderCommand element = new
StartElementPageElement(token.getNamespaceURI(), token.getName());
- addComposableCommand(assembler, element);
+ context.addComposable(element);
while (true)
{
- switch (stream.peekType())
+ switch (context.peekType())
{
case ATTRIBUTE:
- attribute(assembler, stream.next(AttributeToken.class));
+ attribute(context);
break;
case END_ELEMENT:
- assembler.add(END_ELEMENT_ACTION);
+ context.next();
- stream.next();
+ context.addComposable(END_ELEMENT);
// Pop out a level.
return;
default:
- processTemplateToken(assembler, stream);
+ processTemplateToken(context);
}
}
}
- private EmbeddedComponentAssembler startComponent(ComponentAssembler
assembler, StartComponentToken token)
+ private EmbeddedComponentAssembler startComponent(AssemblerContext context)
{
+ StartComponentToken token = context.next(StartComponentToken.class);
+
+ ComponentAssembler assembler = context.assembler;
String elementName = token.getElementName();
// Initial guess: the type from the token (but this may be null in
many cases).
@@ -631,9 +621,9 @@
token.getMixins(),
token.getLocation());
- addActionForEmbeddedComponent(assembler, embeddedAssembler,
embeddedId, elementName, componentClassName);
+ addActionForEmbeddedComponent(context, embeddedAssembler, embeddedId,
elementName, componentClassName);
- addParameterBindingActions(assembler, embeddedAssembler,
embeddedModel);
+ addParameterBindingActions(context, embeddedAssembler, embeddedModel);
if (embeddedModel != null &&
embeddedModel.getInheritInformalParameters())
{
@@ -683,7 +673,7 @@
}
}
- private void addParameterBindingActions(ComponentAssembler assembler,
+ private void addParameterBindingActions(AssemblerContext context,
EmbeddedComponentAssembler
embeddedAssembler,
EmbeddedComponentModel
embeddedModel)
{
@@ -693,7 +683,7 @@
{
String parameterValue =
embeddedModel.getParameterValue(parameterName);
- addParameterBindingAction(assembler,
+ addParameterBindingAction(context,
embeddedAssembler,
parameterName,
parameterValue,
@@ -702,7 +692,7 @@
}
}
- private void addParameterBindingAction(ComponentAssembler assembler,
+ private void addParameterBindingAction(AssemblerContext context,
final EmbeddedComponentAssembler
embeddedAssembler,
final String parameterName,
final String parameterValue,
@@ -717,12 +707,12 @@
{
String containerParameterName =
parameterValue.substring(InternalConstants.INHERIT_BINDING_PREFIX.length());
- addInheritedBindingAction(assembler, parameterName,
containerParameterName);
+ addInheritedBindingAction(context, parameterName,
containerParameterName);
return;
}
- assembler.add(new PageAssemblyAction()
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
@@ -764,11 +754,11 @@
* @param parameterName
* @param containerParameterName
*/
- private void addInheritedBindingAction(ComponentAssembler assembler,
+ private void addInheritedBindingAction(AssemblerContext context,
final String parameterName,
final String containerParameterName)
{
- assembler.add(new PageAssemblyAction()
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
@@ -790,7 +780,8 @@
});
}
- private void connectInheritedParameter(ComponentPageElement container,
ComponentPageElement embedded,
+ private void connectInheritedParameter(ComponentPageElement container,
+ ComponentPageElement embedded,
String parameterName,
String containerParameterName)
{
@@ -810,20 +801,18 @@
embedded.bindParameter(parameterName, containerBinding);
}
- private void addActionForEmbeddedComponent(ComponentAssembler assembler,
+ private void addActionForEmbeddedComponent(AssemblerContext context,
final
EmbeddedComponentAssembler embeddedAssembler,
final String embeddedId,
final String elementName,
final String componentClassName)
{
- assembler.add(new PageAssemblyAction()
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
pageAssembly.checkForRecursion(componentClassName,
embeddedAssembler.getLocation());
- pageAssembly.flushComposableRenderCommands();
-
Locale locale = pageAssembly.page.getLocale();
ComponentAssembler assemblerForSubcomponent =
getAssembler(componentClassName, locale);
@@ -855,8 +844,10 @@
}
- private void attribute(ComponentAssembler assembler, final AttributeToken
token)
+ private void attribute(AssemblerContext context)
{
+ final AttributeToken token = context.next(AttributeToken.class);
+
String value = token.getValue();
// No expansion makes this easier, more efficient.
@@ -864,12 +855,12 @@
{
RenderCommand command = new RenderAttribute(token);
- addComposableCommand(assembler, command);
+ context.addComposable(command);
return;
}
- assembler.add(new PageAssemblyAction()
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
@@ -877,16 +868,14 @@
RenderCommand command =
elementFactory.newAttributeElement(resources, token);
- // Still composable, BTW.
-
pageAssembly.addRenderCommand(command);
}
});
}
- private void body(ComponentAssembler assembler)
+ private void body(AssemblerContext context)
{
- assembler.add(new PageAssemblyAction()
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
@@ -897,16 +886,16 @@
});
}
- private void expansion(ComponentAssembler assembler, final ExpansionToken
token)
+ private void expansion(AssemblerContext context)
{
- assembler.add(new PageAssemblyAction()
+ final ExpansionToken token = context.next(ExpansionToken.class);
+
+ context.add(new PageAssemblyAction()
{
public void execute(PageAssembly pageAssembly)
{
ComponentResources resources =
pageAssembly.activeElement.peek().getComponentResources();
- // TODO: Add composability
-
RenderCommand command =
elementFactory.newExpansionElement(resources, token);
pageAssembly.addRenderCommand(command);
@@ -914,25 +903,11 @@
});
}
- private void text(ComponentAssembler assembler, TextToken textToken)
+ private void text(AssemblerContext context)
{
- addComposableCommand(assembler, new
TextPageElement(textToken.getText()));
- }
-
- private void addComposableCommand(ComponentAssembler assembler, final
RenderCommand command)
- {
- assembler.add(new PageAssemblyAction()
- {
- public void execute(PageAssembly pageAssembly)
- {
- pageAssembly.addComposableRenderCommand(command);
- }
- });
- }
+ TextToken textToken = context.next(TextToken.class);
- private void addFlushAction(ComponentAssembler assembler)
- {
- assembler.add(FLUSH_COMPOSABLE_RENDER_COMMANDS_ACTION);
+ context.addComposable(new TextPageElement(textToken.getText()));
}
}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSource.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSource.java?rev=745195&r1=745194&r2=745195&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSource.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSource.java
Tue Feb 17 19:12:54 2009
@@ -1,4 +1,4 @@
-// Copyright 2009 ${ORG}
+// Copyright 2009 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.
@@ -19,7 +19,7 @@
/**
* Access to component models (as provided via {...@link
org.apache.tapestry5.internal.services.ComponentInstantiatorSource}).
* <p/>
- * <p>This is a good candidate to move into the public services package.
+ * This is a good candidate to move into the public services package.
*
* @since 5.1.0.0
*/
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSourceImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSourceImpl.java?rev=745195&r1=745194&r2=745195&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSourceImpl.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSourceImpl.java
Tue Feb 17 19:12:54 2009
@@ -1,4 +1,4 @@
-// Copyright 2009 ${ORG}
+// Copyright 2009 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.
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadMixinIdDemo.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadMixinIdDemo.java?rev=745195&r1=745194&r2=745195&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadMixinIdDemo.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadMixinIdDemo.java
Tue Feb 17 19:12:54 2009
@@ -1,4 +1,4 @@
-// Copyright 2009 ${ORG}
+// Copyright 2009 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.
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DupeMixinDemo.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DupeMixinDemo.java?rev=745195&r1=745194&r2=745195&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DupeMixinDemo.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DupeMixinDemo.java
Tue Feb 17 19:12:54 2009
@@ -1,4 +1,4 @@
-// Copyright 2009 ${ORG}
+// Copyright 2009 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.
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnsupportedParameterBlockDemo.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnsupportedParameterBlockDemo.java?rev=745195&r1=745194&r2=745195&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnsupportedParameterBlockDemo.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnsupportedParameterBlockDemo.java
Tue Feb 17 19:12:54 2009
@@ -1,4 +1,4 @@
-// Copyright 2009 ${ORG}
+// Copyright 2009 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.