Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoList.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoList.java?view=auto&rev=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoList.java (added) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoList.java Mon Jan 15 18:58:40 2007 @@ -0,0 +1,49 @@ +// Copyright 2007 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.Component; +import org.apache.tapestry.annotations.ComponentClass; +import org.apache.tapestry.annotations.Inject; +import org.apache.tapestry.corelib.components.Form; +import org.apache.tapestry.integration.app1.data.ToDoItem; +import org.apache.tapestry.integration.app1.services.ToDoDatabase; + [EMAIL PROTECTED] +public class ToDoList +{ + @Inject + private ToDoDatabase _database; + + private ToDoItem _item; + + @Component + private Form _form; + + public ToDoItem getItem() + { + return _item; + } + + public void setItem(ToDoItem item) + { + _item = item; + } + + public ToDoDatabase getDatabase() + { + return _database; + } +}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java?view=diff&rev=496578&r1=496577&r2=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java (original) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/AppModule.java Mon Jan 15 18:58:40 2007 @@ -87,4 +87,9 @@ { configuration.add("tapestry.supported-locales", "en,fr"); } + + public ToDoDatabase buildToDoDatabase() + { + return new ToDoDatabaseImpl(); + } } Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/ToDoDatabase.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/ToDoDatabase.java?view=auto&rev=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/ToDoDatabase.java (added) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/ToDoDatabase.java Mon Jan 15 18:58:40 2007 @@ -0,0 +1,37 @@ +// Copyright 2007 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.services; + +import java.util.List; + +import org.apache.tapestry.integration.app1.data.ToDoItem; + +public interface ToDoDatabase +{ + /** Adds an item to the database, first assigning a unique id to the item. */ + void add(ToDoItem item); + + /** Finds all items, sorted ascending by each item's order property. */ + List<ToDoItem> findAll(); + + /** + * Updates an existing item. + * + * @param item + * @throws RuntimeException + * if the item does not exist + */ + void update(ToDoItem item); +} Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/ToDoDatabaseImpl.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/ToDoDatabaseImpl.java?view=auto&rev=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/ToDoDatabaseImpl.java (added) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/services/ToDoDatabaseImpl.java Mon Jan 15 18:58:40 2007 @@ -0,0 +1,96 @@ +// Copyright 2007 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.services; + +import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList; +import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +import org.apache.tapestry.integration.app1.data.ToDoItem; + +/** + * We clone everything that comes in or goes out. This does a reasonable job of simulating an + * external database. We just use cloned copies of objects to represent data that's been marshalled + * into tables and columns. + */ +public class ToDoDatabaseImpl implements ToDoDatabase +{ + private long _nextId = 1000; + + private final Map<Long, ToDoItem> _items = newMap(); + + public ToDoDatabaseImpl() + { + // A couple of items to get us started: + + add("Ditch Struts", 1); + add("Eliminate JSF", 2); + add("Conquer Rife", 3); + } + + private void add(String title, int order) + { + ToDoItem item = new ToDoItem(); + + item.setTitle(title); + item.setOrder(order); + + add(item); + } + + public void add(ToDoItem item) + { + long id = _nextId++; + + item.setId(id); + + _items.put(id, item.clone()); + } + + public List<ToDoItem> findAll() + { + List<ToDoItem> result = newList(); + + for (ToDoItem item : _items.values()) + result.add(item.clone()); + + Comparator<ToDoItem> comparator = new Comparator<ToDoItem>() + { + public int compare(ToDoItem o1, ToDoItem o2) + { + return o1.getOrder() - o2.getOrder(); + } + }; + + Collections.sort(result, comparator); + + return result; + } + + public void update(ToDoItem item) + { + long id = item.getId(); + + if (!_items.containsKey(id)) + throw new RuntimeException(String.format("ToDoItem #%d not found.", id)); + + _items.put(id, item.clone()); + } + +} Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/AssetDispatcherTest.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/AssetDispatcherTest.java?view=diff&rev=496578&r1=496577&r2=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/AssetDispatcherTest.java (original) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/AssetDispatcherTest.java Mon Jan 15 18:58:40 2007 @@ -19,6 +19,7 @@ import javax.servlet.http.HttpServletResponse; +import org.apache.tapestry.TapestryConstants; import org.apache.tapestry.internal.test.InternalBaseTestCase; import org.apache.tapestry.ioc.Resource; import org.apache.tapestry.ioc.internal.util.ClasspathResource; @@ -30,7 +31,7 @@ public class AssetDispatcherTest extends InternalBaseTestCase { - private static final String SMILEY_CLIENT_URL = "/asset/app1/pages/smiley.png"; + private static final String SMILEY_CLIENT_URL = "/assets/app1/pages/smiley.png"; private static final String SMILEY_PATH = "org/apache/tapestry/integration/app1/pages/smiley.png"; @@ -89,7 +90,7 @@ ResourceCache cache = newResourceCache(); ResourceStreamer streamer = newResourceStreamer(); - String clientURL = "/asset/app1/pages/smiley_png"; + String clientURL = "/assets/app1/pages/smiley_png"; String resourcePath = "org/apache/tapestry/integration/app1/pages/smiley_png"; train_getPath(request, clientURL); @@ -118,7 +119,7 @@ ResourceCache cache = newResourceCache(); ResourceStreamer streamer = newResourceStreamer(); - String clientURL = "/asset/app1/pages/smiley.WRONG.png"; + String clientURL = "/assets/app1/pages/smiley.WRONG.png"; String resourcePath = "org/apache/tapestry/integration/app1/pages/smiley.WRONG.png"; train_getPath(request, clientURL); @@ -149,7 +150,7 @@ ResourceCache cache = newResourceCache(); ResourceStreamer streamer = newResourceStreamer(); - String clientURL = "/asset/app1/pages/smiley.RIGHT.png"; + String clientURL = TapestryConstants.ASSET_PATH_PREFIX + "app1/pages/smiley.RIGHT.png"; String resourcePath = "org/apache/tapestry/integration/app1/pages/smiley.RIGHT.png"; train_getPath(request, clientURL); Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClasspathAssetAliasManagerImplTest.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClasspathAssetAliasManagerImplTest.java?view=diff&rev=496578&r1=496577&r2=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClasspathAssetAliasManagerImplTest.java (original) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClasspathAssetAliasManagerImplTest.java Mon Jan 15 18:58:40 2007 @@ -18,6 +18,7 @@ import java.util.Map; +import org.apache.tapestry.TapestryConstants; import org.apache.tapestry.internal.test.InternalBaseTestCase; import org.apache.tapestry.services.ClasspathAssetAliasManager; import org.apache.tapestry.services.Request; @@ -50,7 +51,8 @@ ClasspathAssetAliasManager manager = new ClasspathAssetAliasManagerImpl(request, configuration()); - assertEquals(manager.toClientURL(resourcePath), "/ctx" + expectedClientURL); + assertEquals(manager.toClientURL(resourcePath), "/ctx" + + TapestryConstants.ASSET_PATH_PREFIX + expectedClientURL); verify(); } @@ -60,11 +62,11 @@ { return new Object[][] { - { "foo/bar/Baz.txt", "/asset/foo/bar/Baz.txt" }, - { "com/example/mylib/Foo.bar", "/asset/mylib/Foo.bar" }, - { "com/example/mylib/nested/Foo.bar", "/asset/mylib/nested/Foo.bar" }, - { "org/apache/tapestry/internal/Foo.bar", "/asset/tapestry-internal/Foo.bar" }, - { "org/apache/tapestry/Foo.bar", "/asset/tapestry/Foo.bar" }, }; + { "foo/bar/Baz.txt", "foo/bar/Baz.txt" }, + { "com/example/mylib/Foo.bar", "mylib/Foo.bar" }, + { "com/example/mylib/nested/Foo.bar", "mylib/nested/Foo.bar" }, + { "org/apache/tapestry/internal/Foo.bar", "tapestry-internal/Foo.bar" }, + { "org/apache/tapestry/Foo.bar", "tapestry/Foo.bar" }, }; } @Test(dataProvider = "to_resource_path_data") @@ -84,7 +86,7 @@ for (Object[] pair : data) { Object buffer = pair[0]; - pair[0] = pair[1]; + pair[0] = TapestryConstants.ASSET_PATH_PREFIX + pair[1]; pair[1] = buffer; } Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java?view=diff&rev=496578&r1=496577&r2=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java (original) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java Mon Jan 15 18:58:40 2007 @@ -31,6 +31,32 @@ w.write("fail!"); } + @Test + public void write_whitespace_before_start_of_root_element_is_ignored() + { + MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel(), null); + + w.write(" "); + + w.element("root"); + w.end(); + + assertEquals(w.toString(), "<root/>"); + } + + @Test + public void write_whitespace_after_end_of_root_element_is_ignored() + { + MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel(), null); + + w.element("root"); + w.end(); + + w.write(" "); + + assertEquals(w.toString(), "<root/>"); + } + @Test(expectedExceptions = IllegalStateException.class) public void comment_with_no_current_element() { Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpCookieSource.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpCookieSource.java?view=diff&rev=496578&r1=496577&r2=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpCookieSource.java (original) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpCookieSource.java Mon Jan 15 18:58:40 2007 @@ -1,3 +1,17 @@ +// Copyright 2007 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.Cookies; Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RenderQueueImplTest.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RenderQueueImplTest.java?view=diff&rev=496578&r1=496577&r2=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RenderQueueImplTest.java (original) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/RenderQueueImplTest.java Mon Jan 15 18:58:40 2007 @@ -12,85 +12,89 @@ // See the License for the specific language governing permissions and // limitations under the License. -package org.apache.tapestry.internal.services; - -import org.apache.commons.logging.Log; -import org.apache.tapestry.MarkupWriter; -import org.apache.tapestry.internal.test.InternalBaseTestCase; -import org.apache.tapestry.runtime.RenderCommand; -import org.apache.tapestry.runtime.RenderQueue; -import org.testng.annotations.Test; - -public class RenderQueueImplTest extends InternalBaseTestCase -{ - @Test - public void run_commands() - { - final RenderCommand command2 = newMock(RenderCommand.class); - RenderCommand command1 = new RenderCommand() - { - public void render(MarkupWriter writer, RenderQueue queue) - { - queue.push(command2); - } - }; - - Log log = newLog(); - MarkupWriter writer = newMarkupWriter(); - RenderQueueImpl queue = new RenderQueueImpl(log); - - command2.render(writer, queue); - - replay(); - - queue.push(command1); - queue.run(writer); - - verify(); - } - - @Test - public void command_failed() - { - final RuntimeException t = new RuntimeException("Oops."); - - RenderCommand rc = new RenderCommand() - { - - public void render(MarkupWriter writer, RenderQueue queue) - { - throw t; - } - - @Override - public String toString() - { - return "FailedCommand"; - } - }; - - Log log = newLog(); - MarkupWriter writer = newMarkupWriter(); - - log.error("Render queue error in FailedCommand: Oops.", t); - - replay(); - - RenderQueueImpl queue = new RenderQueueImpl(log); - - queue.push(rc); - - try - { - queue.run(writer); - unreachable(); - } - catch (RuntimeException ex) - { - assertSame(ex, t); - } - - verify(); - } - -} +package org.apache.tapestry.internal.services; + +import org.apache.commons.logging.Log; +import org.apache.tapestry.MarkupWriter; +import org.apache.tapestry.internal.test.InternalBaseTestCase; +import org.apache.tapestry.runtime.RenderCommand; +import org.apache.tapestry.runtime.RenderQueue; +import org.testng.annotations.Test; + +public class RenderQueueImplTest extends InternalBaseTestCase +{ + @Test + public void run_commands() + { + final RenderCommand command2 = newMock(RenderCommand.class); + RenderCommand command1 = new RenderCommand() + { + public void render(MarkupWriter writer, RenderQueue queue) + { + queue.push(command2); + } + }; + + Log log = newLog(); + MarkupWriter writer = newMarkupWriter(); + RenderQueueImpl queue = new RenderQueueImpl(log); + + expect(log.isDebugEnabled()).andReturn(false).atLeastOnce(); + + command2.render(writer, queue); + + replay(); + + queue.push(command1); + queue.run(writer); + + verify(); + } + + @Test + public void command_failed() + { + final RuntimeException t = new RuntimeException("Oops."); + + RenderCommand rc = new RenderCommand() + { + + public void render(MarkupWriter writer, RenderQueue queue) + { + throw t; + } + + @Override + public String toString() + { + return "FailedCommand"; + } + }; + + Log log = newLog(); + MarkupWriter writer = newMarkupWriter(); + + expect(log.isDebugEnabled()).andReturn(false).atLeastOnce(); + + log.error("Render queue error in FailedCommand: Oops.", t); + + replay(); + + RenderQueueImpl queue = new RenderQueueImpl(log); + + queue.push(rc); + + try + { + queue.run(writer); + unreachable(); + } + catch (RuntimeException ex) + { + assertSame(ex, t); + } + + verify(); + } + +} Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/ComponentPageElementImplTest.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/ComponentPageElementImplTest.java?view=diff&rev=496578&r1=496577&r2=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/ComponentPageElementImplTest.java (original) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/structure/ComponentPageElementImplTest.java Mon Jan 15 18:58:40 2007 @@ -337,7 +337,7 @@ cpe.getEmbeddedElement("unknown"); unreachable(); } - catch (IllegalArgumentException ex) + catch (TapestryException ex) { assertEquals(ex.getMessage(), "Component " + component.getClass().getName() + " does not contain an embedded component with id 'unknown'."); @@ -425,7 +425,7 @@ cpe.getMixinByClassName("foo.Baz"); unreachable(); } - catch (IllegalArgumentException ex) + catch (TapestryException ex) { assertTrue(ex.getMessage().endsWith(" does not contain a mixin of type foo.Baz.")); } 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?view=diff&rev=496578&r1=496577&r2=496578 ============================================================================== --- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties (original) +++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties Mon Jan 15 18:58:40 2007 @@ -30,3 +30,5 @@ log4j.category.org.apache.tapestry.integration.app1=error log4j.category.org.apache.tapestry.corelib=error +log4j.category.org.apache.tapestry.integration.app1.pages.ToDoList=debug +
