You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2008/09/11 20:44:11 UTC
svn commit: r694410 - in /tapestry/tapestry5/trunk: quickstart/
tapestry-core/src/main/java/org/apache/tapestry5/
tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/
tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ ta...
Author: hlship
Date: Thu Sep 11 11:44:08 2008
New Revision: 694410
URL: http://svn.apache.org/viewvc?rev=694410&view=rev
Log:
TAPESTRY-2474: Define and use a standard set of SL4J Markers for logging, to make it easier to filter output
Added:
tapestry/tapestry5/trunk/quickstart/quickstart.iml
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/TapestryMarkers.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ComponentActionSink.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformerImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EventImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderQueueImplTest.java
tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/Stack.java
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StackTest.java
Added: tapestry/tapestry5/trunk/quickstart/quickstart.iml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/quickstart.iml?rev=694410&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/quickstart.iml (added)
+++ tapestry/tapestry5/trunk/quickstart/quickstart.iml Thu Sep 11 11:44:08 2008
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" inherit-compiler-output="false">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <exclude-output />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntryProperties />
+ </component>
+</module>
+
Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/TapestryMarkers.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/TapestryMarkers.java?rev=694410&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/TapestryMarkers.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/TapestryMarkers.java Thu Sep 11 11:44:08 2008
@@ -0,0 +1,65 @@
+// Copyright 2008 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5;
+
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
+
+import java.util.Arrays;
+
+/**
+ * A set of markers used internally by Tapestry when logging in code related to paqes and components. Most logging
+ * toolkits, including Log4J, do not incorporate markers, but <a href="http://logback.qos.ch/">LOGBack</a> does.
+ */
+public class TapestryMarkers
+{
+ /**
+ * A root marker for all things Tapestry related. The remaining markers are children of the TAPESTRY marker.
+ */
+ public static final Marker TAPESTRY = MarkerFactory.getMarker("TAPESTRY");
+
+ /**
+ * Logs the final version of the class transformation. This is useful when debugging {@link
+ * org.apache.tapestry5.services.ComponentClassTransformWorker}s, as it shows exactly what transformation operations
+ * occured, at the Java code level.
+ */
+ public static final Marker CLASS_TRANSFORMATION = MarkerFactory.getMarker("CLASS_TRANSFORMATION");
+
+ /**
+ * Marker for a debug log that occurs just before invocation of a event handler method.
+ */
+ public static final Marker EVENT_HANDLER_METHOD = MarkerFactory.getMarker("EVENT_HANDLER_METHOD");
+
+ /**
+ * Marker for logging related to component event dispatch.
+ */
+ public static final Marker EVENT_DISPATCH = MarkerFactory.getMarker("EVENT_DISPATCH");
+
+ /**
+ * Marker for logging, at trace level verbose details about each individual {@link
+ * org.apache.tapestry5.runtime.RenderCommand} involved in rendering the page, as well as a final (debug level)
+ * summary of command count and elapsed time.
+ */
+
+ public static final Marker RENDER_COMMANDS = MarkerFactory.getMarker("RENDER_COMMANDS");
+
+ static
+ {
+ for (Marker child : Arrays.asList(CLASS_TRANSFORMATION, EVENT_HANDLER_METHOD, EVENT_DISPATCH, RENDER_COMMANDS))
+ {
+ TAPESTRY.add(child);
+ }
+ }
+}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java Thu Sep 11 11:44:08 2008
@@ -271,7 +271,6 @@
writer.end(); // div
environment.peek(Heartbeat.class).begin();
-
}
void afterRender(MarkupWriter writer)
@@ -396,8 +395,7 @@
for (String actionsBase64 : values)
{
- if (logger.isDebugEnabled())
- logger.debug(String.format("Processing actions: %s", actionsBase64));
+ logger.debug("Processing actions: {}", actionsBase64);
ObjectInputStream ois = null;
@@ -414,9 +412,7 @@
component = source.getComponent(componentId);
- if (logger.isDebugEnabled())
- logger.debug(String.format("Processing: %s %s", componentId, action));
-
+ logger.debug("Processing: {} {}", componentId, action);
action.execute(component);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ComponentActionSink.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ComponentActionSink.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ComponentActionSink.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ComponentActionSink.java Thu Sep 11 11:44:08 2008
@@ -53,8 +53,7 @@
String completeId = castComponent.getComponentResources().getCompleteId();
- if (logger.isDebugEnabled())
- logger.debug(String.format("Storing action: %s %s", completeId, action));
+ logger.debug("Storing action: {} {}", completeId, action);
try
{
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformerImpl.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformerImpl.java Thu Sep 11 11:44:08 2008
@@ -17,6 +17,7 @@
import javassist.CtClass;
import javassist.CtConstructor;
import javassist.NotFoundException;
+import org.apache.tapestry5.TapestryMarkers;
import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.internal.events.InvalidationListener;
import org.apache.tapestry5.internal.model.MutableComponentModelImpl;
@@ -174,7 +175,7 @@
throw new TransformationException(transformation, ex);
}
- if (logger.isDebugEnabled()) logger.debug("Finished class transformation: " + transformation);
+ logger.debug(TapestryMarkers.CLASS_TRANSFORMATION, "Finished class transformation: {}", transformation);
nameToClassTransformation.put(classname, transformation);
nameToComponentModel.put(classname, model);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EventImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EventImpl.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EventImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EventImpl.java Thu Sep 11 11:44:08 2008
@@ -15,6 +15,7 @@
package org.apache.tapestry5.internal.services;
import org.apache.tapestry5.ComponentEventCallback;
+import org.apache.tapestry5.TapestryMarkers;
import static org.apache.tapestry5.ioc.internal.util.Defense.notNull;
import org.apache.tapestry5.runtime.Event;
import org.slf4j.Logger;
@@ -46,8 +47,7 @@
public void setMethodDescription(String methodDescription)
{
- if (logger.isDebugEnabled())
- logger.debug("Invoking: " + methodDescription);
+ logger.debug(TapestryMarkers.EVENT_HANDLER_METHOD, "Invoking: {}", methodDescription);
this.methodDescription = methodDescription;
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java Thu Sep 11 11:44:08 2008
@@ -16,6 +16,7 @@
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.TapestryMarkers;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import org.apache.tapestry5.ioc.internal.util.Defense;
import org.apache.tapestry5.ioc.util.Stack;
@@ -25,7 +26,7 @@
public class RenderQueueImpl implements RenderQueue
{
- private static final int INITIAL_QUEUE_DEPTH = 100;
+ private static final int INITIAL_QUEUE_DEPTH = 200;
private final Stack<RenderCommand> queue = CollectionFactory.newStack(INITIAL_QUEUE_DEPTH);
@@ -47,10 +48,11 @@
{
RenderCommand command = null;
- boolean traceEnabled = logger.isTraceEnabled();
+ boolean traceEnabled = logger.isTraceEnabled(TapestryMarkers.RENDER_COMMANDS);
long startNanos = System.nanoTime();
int commandCount = 0;
+ int maxDepth = 0;
// Seems to make sense to use one try/finally around the whole process, rather than
// around each call to render() since the end result (in a failure scenario) is the same.
@@ -59,11 +61,13 @@
{
while (!queue.isEmpty())
{
+ maxDepth = Math.max(maxDepth, queue.getDepth());
+
command = queue.pop();
commandCount++;
- if (traceEnabled) logger.trace(String.format("Executing: %s", command));
+ if (traceEnabled) logger.trace(TapestryMarkers.RENDER_COMMANDS, "Executing: {}", command);
command.render(writer, this);
}
@@ -82,17 +86,14 @@
long endNanos = System.nanoTime();
- if (logger.isDebugEnabled())
- {
-
- long elapsedNanos = endNanos - startNanos;
- double elapsedSeconds = ((float) elapsedNanos) / 1000000000F;
-
- logger.debug(String.format("Executed %,d rendering commands in %.3f seconds",
- commandCount,
- elapsedSeconds));
- }
+ long elapsedNanos = endNanos - startNanos;
+ double elapsedSeconds = ((float) elapsedNanos) / 1000000000F;
+ logger.debug(TapestryMarkers.RENDER_COMMANDS,
+ String.format("Executed %,d rendering commands (max queue depth: %,d) in %.3f seconds",
+ commandCount,
+ maxDepth,
+ elapsedSeconds));
}
public void startComponent(ComponentResources resources)
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java Thu Sep 11 11:44:08 2008
@@ -1044,8 +1044,7 @@
ComponentEvent event = new ComponentEventImpl(currentEventType, componentId, currentContext, wrapped,
pageResources, logger);
- if (logger.isDebugEnabled())
- logger.debug("Dispatch event: " + event);
+ logger.debug(TapestryMarkers.EVENT_DISPATCH, "Dispatch event: {}", event);
result |= component.dispatchEvent(event);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java Thu Sep 11 11:44:08 2008
@@ -16,10 +16,14 @@
import org.apache.tapestry5.ComponentEventCallback;
import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.TapestryMarkers;
import org.apache.tapestry5.internal.structure.PageResources;
import org.apache.tapestry5.internal.test.InternalBaseTestCase;
import org.apache.tapestry5.ioc.services.TypeCoercer;
import org.apache.tapestry5.runtime.ComponentEvent;
+import org.easymock.EasyMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.isA;
import org.slf4j.Logger;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
@@ -141,7 +145,7 @@
EventContext context = mockEventContext();
Logger logger = mockLogger();
- train_isDebugEnabled(logger, false);
+ logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class), isA(String.class));
train_getCount(context, 0);
@@ -172,7 +176,7 @@
PageResources resources = mockPageResources();
Logger logger = mockLogger();
- train_isDebugEnabled(logger, false);
+ logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class), isA(String.class));
train_toClass(resources, Integer.class.getName(), Integer.class);
@@ -209,7 +213,7 @@
String methodDescription = "foo.Bar.baz()";
Logger logger = mockLogger();
- train_isDebugEnabled(logger, false);
+ logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class), isA(String.class));
ComponentEventCallback handler = mockComponentEventHandler();
@@ -238,7 +242,7 @@
ComponentEventCallback handler = mockComponentEventHandler();
Logger logger = mockLogger();
- train_isDebugEnabled(logger, false);
+ logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class), isA(String.class));
train_handleResult(handler, result, false);
@@ -261,7 +265,7 @@
ComponentEventCallback handler = mockComponentEventHandler();
Logger logger = mockLogger();
- train_isDebugEnabled(logger, false);
+ logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class), isA(String.class));
replay();
@@ -284,7 +288,9 @@
ComponentEventCallback handler = mockComponentEventHandler();
Logger logger = mockLogger();
- expect(logger.isDebugEnabled()).andStubReturn(false);
+ logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class), isA(String.class));
+
+ EasyMock.expectLastCall().atLeastOnce();
expect(handler.handleResult(result)).andReturn(true);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderQueueImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderQueueImplTest.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderQueueImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderQueueImplTest.java Thu Sep 11 11:44:08 2008
@@ -16,9 +16,12 @@
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.TapestryMarkers;
import org.apache.tapestry5.internal.test.InternalBaseTestCase;
import org.apache.tapestry5.runtime.RenderCommand;
import org.apache.tapestry5.runtime.RenderQueue;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.isA;
import org.slf4j.Logger;
import org.testng.annotations.Test;
@@ -42,8 +45,9 @@
// There's only one check for trace enabled now.
- train_isTraceEnabled(logger, false);
- train_isDebugEnabled(logger, false);
+ expect(logger.isTraceEnabled(TapestryMarkers.RENDER_COMMANDS)).andReturn(false);
+
+ logger.debug(eq(TapestryMarkers.RENDER_COMMANDS), isA(String.class));
command2.render(writer, queue);
@@ -82,7 +86,7 @@
Logger logger = mockLogger();
MarkupWriter writer = mockMarkupWriter();
- train_isTraceEnabled(logger, false);
+ expect(logger.isTraceEnabled(TapestryMarkers.RENDER_COMMANDS)).andReturn(false);
logger.error("Render queue error in FailedCommand: Oops.", t);
@@ -106,10 +110,9 @@
{
assertSame(ex.getCause(), t);
- assertArraysEqual(ex.getActiveComponents(), new Object[] { foo, baz });
+ assertArraysEqual(ex.getActiveComponents(), new Object[] {foo, baz});
}
verify();
}
-
}
Modified: tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml Thu Sep 11 11:44:08 2008
@@ -65,6 +65,11 @@
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
</exclusion>
+ <!-- Make sure we use the version defined by tapestry-ioc. -->
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -80,6 +85,13 @@
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.4.0.GA</version>
+ <exclusions>
+ <!-- Make sure we use the version defined by tapestry-ioc. -->
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/Stack.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/Stack.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/Stack.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/Stack.java Thu Sep 11 11:44:08 2008
@@ -58,6 +58,14 @@
}
/**
+ * Returns the number of items currently in the stack.
+ */
+ public int getDepth()
+ {
+ return index + 1;
+ }
+
+ /**
* Clears the stack, the same as popping off all elements.
*/
public void clear()
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StackTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StackTest.java?rev=694410&r1=694409&r2=694410&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StackTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StackTest.java Thu Sep 11 11:44:08 2008
@@ -71,9 +71,11 @@
assertEquals(stack.toString(), "Stack[barney, fred]");
+ assertEquals(stack.getDepth(), 2);
+
Object[] snapshot = stack.getSnapshot();
- assertArraysEqual(snapshot, new Object[] { fred, barney });
+ assertArraysEqual(snapshot, new Object[] {fred, barney});
assertEquals(stack.pop(), barney);
assertEquals(stack.peek(), fred);