[ 
https://issues.apache.org/jira/browse/JENA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sébastien Boulet closed JENA-679.
---------------------------------


> Use an alternative implementation of a FRuleEngineI
> ---------------------------------------------------
>
>                 Key: JENA-679
>                 URL: https://issues.apache.org/jira/browse/JENA-679
>             Project: Apache Jena
>          Issue Type: Improvement
>          Components: Reasoners
>    Affects Versions: Jena 2.11.1
>            Reporter: Sébastien Boulet
>            Assignee: Dave Reynolds
>            Priority: Minor
>              Labels: patch
>             Fix For: Jena 2.11.2
>
>         Attachments: JENA-679.patch
>
>
> Give the possibility to use an alternative {{FRuleEngineI}} implementation.
> My proposition is to introduce a singleton factory {{FRuleEngineIFactory}}.
> {code:title=com.hp.hpl.jena.reasoner.rulesys.impl.FRuleEngineIFactory.java|borderStyle=solid}
> public class FRuleEngineIFactory {
>     private static FRuleEngineIFactory instance = new FRuleEngineIFactory();
>     public static void setInstance(FRuleEngineIFactory instance) { 
> FRuleEngineIFactory.instance = instance; }
>     public FRuleEngineIFactory getInstance() { return instance; }
>     
>     public FRuleEngineI createFRuleEngineI(ForwardRuleInfGraphI parent, 
> List<Rule> rules, boolean useRETE) {
>         FRuleEngineI engine;
>         if (rules != null) {
>             if (useRETE) {
>                 engine = new RETEEngine(parent, rules);
>             } else {
>                 engine = new FRuleEngine(parent, rules);
>             }
>         } else {
>             if (useRETE) {
>                 engine = new RETEEngine(parent);
>             } else {
>                 engine = new FRuleEngine(parent);
>             }
>         }
>         return engine;
>     }
> }
> {code}
> This factory will be used by existing classes.
> {code:title=com.hp.hpl.jena.reasoner.rulesys.BasicForwardRuleInfGraph|borderStyle=solid}
>     
> @Override
> protected void instantiateRuleEngine(List<Rule> rules) {
>     engine = FRuleEngineIFactory.getInstance().createFRuleEngineI(this, 
> rules, false);
> }
> {code}
> {code:title=com.hp.hpl.jena.reasoner.rulesys.FBRuleInfGraph|borderStyle=solid}
> @Override
> protected void instantiateRuleEngine(List<Rule> rules) {
>     engine = FRuleEngineIFactory.getInstance().createFRuleEngineI(this, 
> rules, useRETE);
> }
> {code}
> {code:title=com.hp.hpl.jena.reasoner.rulesys.RETERuleInfGraph|borderStyle=solid}
>     
> @Override
> protected void instantiateRuleEngine(List<Rule> rules) {
>     engine = FRuleEngineIFactory.getInstance().createFRuleEngineI(this, 
> rules, true);
> }
> {code}
> And i could replace the factory instance by my own instance :
> {code}
> FRuleEngineIFactory.setInstance(new CustomFRuleEngineIFactory());
> {code}
> I will propose a patch soon.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to