Hi Edson,

I used the last successful build from your CI which is form 9. March. I've tried it on the trunk and it works fine. Thank you!

Best Regards,
Michal


2009/3/16 Edson Tirelli <tirelli@post.com>

   Michal,

   Are you using trunk or CR1?

   I found a bug last Saturday that I believe is the exact same one you found here. Mark fixed it on trunk. So, if you are not using trunk, can you do it and let us know if it is working for you?

   Thanks,
      Edson

2009/3/16 Michal Bali <michalbali@gmail.com>
Hi,

Internal type together with a function in one drl file cause ClassCastException when setting properties of a new instance of this type.

java.lang.ClassCastException: org.drools.generatedbeans.Cheese cannot be cast to org.drools.generatedbeans.Cheese
    at org.drools.base.org.drools.generatedbeans.Cheese6778431$setType.setValue(Unknown Source)
    at org.drools.base.ClassFieldWriter.setValue(ClassFieldWriter.java:195)
    at org.drools.base.ClassFieldAccessor.setValue(ClassFieldAccessor.java:319)
    at org.drools.factmodel.ClassDefinition.set(ClassDefinition.java:207)
    at org.drools.integrationtests.MiscTest.testGeneratedBeansWithFunction(MiscTest.java:1072)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)


Test case to reproduce:
test_GeneratedBeansWithFunction.drl:
-------------------------------
package org.drools.generatedbeans;

function void someFunction(String arg) {
    System.out.println("hello");
}

declare Cheese
    type: String
end
-------------------------------

test method:
public void testGeneratedBeansWithFunction() throws Exception {
        final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add( ResourceFactory.newInputStreamResource( getClass().getResourceAsStream( "test_GeneratedBeansWithFunction.drl" ) ),
                      ResourceType.DRL );
        assertFalse( kbuilder.getErrors().toString(),
                     kbuilder.hasErrors() );

        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );

        // Retrieve the generated fact type
        FactType cheeseFact = kbase.getFactType( "org.drools.generatedbeans",
                                                 "Cheese" );

        // Create a new Fact instance
        Object cheese = cheeseFact.newInstance();

        cheeseFact.set( cheese,
                        "type",
                        "stilton" );
    }

The last line throws the ClassCastException. If we remove the function from the drl file all works fine.
Best Regards,
Michal

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss, a division of Red Hat @ www.jboss.com

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users