[
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)