You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2008/02/24 02:30:36 UTC

svn commit: r630562 - in /tapestry/tapestry5/trunk: tapestry-core/src/main/java/org/apache/tapestry/corelib/components/ tapestry-core/src/main/java/org/apache/tapestry/internal/ tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ tapest...

Author: hlship
Date: Sat Feb 23 17:30:33 2008
New Revision: 630562

URL: http://svn.apache.org/viewvc?rev=630562&view=rev
Log:
TAPESTRY-1954: Move the ClassNameLocator service to the tapestry-ioc module

Added:
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImpl.java
      - copied, changed from r630031, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/ClassNameLocator.java
      - copied, changed from r630031, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImplTest.java
      - copied, changed from r630031, tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/LocationRenderer.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClientPersistentFieldStorageImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MessagesSourceImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceDigestGeneratorImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceStreamerImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/TapestryInternalUtilsTest.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java
    tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java
    tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/internal/hibernate/PackageNameHibernateConfigurer.java
    tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/util/InternalUtils.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/util/InternalUtilsTest.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java Sat Feb 23 17:30:33 2008
@@ -22,7 +22,6 @@
 import org.apache.tapestry.corelib.internal.FormSupportImpl;
 import org.apache.tapestry.corelib.mixins.RenderInformals;
 import org.apache.tapestry.dom.Element;
-import org.apache.tapestry.internal.TapestryInternalUtils;
 import org.apache.tapestry.internal.services.ComponentInvocationMap;
 import org.apache.tapestry.internal.services.ComponentResultProcessorWrapper;
 import org.apache.tapestry.internal.services.HeartbeatImpl;
@@ -31,6 +30,7 @@
 import org.apache.tapestry.internal.util.Base64ObjectOutputStream;
 import org.apache.tapestry.ioc.Location;
 import org.apache.tapestry.ioc.annotations.Inject;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.internal.util.TapestryException;
 import org.apache.tapestry.runtime.Component;
 import org.apache.tapestry.services.*;
@@ -49,10 +49,10 @@
  * <p/>
  * When the form is submitted, the component emits several notifications: first a {@link #PREPARE_FOR_SUBMIT}, then a
  * {@link #PREPARE}: these allow the page to update its state as necessary to prepare for the form submission, then
- * (after components enclosed by the form have operated), a {@link #VALIDATE_FORM}event is emitted, to allow for cross-form
- * validation. After that, either a {@link #SUCCESS} OR {@link #FAILURE} event (depending on whether the {@link
- * ValidationTracker} has recorded any errors). Lastly, a {@link #SUBMIT} event, for any listeners that care only about
- * form submission, regardless of success or failure.
+ * (after components enclosed by the form have operated), a {@link #VALIDATE_FORM}event is emitted, to allow for
+ * cross-form validation. After that, either a {@link #SUCCESS} OR {@link #FAILURE} event (depending on whether the
+ * {@link ValidationTracker} has recorded any errors). Lastly, a {@link #SUBMIT} event, for any listeners that care only
+ * about form submission, regardless of success or failure.
  * <p/>
  * For all of these notifications, the event context is derived from the <strong>context</strong> parameter. This
  * context is encoded into the form's action URI (the parameter is not read when the form is submitted, instead the
@@ -131,8 +131,8 @@
     private boolean _clientValidation;
 
     /**
-     * Binding the zone parameter will cause the form submission to be handled as an Ajax request that updates
-     * the indicated zone.  Often a Form will update the same zone that contains it.
+     * Binding the zone parameter will cause the form submission to be handled as an Ajax request that updates the
+     * indicated zone.  Often a Form will update the same zone that contains it.
      */
     @Parameter(defaultPrefix = TapestryConstants.LITERAL_BINDING_PREFIX)
     private String _zone;
@@ -300,7 +300,7 @@
         _tracker = _environment.pop(ValidationTracker.class);
     }
 
-    @SuppressWarnings({"unchecked", "InfiniteLoopStatement"})
+    @SuppressWarnings({ "unchecked", "InfiniteLoopStatement" })
     Object onAction(EventContext context) throws IOException
     {
         _tracker.clear();
@@ -366,7 +366,7 @@
             }
             finally
             {
-                TapestryInternalUtils.close(ois);
+                InternalUtils.close(ois);
             }
 
             heartbeat.end();

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/TapestryInternalUtils.java Sat Feb 23 17:30:33 2008
@@ -33,8 +33,6 @@
 import org.apache.tapestry.ioc.services.PropertyAdapter;
 import org.slf4j.Logger;
 
-import java.io.Closeable;
-import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.BitSet;
 import java.util.Collections;
@@ -72,18 +70,6 @@
         // Prevent instantiation.
     }
 
-    public static void close(Closeable stream)
-    {
-        if (stream != null) try
-        {
-            stream.close();
-        }
-        catch (IOException ex)
-        {
-            // Ignore.
-        }
-    }
-
     /**
      * Capitalizes the string, and inserts a space before each upper case character (or sequence of upper case
      * characters). Thus "userId" becomes "User Id", etc. Also, converts underscore into space (and capitalizes the
@@ -508,8 +494,8 @@
     }
 
     /**
-     * Encodes a string for inclusion in a URL.  Slashes and percents are converted
-     * to "%25" and "%2F" respectively, then the entire string is  URL encoded.
+     * Encodes a string for inclusion in a URL.  Slashes and percents are converted to "%25" and "%2F" respectively,
+     * then the entire string is  URL encoded.
      *
      * @param input string to include, may not be blank
      * @return encoded input
@@ -539,8 +525,8 @@
     private static final Pattern ENCODED_SLASH_PATTERN = Pattern.compile(ENCODED_SLASH, Pattern.CASE_INSENSITIVE);
 
     /**
-     * Encodes percent and slash characters in the string for later decoding via
-     * {@link #unescapePercentAndSlash(String)}.
+     * Encodes percent and slash characters in the string for later decoding via {@link
+     * #unescapePercentAndSlash(String)}.
      *
      * @param input string to encode
      * @return modified string
@@ -551,8 +537,7 @@
     }
 
     /**
-     * Used to decode certain escaped characters that are replaced
-     * when using {@link #encodeContext(String)}}.
+     * Used to decode certain escaped characters that are replaced when using {@link #encodeContext(String)}}.
      *
      * @param input a previously encoded string
      * @return the string with slash and percent characters restored

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/LocationRenderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/LocationRenderer.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/LocationRenderer.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/LocationRenderer.java Sat Feb 23 17:30:33 2008
@@ -16,12 +16,12 @@
 
 import org.apache.tapestry.MarkupWriter;
 import org.apache.tapestry.dom.Element;
-import org.apache.tapestry.internal.TapestryInternalUtils;
 import static org.apache.tapestry.ioc.IOCConstants.PERTHREAD_SCOPE;
 import org.apache.tapestry.ioc.Location;
 import org.apache.tapestry.ioc.Resource;
 import org.apache.tapestry.ioc.annotations.Scope;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.services.ObjectRenderer;
 
 import java.io.*;
@@ -29,10 +29,9 @@
 import java.util.Set;
 
 /**
- * Responsible for rendering a {@link Location}. It is designed to only perform the full output
- * (which includes a snippet of the source file) once per render. This requires the use of the
- * "perthread" scope (since the service tracks, internally, which locations have already been
- * rendered, to avoid repetition).
+ * Responsible for rendering a {@link Location}. It is designed to only perform the full output (which includes a
+ * snippet of the source file) once per render. This requires the use of the "perthread" scope (since the service
+ * tracks, internally, which locations have already been rendered, to avoid repetition).
  */
 @Scope(PERTHREAD_SCOPE)
 public class LocationRenderer implements ObjectRenderer<Location>
@@ -116,7 +115,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(reader);
+            InternalUtils.close(reader);
         }
 
         writer.end(); // div

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClientPersistentFieldStorageImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClientPersistentFieldStorageImpl.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClientPersistentFieldStorageImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClientPersistentFieldStorageImpl.java Sat Feb 23 17:30:33 2008
@@ -15,13 +15,13 @@
 package org.apache.tapestry.internal.services;
 
 import org.apache.tapestry.Link;
-import org.apache.tapestry.internal.TapestryInternalUtils;
 import org.apache.tapestry.internal.util.Base64ObjectInputStream;
 import org.apache.tapestry.internal.util.Base64ObjectOutputStream;
 import static org.apache.tapestry.ioc.IOCConstants.PERTHREAD_SCOPE;
 import org.apache.tapestry.ioc.annotations.Scope;
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.services.PersistentFieldChange;
 import org.apache.tapestry.services.Request;
 
@@ -234,7 +234,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(in);
+            InternalUtils.close(in);
         }
     }
 
@@ -278,7 +278,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(os);
+            InternalUtils.close(os);
         }
 
         _clientData = os.toBase64();

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java Sat Feb 23 17:30:33 2008
@@ -23,6 +23,7 @@
 import org.apache.tapestry.ioc.internal.util.ConcurrentBarrier;
 import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.internal.util.Invokable;
+import org.apache.tapestry.ioc.services.ClassNameLocator;
 import org.apache.tapestry.services.ComponentClassResolver;
 import org.apache.tapestry.services.LibraryMapping;
 import org.slf4j.Logger;

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MessagesSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MessagesSourceImpl.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MessagesSourceImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MessagesSourceImpl.java Sat Feb 23 17:30:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry.internal.services;
 
-import org.apache.tapestry.internal.TapestryInternalUtils;
 import org.apache.tapestry.internal.event.InvalidationEventHubImpl;
 import org.apache.tapestry.internal.util.MultiKey;
 import org.apache.tapestry.internal.util.URLChangeTracker;
 import org.apache.tapestry.ioc.Messages;
 import org.apache.tapestry.ioc.Resource;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.*;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.internal.util.LocalizedNameGenerator;
 
 import java.io.BufferedInputStream;
@@ -29,10 +29,10 @@
 import java.util.*;
 
 /**
- * A utility class that encapsulates all the logic for reading properties files and assembling
- * {@link Messages} from them, in accordance with extension rules and locale. This represents code
- * that was refactored out of {@link ComponentMessagesSourceImpl}. This class can be used as a base
- * class, though the existing code base uses it as a utility. Composition trumps inheritance!
+ * A utility class that encapsulates all the logic for reading properties files and assembling {@link Messages} from
+ * them, in accordance with extension rules and locale. This represents code that was refactored out of {@link
+ * ComponentMessagesSourceImpl}. This class can be used as a base class, though the existing code base uses it as a
+ * utility. Composition trumps inheritance!
  */
 public class MessagesSourceImpl extends InvalidationEventHubImpl implements MessagesSource
 {
@@ -44,14 +44,13 @@
     private final Map<MultiKey, Messages> _messagesByBundleIdAndLocale = newConcurrentMap();
 
     /**
-     * Keyed on bundle id and locale, the coooked properties include properties inherited from less
-     * locale-specific properties files, or inherited from parent bundles.
+     * Keyed on bundle id and locale, the coooked properties include properties inherited from less locale-specific
+     * properties files, or inherited from parent bundles.
      */
     private final Map<MultiKey, Map<String, String>> _cookedProperties = newConcurrentMap();
 
     /**
-     * Raw properties represent just the properties read from a specific properties file, in
-     * isolation.
+     * Raw properties represent just the properties read from a specific properties file, in isolation.
      */
     private final Map<Resource, Map<String, String>> _rawProperties = newConcurrentMap();
 
@@ -99,9 +98,9 @@
     }
 
     /**
-     * Assembles a set of properties appropriate for the bundle in question, and the desired locale.
-     * The properties reflect the properties of the bundles' parent (if any) for the locale,
-     * overalyed with any properties defined for this bundle and its locale.
+     * Assembles a set of properties appropriate for the bundle in question, and the desired locale. The properties
+     * reflect the properties of the bundles' parent (if any) for the locale, overalyed with any properties defined for
+     * this bundle and its locale.
      */
     private Map<String, String> findBundleProperties(MessagesBundle bundle, Locale locale)
     {
@@ -153,8 +152,8 @@
     }
 
     /**
-     * Returns a new map consisting of all the properties in previous overlayed with all the
-     * properties in rawProperties. If rawProperties is empty, returns just the base map.
+     * Returns a new map consisting of all the properties in previous overlayed with all the properties in
+     * rawProperties. If rawProperties is empty, returns just the base map.
      */
     private Map<String, String> extend(Map<String, String> base, Map<String, String> rawProperties)
     {
@@ -217,7 +216,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(is);
+            InternalUtils.close(is);
         }
 
         for (Map.Entry e : p.entrySet())

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceDigestGeneratorImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceDigestGeneratorImpl.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceDigestGeneratorImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceDigestGeneratorImpl.java Sat Feb 23 17:30:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -15,8 +15,8 @@
 package org.apache.tapestry.internal.services;
 
 import org.apache.commons.codec.binary.Hex;
-import org.apache.tapestry.internal.TapestryInternalUtils;
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.services.ResourceDigestGenerator;
 
 import java.io.BufferedInputStream;
@@ -67,7 +67,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(stream);
+            InternalUtils.close(stream);
         }
     }
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceStreamerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceStreamerImpl.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceStreamerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ResourceStreamerImpl.java Sat Feb 23 17:30:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry.internal.services;
 
-import org.apache.tapestry.internal.TapestryInternalUtils;
 import org.apache.tapestry.ioc.Resource;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.services.Response;
 
 import java.io.BufferedInputStream;
@@ -104,7 +104,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(is);
+            InternalUtils.close(is);
         }
 
     }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StreamResponseResultProcessor.java Sat Feb 23 17:30:33 2008
@@ -15,7 +15,7 @@
 package org.apache.tapestry.internal.services;
 
 import org.apache.tapestry.StreamResponse;
-import org.apache.tapestry.internal.TapestryInternalUtils;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.services.ComponentEventResultProcessor;
 import org.apache.tapestry.services.Response;
 
@@ -67,8 +67,8 @@
         }
         finally
         {
-            TapestryInternalUtils.close(is);
-            TapestryInternalUtils.close(os);
+            InternalUtils.close(is);
+            InternalUtils.close(os);
         }
 
     }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java Sat Feb 23 17:30:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2008 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,31 +14,28 @@
 
 package org.apache.tapestry.services;
 
-import org.apache.tapestry.internal.services.ClassNameLocator;
+import org.apache.tapestry.ioc.services.ClassNameLocator;
 
 /**
- * Resolves page names and component types to fully qualified class names. Pages and components may
- * be provided by the application or inside a <em>mapped package</em>. Page names often appear
- * inside URLs, and component types often appear in component template (when specifying the type of
- * an embedded component).
+ * Resolves page names and component types to fully qualified class names. Pages and components may be provided by the
+ * application or inside a <em>mapped package</em>. Page names often appear inside URLs, and component types often
+ * appear in component template (when specifying the type of an embedded component).
  * <p/>
- * The service is configured using a collection of {@link LibraryMapping}s. Each mapping maps a
- * prefix, such as "core" to a root package name, such as "org.apache.tapestry.corelib". The root
- * package is expected to have sub-packages: "pages", "components", "mixins" and "base" ("base" is
- * for base classes).
+ * The service is configured using a collection of {@link LibraryMapping}s. Each mapping maps a prefix, such as "core"
+ * to a root package name, such as "org.apache.tapestry.corelib". The root package is expected to have sub-packages:
+ * "pages", "components", "mixins" and "base" ("base" is for base classes).
  * <p/>
- * The resolver performs a search of the classpath (via {@link ClassNameLocator}), to build up a set
- * of case-insensitive maps from logical page name, component type, or mixin type to fully qualified
- * class name.
+ * The resolver performs a search of the classpath (via {@link ClassNameLocator}), to build up a set of case-insensitive
+ * maps from logical page name, component type, or mixin type to fully qualified class name.
  * <p/>
- * Certain ambiguities occur if mapped packages overlap, either in terms of the the prefixes or the
- * package names. Keep things clearly seperate to avoid lookup problems.
+ * Certain ambiguities occur if mapped packages overlap, either in terms of the the prefixes or the package names. Keep
+ * things clearly seperate to avoid lookup problems.
  */
 public interface ComponentClassResolver
 {
     /**
-     * Converts a logical page name (such as might be encoded into a URL) into a fully qualified
-     * class name. The case of the page name is irrelevant.
+     * Converts a logical page name (such as might be encoded into a URL) into a fully qualified class name. The case of
+     * the page name is irrelevant.
      *
      * @param logicalPageName logical page name
      * @return fully qualified class name for the page
@@ -47,8 +44,7 @@
     String resolvePageNameToClassName(String logicalPageName);
 
     /**
-     * For a particular path, determines if the path is a logical page name. The check is case
-     * insensitive.
+     * For a particular path, determines if the path is a logical page name. The check is case insensitive.
      *
      * @param pageName potential logical page name
      * @return true if the page name is valid
@@ -56,9 +52,8 @@
     boolean isPageName(String pageName);
 
     /**
-     * Converts a fully qualified page class name into a logical class name (often, for inclusion as
-     * part of the URI). This value may later be passed to
-     * {@link #resolvePageNameToClassName(String)}.
+     * Converts a fully qualified page class name into a logical class name (often, for inclusion as part of the URI).
+     * This value may later be passed to {@link #resolvePageNameToClassName(String)}.
      *
      * @param pageClassName fully qualified name of a page class
      * @return equivalent logical page name
@@ -67,16 +62,16 @@
     String resolvePageClassNameToPageName(String pageClassName);
 
     /**
-     * Returns the canonical form of a logical page name. The canonical form uses character case
-     * matching the underlying class name.
+     * Returns the canonical form of a logical page name. The canonical form uses character case matching the underlying
+     * class name.
      *
      * @throws IllegalArgumentException if the page name does not match a logical page name
      */
     String canonicalizePageName(String pageName);
 
     /**
-     * Converts a component type (a logical component name such as might be used inside a template
-     * or annotation) into a fully qualified class name. Case is ignored in resolving the name.
+     * Converts a component type (a logical component name such as might be used inside a template or annotation) into a
+     * fully qualified class name. Case is ignored in resolving the name.
      *
      * @param componentType a logical component type
      * @return fully qualified class name
@@ -85,8 +80,8 @@
     String resolveComponentTypeToClassName(String componentType);
 
     /**
-     * Converts a logical mixin type (as with component types) into a fully qualified class name.
-     * Case is ignored when resolving the name.
+     * Converts a logical mixin type (as with component types) into a fully qualified class name. Case is ignored when
+     * resolving the name.
      *
      * @param mixinType a logical mixin type
      * @return fully qualified class name

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java Sat Feb 23 17:30:33 2008
@@ -101,7 +101,6 @@
         binder.bind(LinkFactory.class, LinkFactoryImpl.class);
         binder.bind(LocalizationSetter.class, LocalizationSetterImpl.class);
         binder.bind(PageElementFactory.class, PageElementFactoryImpl.class);
-        binder.bind(ClassNameLocator.class, ClassNameLocatorImpl.class);
         binder.bind(RequestExceptionHandler.class, DefaultRequestExceptionHandler.class);
         binder.bind(ResourceStreamer.class, ResourceStreamerImpl.class);
         binder.bind(ClientPersistentFieldStorage.class, ClientPersistentFieldStorageImpl.class);

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java Sat Feb 23 17:30:33 2008
@@ -20,7 +20,6 @@
 import org.apache.tapestry.annotations.Path;
 import org.apache.tapestry.beaneditor.BeanModel;
 import org.apache.tapestry.beaneditor.PropertyModel;
-import org.apache.tapestry.internal.TapestryInternalUtils;
 import org.apache.tapestry.internal.services.MapMessages;
 import org.apache.tapestry.internal.services.MarkupWriterImpl;
 import static org.apache.tapestry.internal.test.CodeEq.codeEq;
@@ -28,6 +27,7 @@
 import org.apache.tapestry.ioc.annotations.Inject;
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.test.IOCTestCase;
 import org.apache.tapestry.model.ComponentModel;
 import org.apache.tapestry.model.EmbeddedComponentModel;
@@ -932,7 +932,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(is);
+            InternalUtils.close(is);
         }
 
         Map<String, String> map = CollectionFactory.newCaseInsensitiveMap();

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/TapestryInternalUtilsTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/TapestryInternalUtilsTest.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/TapestryInternalUtilsTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/TapestryInternalUtilsTest.java Sat Feb 23 17:30:33 2008
@@ -30,8 +30,6 @@
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import java.io.Closeable;
-import java.io.IOException;
 import java.util.*;
 import java.util.regex.Pattern;
 
@@ -55,40 +53,6 @@
         _classFactory = null;
     }
 
-    @Test
-    public void close_null_is_noop()
-    {
-        TapestryInternalUtils.close(null);
-    }
-
-    @Test
-    public void close_success() throws Exception
-    {
-        Closeable c = newMock(Closeable.class);
-
-        c.close();
-
-        replay();
-
-        TapestryInternalUtils.close(c);
-
-        verify();
-    }
-
-    @Test
-    public void close_ignores_exceptions() throws Exception
-    {
-        Closeable c = newMock(Closeable.class);
-
-        c.close();
-        setThrowable(new IOException());
-
-        replay();
-
-        TapestryInternalUtils.close(c);
-
-        verify();
-    }
 
     @Test(dataProvider = "to_user_presentable")
     public void to_user_presentable(String input, String expected)
@@ -99,8 +63,8 @@
     @DataProvider(name = "to_user_presentable")
     public Object[][] to_user_presentable_data()
     {
-        return new Object[][]{{"hello", "Hello"}, {"userId", "User Id"}, {"useHTML", "Use HTML"},
-                              {"underscored_name", "Underscored Name"},};
+        return new Object[][] { { "hello", "Hello" }, { "userId", "User Id" }, { "useHTML", "Use HTML" },
+                { "underscored_name", "Underscored Name" }, };
     }
 
     @Test

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java Sat Feb 23 17:30:33 2008
@@ -15,6 +15,7 @@
 package org.apache.tapestry.internal.services;
 
 import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.ioc.services.ClassNameLocator;
 import org.apache.tapestry.services.ComponentClassResolver;
 import org.apache.tapestry.services.LibraryMapping;
 import org.easymock.EasyMock;

Modified: tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java Sat Feb 23 17:30:33 2008
@@ -19,7 +19,6 @@
 import org.apache.tapestry.internal.hibernate.HibernateSessionManagerImpl;
 import org.apache.tapestry.internal.hibernate.HibernateSessionSourceImpl;
 import org.apache.tapestry.internal.hibernate.PackageNameHibernateConfigurer;
-import org.apache.tapestry.internal.services.ClassNameLocator;
 import org.apache.tapestry.ioc.Configuration;
 import static org.apache.tapestry.ioc.IOCConstants.PERTHREAD_SCOPE;
 import org.apache.tapestry.ioc.OrderedConfiguration;
@@ -27,6 +26,7 @@
 import org.apache.tapestry.ioc.annotations.InjectService;
 import org.apache.tapestry.ioc.annotations.Scope;
 import org.apache.tapestry.ioc.annotations.Symbol;
+import org.apache.tapestry.ioc.services.ClassNameLocator;
 import org.apache.tapestry.ioc.services.PerthreadManager;
 import org.apache.tapestry.ioc.services.PropertyShadowBuilder;
 import org.apache.tapestry.services.AliasContribution;

Modified: tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/internal/hibernate/PackageNameHibernateConfigurer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/internal/hibernate/PackageNameHibernateConfigurer.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/internal/hibernate/PackageNameHibernateConfigurer.java (original)
+++ tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry/internal/hibernate/PackageNameHibernateConfigurer.java Sat Feb 23 17:30:33 2008
@@ -16,8 +16,8 @@
 
 import org.apache.tapestry.hibernate.HibernateConfigurer;
 import org.apache.tapestry.hibernate.HibernateEntityPackageManager;
-import org.apache.tapestry.internal.services.ClassNameLocator;
 import org.apache.tapestry.ioc.internal.util.Defense;
+import org.apache.tapestry.ioc.services.ClassNameLocator;
 import org.hibernate.cfg.AnnotationConfiguration;
 import org.hibernate.cfg.Configuration;
 

Modified: tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java Sat Feb 23 17:30:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2007 The Apache Software Foundation
+// Copyright 2007, 2008 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,14 +14,10 @@
 
 package org.apache.tapestry.internal.hibernate;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 import org.apache.tapestry.hibernate.HibernateConfigurer;
 import org.apache.tapestry.hibernate.HibernateEntityPackageManager;
 import org.apache.tapestry.hibernate.HibernateSessionSource;
-import org.apache.tapestry.internal.services.ClassNameLocatorImpl;
+import org.apache.tapestry.ioc.internal.services.ClassNameLocatorImpl;
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry.test.TapestryTestCase;
 import org.example.app0.entities.User;
@@ -31,6 +27,10 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.annotations.Test;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 
 public class HibernateSessionSourceImplTest extends TapestryTestCase
 {

Copied: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImpl.java (from r630031, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImpl.java?p2=tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImpl.java&p1=tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java&r1=630031&r2=630562&rev=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImpl.java Sat Feb 23 17:30:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2007 The Apache Software Foundation
+// Copyright 2007, 2008 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,10 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal.services;
+package org.apache.tapestry.ioc.internal.services;
 
-import org.apache.tapestry.internal.TapestryInternalUtils;
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
+import org.apache.tapestry.ioc.services.ClassNameLocator;
 import org.apache.tapestry.ioc.util.Stack;
 
 import java.io.*;
@@ -47,8 +48,7 @@
     }
 
     /**
-     * Synchronization should not be necessary, but perhaps the underlying ClassLoader's are
-     * sensitive to threading.
+     * Synchronization should not be necessary, but perhaps the underlying ClassLoader's are sensitive to threading.
      */
     public synchronized Collection<String> locateClassNames(String packageName)
     {
@@ -128,8 +128,7 @@
     }
 
     /**
-     * Check whether container supports opening a stream on a dir/package to get a list of its
-     * contents.
+     * Check whether container supports opening a stream on a dir/package to get a list of its contents.
      *
      * @param packageURL
      * @return
@@ -152,7 +151,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(is);
+            InternalUtils.close(is);
         }
     }
 
@@ -219,7 +218,7 @@
         }
         finally
         {
-            TapestryInternalUtils.close(lineReader);
+            InternalUtils.close(lineReader);
         }
 
     }
@@ -247,8 +246,7 @@
     }
 
     /**
-     * Scan a dir for classes. Will recursively look in the supplied directory and all sub
-     * directories.
+     * Scan a dir for classes. Will recursively look in the supplied directory and all sub directories.
      *
      * @param packageName         Name of package that this directory corresponds to.
      * @param dir                 Dir to scan for clases.
@@ -276,10 +274,9 @@
     }
 
     /**
-     * For URLs to JARs that do not use JarURLConnection - allowed by the servlet spec - attempt to
-     * produce a JarFile object all the same. Known servlet engines that function like this include
-     * Weblogic and OC4J. This is not a full solution, since an unpacked WAR or EAR will not have
-     * JAR "files" as such.
+     * For URLs to JARs that do not use JarURLConnection - allowed by the servlet spec - attempt to produce a JarFile
+     * object all the same. Known servlet engines that function like this include Weblogic and OC4J. This is not a full
+     * solution, since an unpacked WAR or EAR will not have JAR "files" as such.
      *
      * @param url URL of jar
      * @return JarFile or null

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/util/InternalUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/util/InternalUtils.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/util/InternalUtils.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/util/InternalUtils.java Sat Feb 23 17:30:33 2008
@@ -24,6 +24,8 @@
 import static org.apache.tapestry.ioc.internal.util.Defense.notBlank;
 import org.apache.tapestry.ioc.services.ClassFactory;
 
+import java.io.Closeable;
+import java.io.IOException;
 import java.lang.annotation.Annotation;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -520,5 +522,17 @@
     public static void validateMarkerAnnotations(Class[] markerClasses)
     {
         for (Class markerClass : markerClasses) validateMarkerAnnotation(markerClass);
+    }
+
+    public static void close(Closeable stream)
+    {
+        if (stream != null) try
+        {
+            stream.close();
+        }
+        catch (IOException ex)
+        {
+            // Ignore.
+        }
     }
 }

Copied: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/ClassNameLocator.java (from r630031, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/ClassNameLocator.java?p2=tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/ClassNameLocator.java&p1=tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java&r1=630031&r2=630562&rev=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/ClassNameLocator.java Sat Feb 23 17:30:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2007 The Apache Software Foundation
+// Copyright 2007, 2008 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,20 +12,19 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal.services;
+package org.apache.tapestry.ioc.services;
 
 import java.util.Collection;
 
 /**
- * Scans the classpath for component classes, classes within particular packages.
+ * Scans the classpath for top-level classes within particular packages.
  */
 public interface ClassNameLocator
 {
     /**
-     * Searches for all component classes under the given package name. This consists of all
-     * top-level classes in the indicated package (or a sub-package), but excludes inner classes. No
-     * other filtering (beyond inner classes) occurs, so there's no guarantee that the class names
-     * returned are public (for example)
+     * Searches for all classes under the given package name. This consists of all top-level classes in the indicated
+     * package (or any sub-package), but excludes inner classes. No other filtering (beyond inner classes) occurs, so
+     * there's no guarantee that the class names returned are public (for example).
      *
      * @param packageName
      * @return fully qualified class names

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java Sat Feb 23 17:30:33 2008
@@ -53,6 +53,7 @@
                 .withMarker(FactoryDefaults.class);
         binder.bind(Runnable.class, RegistryStartup.class).withId("RegistryStartup");
         binder.bind(MasterObjectProvider.class, MasterObjectProviderImpl.class);
+        binder.bind(ClassNameLocator.class, ClassNameLocatorImpl.class);
     }
 
     /**
@@ -100,10 +101,10 @@
      * Byte</li> <li>Long to Short</li> <li>Long to Integer</li> <li>Double to Long</li> <li>Double to Float</li>
      * <li>Float to Double</li> <li>Long to Double</li> <li>String to Boolean ("false" is always false, other non-blank
      * strings are true)</li> <li>Long to Boolean (true if long value is non zero)</li> <li>Null to Boolean (always
-     * false)</li> <li>Collection to Boolean (false if empty)</li> <li>Object[] to
-     * List</li> <li>primitive[] to List</li> <li>Object to List (by wrapping as a singleton list)</li>  <li>String to File</li>
-     * <li>String to {@link org.apache.tapestry.ioc.util.TimeInterval}</li>
-     * <li>{@link org.apache.tapestry.ioc.util.TimeInterval} to Long</li> </ul>
+     * false)</li> <li>Collection to Boolean (false if empty)</li> <li>Object[] to List</li> <li>primitive[] to
+     * List</li> <li>Object to List (by wrapping as a singleton list)</li>  <li>String to File</li> <li>String to {@link
+     * org.apache.tapestry.ioc.util.TimeInterval}</li> <li>{@link org.apache.tapestry.ioc.util.TimeInterval} to
+     * Long</li> </ul>
      */
     @SuppressWarnings("unchecked")
     public static void contributeTypeCoercer(Configuration<CoercionTuple> configuration)

Copied: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImplTest.java (from r630031, tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImplTest.java?p2=tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImplTest.java&p1=tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java&r1=630031&r2=630562&rev=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/services/ClassNameLocatorImplTest.java Sat Feb 23 17:30:33 2008
@@ -1,4 +1,4 @@
-// Copyright 2007 The Apache Software Foundation
+// Copyright 2007, 2008 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,10 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal.services;
+package org.apache.tapestry.ioc.internal.services;
 
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry.ioc.internal.util.InternalUtils;
+import org.apache.tapestry.ioc.services.ClassNameLocator;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
@@ -23,14 +24,14 @@
 import java.util.Set;
 
 /**
- * Tricky to test, since the code is literally hunting around inside its own brain. There's a lot of
- * room for unintended consequences here.
+ * Tricky to test, since the code is literally hunting around inside its own brain. There's a lot of room for unintended
+ * consequences here.
  */
 public class ClassNameLocatorImplTest extends Assert
 {
     /**
-     * Use various packages in tapestry-ioc to test this, as those don't change unexpectedly(-ish)
-     * and we know they are in a JAR on the classpath.
+     * Use various packages in javassist to test this, as those don't change unexpectedly(-ish) and we know they are in
+     * a JAR on the classpath.
      */
     @Test
     public void classes_in_jar_file()
@@ -38,19 +39,17 @@
         ClassNameLocator locator = new ClassNameLocatorImpl();
 
         Collection<String> names = locator
-                .locateClassNames("org.apache.tapestry.ioc.internal.util");
+                .locateClassNames("javassist.util");
 
         assertInList(
                 names,
-                "org.apache.tapestry.ioc.internal.util",
-                "MessagesImpl",
-                "LocalizedNameGenerator",
-                "IdAllocator");
+                "javassist.util",
+                "HotSwapper",
+                "Trigger");
         assertNotInList(
                 names,
-                "org.apache.tapestry.ioc.internal.util",
-                "Orderer$1",
-                "InheritanceSearch$State");
+                "javassist.util",
+                "Orderer$1");
     }
 
     @Test
@@ -58,19 +57,18 @@
     {
         ClassNameLocator locator = new ClassNameLocatorImpl();
 
-        Collection<String> names = locator.locateClassNames("org.apache.tapestry.ioc");
+        Collection<String> names = locator.locateClassNames("javassist.util");
 
         assertInList(
                 names,
-                "org.apache.tapestry.ioc",
-                "internal.Module",
-                "internal.util.MessagesImpl");
+                "javassist.util",
+                "proxy.ProxyFactory");
 
     }
 
     /**
-     * This time, we use a selection of classes from tapestry-core, since those will never be
-     * packaged inside a JAR at this time.
+     * This time, we use a selection of classes from tapestry-ioc, since those will never be packaged inside a JAR at
+     * this time.
      */
 
     @Test
@@ -79,11 +77,11 @@
         ClassNameLocator locator = new ClassNameLocatorImpl();
 
         Collection<String> names = locator
-                .locateClassNames("org.apache.tapestry.corelib.components");
+                .locateClassNames("org.apache.tapestry.ioc.services");
 
-        assertInList(names, "org.apache.tapestry.corelib.components", "ActionLink", "Label");
+        assertInList(names, "org.apache.tapestry.ioc.services", "SymbolSource", "TapestryIOCModule");
 
-        assertNotInList(names, "org.apache.tapestry.corelib", "Label$1", "Loop$1");
+        assertNotInList(names, "org.apache.tapestry.ioc.services", "TapestryIOCModule$1");
     }
 
     @Test
@@ -91,16 +89,15 @@
     {
         ClassNameLocator locator = new ClassNameLocatorImpl();
 
-        Collection<String> names = locator.locateClassNames("org.apache.tapestry.corelib");
+        Collection<String> names = locator.locateClassNames("org.apache.tapestry");
 
         assertInList(
                 names,
-                "org.apache.tapestry.corelib",
-                "components.ActionLink",
-                "base.AbstractField",
-                "mixins.RenderInformals");
+                "org.apache.tapestry",
+                "ioc.Orderable",
+                "ioc.services.ChainBuilder");
 
-        assertNotInList(names, "org.apache.tapestry.corelib", "components.Label$1");
+        assertNotInList(names, "org.apache.tapestry.ioc", "services.TapestryIOCModule$1");
     }
 
     void assertInList(Collection<String> names, String packageName, String... classNames)

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/util/InternalUtilsTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/util/InternalUtilsTest.java?rev=630562&r1=630561&r2=630562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/util/InternalUtilsTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/util/InternalUtilsTest.java Sat Feb 23 17:30:33 2008
@@ -23,6 +23,8 @@
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import java.io.Closeable;
+import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.*;
 
@@ -78,7 +80,7 @@
     @Test
     public void array_size_when_non_null()
     {
-        Object[] array = {1, 2, 3};
+        Object[] array = { 1, 2, 3 };
 
         assertEquals(InternalUtils.size(array), 3);
     }
@@ -92,8 +94,8 @@
     @DataProvider(name = "memberPrefixData")
     public Object[][] memberPrefixData()
     {
-        return new Object[][]{{"simple", "simple"}, {"_name", "name"}, {"$name", "name"},
-                              {"$_$__$__$_$___$_$_$_$$name$", "name$"}};
+        return new Object[][] { { "simple", "simple" }, { "_name", "name" }, { "$name", "name" },
+                { "$_$__$__$_$___$_$_$_$$name$", "name$" } };
     }
 
     @Test
@@ -152,7 +154,8 @@
     @DataProvider(name = "capitalize_inputs")
     public Object[][] capitalize_inputs()
     {
-        return new Object[][]{{"hello", "Hello"}, {"Goodbye", "Goodbye"}, {"", ""}, {"a", "A"}, {"A", "A"}};
+        return new Object[][] { { "hello", "Hello" }, { "Goodbye", "Goodbye" }, { "", "" }, { "a", "A" },
+                { "A", "A" } };
     }
 
     @Test
@@ -297,7 +300,7 @@
 
         try
         {
-            InternalUtils.validateMarkerAnnotations(new Class[]{Inject.class, NotRetainedRuntime.class});
+            InternalUtils.validateMarkerAnnotations(new Class[] { Inject.class, NotRetainedRuntime.class });
             unreachable();
         }
         catch (IllegalArgumentException ex)
@@ -318,4 +321,40 @@
     {
         assertEquals(InternalUtils.joinSorted(Collections.emptyList()), "(none)");
     }
+
+    @Test
+    public void close_null_is_noop()
+    {
+        InternalUtils.close(null);
+    }
+
+    @Test
+    public void close_success() throws Exception
+    {
+        Closeable c = newMock(Closeable.class);
+
+        c.close();
+
+        replay();
+
+        InternalUtils.close(c);
+
+        verify();
+    }
+
+    @Test
+    public void close_ignores_exceptions() throws Exception
+    {
+        Closeable c = newMock(Closeable.class);
+
+        c.close();
+        setThrowable(new IOException());
+
+        replay();
+
+        InternalUtils.close(c);
+
+        verify();
+    }
+
 }