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/11/21 08:46:04 UTC

svn commit: r477546 [1/2] - in /tapestry/tapestry5/tapestry-ioc/trunk: .settings/ src/main/java/org/apache/tapestry/ioc/ src/main/java/org/apache/tapestry/ioc/annotations/ src/main/java/org/apache/tapestry/ioc/def/ src/main/java/org/apache/tapestry/ioc...

Author: hlship
Date: Mon Nov 20 23:45:58 2006
New Revision: 477546

URL: http://svn.apache.org/viewvc?view=rev&rev=477546
Log:
Still kind of midway through this extraction of code into tapestry-ioc.

Added:
    tapestry/tapestry5/tapestry-ioc/trunk/.settings/
    tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.core.prefs
    tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.ui.prefs
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/BaseLocatable.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/BaseLocatable.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Configuration.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/Configuration.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/IOCConstants.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/IOCConstants.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/IdMatcher.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/IdMatcher.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Locatable.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/Locatable.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Location.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/Location.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/LogSource.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/LogSource.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/MappedConfiguration.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/MappedConfiguration.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/MessageFormatter.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/MessageFormatter.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Messages.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/Messages.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/ModuleBuilderSource.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/ModuleBuilderSource.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/ObjectCreator.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/ObjectCreator.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/ObjectProvider.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/ObjectProvider.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Orderable.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/Orderable.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/OrderedConfiguration.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/OrderedConfiguration.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Registry.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/Registry.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/Resource.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/Resource.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/ServiceBuilderResources.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/ServiceBuilderResources.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/ServiceDecorator.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/ServiceDecorator.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/ServiceLifecycle.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/ServiceLifecycle.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/ServiceLocator.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/ServiceLocator.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/ServiceResources.java
      - copied unchanged from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/ServiceResources.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/annotations/
      - copied from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/annotations/
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/def/
      - copied from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/def/
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ConfigurationType.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ConfigurationType.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ContributionDefImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ContributionDefImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/DecoratorDefImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/DecoratorDefImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/DefaultModuleDefImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/DefaultModuleDefImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/EagerLoadServiceProxy.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/EagerLoadServiceProxy.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/GlobPatternMatcher.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/GlobPatternMatcher.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java
      - copied, changed from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCProxyUtilities.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCProxyUtilities.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/IdMatcherImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/IdMatcherImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/InterceptorStackBuilder.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/InterceptorStackBuilder.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/InternalRegistry.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/InternalRegistry.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/LifecycleWrappedServiceCreator.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/LifecycleWrappedServiceCreator.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/LogSourceImpl.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/LogSourceImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/MatchType.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/MatchType.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/Module.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/Module.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ModuleImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ModuleImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/OneShotServiceCreator.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/OneShotServiceCreator.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/OrIdMatcher.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/OrIdMatcher.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceBuilderMethodInvoker.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceBuilderMethodInvoker.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceDecoratorImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceDecoratorImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceDefImpl.java
      - copied unchanged from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceDefImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceLocatorImpl.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceLocatorImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceResourcesImpl.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ServiceResourcesImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/SingletonServiceLifecycle.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/SingletonServiceLifecycle.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ValidatingConfigurationWrapper.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ValidatingConfigurationWrapper.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ValidatingMappedConfigurationWrapper.java
      - copied unchanged from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ValidatingMappedConfigurationWrapper.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/ValidatingOrderedConfigurationWrapper.java
      - copied unchanged from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/ValidatingOrderedConfigurationWrapper.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/
      - copied from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/AbstractFab.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/AbstractFab.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/BridgeBuilder.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/BridgeBuilder.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ClassFabImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ClassFabImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ClassFactoryClassPool.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ClassFactoryClassPool.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ClassPropertyAdapterImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ClassPropertyAdapterImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/CompoundCoercion.java
      - copied, changed from r477464, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CompoundCoercion.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ExceptionInfoImpl.java
      - copied unchanged from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ExceptionInfoImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ExceptionTrackerImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ExceptionTrackerImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/PropertyAccessImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/PropertyAccessImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/PropertyAdapterImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/PropertyAdapterImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/RegistryShutdownHubImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/RegistryShutdownHubImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceLogger.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceLogger.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/StrategyBuilderImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/StrategyBuilderImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ThreadCleanupHubImpl.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ThreadCleanupHubImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java
      - copied, changed from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/
      - copied from r477471, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/ClasspathResource.java
      - copied unchanged from r477478, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/ClasspathResource.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/CollectionFactory.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/CollectionFactory.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/ConcurrentBarrier.java
      - copied unchanged from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/ConcurrentBarrier.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/Defense.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/Defense.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/DependencyNode.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/DependencyNode.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/IdAllocator.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/IdAllocator.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/InheritanceSearch.java
      - copied, changed from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/InheritanceSearch.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/InternalUtils.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/InternalUtils.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/Invokable.java
      - copied unchanged from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/Invokable.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/LocalizedNameGenerator.java
      - copied unchanged from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/LocalizedNameGenerator.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/LocationImpl.java
      - copied, changed from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessageFormatterImpl.java
      - copied, changed from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessageFormatterImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessagesImpl.java
      - copied, changed from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/OneShotLock.java
      - copied unchanged from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/OneShotLock.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/Orderer.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/Orderer.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/TapestryException.java
      - copied, changed from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java
      - copied, changed from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/
      - copied from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/ClassFabUtils.java
      - copied, changed from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/ClassFabUtils.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/MethodIterator.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/MethodIterator.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/MethodSignature.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/MethodSignature.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/StrategyBuilder.java
      - copied unchanged from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/StrategyBuilder.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
      - copied, changed from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/test/
      - copied from r477478, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/test/
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/util/
      - copied from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/util/
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/Bar.java
      - copied, changed from r477464, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/Bar.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/BarImpl.java
      - copied, changed from r477464, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/BarImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/Foo.java
      - copied, changed from r477464, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/Foo.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/FooBar.java
      - copied, changed from r477464, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/FooBar.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/FooBarImpl.java
      - copied, changed from r477464, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/FooBarImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/FooImpl.java
      - copied, changed from r477464, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/FooImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/InheritanceSearchTest.java
      - copied, changed from r477483, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/InheritanceSearchTest.java
Modified:
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/util/StrategyRegistry.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/util/UtilMessages.java

Added: tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.core.prefs?view=auto&rev=477546
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.core.prefs (added)
+++ tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.core.prefs Mon Nov 20 23:45:58 2006
@@ -0,0 +1,256 @@
+#Mon Nov 20 20:08:12 PST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=_
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=48
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines=true
+org.eclipse.jdt.core.formatter.comment.format_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=true
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=100
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

Added: tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.ui.prefs
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.ui.prefs?view=auto&rev=477546
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.ui.prefs (added)
+++ tapestry/tapestry5/tapestry-ioc/trunk/.settings/org.eclipse.jdt.ui.prefs Mon Nov 20 23:45:58 2006
@@ -0,0 +1,10 @@
+#Mon Nov 20 20:08:12 PST 2006
+eclipse.preferences.version=1
+formatter_profile=_Tapestry Project
+formatter_settings_version=10
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates/>

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java (from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java&r1=477473&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/IOCMessages.java Mon Nov 20 23:45:58 2006
@@ -15,19 +15,19 @@
 package org.apache.tapestry.ioc.internal;
 
 import static org.apache.tapestry.ioc.internal.util.InternalUtils.asString;
-import static org.apache.tapestry.ioc.services.ClassFabUtils.getJavaClassName;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry.internal.MessagesImpl;
+import static org.apache.tapestry.ioc.services.ClassFabUtils.getJavaClassName;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.tapestry.ioc.Messages;
-import org.apache.tapestry.ioc.def.ContributionDef;
-import org.apache.tapestry.ioc.def.ServiceDef;
+import org.apache.tapestry.ioc.def.ContributionDef;
+import org.apache.tapestry.ioc.def.ServiceDef;
+import org.apache.tapestry.ioc.internal.util.MessagesImpl;
 
 public final class IOCMessages
 {

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/CompoundCoercion.java (from r477464, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CompoundCoercion.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/CompoundCoercion.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CompoundCoercion.java&r1=477464&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/CompoundCoercion.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CompoundCoercion.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/CompoundCoercion.java Mon Nov 20 23:45:58 2006
@@ -12,7 +12,7 @@
 // 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.services.Coercion;
 

Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java?view=diff&rev=477546&r1=477471&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java Mon Nov 20 23:45:58 2006
@@ -14,12 +14,12 @@
 
 package org.apache.tapestry.ioc.internal.services;
 
-import javassist.CtClass;
-
-import org.apache.tapestry.internal.MessagesImpl;
+import javassist.CtClass;
+
 import org.apache.tapestry.ioc.Messages;
-import org.apache.tapestry.ioc.services.MethodSignature;
-import org.apache.tapestry.ioc.services.ThreadCleanupListener;
+import org.apache.tapestry.ioc.internal.util.MessagesImpl;
+import org.apache.tapestry.ioc.services.MethodSignature;
+import org.apache.tapestry.ioc.services.ThreadCleanupListener;
 
 final class ServiceMessages
 {

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java (from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java&r1=477483&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java Mon Nov 20 23:45:58 2006
@@ -12,335 +12,325 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
+package org.apache.tapestry.ioc.internal.services;
+
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newLinkedList;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newThreadSafeMap;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry.internal.services.CompoundCoercion;
-import org.apache.tapestry.internal.util.InheritanceSearch;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.tapestry.ioc.internal.util.Defense;
+import org.apache.tapestry.ioc.internal.util.InheritanceSearch;
 import org.apache.tapestry.ioc.internal.util.InternalUtils;
-import org.apache.tapestry.ioc.services.Coercion;
-import org.apache.tapestry.ioc.services.CoercionTuple;
-import org.apache.tapestry.ioc.services.TypeCoercer;
-import org.apache.tapestry.services.TransformUtils;
-
-/**
- * 
- */
-public class TypeCoercerImpl implements TypeCoercer
-{
-    // Read only after constructor
-
-    private final Map<Class, List<CoercionTuple>> _sourceTypeToTuple = newMap();
-
-    // Access to the cache must be thread safe
-
-    private final Map<CacheKey, Coercion> _cache = newThreadSafeMap();
-
-    static class CacheKey
-    {
-        private final Class _sourceClass;
-
-        private final Class _targetClass;
-
-        CacheKey(final Class sourceClass, final Class targetClass)
-        {
-            _sourceClass = sourceClass;
-            _targetClass = targetClass;
-        }
-
-        @Override
-        public boolean equals(Object obj)
-        {
-            if (obj == null)
-                return false;
-
-            if (!(obj instanceof CacheKey))
-                return false;
-
-            CacheKey other = (CacheKey) obj;
-
-            return _sourceClass.equals(other._sourceClass)
-                    && _targetClass.equals(other._targetClass);
-        }
-
-        @Override
-        public int hashCode()
-        {
-            return _sourceClass.hashCode() * 27 % _targetClass.hashCode();
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("CacheKey[%s --> %s]", _sourceClass.getName(), _targetClass
-                    .getName());
-        }
-    }
-
-    public TypeCoercerImpl(Collection<CoercionTuple> tuples)
-    {
-        for (CoercionTuple tuple : tuples)
-        {
-            Class key = tuple.getSourceType();
-
-            addTuple(key, tuple);
-        }
-    }
-
-    private void addTuple(Class key, CoercionTuple tuple)
-    {
-        List<CoercionTuple> list = _sourceTypeToTuple.get(key);
-
-        if (list == null)
-        {
-            list = newList();
-            _sourceTypeToTuple.put(key, list);
-        }
-
-        list.add(tuple);
-    }
-
-    @SuppressWarnings("unchecked")
-    public Object coerce(Object input, Class targetType)
-    {
-        Defense.notNull(targetType, "targetType");
-
-        // Treat null as void in terms of locating a coercion.
-
-        Class sourceType = input != null ? input.getClass() : void.class;
-
-        // The caller may ask for the value in a primitive type, but the best we can do is the
-        // equivalent wrapper type.
-
-        Class effectiveTargetType = TransformUtils.getWrapperType(targetType);
-
-        // Is a coercion even necessary? Not if the target type is assignable from the
-        // input value.
-
-        if (effectiveTargetType.isAssignableFrom(sourceType))
-            return input;
-
-        Coercion coercer = findCoercer(sourceType, effectiveTargetType);
-
-        Object result = coercer.coerce(input);
-
-        // Double check that the coercer provided a result of the correct type
-
-        return effectiveTargetType.cast(result);
-    }
-
-    private Coercion findCoercer(Class sourceType, Class targetType)
-    {
-        CacheKey key = new CacheKey(sourceType, targetType);
-
-        Coercion result = _cache.get(key);
-
-        if (result == null)
-        {
-            result = findOrCreateCoercer(sourceType, targetType);
-            _cache.put(key, result);
-        }
-
-        return result;
-    }
-
-    public void clearCache()
-    {
-        _cache.clear();
-    }
-
-    /**
-     * Here's the real meat; we do a search of the space to find coercions, or a system of
-     * coercions, that accomplish the desired coercion.
-     * <p>
-     * There's <strong>TREMENDOUS</strong> room to improve this algorithm. For example, inheritance
-     * lists could be cached. Further, there's probably more ways to early prune the search.
-     * However, even with dozens or perhaps hundreds of tuples, I suspect the search will still
-     * grind to a conclusion quickly.
-     * <p>
-     * The order of operations should help ensure that the most efficient tuple chain is located. If
-     * you think about how tuples are added to the queue, there are two factors: size (the number of
-     * steps in the coercion) and "class distance" (that is, number of steps up the inheritance
-     * hiearchy). All the appropriate 1 step coercions will be considered first, in class distance
-     * order. Along the way, we'll queue up all the 2 step coercions, again in class distance order.
-     * By the time we reach some of those, we'll have begun queing up the 3 step coercions, and so
-     * forth, until we run out of input tuples we can use to fabricate multi-step compound
-     * coercions, or reach a final response.
-     * <p>
-     * This does create a good number of short lived temporary objects (the compound tuples), but
-     * that's what the GC is really good at.
-     * 
-     * @param sourceType
-     * @param targetType
-     * @return coercer from sourceType to targetType
-     */
-    @SuppressWarnings("unchecked")
-    private Coercion findOrCreateCoercer(Class sourceType, Class targetType)
-    {
-        // These are instance variables because this method may be called concurrently.
-        // On a true race, we may go to the work of seeking out and/or fabricating
-        // a tuple twice, but it's more likely that different threads are looking
-        // for different source/target coercions.
-
-        Set<CoercionTuple> consideredTuples = newSet();
-        LinkedList<CoercionTuple> queue = newLinkedList();
-
-        seedQueue(sourceType, consideredTuples, queue);
-
-        while (!queue.isEmpty())
-        {
-            CoercionTuple tuple = queue.removeFirst();
-
-            // If the tuple results in a value type that is assignable to the desired target type,
-            // we're done! Later, we may add a concept of "cost" (i.e. number of steps) or
-            // "quality" (how close is the tuple target type to the desired target type). Cost
-            // is currently implicit, as compound tuples are stored deeper in the queue,
-            // so simpler coercions will be located earlier.
-
-            Class tupleTargetType = tuple.getTargetType();
-
-            if (targetType.isAssignableFrom(tupleTargetType))
-                return tuple.getCoercion();
-
-            // So .. this tuple doesn't get us directly to the target type.
-            // However, it *may* get us part of the way. Each of these
-            // represents a coercion from the source type to an intermediate type.
-            // Now we're going to look for conversions from the intermediate type
-            // to some other type.
-
-            queueIntermediates(sourceType, tuple, consideredTuples, queue);
-        }
-
-        // Not found anywhere. Identify the source and target type and a (sorted) list of
-        // all the known coercions.
-
-        throw new IllegalArgumentException(ServiceMessages.noCoercionFound(
-                sourceType,
-                targetType,
-                buildCoercionCatalog()));
-
-    }
-
-    /**
-     * Builds a string listing all the coercions configured for the type coercer, sorted
-     * alphabetically.
-     */
-    private String buildCoercionCatalog()
-    {
-        List<String> descriptions = newList();
-
-        for (List<CoercionTuple> list : _sourceTypeToTuple.values())
-        {
-            for (CoercionTuple tuple : list)
-            {
-                String description = String.format(
-                        "%s --> %s",
-                        tuple.getSourceType().getName(),
-                        tuple.getTargetType().getName());
-
-                descriptions.add(description);
-            }
-        }
-
-        return InternalUtils.joinSorted(descriptions);
-    }
-
-    /** Seeds the pool with the initial set of coercions for the given type. */
-    private void seedQueue(Class sourceType, Set<CoercionTuple> consideredTuples,
-            LinkedList<CoercionTuple> queue)
-    {
-        // Work from the source type up looking for tuples
-
-        for (Class c : new InheritanceSearch(sourceType))
-        {
-            List<CoercionTuple> tuples = _sourceTypeToTuple.get(c);
-
-            if (tuples == null)
-                continue;
-
-            for (CoercionTuple tuple : tuples)
-            {
-                queue.addLast(tuple);
-                consideredTuples.add(tuple);
-            }
-        }
-    }
-
-    /**
-     * Creates and adds to the pool a new set of coercions based on an intermediate tuple. Adds
-     * compound coercion tuples to the end of the queue.
-     * 
-     * @param sourceType
-     *            the source type of the coercion
-     * @param intermediateTuple
-     *            a tuple that converts from the source type to some intermediate type (that is not
-     *            assignable to the target type)
-     * @param consideredTuples
-     *            set of tuples that have already been added to the pool (directly, or as a compound
-     *            coercion)
-     * @param queue
-     *            the work queue of tuples
-     */
-    @SuppressWarnings("unchecked")
-    private void queueIntermediates(Class sourceType, CoercionTuple intermediateTuple,
-            Set<CoercionTuple> consideredTuples, LinkedList<CoercionTuple> queue)
-    {
-        Class intermediateType = intermediateTuple.getTargetType();
-
-        for (Class c : new InheritanceSearch(intermediateType))
-        {
-            List<CoercionTuple> tuples = _sourceTypeToTuple.get(c);
-
-            if (tuples == null)
-                continue;
-
-            for (CoercionTuple tuple : tuples)
-            {
-                if (consideredTuples.contains(tuple))
-                    continue;
-
-                Class newIntermediateType = tuple.getTargetType();
-
-                // If this tuple is for coercing from an intermediate type back towards our
-                // initial source type, then ignore it. This should only be an optimization,
-                // as branches that loop back towards the source type will
-                // eventually be considered and discarded.
-
-                if (sourceType.isAssignableFrom(newIntermediateType))
-                    continue;
-
-                // The intermediateTuple coercer gets from S --> I1 (an intermediate type).
-                // The current tuple's coercer gets us from I2 --> X. where I2 is assignable
-                // from I1 (i.e., I2 is a superclass/superinterface of I1) and X is a new
-                // intermediate type, hopefully closer to our eventual target type.
-
-                Coercion compoundCoercer = new CompoundCoercion(intermediateTuple.getCoercion(),
-                        tuple.getCoercion());
-
-                CoercionTuple compoundTuple = new CoercionTuple(sourceType, newIntermediateType,
-                        compoundCoercer);
-
-                // So, every tuple that is added to the queue can take as input the sourceType.
-                // The target type may be another intermdiate type, or may be something
-                // assignable to the target type, which will bring the search to a succesful
-                // conclusion.
-
-                queue.addLast(compoundTuple);
-                consideredTuples.add(tuple);
-            }
-        }
-    }
-
-}
+import org.apache.tapestry.ioc.services.Coercion;
+import org.apache.tapestry.ioc.services.CoercionTuple;
+import org.apache.tapestry.ioc.services.TypeCoercer;
+
+/**
+ * 
+ */
+public class TypeCoercerImpl implements TypeCoercer
+{
+    // Read only after constructor
+
+    private final Map<Class, List<CoercionTuple>> _sourceTypeToTuple = newMap();
+
+    // Access to the cache must be thread safe
+
+    private final Map<CacheKey, Coercion> _cache = newThreadSafeMap();
+
+    static class CacheKey
+    {
+        private final Class _sourceClass;
+
+        private final Class _targetClass;
+
+        CacheKey(final Class sourceClass, final Class targetClass)
+        {
+            _sourceClass = sourceClass;
+            _targetClass = targetClass;
+        }
+
+        @Override
+        public boolean equals(Object obj)
+        {
+            if (obj == null) return false;
+
+            if (!(obj instanceof CacheKey)) return false;
+
+            CacheKey other = (CacheKey) obj;
+
+            return _sourceClass.equals(other._sourceClass)
+                    && _targetClass.equals(other._targetClass);
+        }
+
+        @Override
+        public int hashCode()
+        {
+            return _sourceClass.hashCode() * 27 % _targetClass.hashCode();
+        }
+
+        @Override
+        public String toString()
+        {
+            return String.format("CacheKey[%s --> %s]", _sourceClass.getName(), _targetClass
+                    .getName());
+        }
+    }
+
+    public TypeCoercerImpl(Collection<CoercionTuple> tuples)
+    {
+        for (CoercionTuple tuple : tuples)
+        {
+            Class key = tuple.getSourceType();
+
+            addTuple(key, tuple);
+        }
+    }
+
+    private void addTuple(Class key, CoercionTuple tuple)
+    {
+        List<CoercionTuple> list = _sourceTypeToTuple.get(key);
+
+        if (list == null)
+        {
+            list = newList();
+            _sourceTypeToTuple.put(key, list);
+        }
+
+        list.add(tuple);
+    }
+
+    @SuppressWarnings("unchecked")
+    public Object coerce(Object input, Class targetType)
+    {
+        Defense.notNull(targetType, "targetType");
+
+        // Treat null as void in terms of locating a coercion.
+
+        Class sourceType = input != null ? input.getClass() : void.class;
+
+        // The caller may ask for the value in a primitive type, but the best we can do is the
+        // equivalent wrapper type.
+
+        Class effectiveTargetType = sourceType; // ClassFabUtils.getWrapperType(targetType);
+
+        // Is a coercion even necessary? Not if the target type is assignable from the
+        // input value.
+
+        if (effectiveTargetType.isAssignableFrom(sourceType)) return input;
+
+        Coercion coercer = findCoercer(sourceType, effectiveTargetType);
+
+        Object result = coercer.coerce(input);
+
+        // Double check that the coercer provided a result of the correct type
+
+        return effectiveTargetType.cast(result);
+    }
+
+    private Coercion findCoercer(Class sourceType, Class targetType)
+    {
+        CacheKey key = new CacheKey(sourceType, targetType);
+
+        Coercion result = _cache.get(key);
+
+        if (result == null)
+        {
+            result = findOrCreateCoercer(sourceType, targetType);
+            _cache.put(key, result);
+        }
+
+        return result;
+    }
+
+    public void clearCache()
+    {
+        _cache.clear();
+    }
+
+    /**
+     * Here's the real meat; we do a search of the space to find coercions, or a system of
+     * coercions, that accomplish the desired coercion.
+     * <p>
+     * There's <strong>TREMENDOUS</strong> room to improve this algorithm. For example, inheritance
+     * lists could be cached. Further, there's probably more ways to early prune the search.
+     * However, even with dozens or perhaps hundreds of tuples, I suspect the search will still
+     * grind to a conclusion quickly.
+     * <p>
+     * The order of operations should help ensure that the most efficient tuple chain is located. If
+     * you think about how tuples are added to the queue, there are two factors: size (the number of
+     * steps in the coercion) and "class distance" (that is, number of steps up the inheritance
+     * hiearchy). All the appropriate 1 step coercions will be considered first, in class distance
+     * order. Along the way, we'll queue up all the 2 step coercions, again in class distance order.
+     * By the time we reach some of those, we'll have begun queing up the 3 step coercions, and so
+     * forth, until we run out of input tuples we can use to fabricate multi-step compound
+     * coercions, or reach a final response.
+     * <p>
+     * This does create a good number of short lived temporary objects (the compound tuples), but
+     * that's what the GC is really good at.
+     * 
+     * @param sourceType
+     * @param targetType
+     * @return coercer from sourceType to targetType
+     */
+    @SuppressWarnings("unchecked")
+    private Coercion findOrCreateCoercer(Class sourceType, Class targetType)
+    {
+        // These are instance variables because this method may be called concurrently.
+        // On a true race, we may go to the work of seeking out and/or fabricating
+        // a tuple twice, but it's more likely that different threads are looking
+        // for different source/target coercions.
+
+        Set<CoercionTuple> consideredTuples = newSet();
+        LinkedList<CoercionTuple> queue = newLinkedList();
+
+        seedQueue(sourceType, consideredTuples, queue);
+
+        while (!queue.isEmpty())
+        {
+            CoercionTuple tuple = queue.removeFirst();
+
+            // If the tuple results in a value type that is assignable to the desired target type,
+            // we're done! Later, we may add a concept of "cost" (i.e. number of steps) or
+            // "quality" (how close is the tuple target type to the desired target type). Cost
+            // is currently implicit, as compound tuples are stored deeper in the queue,
+            // so simpler coercions will be located earlier.
+
+            Class tupleTargetType = tuple.getTargetType();
+
+            if (targetType.isAssignableFrom(tupleTargetType)) return tuple.getCoercion();
+
+            // So .. this tuple doesn't get us directly to the target type.
+            // However, it *may* get us part of the way. Each of these
+            // represents a coercion from the source type to an intermediate type.
+            // Now we're going to look for conversions from the intermediate type
+            // to some other type.
+
+            queueIntermediates(sourceType, tuple, consideredTuples, queue);
+        }
+
+        // Not found anywhere. Identify the source and target type and a (sorted) list of
+        // all the known coercions.
+
+        throw new IllegalArgumentException(ServiceMessages.noCoercionFound(
+                sourceType,
+                targetType,
+                buildCoercionCatalog()));
+
+    }
+
+    /**
+     * Builds a string listing all the coercions configured for the type coercer, sorted
+     * alphabetically.
+     */
+    private String buildCoercionCatalog()
+    {
+        List<String> descriptions = newList();
+
+        for (List<CoercionTuple> list : _sourceTypeToTuple.values())
+        {
+            for (CoercionTuple tuple : list)
+            {
+                String description = String.format(
+                        "%s --> %s",
+                        tuple.getSourceType().getName(),
+                        tuple.getTargetType().getName());
+
+                descriptions.add(description);
+            }
+        }
+
+        return InternalUtils.joinSorted(descriptions);
+    }
+
+    /** Seeds the pool with the initial set of coercions for the given type. */
+    private void seedQueue(Class sourceType, Set<CoercionTuple> consideredTuples,
+            LinkedList<CoercionTuple> queue)
+    {
+        // Work from the source type up looking for tuples
+
+        for (Class c : new InheritanceSearch(sourceType))
+        {
+            List<CoercionTuple> tuples = _sourceTypeToTuple.get(c);
+
+            if (tuples == null) continue;
+
+            for (CoercionTuple tuple : tuples)
+            {
+                queue.addLast(tuple);
+                consideredTuples.add(tuple);
+            }
+        }
+    }
+
+    /**
+     * Creates and adds to the pool a new set of coercions based on an intermediate tuple. Adds
+     * compound coercion tuples to the end of the queue.
+     * 
+     * @param sourceType
+     *            the source type of the coercion
+     * @param intermediateTuple
+     *            a tuple that converts from the source type to some intermediate type (that is not
+     *            assignable to the target type)
+     * @param consideredTuples
+     *            set of tuples that have already been added to the pool (directly, or as a compound
+     *            coercion)
+     * @param queue
+     *            the work queue of tuples
+     */
+    @SuppressWarnings("unchecked")
+    private void queueIntermediates(Class sourceType, CoercionTuple intermediateTuple,
+            Set<CoercionTuple> consideredTuples, LinkedList<CoercionTuple> queue)
+    {
+        Class intermediateType = intermediateTuple.getTargetType();
+
+        for (Class c : new InheritanceSearch(intermediateType))
+        {
+            List<CoercionTuple> tuples = _sourceTypeToTuple.get(c);
+
+            if (tuples == null) continue;
+
+            for (CoercionTuple tuple : tuples)
+            {
+                if (consideredTuples.contains(tuple)) continue;
+
+                Class newIntermediateType = tuple.getTargetType();
+
+                // If this tuple is for coercing from an intermediate type back towards our
+                // initial source type, then ignore it. This should only be an optimization,
+                // as branches that loop back towards the source type will
+                // eventually be considered and discarded.
+
+                if (sourceType.isAssignableFrom(newIntermediateType)) continue;
+
+                // The intermediateTuple coercer gets from S --> I1 (an intermediate type).
+                // The current tuple's coercer gets us from I2 --> X. where I2 is assignable
+                // from I1 (i.e., I2 is a superclass/superinterface of I1) and X is a new
+                // intermediate type, hopefully closer to our eventual target type.
+
+                Coercion compoundCoercer = new CompoundCoercion(intermediateTuple.getCoercion(),
+                        tuple.getCoercion());
+
+                CoercionTuple compoundTuple = new CoercionTuple(sourceType, newIntermediateType,
+                        compoundCoercer);
+
+                // So, every tuple that is added to the queue can take as input the sourceType.
+                // The target type may be another intermdiate type, or may be something
+                // assignable to the target type, which will bring the search to a succesful
+                // conclusion.
+
+                queue.addLast(compoundTuple);
+                consideredTuples.add(tuple);
+            }
+        }
+    }
+
+}

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/InheritanceSearch.java (from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/InheritanceSearch.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/InheritanceSearch.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/InheritanceSearch.java&r1=477483&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/InheritanceSearch.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/InheritanceSearch.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/InheritanceSearch.java Mon Nov 20 23:45:58 2006
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal.util;
+package org.apache.tapestry.ioc.internal.util;
 
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newLinkedList;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/LocationImpl.java (from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/LocationImpl.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java&r1=477469&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/LocationImpl.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/LocationImpl.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/LocationImpl.java Mon Nov 20 23:45:58 2006
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal;
+package org.apache.tapestry.ioc.internal.util;
 
 import java.util.Formatter;
 

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessageFormatterImpl.java (from r477469, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessageFormatterImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessageFormatterImpl.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessageFormatterImpl.java&r1=477469&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessageFormatterImpl.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessageFormatterImpl.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessageFormatterImpl.java Mon Nov 20 23:45:58 2006
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal;
+package org.apache.tapestry.ioc.internal.util;
 
 import org.apache.tapestry.ioc.MessageFormatter;
 

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessagesImpl.java (from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessagesImpl.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java&r1=477483&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessagesImpl.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/MessagesImpl.java Mon Nov 20 23:45:58 2006
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal;
+package org.apache.tapestry.ioc.internal.util;
 
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newThreadSafeMap;

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/TapestryException.java (from r477473, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/TapestryException.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java&r1=477473&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/TapestryException.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/TapestryException.java Mon Nov 20 23:45:58 2006
@@ -12,11 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.internal;
+package org.apache.tapestry.ioc.internal.util;
 
 import org.apache.tapestry.ioc.Locatable;
 import org.apache.tapestry.ioc.Location;
-import org.apache.tapestry.ioc.internal.util.InternalUtils;
 
 /**
  * Exception class used as a replacement for {@link java.lang.RuntimeException} when the exception

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java (from r477483, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java?view=diff&rev=477546&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java&r1=477483&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java&r2=477546
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/util/UtilMessages.java Mon Nov 20 23:45:58 2006
@@ -14,7 +14,6 @@
 
 package org.apache.tapestry.ioc.internal.util;
 
-import org.apache.tapestry.internal.MessagesImpl;
 import org.apache.tapestry.ioc.Messages;
 
 class UtilMessages