[ 
https://issues.apache.org/jira/browse/TAP5-1813?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14700896#comment-14700896
 ] 

ASF subversion and git services commented on TAP5-1813:
-------------------------------------------------------

Commit dd0c58457cd2529413b72d709f84a040f13589b0 in tapestry-5's branch 
refs/heads/master from [~jkemnade]
[ https://git-wip-us.apache.org/repos/asf?p=tapestry-5.git;h=dd0c584 ]

TAP5-1813: check interface methods for correct parameters when binding using 
StrategyBuilder


> Using StrategyBuilder service on an interface with a non-conforming method 
> (one that does not include the selector as the initial parameter) throws an 
> inscrutable ArrayIndexOutOfBounds exception
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: TAP5-1813
>                 URL: https://issues.apache.org/jira/browse/TAP5-1813
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-ioc
>    Affects Versions: 5.3, 5.4
>            Reporter: Howard M. Lewis Ship
>            Priority: Minor
>
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
>       at 
> org.apache.tapestry5.internal.plastic.InstructionBuilderImpl.loadArgument(InstructionBuilderImpl.java:171)
>  ~[plastic-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.ioc.internal.services.StrategyBuilderImpl$1$1.doBuild(StrategyBuilderImpl.java:76)
>  ~[tapestry-ioc-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.internal.plastic.InstructionBuilderImpl.doCallback(InstructionBuilderImpl.java:832)
>  ~[plastic-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.changeImplementation(PlasticMethodImpl.java:130)
>  ~[plastic-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.internal.plastic.PlasticClassImpl.introduceMethod(PlasticClassImpl.java:647)
>  ~[plastic-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.ioc.internal.services.StrategyBuilderImpl$1.transform(StrategyBuilderImpl.java:65)
>  ~[tapestry-ioc-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.plastic.PlasticManager.createProxy(PlasticManager.java:235)
>  ~[plastic-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl.createProxy(PlasticProxyFactoryImpl.java:60)
>  ~[tapestry-ioc-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.ioc.internal.services.StrategyBuilderImpl.createProxy(StrategyBuilderImpl.java:56)
>  ~[tapestry-ioc-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.ioc.internal.services.StrategyBuilderImpl.build(StrategyBuilderImpl.java:44)
>  ~[tapestry-ioc-5.3.1.jar:na]
>       at 
> org.apache.tapestry5.ioc.internal.services.StrategyBuilderImpl.build(StrategyBuilderImpl.java:51)
>  ~[tapestry-ioc-5.3.1.jar:na]
>       at $StrategyBuilder_1265847ad7894079.build(Unknown Source) ~[na:na]
> This traces into code that attempts to load the first argument (argument 0, 
> as Plastic numbers them) which fails because the method contains no 
> parameters.  A better case would be to check that each method takes at least 
> one parameter, and preferably, find a way to ensure that the first parameter 
> is the correct selector type.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to