[jboss-svn-commits] JBL Code SVN: r20547 - in labs/jbossrules/trunk/drools-jbrms/src: test/java/org/drools/brms/server and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jun 16 21:55:57 EDT 2008
Author: michael.neale at jboss.com
Date: 2008-06-16 21:55:57 -0400 (Mon, 16 Jun 2008)
New Revision: 20547
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
Log:
JBRULES-1645 Generated Beans
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2008-06-17 01:49:10 UTC (rev 20546)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2008-06-17 01:55:57 UTC (rev 20547)
@@ -1134,34 +1134,35 @@
//nasty classloader needed to make sure we use the same tree the whole time.
ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
- ClassLoader cl = null;
+
try {
if (item.isBinaryUpToDate() && this.ruleBaseCache.containsKey(item.getUUID())) {
RuleBase rb = this.ruleBaseCache.get(item.getUUID());
AbstractRuleBase arb = (AbstractRuleBase) rb;
//load up the existing class loader from before
- cl = arb.getConfiguration().getClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
+
} else {
//load up the classloader we are going to use
List<JarInputStream> jars = BRMSPackageBuilder.getJars(item);
- cl = BRMSPackageBuilder.createClassLoader(jars);
- Thread.currentThread().setContextClassLoader(cl);
+ ClassLoader buildCl = BRMSPackageBuilder.createClassLoader(jars);
//we have to build the package, and try again.
if (item.isBinaryUpToDate()) {
- this.ruleBaseCache.put(item.getUUID(), loadRuleBase(item, cl));
+ this.ruleBaseCache.put(item.getUUID(), loadRuleBase(item, buildCl));
} else {
BuilderResult[] errs = this.buildPackage(null, false, item);
if (errs == null || errs.length == 0) {
- this.ruleBaseCache.put(item.getUUID(), loadRuleBase(item, cl));
+ this.ruleBaseCache.put(item.getUUID(), loadRuleBase(item, buildCl));
} else {
return new ScenarioRunResult(errs, null);
}
}
}
+
+ ClassLoader cl = this.ruleBaseCache.get(item.getUUID()).getPackages()[0].getPackageScopeClassLoader();
+ Thread.currentThread().setContextClassLoader(cl);
return runScenario(scenario, item, cl);
} finally {
@@ -1202,7 +1203,9 @@
allImps.add(c.getName());
}
}
+ allImps.add(bin.getName() + ".*"); //need this for Generated beans to work
+
ClassTypeResolver res = new ClassTypeResolver(allImps, cl);
SessionConfiguration sessionConfiguration = new SessionConfiguration();
sessionConfiguration.setKeepReference( false );
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2008-06-17 01:49:10 UTC (rev 20546)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2008-06-17 01:55:57 UTC (rev 20547)
@@ -1652,6 +1652,48 @@
}
+ public void testRunScenarioWithGeneratedBeans() throws Exception {
+ ServiceImplementation impl = getService();
+ RulesRepository repo = impl.repository;
+
+ PackageItem pkg = repo.createPackage("testScenarioRunWithGeneratedBeans", "");
+ ServiceImplementation.updateDroolsHeader("declare GenBean\n name: String \n age: int \nend\n", pkg);
+ AssetItem rule1 = pkg.addAsset("rule_1", "");
+ rule1.updateFormat(AssetFormats.DRL);
+ rule1
+ .updateContent("rule 'rule1' \n when \n p : GenBean(name=='mic') \n then \n p.setAge(42); \n end");
+ rule1.checkin("");
+ repo.save();
+
+ Scenario sc = new Scenario();
+ FactData person = new FactData();
+ person.name = "c";
+ person.type = "GenBean";
+ person.fieldData.add(new FieldData("age", "40"));
+ person.fieldData.add(new FieldData("name", "mic"));
+
+ sc.fixtures.add(person);
+ sc.fixtures.add(new ExecutionTrace());
+ VerifyRuleFired vr = new VerifyRuleFired("rule1", 1, null);
+ sc.fixtures.add(vr);
+
+ VerifyFact vf = new VerifyFact();
+ vf.name = "c";
+ vf.fieldValues.add(new VerifyField("name", "mic", "=="));
+ vf.fieldValues.add(new VerifyField("age", "42", "=="));
+ sc.fixtures.add(vf);
+
+
+ ScenarioRunResult res = impl.runScenario(pkg.getName(), sc);
+ assertEquals(null, res.errors);
+ assertNotNull(res.scenario);
+ assertTrue(vf.wasSuccessful());
+ assertTrue(vr.wasSuccessful());
+
+
+
+ }
+
public void testRunScenarioWithJar() throws Exception {
ServiceImplementation impl = getService();
RulesRepository repo = impl.repository;
More information about the jboss-svn-commits
mailing list