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 2006/08/05 00:13:20 UTC

svn commit: r428904 - in /tapestry/tapestry5/tapestry-core/trunk: ./ src/main/java/org/apache/tapestry/ src/main/java/org/apache/tapestry/internal/ src/main/java/org/apache/tapestry/internal/ioc/ src/main/java/org/apache/tapestry/internal/pageload/ src...

Author: hlship
Date: Fri Aug  4 15:13:18 2006
New Revision: 428904

URL: http://svn.apache.org/viewvc?rev=428904&view=rev
Log:
Remove last dependencies on HiveMind.

Added:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Locatable.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Location.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Resource.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImplTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/LocalizedNameGenerator.java
      - copied, changed from r424849, hivemind/trunk/framework/src/java/org/apache/hivemind/util/LocalizedNameGenerator.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/BaseLocatableTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ClasspathResource.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/LocalizedNameGeneratorTest.java
Modified:
    tapestry/tapestry5/tapestry-core/trunk/pom.xml
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCUtilities.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/AttributeToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CDATAToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CommentToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplate.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplateImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ParserMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartElementToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParser.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParserImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TextToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/AbstractIntWrapper.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/ClassFabImplTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImplTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/parser/TemplateParserImplTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderTest.java

Modified: tapestry/tapestry5/tapestry-core/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/pom.xml?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/pom.xml (original)
+++ tapestry/tapestry5/tapestry-core/trunk/pom.xml Fri Aug  4 15:13:18 2006
@@ -23,19 +23,6 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
-            <groupId>hivemind</groupId>
-            <artifactId>hivemind</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>hivemind</groupId>
-            <artifactId>hivemind-lib</artifactId>
-        </dependency>
-        <!-- Really, a transitive dependency of hivemind. -->
-        <dependency>
-            <groupId>oro</groupId>
-            <artifactId>oro</artifactId>
-        </dependency>
-        <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
         </dependency>

Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,38 @@
+// 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;
+
+import org.apache.tapestry.internal.annotations.SuppressNullCheck;
+
+/**
+ * Base implementation of {@link org.apache.tapestry.Locatable}.
+ * 
+ * @author Howard M. Lewis Ship
+ */
+@SuppressNullCheck
+public class BaseLocatable implements Locatable
+{
+    private final Location _location;
+
+    protected BaseLocatable(Location location)
+    {
+        _location = location;
+    }
+
+    public final Location getLocation()
+    {
+        return _location;
+    }
+}

Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Locatable.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Locatable.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Locatable.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Locatable.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,27 @@
+// 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;
+
+/**
+ * Interface implemented by objects which carry a location tag. Defines a readable property,
+ * location.
+ * 
+ * @author Howard M. Lewis Ship
+ */
+public interface Locatable
+{
+    /** Returns the location associated with this object for error reporting purposes. */
+    Location getLocation();
+}

Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Location.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Location.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Location.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Location.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,39 @@
+// 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;
+
+/**
+ * A kind of tag applied to other objects to identify where they came from, in terms of a file (the
+ * resource), a line number, and a column number. This is part of "line precise exception
+ * reporting", whereby errors at runtime can be tracked backwards to the files from which they were
+ * parsed or otherwise constructed.
+ * 
+ * @author Howard M. Lewis Ship
+ */
+public interface Location
+{
+    /** The resource from which the object tagged with a location was derived. */
+    Resource getResource();
+
+    /**
+     * The line number within the resource, if known, or -1 otherwise.
+     */
+    int getLine();
+
+    /**
+     * The column number within the line if known, or -1 otherwise.
+     */
+    int getColumn();
+}

Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Resource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Resource.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Resource.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Resource.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,37 @@
+// 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;
+
+import java.net.URL;
+import java.util.Locale;
+
+/**
+ * Represents a resource on the server that may be used for server side processing, or may be
+ * exposed to the client side. Generally, this represents an abstraction on top of files on the
+ * class path and files stored in the web application context.
+ * <p>
+ * Resources are often used as map keys; they should be immutable and should implement hashCode()
+ * and equals().
+ * 
+ * @author Howard M. Lewis Ship
+ */
+public interface Resource
+{
+    /** Returns the URL for the resource, or null if it does not exist. */
+    URL getResourceURL();
+
+    /** Returns a localized version of the resource. */
+    Resource getLocalization(Locale locale);
+}

Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,88 @@
+// 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;
+
+import java.util.Formatter;
+
+import org.apache.tapestry.Location;
+import org.apache.tapestry.Resource;
+
+/**
+ * Implementation class for {@link org.apache.tapestry.Location}.
+ * 
+ * @author Howard M. Lewis Ship
+ */
+public final class LocationImpl implements Location
+{
+    private final Resource _resource;
+
+    private final int _line;
+
+    private final int _column;
+
+    private static final int UNKNOWN = -1;
+
+    public LocationImpl(Resource resource)
+    {
+        this(resource, UNKNOWN);
+    }
+
+    public LocationImpl(Resource resource, int line)
+    {
+        this(resource, line, UNKNOWN);
+    }
+
+    public LocationImpl(Resource resource, int line, int column)
+    {
+        _resource = resource;
+        _line = line;
+        _column = column;
+    }
+
+    public Resource getResource()
+    {
+        return _resource;
+    }
+
+    public int getLine()
+    {
+        return _line;
+    }
+
+    public int getColumn()
+    {
+        return _column;
+    }
+
+    @Override
+    public String toString()
+    {
+        StringBuffer buffer = new StringBuffer();
+        Formatter formatter = new Formatter(buffer);
+
+        formatter.format("<Location: %s", _resource);
+
+        if (_line != UNKNOWN)
+            formatter.format(", line %d", _line);
+
+        if (_column != UNKNOWN)
+            formatter.format(", column %d", _column);
+
+        formatter.format(">");
+
+        return buffer.toString();
+    }
+
+}

Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImplTest.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImplTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImplTest.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,101 @@
+// 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;
+
+import java.net.URL;
+import java.util.Locale;
+import java.util.Random;
+
+import org.apache.tapestry.Location;
+import org.apache.tapestry.Resource;
+import org.apache.tapestry.test.BaseTestCase;
+import org.testng.annotations.Test;
+
+/**
+ * @author Howard M. Lewis Ship
+ */
+public class LocationImplTest extends BaseTestCase
+{
+    private final Random _random = new Random();
+
+    private static class ResourceFixture implements Resource
+    {
+        public URL getResourceURL()
+        {
+            return null;
+        }
+
+        public Resource getLocalization(Locale locale)
+        {
+            return null;
+        }
+
+        @Override
+        public String toString()
+        {
+            return "<Resource>";
+        }
+    }
+
+    @Test
+    public void all_three_parameters()
+    {
+        Resource r = new ResourceFixture();
+
+        int line = _random.nextInt();
+        int column = _random.nextInt();
+
+        Location l = new LocationImpl(r, line, column);
+
+        assertSame(l.getResource(), r);
+        assertEquals(l.getLine(), line);
+        assertEquals(l.getColumn(), column);
+
+        assertEquals(l.toString(), String.format(
+                "<Location: <Resource>, line %d, column %d>",
+                line,
+                column));
+    }
+
+    @Test
+    public void unknown_column()
+    {
+        Resource r = new ResourceFixture();
+
+        int line = _random.nextInt();
+
+        Location l = new LocationImpl(r, line);
+
+        assertSame(l.getResource(), r);
+        assertEquals(l.getLine(), line);
+        assertEquals(l.getColumn(), -1);
+
+        assertEquals(l.toString(), String.format("<Location: <Resource>, line %d>", line));
+    }
+
+    @Test
+    public void unknown_line_and_column()
+    {
+        Resource r = new ResourceFixture();
+
+        Location l = new LocationImpl(r);
+
+        assertSame(l.getResource(), r);
+        assertEquals(l.getLine(), -1);
+        assertEquals(l.getColumn(), -1);
+
+        assertEquals(l.toString(), "<Location: <Resource>>");
+    }
+}

Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,66 @@
+// 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;
+
+import org.apache.tapestry.Locatable;
+import org.apache.tapestry.Location;
+import org.apache.tapestry.internal.annotations.SuppressNullCheck;
+
+/**
+ * Exception class used as a replacement for {@link java.lang.RuntimeException} when the exception
+ * is related to a particular location.
+ * 
+ * @author Howard M. Lewis Ship
+ */
+@SuppressNullCheck
+public class TapestryException extends RuntimeException implements Locatable
+{
+    private static final long serialVersionUID = 6396903640977182682L;
+
+    private transient final Location _location;
+
+    /**
+     * @param message
+     *            a message (may be null)
+     * @param locatable
+     *            if not null, the object containing the location to attribute the exception to
+     * @param cause
+     *            if not null, the root cause of the exception
+     */
+    public TapestryException(String message, Locatable locatable, Throwable cause)
+    {
+        this(message, locatable != null ? locatable.getLocation() : null, cause);
+    }
+
+    /**
+     * @param message
+     *            a message (may be null)
+     * @param locatable
+     *            location to associated with the exception, or null if not known
+     * @param cause
+     *            if not null, the root cause of the exception
+     */
+    public TapestryException(String message, Location location, Throwable cause)
+    {
+        super(message, cause);
+
+        _location = location;
+    }
+
+    public Location getLocation()
+    {
+        return _location;
+    }
+}

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCUtilities.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCUtilities.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCUtilities.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCUtilities.java Fri Aug  4 15:13:18 2006
@@ -21,6 +21,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.annotations.Utility;
 import org.apache.tapestry.ioc.ServiceLocator;
 import org.apache.tapestry.ioc.annotations.InjectService;
@@ -132,5 +133,15 @@
         Collections.sort(list);
 
         return join(list);
+    }
+
+    /**
+     * Returns true if the input is null, or is a zero length string (excluding leading/trailing
+     * whitespace).
+     */
+    @SuppressNullCheck
+    public static boolean isBlank(String input)
+    {
+        return input == null || input.length() == 0 || input.trim().length() == 0;
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImpl.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImpl.java Fri Aug  4 15:13:18 2006
@@ -14,22 +14,21 @@
 
 package org.apache.tapestry.internal.pageload;
 
-import static org.apache.tapestry.util.CollectionFactory.newMap;
-
 import java.util.Locale;
 import java.util.Map;
 
-import org.apache.hivemind.ClassResolver;
-import org.apache.hivemind.Resource;
-import org.apache.hivemind.util.ClasspathResource;
+import org.apache.tapestry.Resource;
 import org.apache.tapestry.events.UpdateEvent;
 import org.apache.tapestry.events.UpdateListener;
+import org.apache.tapestry.internal.ClasspathResource;
 import org.apache.tapestry.internal.annotations.Concurrent;
 import org.apache.tapestry.internal.event.InvalidationEventHubImpl;
 import org.apache.tapestry.internal.parser.ComponentTemplate;
 import org.apache.tapestry.internal.parser.TemplateParser;
 import org.apache.tapestry.internal.util.URLChangeTracker;
 
+import static org.apache.tapestry.util.CollectionFactory.newMap;
+
 /**
  * Service implementation that manages a cache of parsed component templates.
  * 
@@ -39,9 +38,9 @@
 public final class ComponentTemplateSourceImpl extends InvalidationEventHubImpl implements
         ComponentTemplateSource, UpdateListener
 {
-    private ClassResolver _classResolver;
+    private final ClassLoader _loader;
 
-    private TemplateParser _parser;
+    private final TemplateParser _parser;
 
     /**
      * Caches from a key (combining component name and locale) to a resource. Often, many different
@@ -58,6 +57,17 @@
 
     private final URLChangeTracker _tracker = new URLChangeTracker();
 
+    public ComponentTemplateSourceImpl(TemplateParser parser)
+    {
+        this(Thread.currentThread().getContextClassLoader(), parser);
+    }
+
+    ComponentTemplateSourceImpl(ClassLoader loader, TemplateParser parser)
+    {
+        _loader = loader;
+        _parser = parser;
+    }
+
     /**
      * Resolves the component name to a {@link Resource} and finds the localization of that resource
      * (the combination of component name and locale is resolved to a resource). The localized
@@ -104,11 +114,10 @@
         // ComoponentModel and determine the correct extension from that.
 
         String path = componentName.replace('.', '/') + ".html";
-        Resource baseResource = new ClasspathResource(_classResolver, path);
+        Resource baseResource = new ClasspathResource(_loader, path);
         Resource localized = baseResource.getLocalization(locale);
 
         _templateResources.put(key, localized);
-
     }
 
     /**
@@ -128,15 +137,4 @@
         }
     }
 
-    /** For injection. */
-    public void setClassResolver(ClassResolver classResolver)
-    {
-        _classResolver = classResolver;
-    }
-
-    /** For injection. */
-    public void setParser(TemplateParser parser)
-    {
-        _parser = parser;
-    }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/AttributeToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/AttributeToken.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/AttributeToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/AttributeToken.java Fri Aug  4 15:13:18 2006
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Location;
+import org.apache.tapestry.Location;
 
 /**
  * Stores an attribute/value pair (as part of an XML element).

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CDATAToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CDATAToken.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CDATAToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CDATAToken.java Fri Aug  4 15:13:18 2006
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Location;
+import org.apache.tapestry.Location;
 
 /**
  * Literal text that was enclosed within a !CDATA in the input template (so we should do the same

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CommentToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CommentToken.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CommentToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/CommentToken.java Fri Aug  4 15:13:18 2006
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Location;
+import org.apache.tapestry.Location;
 
 /**
  * A node representing a comment embedded in the source input.

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplate.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplate.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplate.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplate.java Fri Aug  4 15:13:18 2006
@@ -16,7 +16,7 @@
 
 import java.util.List;
 
-import org.apache.hivemind.Resource;
+import org.apache.tapestry.Resource;
 
 /**
  * A parsed component template, containing all the tokens parsed from the template.

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplateImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplateImpl.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplateImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ComponentTemplateImpl.java Fri Aug  4 15:13:18 2006
@@ -16,7 +16,7 @@
 
 import java.util.List;
 
-import org.apache.hivemind.Resource;
+import org.apache.tapestry.Resource;
 
 import static org.apache.tapestry.util.CollectionFactory.newList;
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java Fri Aug  4 15:13:18 2006
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Location;
+import org.apache.tapestry.Location;
 
 /**
  * Ends a previously started element (including components, parameters, etc.).

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ParserMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ParserMessages.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ParserMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/ParserMessages.java Fri Aug  4 15:13:18 2006
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Resource;
 import org.apache.tapestry.Messages;
+import org.apache.tapestry.Resource;
 import org.apache.tapestry.internal.MessagesImpl;
 import org.apache.tapestry.internal.annotations.Utility;
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java Fri Aug  4 15:13:18 2006
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Location;
+import org.apache.tapestry.Location;
 import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 
 /**

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartElementToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartElementToken.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartElementToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartElementToken.java Fri Aug  4 15:13:18 2006
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Location;
+import org.apache.tapestry.Location;
 
 /**
  * The start of an ordinary element within the template (as opposed to

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParser.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParser.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParser.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParser.java Fri Aug  4 15:13:18 2006
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Resource;
+import org.apache.tapestry.Resource;
 
 /**
  * Parses a resource into a {@link org.apache.tapestry.internal.parser.ComponentTemplate}.

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParserImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParserImpl.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParserImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateParserImpl.java Fri Aug  4 15:13:18 2006
@@ -14,9 +14,6 @@
 
 package org.apache.tapestry.internal.parser;
 
-import static org.apache.tapestry.util.CollectionFactory.newList;
-import static org.apache.tapestry.util.CollectionFactory.newMap;
-
 import java.net.URL;
 import java.util.List;
 import java.util.Map;
@@ -24,11 +21,10 @@
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
-import org.apache.hivemind.ApplicationRuntimeException;
-import org.apache.hivemind.HiveMind;
-import org.apache.hivemind.Location;
-import org.apache.hivemind.Resource;
-import org.apache.hivemind.impl.LocationImpl;
+import org.apache.tapestry.Location;
+import org.apache.tapestry.Resource;
+import org.apache.tapestry.internal.LocationImpl;
+import org.apache.tapestry.internal.TapestryException;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.Locator;
@@ -36,6 +32,10 @@
 import org.xml.sax.ext.LexicalHandler;
 import org.xml.sax.helpers.DefaultHandler;
 
+import static org.apache.tapestry.internal.ioc.IOCUtilities.isBlank;
+import static org.apache.tapestry.util.CollectionFactory.newList;
+import static org.apache.tapestry.util.CollectionFactory.newMap;
+
 /**
  * Non-threadsafe implementation.
  * 
@@ -118,9 +118,8 @@
 
             _parser = null;
 
-            throw new ApplicationRuntimeException(ParserMessages.templateParseError(
-                    templateResource,
-                    ex), getCurrentLocation(), ex);
+            throw new TapestryException(ParserMessages.templateParseError(templateResource, ex),
+                    getCurrentLocation(), ex);
         }
         finally
         {
@@ -245,7 +244,7 @@
         {
             String name = attributes.getLocalName(i);
 
-            if (HiveMind.isBlank(name))
+            if (isBlank(name))
                 continue;
 
             String value = attributes.getValue(i);

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateToken.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TemplateToken.java Fri Aug  4 15:13:18 2006
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Locatable;
-import org.apache.hivemind.Location;
+import org.apache.tapestry.BaseLocatable;
+import org.apache.tapestry.Location;
 
 /**
  * Base class for tokens parsed out of a template. The set of classes rooted here are effectively
@@ -23,25 +23,18 @@
  * 
  * @author Howard M. Lewis Ship
  */
-public abstract class TemplateToken implements Locatable
+public abstract class TemplateToken extends BaseLocatable
 {
     private final TokenType _tokenType;
 
-    private final Location _location;
-
     public TemplateToken(TokenType tokenType, Location location)
     {
+        super(location);
         _tokenType = tokenType;
-        _location = location;
     }
 
     public TokenType getTokenType()
     {
         return _tokenType;
-    }
-
-    public Location getLocation()
-    {
-        return _location;
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TextToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TextToken.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TextToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/TextToken.java Fri Aug  4 15:13:18 2006
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.internal.parser;
 
-import org.apache.hivemind.Location;
+import org.apache.tapestry.Location;
 
 public class TextToken extends TemplateToken
 {

Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/LocalizedNameGenerator.java (from r424849, hivemind/trunk/framework/src/java/org/apache/hivemind/util/LocalizedNameGenerator.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/LocalizedNameGenerator.java?p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/LocalizedNameGenerator.java&p1=hivemind/trunk/framework/src/java/org/apache/hivemind/util/LocalizedNameGenerator.java&r1=424849&r2=428904&rev=428904&view=diff
==============================================================================
--- hivemind/trunk/framework/src/java/org/apache/hivemind/util/LocalizedNameGenerator.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/LocalizedNameGenerator.java Fri Aug  4 15:13:18 2006
@@ -1,4 +1,4 @@
-// Copyright 2004, 2005 The Apache Software Foundation
+// Copyright 2004, 2005, 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.
@@ -12,57 +12,74 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.hivemind.util;
+package org.apache.tapestry.internal.util;
 
 import java.util.Locale;
 import java.util.NoSuchElementException;
 
-import org.apache.hivemind.HiveMind;
+import static org.apache.tapestry.internal.ioc.IOCUtilities.isBlank;
 
 /**
- *  Used in a wide variety of resource searches.  Generates
- *  a series of name variations from a base name, a 
- *  {@link java.util.Locale} and an optional suffix.
- *
- *  @author Howard Lewis Ship
+ * Used in a wide variety of resource searches. Generates a series of name variations from a path
+ * (which must include a suffix) and locale.
+ * <P>
+ * This class is not threadsafe.
+ * 
+ * @author Howard Lewis Ship
  */
 
 public class LocalizedNameGenerator
 {
-    private int _baseNameLength;
-    private String _suffix;
-    private StringBuffer _buffer;
-    private String _language;
-    private String _country;
-    private String _variant;
+    private final int _baseNameLength;
+
+    private final String _suffix;
+
+    private final StringBuilder _builder;
+
+    private final String _language;
+
+    private final String _country;
+
+    private final String _variant;
+
     private int _state;
+
     private int _prevState;
 
     private static final int INITIAL = 0;
+
     private static final int LCV = 1;
+
     private static final int LC = 2;
+
     private static final int LV = 3;
+
     private static final int L = 4;
+
     private static final int BARE = 5;
+
     private static final int EXHAUSTED = 6;
 
-    public LocalizedNameGenerator(String baseName, Locale locale, String suffix)
+    public LocalizedNameGenerator(String path, Locale locale)
     {
-        _baseNameLength = baseName.length();
+        int dotx = path.lastIndexOf('.');
 
-        if (locale != null)
-        {
-            _language = locale.getLanguage();
-            _country = locale.getCountry();
-            _variant = locale.getVariant();
-        }
+        // TODO: Case where there is no suffix
+
+        String baseName = path.substring(0, dotx);
+
+        _suffix = path.substring(dotx);
+
+        _baseNameLength = dotx;
+
+        _language = locale.getLanguage();
+        _country = locale.getCountry();
+        _variant = locale.getVariant();
 
         _state = INITIAL;
         _prevState = INITIAL;
 
-        _suffix = suffix;
-
-        _buffer = new StringBuffer(baseName);
+        _builder = new StringBuilder(baseName);
 
         advance();
     }
@@ -77,49 +94,47 @@
 
             switch (_state)
             {
-                case LCV :
+                case LCV:
 
-                    if (HiveMind.isBlank(_variant))
+                    if (isBlank(_variant))
                         continue;
 
                     return;
 
-                case LC :
+                case LC:
 
-                    if (HiveMind.isBlank(_country))
+                    if (isBlank(_country))
                         continue;
 
                     return;
 
-                case LV :
+                case LV:
 
                     // If _country is null, then we've already generated this string
                     // as state LCV and we can continue directly to state L
 
-                    if (HiveMind.isBlank(_variant) || HiveMind.isBlank(_country))
+                    if (isBlank(_variant) || isBlank(_country))
                         continue;
 
                     return;
 
-                case L :
+                case L:
 
-                    if (HiveMind.isBlank(_language))
+                    if (isBlank(_language))
                         continue;
 
                     return;
 
-                case BARE :
-                default :
+                case BARE:
+                default:
                     return;
             }
         }
     }
 
     /**
-     *  Returns true if there are more name variants to be
-     *  returned, false otherwise.
-     * 
-     **/
+     * Returns true if there are more name variants to be returned, false otherwise.
+     */
 
     public boolean more()
     {
@@ -127,12 +142,11 @@
     }
 
     /**
-     *  Returns the next localized variant.
-     * 
-     *  @throws NoSuchElementException if all variants have been
-     *  returned.
+     * Returns the next localized variant.
      * 
-     **/
+     * @throws NoSuchElementException
+     *             if all variants have been returned.
+     */
 
     public String next()
     {
@@ -148,12 +162,12 @@
 
     private String build()
     {
-        _buffer.setLength(_baseNameLength);
+        _builder.setLength(_baseNameLength);
 
         if (_state == LC || _state == LCV || _state == L)
         {
-            _buffer.append('_');
-            _buffer.append(_language);
+            _builder.append('_');
+            _builder.append(_language);
         }
 
         // For LV, we want two underscores between language
@@ -161,45 +175,45 @@
 
         if (_state == LC || _state == LCV || _state == LV)
         {
-            _buffer.append('_');
+            _builder.append('_');
 
             if (_state != LV)
-                _buffer.append(_country);
+                _builder.append(_country);
         }
 
         if (_state == LV || _state == LCV)
         {
-            _buffer.append('_');
-            _buffer.append(_variant);
+            _builder.append('_');
+            _builder.append(_variant);
         }
 
         if (_suffix != null)
-            _buffer.append(_suffix);
+            _builder.append(_suffix);
 
-        return _buffer.toString();
+        return _builder.toString();
     }
 
     public Locale getCurrentLocale()
     {
         switch (_prevState)
         {
-            case LCV :
+            case LCV:
 
                 return new Locale(_language, _country, _variant);
 
-            case LC :
+            case LC:
 
                 return new Locale(_language, _country, "");
 
-            case LV :
+            case LV:
 
                 return new Locale(_language, "", _variant);
 
-            case L :
+            case L:
 
                 return new Locale(_language, "", "");
 
-            default :
+            default:
                 return null;
         }
     }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java Fri Aug  4 15:13:18 2006
@@ -14,8 +14,6 @@
 
 package org.apache.tapestry.test;
 
-import static java.lang.Thread.sleep;
-
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStream;
@@ -29,7 +27,7 @@
 import java.util.UUID;
 
 import org.apache.commons.logging.Log;
-import org.apache.hivemind.Resource;
+import org.apache.tapestry.Resource;
 import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.ioc.Module;
 import org.apache.tapestry.ioc.Configuration;
@@ -47,6 +45,8 @@
 import org.apache.tapestry.ioc.def.ServiceDef;
 import org.apache.tapestry.model.MutableComponentModel;
 import org.apache.tapestry.transform.ClassTransformation;
+
+import static java.lang.Thread.sleep;
 
 /**
  * Base test case that adds a number of convienience factory and training methods to

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/BaseLocatableTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/BaseLocatableTest.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/BaseLocatableTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/BaseLocatableTest.java Fri Aug  4 15:13:18 2006
@@ -0,0 +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;
+
+import org.apache.tapestry.internal.annotations.SuppressNullCheck;
+import org.apache.tapestry.test.BaseTestCase;
+import org.testng.annotations.Test;
+
+/**
+ * @author Howard M. Lewis Ship
+ */
+public class BaseLocatableTest extends BaseTestCase
+{
+    @SuppressNullCheck
+    static class LocatableFixture extends BaseLocatable
+    {
+        LocatableFixture(Location location)
+        {
+            super(location);
+        }
+    }
+
+    @Test
+    public void location_property_is_readable()
+    {
+        Location location = newMock(Location.class);
+
+        replay();
+
+        Locatable locatable = new LocatableFixture(location);
+
+        verify();
+
+        assertSame(locatable.getLocation(), location);
+    }
+
+    @Test
+    public void null_is_allowed_for_location()
+    {
+        Locatable locatable = new LocatableFixture(null);
+
+        assertNull(locatable.getLocation());
+    }
+}

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ClasspathResource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ClasspathResource.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ClasspathResource.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ClasspathResource.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,101 @@
+// 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;
+
+import java.net.URL;
+import java.util.Locale;
+
+import org.apache.tapestry.Resource;
+import org.apache.tapestry.internal.util.LocalizedNameGenerator;
+
+/**
+ * Bare-bones, temporary implementation.
+ * 
+ * @author Howard M. Lewis Ship
+ */
+public class ClasspathResource implements Resource
+{
+    private final ClassLoader _classLoader;
+
+    private final String _path;
+
+    private URL _url;
+
+    public ClasspathResource(ClassLoader classLoader, String path)
+    {
+        _classLoader = classLoader;
+        _path = path;
+    }
+
+    private ClasspathResource(ClassLoader classLoader, String path, URL url)
+    {
+        this(classLoader, path);
+        _url = url;
+    }
+
+    public synchronized URL getResourceURL()
+    {
+        if (_url == null)
+            _url = _classLoader.getResource(_path);
+
+        return _url;
+    }
+
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj == null)
+            return false;
+
+        if (obj == this)
+            return true;
+
+        if (obj.getClass() != getClass())
+            return false;
+
+        ClasspathResource other = (ClasspathResource) obj;
+
+        return other._classLoader == _classLoader && other._path.equals(_path);
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return 227 ^ _path.hashCode();
+    }
+
+    public Resource getLocalization(Locale locale)
+    {
+        LocalizedNameGenerator g = new LocalizedNameGenerator(_path, locale);
+
+        while (g.more())
+        {
+            String path = g.next();
+
+            URL url = _classLoader.getResource(path);
+
+            if (url == null)
+                continue;
+
+            if (_path.equals(path))
+                return this;
+
+            return new ClasspathResource(_classLoader, path, url);
+        }
+
+        return null;
+    }
+
+}

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/AbstractIntWrapper.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/AbstractIntWrapper.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/AbstractIntWrapper.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/AbstractIntWrapper.java Fri Aug  4 15:13:18 2006
@@ -14,14 +14,12 @@
 
 package org.apache.tapestry.internal.ioc.services;
 
-import org.apache.hivemind.impl.BaseLocatable;
-
 /**
  * Used by {@link org.apache.tapestry.internal.ioc.services.ClassFabImplTest}.
  * 
  * @author Howard Lewis Ship
  */
-public abstract class AbstractIntWrapper extends BaseLocatable
+public abstract class AbstractIntWrapper
 {
     public abstract int getIntValue();
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/ClassFabImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/ClassFabImplTest.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/ClassFabImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/ClassFabImplTest.java Fri Aug  4 15:13:18 2006
@@ -24,7 +24,7 @@
 import javassist.CtClass;
 
 import org.apache.commons.logging.LogFactory;
-import org.apache.hivemind.impl.BaseLocatable;
+import org.apache.tapestry.BaseLocatable;
 import org.apache.tapestry.internal.ioc.services.LoggingDecoratorImplTest.ToStringService;
 import org.apache.tapestry.ioc.services.ClassFab;
 import org.apache.tapestry.ioc.services.MethodSignature;
@@ -420,7 +420,7 @@
 
         assertContains(
                 toString,
-                "public class FredRunnable extends org.apache.hivemind.impl.BaseLocatable\n"
+                "public class FredRunnable extends org.apache.tapestry.BaseLocatable\n"
                         + "  implements java.lang.Runnable, java.io.Serializable");
 
         assertContains(toString, "private java.util.Map _map;");

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImplTest.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/pageload/ComponentTemplateSourceImplTest.java Fri Aug  4 15:13:18 2006
@@ -18,20 +18,18 @@
 import java.net.URLClassLoader;
 import java.util.Locale;
 
-import org.apache.hivemind.ClassResolver;
-import org.apache.hivemind.Resource;
-import org.apache.hivemind.impl.DefaultClassResolver;
-import org.apache.hivemind.util.ClasspathResource;
+import org.apache.tapestry.Resource;
 import org.apache.tapestry.events.InvalidationEvent;
 import org.apache.tapestry.events.InvalidationListener;
 import org.apache.tapestry.events.UpdateEvent;
+import org.apache.tapestry.internal.ClasspathResource;
 import org.apache.tapestry.internal.parser.ComponentTemplate;
 import org.apache.tapestry.internal.parser.TemplateParser;
 import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.easymock.EasyMock;
-import org.testng.Assert;
 import org.testng.annotations.Test;
 
+import static org.easymock.EasyMock.isA;
+
 /**
  * @author Howard M. Lewis Ship
  */
@@ -41,7 +39,7 @@
 
     static public final String PATH = "org/apache/tapestry/internal/pageload";
 
-    public ClassResolver _resolver = new DefaultClassResolver();
+    private final ClassLoader _loader = Thread.currentThread().getContextClassLoader();
 
     @Test
     public void caching()
@@ -55,9 +53,7 @@
 
         replay();
 
-        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl();
-        source.setParser(parser);
-        source.setClassResolver(_resolver);
+        ComponentTemplateSource source = new ComponentTemplateSourceImpl(parser);
 
         String name = PACKAGE + ".Fred";
         assertSame(source.getTemplate(name, Locale.ENGLISH), template);
@@ -70,7 +66,7 @@
         verify();
     }
 
-    private void trainParseTemplate(TemplateParser parser, Resource resource,
+    protected final void trainParseTemplate(TemplateParser parser, Resource resource,
             ComponentTemplate template)
     {
         parser.parseTemplate(resource);
@@ -91,11 +87,7 @@
 
         f.createNewFile();
 
-        // A special resolver that knows about our special class path.
-
-        ClassResolver resolver = new DefaultClassResolver(loader);
-
-        Resource localized = new ClasspathResource(resolver, "baz/Biff.html");
+        Resource localized = new ClasspathResource(loader, "baz/Biff.html");
 
         TemplateParser parser = newTemplateParser();
         ComponentTemplate template = newComponentTemplate();
@@ -105,9 +97,7 @@
 
         replay();
 
-        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl();
-        source.setParser(parser);
-        source.setClassResolver(resolver);
+        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(loader, parser);
         source.addInvalidationListener(listener);
 
         String name = "baz.Biff";
@@ -128,7 +118,7 @@
 
         touch(f);
 
-        listener.objectWasInvalidated(EasyMock.isA(InvalidationEvent.class));
+        listener.objectWasInvalidated(isA(InvalidationEvent.class));
 
         replay();
 
@@ -166,9 +156,7 @@
 
         replay();
 
-        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl();
-        source.setParser(parser);
-        source.setClassResolver(_resolver);
+        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser);
 
         String name = PACKAGE + ".Fred";
         assertSame(source.getTemplate(name, Locale.ENGLISH), template);
@@ -192,18 +180,16 @@
 
         replay();
 
-        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl();
-        source.setParser(parser);
-        source.setClassResolver(_resolver);
+        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser);
 
         String name = PACKAGE + ".Barney";
-        Assert.assertNull(source.getTemplate(name, Locale.ENGLISH));
+        assertNull(source.getTemplate(name, Locale.ENGLISH));
 
         verify();
     }
 
     private Resource newResource(String name)
     {
-        return new ClasspathResource(_resolver, PATH + "/" + name);
+        return new ClasspathResource(_loader, PATH + "/" + name);
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/parser/TemplateParserImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/parser/TemplateParserImplTest.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/parser/TemplateParserImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/parser/TemplateParserImplTest.java Fri Aug  4 15:13:18 2006
@@ -14,17 +14,13 @@
 
 package org.apache.tapestry.internal.parser;
 
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertSame;
-
 import java.util.List;
 
-import org.apache.hivemind.ClassResolver;
-import org.apache.hivemind.Locatable;
-import org.apache.hivemind.Location;
-import org.apache.hivemind.Resource;
-import org.apache.hivemind.impl.DefaultClassResolver;
-import org.apache.hivemind.util.ClasspathResource;
+import org.apache.tapestry.Locatable;
+import org.apache.tapestry.Location;
+import org.apache.tapestry.Resource;
+import org.apache.tapestry.internal.ClasspathResource;
+import org.apache.tapestry.test.BaseTestCase;
 import org.testng.annotations.Configuration;
 import org.testng.annotations.Test;
 
@@ -34,12 +30,10 @@
  * 
  * @author Howard M. Lewis Ship
  */
-public class TemplateParserImplTest
+public class TemplateParserImplTest extends BaseTestCase
 {
     private TemplateParser _parser;
 
-    private ClassResolver _resolver = new DefaultClassResolver();
-
     /**
      * What's nice is that we get to set up a single parser for all the test methods to share, which
      * will actually do a very good job of simulating how a parser is used in production.
@@ -68,8 +62,9 @@
 
         String path = packageName.replace('.', '/') + "/" + file;
 
-        Resource resource = new ClasspathResource(_resolver, path);
-        return resource;
+        ClassLoader loader = getClass().getClassLoader();
+
+        return new ClasspathResource(loader, path);
     }
 
     private <T extends TemplateToken> T get(List l, int index)
@@ -81,7 +76,7 @@
 
     private void checkLine(Locatable l, int expectedLineNumber)
     {
-        assertEquals(l.getLocation().getLineNumber(), expectedLineNumber);
+        assertEquals(l.getLocation().getLine(), expectedLineNumber);
     }
 
     @Test

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java Fri Aug  4 15:13:18 2006
@@ -29,14 +29,15 @@
 import javassist.NotFoundException;
 
 import org.apache.commons.logging.Log;
-import org.apache.hivemind.util.PropertyUtils;
 import org.apache.tapestry.internal.InternalComponentResources;
 import org.apache.tapestry.internal.InternalModule;
+import org.apache.tapestry.internal.ioc.services.PropertyAccessImpl;
 import org.apache.tapestry.internal.services.UpdateListenerHub;
 import org.apache.tapestry.internal.transform.pages.BasicComponent;
 import org.apache.tapestry.internal.transform.pages.BasicSubComponent;
 import org.apache.tapestry.ioc.Registry;
 import org.apache.tapestry.ioc.RegistryBuilder;
+import org.apache.tapestry.ioc.services.PropertyAccess;
 import org.apache.tapestry.runtime.ComponentLifecycle;
 import org.apache.tapestry.test.BaseTestCase;
 import org.apache.tapestry.transform.TransformModule;
@@ -44,9 +45,6 @@
 import org.testng.annotations.Configuration;
 import org.testng.annotations.Test;
 
-import static java.lang.Thread.currentThread;
-import static org.apache.hivemind.util.PropertyUtils.read;
-
 /**
  * Tests for {@link org.apache.tapestry.internal.transform.ComponentInstantiatorSourceImpl}.
  * Several of these tests are more of the form of integration tests that instantiate the Tapestry
@@ -64,9 +62,11 @@
 
     private Registry _registry;
 
-    private ClassLoader _originalContextClassLoader = Thread.currentThread()
+    private final ClassLoader _originalContextClassLoader = Thread.currentThread()
             .getContextClassLoader();
 
+    private final PropertyAccess _access = new PropertyAccessImpl();
+
     @Test
     public void controlled_packages() throws Exception
     {
@@ -109,24 +109,24 @@
         // Should not be an instance, since it is loaded by a different class loader.
         Assert.assertFalse(BasicComponent.class.isInstance(target));
 
-        PropertyUtils.write(target, "value", "some default value");
-        assertEquals(read(target, "value"), "some default value");
+        _access.set(target, "value", "some default value");
+        assertEquals(_access.get(target, "value"), "some default value");
 
-        PropertyUtils.write(target, "retainedValue", "some retained value");
-        assertEquals(read(target, "retainedValue"), "some retained value");
+        _access.set(target, "retainedValue", "some retained value");
+        assertEquals(_access.get(target, "retainedValue"), "some retained value");
 
         // Setting a property value before pageDidLoad will cause that value
         // to be the default when the page detaches.
 
         target.containingPageDidLoad();
 
-        PropertyUtils.write(target, "value", "some transient value");
-        assertEquals(read(target, "value"), "some transient value");
+        _access.set(target, "value", "some transient value");
+        assertEquals(_access.get(target, "value"), "some transient value");
 
         target.containingPageDidDetach();
 
-        assertEquals(read(target, "value"), "some default value");
-        assertEquals(read(target, "retainedValue"), "some retained value");
+        assertEquals(_access.get(target, "value"), "some default value");
+        assertEquals(_access.get(target, "retainedValue"), "some retained value");
     }
 
     @Test
@@ -136,16 +136,16 @@
 
         target.containingPageDidLoad();
 
-        PropertyUtils.write(target, "value", "base class");
-        assertEquals(read(target, "value"), "base class");
+        _access.set(target, "value", "base class");
+        assertEquals(_access.get(target, "value"), "base class");
 
-        PropertyUtils.write(target, "intValue", 33);
-        assertEquals(read(target, "intValue"), 33);
+        _access.set(target, "intValue", 33);
+        assertEquals(_access.get(target, "intValue"), 33);
 
         target.containingPageDidDetach();
 
-        assertNull(read(target, "value"));
-        assertEquals(read(target, "intValue"), 0);
+        assertNull(_access.get(target, "value"));
+        assertEquals(_access.get(target, "intValue"), 0);
     }
 
     @Test
@@ -187,7 +187,7 @@
         ClassPool pool = new ClassPool();
         // Inside Maven Surefire, the system classpath is not sufficient to find all
         // the necessary files.
-        pool.appendClassPath(new LoaderClassPath(currentThread().getContextClassLoader()));
+        pool.appendClassPath(new LoaderClassPath(Thread.currentThread().getContextClassLoader()));
 
         CtClass ctClass = pool.makeClass(SYNTH_COMPONENT_CLASSNAME);
 

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/LocalizedNameGeneratorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/LocalizedNameGeneratorTest.java?rev=428904&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/LocalizedNameGeneratorTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/LocalizedNameGeneratorTest.java Fri Aug  4 15:13:18 2006
@@ -0,0 +1,70 @@
+// 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.util;
+
+import java.util.Locale;
+
+import org.apache.tapestry.test.BaseTestCase;
+import org.testng.annotations.Test;
+
+/**
+ * @author Howard M. Lewis Ship
+ */
+public class LocalizedNameGeneratorTest extends BaseTestCase
+{
+
+    private void run(String path, Locale locale, String... expected)
+    {
+        LocalizedNameGenerator g = new LocalizedNameGenerator(path, locale);
+
+        for (String s : expected)
+        {
+            assertTrue(g.more());
+            assertEquals(g.next(), s);
+        }
+
+        assertFalse(g.more());
+    }
+
+    @Test
+    public void locale_with_language_and_country()
+    {
+        run("basic.test", Locale.US, "basic_en_US.test", "basic_en.test", "basic.test");
+    }
+
+    @Test
+    public void locale_with_just_language()
+    {
+        run("noCountry.zap", Locale.FRENCH, "noCountry_fr.zap", "noCountry.zap");
+    }
+
+    @Test
+    public void locale_with_variant_but_no_country()
+    {
+
+        // The double-underscore is correct, it's a kind
+        // of placeholder for the null country.
+        // JDK1.3 always converts the locale to upper case. JDK 1.4
+        // does not. To keep this test happyt, we selected an all-uppercase
+        // locale.
+
+        run(
+                "fred.foo",
+                new Locale("en", "", "GEEK"),
+                "fred_en__GEEK.foo",
+                "fred_en.foo",
+                "fred.foo");
+    }
+}

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderTest.java?rev=428904&r1=428903&r2=428904&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderTest.java Fri Aug  4 15:13:18 2006
@@ -18,7 +18,6 @@
 import java.util.List;
 import java.util.jar.Manifest;
 
-import org.apache.hivemind.service.ClassFactory;
 import org.apache.tapestry.internal.test.InternalBaseTestCase;
 import org.testng.annotations.Test;
 
@@ -27,29 +26,6 @@
  */
 public class RegistryBuilderTest extends InternalBaseTestCase
 {
-    /**
-     * During testing, there is no manifest for tapestry-core (the manifest is created during JAR
-     * packaging). Therefore, building the default registry results in a completely empty registry.
-     */
-    @Test
-    public void no_modules()
-    {
-        Registry registry = IOCUtilities.buildDefaultRegistry();
-
-        try
-        {
-            // This isn't here because we don't know about tapestry.ioc module, because
-            // the manifest is not visible while building the tapestry-core jar.
-
-            registry.getService(IOCConstants.CLASS_FACTORY_SERVICE_ID, ClassFactory.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            // Expected.
-        }
-    }
-
     @Test
     public void sub_module()
     {