RegistryImpl.autobuild() does not inject resources into constructor parameters
------------------------------------------------------------------------------

                 Key: TAP5-1030
                 URL: https://issues.apache.org/jira/browse/TAP5-1030
             Project: Tapestry 5
          Issue Type: Bug
    Affects Versions: 5.1.0.5
            Reporter: Leonard Lu


The Javadoc for ObjectLocator.autobuild() states that it "Autobuilds a class by 
finding the public constructor with the most parameters. Services and resources 
will be injected into the parameters of the constructor."  However, this seems 
to only be true for the ServiceResourcesImpl implementation of the interface, 
which is aware of the following resources (code from 5.1.0.5, 
AbstractServiceCreator, line 63):

        injectionResources.put(String.class, serviceId);
        injectionResources.put(ObjectLocator.class, resources);
        injectionResources.put(ServiceResources.class, resources);
        injectionResources.put(Logger.class, logger);
        injectionResources.put(Class.class, resources.getServiceInterface());
        injectionResources.put(OperationTracker.class, resources.getTracker());

On the other hand, RegistryImpl is only aware of the OperationTracker resource 
(RegistryImpl line 841)

        resourcesMap.put(OperationTracker.class, tracker);

Specifically, one cannot call registry.autobuild() on any class that has a 
Logger resource in its constructor. If this is the intended behavior than the 
ObjectLocator javadoc should be updated.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to