[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