diff --git a/reference-examples/generation/src/main/java/com/fluxtion/example/reference/AddByName.java b/reference-examples/generation/src/main/java/com/fluxtion/example/reference/AddByName.java new file mode 100644 index 0000000..6fe2cc0 --- /dev/null +++ b/reference-examples/generation/src/main/java/com/fluxtion/example/reference/AddByName.java @@ -0,0 +1,47 @@ +package com.fluxtion.example.reference; + +import com.fluxtion.compiler.Fluxtion; +import com.fluxtion.runtime.annotations.OnEventHandler; +import com.fluxtion.runtime.node.NamedNode; + +public class AddByName { + + public static class MyNode { + + private final String name; + + public MyNode(String name) { + this.name = name; + } + + + public String getName() { + return name; + } + } + + public static class MyNamedNode implements NamedNode { + + private final String name; + + public MyNamedNode(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } + } + + public static void main(String[] args) throws NoSuchFieldException { + var processor = Fluxtion.interpret(cfg -> { + cfg.addNode(new MyNode("customName"), "overrideName"); + cfg.addNode(new MyNamedNode("name1")); + }); + processor.init(); + + System.out.println(processor.getNodeById("overrideName").getName()); + System.out.println(processor.getNodeById("name1").getName()); + } +} diff --git a/reference-examples/generation/src/main/java/com/fluxtion/example/reference/InjectNoFactory.java b/reference-examples/generation/src/main/java/com/fluxtion/example/reference/InjectNoFactory.java new file mode 100644 index 0000000..bd0a308 --- /dev/null +++ b/reference-examples/generation/src/main/java/com/fluxtion/example/reference/InjectNoFactory.java @@ -0,0 +1,41 @@ +package com.fluxtion.example.reference; + +import com.fluxtion.compiler.Fluxtion; +import com.fluxtion.runtime.annotations.OnEventHandler; +import com.fluxtion.runtime.annotations.OnTrigger; +import com.fluxtion.runtime.annotations.builder.Inject; + +public class InjectNoFactory { + public static class MyNode { + @OnEventHandler + public boolean handleStringEvent(String stringToProcess) { + System.out.println("MyNode::received:" + stringToProcess); + return true; + } + } + + public static class Root1 { + @Inject + private final MyNode myNode; + + public Root1() { + myNode = null; + } + + public Root1(MyNode myNode) { + this.myNode = myNode; + } + + @OnTrigger + public boolean trigger() { + System.out.println("Root1::triggered"); + return true; + } + } + + public static void main(String[] args) { + var processor = Fluxtion.interpret(cfg -> cfg.addNode(new Root1())); + processor.init(); + processor.onEvent("TEST"); + } +} diff --git a/reference-examples/generation/src/main/java/com/fluxtion/example/reference/SharedEqualityReference.java b/reference-examples/generation/src/main/java/com/fluxtion/example/reference/SharedEqualityReference.java new file mode 100644 index 0000000..97f41d2 --- /dev/null +++ b/reference-examples/generation/src/main/java/com/fluxtion/example/reference/SharedEqualityReference.java @@ -0,0 +1,76 @@ +package com.fluxtion.example.reference; + +import com.fluxtion.compiler.Fluxtion; +import com.fluxtion.runtime.annotations.OnEventHandler; +import com.fluxtion.runtime.annotations.OnTrigger; + +import java.util.Objects; + +public class SharedEqualityReference { + + public static class MyNode { + private final String name; + int identifier; + + public MyNode(String name, int identifier) { + this.name = name; + this.identifier = identifier; + } + + @OnEventHandler + public boolean handleStringEvent(String stringToProcess) { + System.out.println(name + " identifier:" + identifier + " received:" + stringToProcess); + return true; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MyNode myNode = (MyNode) o; + return name.equals(myNode.name); + } + + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public String toString() { + return "MyNode{" + + "name='" + name + '\'' + + ", identifier=" + identifier + + '}'; + } + } + + public static class Root1 { + private final String name; + private final MyNode myNode; + + public Root1(String name, MyNode myNode) { + this.name = name; + this.myNode = myNode; + System.out.println(name + "::new " + myNode); + } + + @OnTrigger + public boolean trigger() { + System.out.println(name + "::triggered " + myNode); + return true; + } + } + + public static void main(String[] args) { + var processor = Fluxtion.interpret(cfg -> { + MyNode myNode1 = new MyNode("myNode_1", 999); + MyNode myNode2 = new MyNode("myNode_1", 444); + cfg.addNode(new Root1("root_1", myNode1)); + cfg.addNode(new Root1("root_2", myNode2)); + }); + processor.init(); + System.out.println(); + processor.onEvent("TEST"); + } +}