From: <jbo...@li...> - 2006-07-07 02:31:32
|
Author: mar...@jb... Date: 2006-07-06 22:31:27 -0400 (Thu, 06 Jul 2006) New Revision: 4940 Modified: labs/jbossrules/trunk/drools-jsr94/src/main/java/org/drools/jsr94/rules/RuleServiceProviderImpl.java labs/jbossrules/trunk/drools-jsr94/src/test/java/org/drools/jsr94/rules/RuleServiceProviderTest.java Log: JBRULES-362 RuleServiceProviderImpl does not register itself Modified: labs/jbossrules/trunk/drools-jsr94/src/main/java/org/drools/jsr94/rules/RuleServiceProviderImpl.java =================================================================== --- labs/jbossrules/trunk/drools-jsr94/src/main/java/org/drools/jsr94/rules/RuleServiceProviderImpl.java 2006-07-07 02:28:30 UTC (rev 4939) +++ labs/jbossrules/trunk/drools-jsr94/src/main/java/org/drools/jsr94/rules/RuleServiceProviderImpl.java 2006-07-07 02:31:27 UTC (rev 4940) @@ -16,8 +16,10 @@ * limitations under the License. */ +import javax.rules.ConfigurationException; import javax.rules.RuleRuntime; import javax.rules.RuleServiceProvider; +import javax.rules.RuleServiceProviderManager; import javax.rules.admin.RuleAdministrator; import org.drools.jsr94.rules.admin.RuleAdministratorImpl; @@ -32,6 +34,8 @@ * provided by Drools should be retrieved using a JNDI lookup. <p/> This class * should be constructed using the * <code>RuleServiceProviderManager.getRuleServiceProvider</code> method. + * This class is automatically registered to "http://drools.org/" on startup, + * via the static block. * * @see RuleRuntimeImpl * @see RuleAdministratorImpl @@ -41,6 +45,8 @@ * @author <a href="mailto:tho...@so...">thomas diesler </a> */ public class RuleServiceProviderImpl extends RuleServiceProvider { + public static final String RULE_SERVICE_PROVIDER = "http://drools.org/"; + /** An instance of <code>RuleRuntimeImpl</code>. */ private RuleRuntime ruleRuntime; @@ -49,6 +55,15 @@ private RuleExecutionSetRepository repository; + static { + try { + RuleServiceProviderManager.registerRuleServiceProvider( RULE_SERVICE_PROVIDER, + RuleServiceProviderImpl.class ); + } catch ( ConfigurationException e ) { + System.err.println( "Unable to regiser Rule Service Provider " + RULE_SERVICE_PROVIDER ); + } + } + /** * Create a new <code>RuleServiceProviderImpl</code>. */ @@ -57,13 +72,15 @@ } /** + * Returns the RuleExecutionSetRepository * @return */ public synchronized RuleExecutionSetRepository getRepository() { - if ( this.repository != null ) { - return this.repository; + // Lazy loaded + if ( this.repository == null ) { + this.repository = new RuleExecutionSetRepository(); } - return this.repository = new RuleExecutionSetRepository(); + return this.repository; } /** @@ -73,10 +90,11 @@ * @return an instance of <code>RuleRuntime</code> */ public synchronized RuleRuntime getRuleRuntime() { - if ( this.ruleRuntime != null ) { - return this.ruleRuntime; + if ( this.ruleRuntime == null ) { + this.ruleRuntime = new RuleRuntimeImpl( getRepository() ); } - return this.ruleRuntime = new RuleRuntimeImpl( getRepository() ); + + return this.ruleRuntime; } /** @@ -87,9 +105,10 @@ * @return an instance of <code>RuleAdministrator</code> */ public synchronized RuleAdministrator getRuleAdministrator() { - if ( this.ruleAdministrator != null ) { - return this.ruleAdministrator; + // Lazy instantiate + if ( this.ruleAdministrator == null ) { + this.ruleAdministrator = new RuleAdministratorImpl( getRepository() ); } - return this.ruleAdministrator = new RuleAdministratorImpl( getRepository() ); + return this.ruleAdministrator; } } Modified: labs/jbossrules/trunk/drools-jsr94/src/test/java/org/drools/jsr94/rules/RuleServiceProviderTest.java =================================================================== --- labs/jbossrules/trunk/drools-jsr94/src/test/java/org/drools/jsr94/rules/RuleServiceProviderTest.java 2006-07-07 02:28:30 UTC (rev 4939) +++ labs/jbossrules/trunk/drools-jsr94/src/test/java/org/drools/jsr94/rules/RuleServiceProviderTest.java 2006-07-07 02:31:27 UTC (rev 4940) @@ -42,34 +42,44 @@ */ import javax.rules.RuleRuntime; +import javax.rules.RuleServiceProvider; +import javax.rules.RuleServiceProviderManager; import javax.rules.admin.RuleAdministrator; +import junit.framework.TestCase; + /** * Test the RuleServiceProvider implementation. * * @author N. Alex Rupp (n_alex <at>codehaus.org) * @author <a href="mailto:tho...@so...">thomas diesler </a> */ -public class RuleServiceProviderTest extends RuleEngineTestBase { +public class RuleServiceProviderTest extends TestCase { /** * Test getRuleRuntime. */ public void testRuleRuntime() throws Exception { - final RuleRuntime ruleRuntime = this.ruleServiceProvider.getRuleRuntime(); + Class.forName("org.drools.jsr94.rules.RuleServiceProviderImpl"); + RuleServiceProvider ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider("http://drools.org/"); + + final RuleRuntime ruleRuntime = ruleServiceProvider.getRuleRuntime(); assertNotNull( "cannot obtain RuleRuntime", ruleRuntime ); assertTrue( "not a class instance", - ruleRuntime == this.ruleServiceProvider.getRuleRuntime() ); + ruleRuntime == ruleServiceProvider.getRuleRuntime() ); } /** * Test getRuleAdministrator. */ public void testRuleAdministrator() throws Exception { - final RuleAdministrator ruleAdministrator = this.ruleServiceProvider.getRuleAdministrator(); + Class.forName("org.drools.jsr94.rules.RuleServiceProviderImpl"); + RuleServiceProvider ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider("http://drools.org/"); + + final RuleAdministrator ruleAdministrator = ruleServiceProvider.getRuleAdministrator(); assertNotNull( "cannot obtain RuleAdministrator", ruleAdministrator ); assertTrue( "not a class instance", - ruleAdministrator == this.ruleServiceProvider.getRuleAdministrator() ); + ruleAdministrator == ruleServiceProvider.getRuleAdministrator() ); } } |