[rules-users] [rules-dev] java.lang.NullPointerException while testing

Esteban Aliverti esteban.aliverti at gmail.com
Thu Sep 29 03:46:53 EDT 2011


First of all, I' moving this to drools-users list.
The problem seems to be that the application is not finding the change-set
file. Where is the ChangeSet(12).xml file placed? Is it reachable at the
first level of the classpath? Try to debug and see if the resource is in the
classpath. Try with this first:
this.getClass().getClassLoader().getResource("ChangeSet(12).xml");
Another solution could be to use a URLResource pointing to package's
change-set in Guvnor.

Best Regards,

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Esteban Aliverti
- Developer @ http://www.plugtree.com
- Blog @ http://ilesteban.wordpress.com


On Thu, Sep 29, 2011 at 9:15 AM, shubhranshu <shubhranshu.swain at gmail.com>wrote:

> Hello everybody,
>
> I am new to drools. We have to integrate drools in our application. After
> lot of searching a found something very helpful. Here is what I did.
>
> I created a new package say test.
> I uploaded a new jar file which contains my model.
> I created a new category say banking.
> Then I created a rule under the banking category in test package.
> Finally I create a new snapshot for deployment.
>
> Then I get the changeset.xml
> <change-set xmlns='http://drools.org/drools-5.0/change-set'
>   xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
>   xs:schemaLocation='http://drools.org/drools-5.0/change-set
>
> http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd
> '
> >
>   <add>
>        <resource
> source='
> http://localhost:8080/guvnor-5.2.0.Final-tomcat-6.0/org.drools.guvnor.Guvnor/package/Banking/Test
> '
> type='PKG' />
>   </add>
> </change-set>
>
> Below is the code to test
>
> package com.test;
>
> import junit.framework.TestCase;
>
> import org.drools.KnowledgeBase;
> import org.drools.agent.KnowledgeAgent;
> import org.drools.agent.KnowledgeAgentConfiguration;
> import org.drools.agent.KnowledgeAgentFactory;
> import org.drools.io.ResourceFactory;
> import org.drools.runtime.StatefulKnowledgeSession;
>
>
> public class Test extends TestCase{
>       public void testDroolsWithGuvnor() throws Exception {
>               KnowledgeBase knowledgeBase = createKnowledgeBase();
>               StatefulKnowledgeSession session =
> knowledgeBase.newStatefulKnowledgeSession();
>               try {
>                       Person person = new Person();
>                       person.setAge(20);
>                       session.insert(person);
>                       assertTrue(session.getFactCount() == 1);
>                       session.fireAllRules();
>                       assertTrue(session.getFactCount() == 2);
>               }
>               finally {
>                       session.dispose();
>               }
>       }
>
>       public static KnowledgeBase createKnowledgeBase(){
>                KnowledgeAgentConfiguration kaconf =
> KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
>                kaconf.setProperty( "drools.agent.scanDirectories", "false"
> );
>                KnowledgeAgent kagent =
> KnowledgeAgentFactory.newKnowledgeAgent( "test
> agent", kaconf );
>                kagent.applyChangeSet(
> ResourceFactory.newClassPathResource("ChangeSet(12).xml"));
>                return kagent.getKnowledgeBase();
>
>       }
> }
>
> But when i try to test it using junit i get the following exception.
>
>
> java.lang.NullPointerException
>       at
>
> org.drools.agent.impl.KnowledgeAgentImpl.processChangeSet(KnowledgeAgentImpl.java:223)
>       at
>
> org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:189)
>       at
>
> org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:174)
>       at com.test.Test.createKnowledgeBase(Test.java:34)
>       at com.test.Test.testDroolsWithGuvnor(Test.java:15)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>       at java.lang.reflect.Method.invoke(Unknown Source)
>       at junit.framework.TestCase.runTest(TestCase.java:168)
>       at junit.framework.TestCase.runBare(TestCase.java:134)
>       at junit.framework.TestResult$1.protect(TestResult.java:110)
>       at junit.framework.TestResult.runProtected(TestResult.java:128)
>       at junit.framework.TestResult.run(TestResult.java:113)
>       at junit.framework.TestCase.run(TestCase.java:124)
>       at junit.framework.TestSuite.runTest(TestSuite.java:243)
>       at junit.framework.TestSuite.run(TestSuite.java:238)
>       at
>
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
>       at
>
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
>       at
>
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>       at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>       at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>       at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>
> Dont know how to deal with this
>
> please help
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/java-lang-NullPointerException-while-testing-tp3378523p3378523.html
> Sent from the Drools: Developer (committer) mailing list mailing list
> archive at Nabble.com.
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110929/f4c18bed/attachment.html 


More information about the rules-users mailing list