[ 
https://issues.apache.org/jira/browse/IMPERIUS-18?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12627865#action_12627865
 ] 

Reza Asadollahi commented on IMPERIUS-18:
-----------------------------------------

In the latest version of Imperius I don't see the problem. 

However, I fixed the problem of re-throwing exceptions in some places and 
provided patch for them. I added two other constructors to SPLException to 
accept the root exception. In places that a SPLException was created as the 
result of another exception I used the new constructors instead of the previous 
one. More investigation in the code is needed to fix this issue completely, 
particularly the classes in org.apache.imperius.spl.parser.expressions.impl 
package that deal with exceptions. 

Another point that needs more attention is AnchorMethodInvokeAction.execute 
method. This method catches SPLException and does nothing. The signature of 
this method must be changed to throw SPLException. I wasn't sure if this change 
is ok.
What do you think?
 

> Failure to find the proper method of the anchor object during policy execution
> ------------------------------------------------------------------------------
>
>                 Key: IMPERIUS-18
>                 URL: https://issues.apache.org/jira/browse/IMPERIUS-18
>             Project: Imperius
>          Issue Type: Bug
>            Reporter: Reza Asadollahi
>            Assignee: Bill Stoddard
>            Priority: Critical
>
> An anchor object has a method named foo with the following signature:
>      public void foo(Object o)
> if this method is used in a SPL policy as foo("test"), the policy will fail 
> to execute with the following exception since it looks for method 
> foo(java.lang.String) and can not find it. 
> org.apache.imperius.spl.parser.exceptions.SPLException: 
> org.starmx.MyClass.foo(java.lang.String)
>       at 
> org.apache.imperius.javaspl.JavaActuatorImpl.invokeMethod(JavaActuatorImpl.java:115)
>       at 
> org.apache.imperius.spl.parser.statements.actions.impl.AnchorMethodInvokeAction.invokeClassMethod(AnchorMethodInvokeAction.java:362)
>       at 
> org.apache.imperius.spl.parser.compiler.IdentPrimaryTuple.evaluate(IdentPrimaryTuple.java:152)
>       at 
> org.apache.imperius.spl.parser.statements.actions.impl.AnchorMethodInvokeAction.execute(AnchorMethodInvokeAction.java:170)
>       at 
> org.apache.imperius.spl.parser.statements.impl.PolicyDefinition.evaluate(PolicyDefinition.java:224)
>       at 
> org.apache.imperius.spl.parser.statements.impl.SPLPolicy._evaluatePolicies(SPLPolicy.java:151)
>       at 
> org.apache.imperius.spl.parser.statements.impl.SPLPolicy.evaluate(SPLPolicy.java:362)
>       at 
> org.apache.imperius.spl.evaluator.impl.PolicyEvaluatorImpl.evaluatePolicy(PolicyEvaluatorImpl.java:118)
>       at 
> org.apache.imperius.spl.manager.impl.PolicyManagerImpl.evaluatePolicy(PolicyManagerImpl.java:209)
>       at 
> org.apache.imperius.javaspl.Java_SPLPolicyRuleProvider.executePolicy(Java_SPLPolicyRuleProvider.java:134)
> This is a serious problem since it doesn't allow to call any method that has 
> the super class of the real parameter in its signature. 

-- 
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