Rename Handler class in reactor API to RulesList.
This commit is contained in:
parent
bd1c56d9d0
commit
eb5b38384f
|
|
@ -457,7 +457,7 @@
|
|||
<node concept="3uibUv" id="4MqhgXUS0Q7" role="1tU5fm">
|
||||
<ref role="3uigEE" to="33ny:~List" resolve="List" />
|
||||
<node concept="3uibUv" id="4MqhgXUS0Q8" role="11_B2D">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -590,7 +590,7 @@
|
|||
<node concept="3uibUv" id="4MqhgXUKgMf" role="3clF45">
|
||||
<ref role="3uigEE" to="wyt6:~Iterable" resolve="Iterable" />
|
||||
<node concept="3uibUv" id="4MqhgXUKgMg" role="11_B2D">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
<node concept="3clFbS" id="4MqhgXUKgMh" role="3clF47">
|
||||
|
|
@ -658,7 +658,7 @@
|
|||
<node concept="3uibUv" id="4MqhgXULV52" role="1tU5fm">
|
||||
<ref role="3uigEE" to="33ny:~List" resolve="List" />
|
||||
<node concept="3uibUv" id="4MqhgXULVdx" role="11_B2D">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -1573,7 +1573,7 @@
|
|||
<node concept="3clFb_" id="4MqhgXUNDLG" role="jymVt">
|
||||
<property role="TrG5h" value="toHandler" />
|
||||
<node concept="3uibUv" id="4MqhgXUNEFF" role="3clF45">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
<node concept="3Tm1VV" id="4MqhgXUNDLJ" role="1B3o_S" />
|
||||
<node concept="3clFbS" id="4MqhgXUNDLK" role="3clF47">
|
||||
|
|
@ -1711,7 +1711,7 @@
|
|||
<node concept="2tJIrI" id="4MqhgXUM$3z" role="jymVt" />
|
||||
<node concept="3Tm1VV" id="4MqhgXUMzTR" role="1B3o_S" />
|
||||
<node concept="3uibUv" id="4MqhgXUM$3j" role="1zkMxy">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
<node concept="2tJIrI" id="4MqhgXUMzKi" role="jymVt" />
|
||||
|
|
@ -1784,7 +1784,7 @@
|
|||
</node>
|
||||
<node concept="TZ5HA" id="2$$Q_FeW4_3" role="TZ5H$">
|
||||
<node concept="1dT_AC" id="2$$Q_FeW4_4" role="1dT_Ay">
|
||||
<property role="1dT_AB" value="Instance of Handler produced by toHandler() returns the rules sorted by location key." />
|
||||
<property role="1dT_AB" value="Instance of RulesList produced by toHandler() returns the rules sorted by location key." />
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -1955,7 +1955,7 @@
|
|||
<property role="TrG5h" value="allHandlers" />
|
||||
<node concept="A3Dl8" id="7DvO2M9UagV" role="3clF45">
|
||||
<node concept="3uibUv" id="7DvO2M9UagW" role="A3Ik2">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
<node concept="3Tm1VV" id="7DvO2M9UagX" role="1B3o_S" />
|
||||
|
|
@ -1965,13 +1965,13 @@
|
|||
<property role="TrG5h" value="allHandlers" />
|
||||
<node concept="_YKpA" id="7DvO2M9Uah1" role="1tU5fm">
|
||||
<node concept="3uibUv" id="7DvO2M9Uah2" role="_ZDj9">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
<node concept="2ShNRf" id="7DvO2M9Uah3" role="33vP2m">
|
||||
<node concept="Tc6Ow" id="7DvO2M9Uah4" role="2ShVmc">
|
||||
<node concept="3uibUv" id="7DvO2M9Uah5" role="HW$YZ">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -4246,7 +4246,7 @@
|
|||
<node concept="37vLTG" id="4MqhgXUQrZn" role="3clF46">
|
||||
<property role="TrG5h" value="handler" />
|
||||
<node concept="3uibUv" id="4MqhgXUQsf0" role="1tU5fm">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
<node concept="3cqZAl" id="4MqhgXUQoON" role="3clF45" />
|
||||
|
|
@ -4276,7 +4276,7 @@
|
|||
<ref role="3cqZAo" node="4MqhgXUQrZn" resolve="handler" />
|
||||
</node>
|
||||
<node concept="liA8E" id="4MqhgXUQtEx" role="2OqNvi">
|
||||
<ref role="37wK5l" to="av0y:~Handler.rules():java.lang.Iterable" resolve="rules" />
|
||||
<ref role="37wK5l" to="av0y:~RulesList.rules():java.lang.Iterable" resolve="rules" />
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -4461,13 +4461,13 @@
|
|||
<node concept="3Tm6S6" id="4MqhgXULVBB" role="1B3o_S" />
|
||||
<node concept="_YKpA" id="4$YN6Qv0idE" role="1tU5fm">
|
||||
<node concept="3uibUv" id="4$YN6Qv0idG" role="_ZDj9">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
<node concept="2ShNRf" id="4$YN6Qv0kjy" role="33vP2m">
|
||||
<node concept="Tc6Ow" id="4$YN6Qv0kjj" role="2ShVmc">
|
||||
<node concept="3uibUv" id="4$YN6Qv0kjk" role="HW$YZ">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -4913,7 +4913,7 @@
|
|||
<node concept="3cpWsn" id="4MqhgXUSKVP" role="1Duv9x">
|
||||
<property role="TrG5h" value="handler" />
|
||||
<node concept="3uibUv" id="4MqhgXUSKVT" role="1tU5fm">
|
||||
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
|
||||
<ref role="3uigEE" to="av0y:~RulesList" resolve="RulesList" />
|
||||
</node>
|
||||
</node>
|
||||
<node concept="2OqwBi" id="6tPOoeTbtQC" role="1DdaDG">
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import kotlin.collections.HashMap
|
|||
* FIXME handler to be renamed to RulesList
|
||||
* @author Fedor Isakov
|
||||
*/
|
||||
class RuleIndex(handlers: Iterable<Handler>) : Iterable<Rule>, RuleLookup {
|
||||
class RuleIndex(handlers: Iterable<RulesList>) : Iterable<Rule>, RuleLookup {
|
||||
|
||||
private val symbol2index = HashMap<ConstraintSymbol, ArgumentRuleIndex>()
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ class RuleIndex(handlers: Iterable<Handler>) : Iterable<Rule>, RuleLookup {
|
|||
|
||||
override fun iterator(): Iterator<Rule> = rulesList.iterator()
|
||||
|
||||
private fun buildIndex(handlers: Iterable<Handler>) {
|
||||
private fun buildIndex(handlers: Iterable<RulesList>) {
|
||||
var ruleBit = 0
|
||||
for (h in handlers) {
|
||||
for (rule in h.rules()) {
|
||||
|
|
|
|||
|
|
@ -17,11 +17,6 @@
|
|||
package jetbrains.mps.logic.reactor.program;
|
||||
|
||||
|
||||
import jetbrains.mps.logic.reactor.evaluation.InvocationContext;
|
||||
import jetbrains.mps.logic.reactor.logical.LogicalContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A collection of handlers that constitute a constraint rules program.
|
||||
*
|
||||
|
|
@ -32,6 +27,6 @@ public abstract class Program {
|
|||
|
||||
public abstract String name();
|
||||
|
||||
public abstract Iterable<Handler> handlers();
|
||||
public abstract Iterable<RulesList> handlers();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,12 +17,11 @@
|
|||
package jetbrains.mps.logic.reactor.program;
|
||||
|
||||
/**
|
||||
* A handler is a container of rules.
|
||||
* <p>
|
||||
* FIXME to be renamed to RulesList
|
||||
* A container for rules.
|
||||
*
|
||||
* @author Fedor Isakov
|
||||
*/
|
||||
public abstract class Handler {
|
||||
public abstract class RulesList {
|
||||
|
||||
public abstract String name();
|
||||
|
||||
|
|
@ -2,7 +2,6 @@
|
|||
* @author Fedor Isakov
|
||||
*/
|
||||
|
||||
import jetbrains.mps.logic.reactor.evaluation.EvaluationFeedback
|
||||
import jetbrains.mps.logic.reactor.evaluation.InvocationContext
|
||||
import jetbrains.mps.logic.reactor.evaluation.Supervisor
|
||||
import jetbrains.mps.logic.reactor.logical.LogicalContext
|
||||
|
|
@ -14,13 +13,13 @@ import kotlin.collections.LinkedHashMap
|
|||
|
||||
class ProgramBuilder(val registry: MockConstraintRegistry) {
|
||||
|
||||
fun program(name: String, handlers: List<Handler>): Program {
|
||||
for (h in handlers) {
|
||||
fun program(name: String, rulesLists: List<RulesList>): Program {
|
||||
for (h in rulesLists) {
|
||||
for (r in h.rules()) {
|
||||
registry.update(r)
|
||||
}
|
||||
}
|
||||
return MockProgram(name, handlers, registry)
|
||||
return MockProgram(name, rulesLists, registry)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -29,8 +28,8 @@ class HandlerBuilder(val name: String) {
|
|||
|
||||
val rules = LinkedHashMap<String, Rule>()
|
||||
|
||||
constructor(name: String, handler: Handler) : this(name) {
|
||||
for (r in handler.rules()) {
|
||||
constructor(name: String, rulesList: RulesList) : this(name) {
|
||||
for (r in rulesList.rules()) {
|
||||
appendRule(r)
|
||||
}
|
||||
}
|
||||
|
|
@ -39,7 +38,7 @@ class HandlerBuilder(val name: String) {
|
|||
rules[rule.tag()] = rule
|
||||
}
|
||||
|
||||
fun toHandler(): Handler = MockHandler(name, rules.values.toList())
|
||||
fun toHandler(): RulesList = MockHandler(name, rules.values.toList())
|
||||
}
|
||||
|
||||
class RuleBuilder(val tag: String) {
|
||||
|
|
@ -66,7 +65,7 @@ class RuleBuilder(val tag: String) {
|
|||
|
||||
class MockHandler(
|
||||
val name: String,
|
||||
val rules: List<Rule>) : Handler() {
|
||||
val rules: List<Rule>) : RulesList() {
|
||||
|
||||
override fun name(): String = name
|
||||
|
||||
|
|
@ -97,11 +96,11 @@ class MockRule(
|
|||
else (kept + replaced).map { it as AndItem } + guard + body.flatten()
|
||||
}
|
||||
|
||||
class MockProgram(val name: String, val handlers: List<Handler>, val registry: MockConstraintRegistry) : Program() {
|
||||
class MockProgram(val name: String, val rulesLists: List<RulesList>, val registry: MockConstraintRegistry) : Program() {
|
||||
|
||||
override fun name(): String = name
|
||||
|
||||
override fun handlers(): Iterable<Handler> = unmodifiableCollection(handlers)
|
||||
override fun handlers(): Iterable<RulesList> = unmodifiableCollection(rulesLists)
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@ import kotlin.collections.HashMap
|
|||
* @author Fedor Isakov
|
||||
*/
|
||||
|
||||
class Builder(var handlers: List<Handler>) : RuleLookup {
|
||||
class Builder(var rulesLists: List<RulesList>) : RuleLookup {
|
||||
|
||||
val tag2rule = HashMap<String, Rule>()
|
||||
|
||||
val programBuilder = ProgramBuilder(MockConstraintRegistry())
|
||||
|
||||
init {
|
||||
handlers
|
||||
rulesLists
|
||||
.flatMap { it.rules() }
|
||||
.forEach { r -> tag2rule[r.tag()] = r }
|
||||
}
|
||||
|
|
@ -29,28 +29,28 @@ class Builder(var handlers: List<Handler>) : RuleLookup {
|
|||
|
||||
fun ruleMatcher(): RuleMatcher = createRuleMatcher(this, rules.first().tag())
|
||||
|
||||
fun program(name: String): Program = programBuilder.program(name, handlers)
|
||||
fun program(name: String): Program = programBuilder.program(name, rulesLists)
|
||||
|
||||
}
|
||||
|
||||
private fun createBuilder(handlerBlocks: Array<out () -> Handler>): Builder {
|
||||
val handlers = ArrayList<Handler>()
|
||||
for (block in handlerBlocks) {
|
||||
private fun createBuilder(rulesListBlocks: Array<out () -> RulesList>): Builder {
|
||||
val handlers = ArrayList<RulesList>()
|
||||
for (block in rulesListBlocks) {
|
||||
handlers.add(block())
|
||||
}
|
||||
return Builder(handlers)
|
||||
}
|
||||
|
||||
private fun updateBuilder(builder:Builder, handlerBlocks: Array<out () -> Handler>): Builder {
|
||||
val name2handler = HashMap(builder.handlers.map { it.name() to it }.toMap())
|
||||
for (block in handlerBlocks) {
|
||||
private fun updateBuilder(builder:Builder, rulesListBlocks: Array<out () -> RulesList>): Builder {
|
||||
val name2handler = HashMap(builder.rulesLists.map { it.name() to it }.toMap())
|
||||
for (block in rulesListBlocks) {
|
||||
val h = block()
|
||||
name2handler[h.name()] = h
|
||||
}
|
||||
return Builder(name2handler.values.toList())
|
||||
}
|
||||
|
||||
private fun createHandler(name: String, vararg ruleBlocks: () -> Rule): () -> Handler = {
|
||||
private fun createHandler(name: String, vararg ruleBlocks: () -> Rule): () -> RulesList = {
|
||||
val hb = HandlerBuilder(name)
|
||||
for (block in ruleBlocks) {
|
||||
hb.appendRule(block())
|
||||
|
|
@ -58,8 +58,8 @@ private fun createHandler(name: String, vararg ruleBlocks: () -> Rule): () -> Ha
|
|||
hb.toHandler()
|
||||
}
|
||||
|
||||
private fun updateHandler(name: String, handler: Handler, vararg ruleBlocks: () -> Rule): () -> Handler = {
|
||||
val hb = HandlerBuilder(name, handler)
|
||||
private fun updateHandler(name: String, rulesList: RulesList, vararg ruleBlocks: () -> Rule): () -> RulesList = {
|
||||
val hb = HandlerBuilder(name, rulesList)
|
||||
for (block in ruleBlocks) {
|
||||
hb.appendRule(block())
|
||||
}
|
||||
|
|
@ -72,7 +72,7 @@ fun programWithRules(vararg ruleBuilders: () -> Rule): Builder =
|
|||
createBuilder(arrayOf(createHandler("test", * ruleBuilders)))
|
||||
|
||||
fun Builder.programWithRules(vararg ruleBuilders: () -> Rule): Builder =
|
||||
updateBuilder(this, arrayOf(updateHandler("test", handlers.first(), * ruleBuilders)))
|
||||
updateBuilder(this, arrayOf(updateHandler("test", rulesLists.first(), * ruleBuilders)))
|
||||
|
||||
fun rule(tag: String, vararg component: RuleBuilder.() -> Unit): () -> Rule = {
|
||||
val rb = RuleBuilder(tag)
|
||||
|
|
|
|||
|
|
@ -58,22 +58,22 @@ class TestController {
|
|||
}
|
||||
|
||||
private fun Builder.controller(vararg occurrences: ConstraintOccurrence): Controller {
|
||||
val program = MockProgram("test", handlers, registry = MockConstraintRegistry())
|
||||
val program = MockProgram("test", rulesLists, registry = MockConstraintRegistry())
|
||||
MockSession.init(program, MockSupervisor())
|
||||
val controller = createController(MockSupervisor(), RuleIndex(program.handlers), storeView = MockStoreView(listOf(* occurrences)))
|
||||
val controller = createController(MockSupervisor(), RuleIndex(program.rulesLists), storeView = MockStoreView(listOf(* occurrences)))
|
||||
MockSession.ourBackend.session.controller = controller
|
||||
return controller
|
||||
}
|
||||
|
||||
private fun Builder.controllerWithFeedback(feedbackHandler: (Rule, EvaluationFeedback) -> Boolean,
|
||||
vararg occurrences: ConstraintOccurrence): Controller {
|
||||
val program = MockProgram("test", handlers, registry = MockConstraintRegistry())
|
||||
val program = MockProgram("test", rulesLists, registry = MockConstraintRegistry())
|
||||
val supervisor = object : MockSupervisor() {
|
||||
override fun handleFeedback(rule: Rule, feedback: EvaluationFeedback): Boolean =
|
||||
feedbackHandler(rule, feedback)
|
||||
}
|
||||
MockSession.init(program, supervisor)
|
||||
val controller = createController(supervisor, RuleIndex(program.handlers), storeView = MockStoreView(listOf(* occurrences)))
|
||||
val controller = createController(supervisor, RuleIndex(program.rulesLists), storeView = MockStoreView(listOf(* occurrences)))
|
||||
MockSession.ourBackend.session.controller = controller
|
||||
return controller
|
||||
}
|
||||
|
|
|
|||
|
|
@ -545,7 +545,7 @@ class TestRuleMatcher {
|
|||
constraint("qux")
|
||||
))))
|
||||
{
|
||||
with(Dispatcher(RuleIndex(handlers)).front()) {
|
||||
with(Dispatcher(RuleIndex(rulesLists)).front()) {
|
||||
|
||||
expand(occurrence("foo")) }.apply {
|
||||
matches().count() shouldBe 0 }.run {
|
||||
|
|
@ -587,7 +587,7 @@ class TestRuleMatcher {
|
|||
constraint("qux")
|
||||
))))
|
||||
{
|
||||
with(Dispatcher(RuleIndex(handlers)).front()) {
|
||||
with(Dispatcher(RuleIndex(rulesLists)).front()) {
|
||||
|
||||
expand(occurrence("foo")) }.apply {
|
||||
matches().count() shouldBe 0 }.run {
|
||||
|
|
@ -656,7 +656,7 @@ class TestRuleMatcher {
|
|||
constraint("qux")
|
||||
))))
|
||||
{
|
||||
with(Dispatcher(RuleIndex(handlers)).front()) {
|
||||
with(Dispatcher(RuleIndex(rulesLists)).front()) {
|
||||
|
||||
expand(occurrence("blin")) }.apply {
|
||||
matches().count() shouldBe 0 }.run {
|
||||
|
|
@ -706,7 +706,7 @@ class TestRuleMatcher {
|
|||
constraint("qux")
|
||||
))))
|
||||
{
|
||||
with(Dispatcher(RuleIndex(handlers)).front()) {
|
||||
with(Dispatcher(RuleIndex(rulesLists)).front()) {
|
||||
|
||||
expand(occurrence("foo")) }.apply {
|
||||
matches().count() shouldBe 0 }.run {
|
||||
|
|
@ -759,7 +759,7 @@ class TestRuleMatcher {
|
|||
))))
|
||||
{
|
||||
val bar = occurrence("bar")
|
||||
with(Dispatcher(RuleIndex(handlers)).front()) {
|
||||
with(Dispatcher(RuleIndex(rulesLists)).front()) {
|
||||
|
||||
expand(occurrence("foo")) }.apply {
|
||||
matches().count() shouldBe 0 }.run {
|
||||
|
|
|
|||
Loading…
Reference in New Issue