[jboss-jira] [JBoss JIRA] (DROOLS-509) Constraint method is resolved erroneously when potential ambiguities exist

Mario Fusco (JIRA) issues at jboss.org
Fri Jun 27 05:37:24 EDT 2014


    [ https://issues.jboss.org/browse/DROOLS-509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12979883#comment-12979883 ] 

Mario Fusco commented on DROOLS-509:
------------------------------------

I tried to reproduce this problem with the following test case also switching the MvelConstraint.TEST_JITTING flag to true but it works for me and I couldn't generate any CCE. Am I missing something?

{code}
    public interface I0 {
        String getValue();
    }

    public interface I1 extends I0 { }

    public static class X implements I1 {
        @Override
        public String getValue() {
            return "x";
        }
    }

    public static class Y implements I1 {
        @Override
        public String getValue() {
            return "y";
        }
    }

    @Test
    public void testMethodResolution() throws Exception {
        // DROOLS-509
        String drl =
                "import " + I1.class.getCanonicalName() + ";\n" +
                "rule R when\n" +
                "    I1 ( value == \"x\" )\n" +
                "then\n" +
                "end";

        KieHelper helper = new KieHelper();
        helper.addContent( drl, ResourceType.DRL );
        KieSession ksession = helper.build().newKieSession();

        ksession.insert(new X());
        ksession.fireAllRules();
        ksession.insert(new Y());
        ksession.fireAllRules();
    }
{code}


> Constraint method is resolved erroneously when potential ambiguities exist
> --------------------------------------------------------------------------
>
>                 Key: DROOLS-509
>                 URL: https://issues.jboss.org/browse/DROOLS-509
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 5.6.0.Final, 6.1.0.Beta4
>            Reporter: Davide Sottara
>            Assignee: Mario Fusco
>            Priority: Critical
>             Fix For: 6.1.0.CR1
>
>
> Assume:
> Class X implement I1
> Interface I1 extends I0
> I0 defines the property foo
> Write a rule:
> I1( foo == .. )
> and insert an instance of class X
> The condition analyzer will look in classes first, rather than interfaces, assuming that "foo" is provided by X.
> The next time an instance of some class Y implementing I1 is inserted,
> a ClassCastException will be thrown since X is expected



--
This message was sent by Atlassian JIRA
(v6.2.6#6264)


More information about the jboss-jira mailing list