From 53a5073ade60193d0e7cc92bf56e6374cf951910 Mon Sep 17 00:00:00 2001 From: VaughnVernon Date: Tue, 23 Feb 2021 23:37:54 -0700 Subject: [PATCH 1/2] Started actors as objects with local and grid varieties. --- docs/XOOM-Auto-Dispatch.pdf | Bin 0 -> 89832 bytes src/main/java/io/vlingo/xoom/Boot.java | 38 ------ src/main/java/io/vlingo/xoom/Xoom.java | 116 ++++++++++++++++++ .../vlingo/xoom/object/ObjectDescriptor.java | 72 +++++++++++ .../xoom/{BootTest.java => XoomTest.java} | 13 +- 5 files changed, 195 insertions(+), 44 deletions(-) create mode 100644 docs/XOOM-Auto-Dispatch.pdf delete mode 100644 src/main/java/io/vlingo/xoom/Boot.java create mode 100644 src/main/java/io/vlingo/xoom/Xoom.java create mode 100644 src/main/java/io/vlingo/xoom/object/ObjectDescriptor.java rename src/test/java/io/vlingo/xoom/{BootTest.java => XoomTest.java} (78%) diff --git a/docs/XOOM-Auto-Dispatch.pdf b/docs/XOOM-Auto-Dispatch.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e54c2bb419c84402a7856cc97c8a5cc052c252f2 GIT binary patch literal 89832 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

_>fyQ9CJ*C2VK2sjMpt7bvR1XXLL&iP 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 0 ? args[0] : "vlingo-xoom"; - - xoomBootWorld = start(name); - } - - public static World xoomBootWorld() { - return xoomBootWorld; - } - - /** - * Answers a new {@code World} with the given {@code name} and that is configured with - * the contents of the {@code vlingo-zoom.properties} file. - * @param name the {@code String} name to assign to the new {@code World} instance - * @return {@code World} - */ - public static World start(final String name) { - xoomBootWorld = World.start(name); - - return xoomBootWorld; - } - -} diff --git a/src/main/java/io/vlingo/xoom/Xoom.java b/src/main/java/io/vlingo/xoom/Xoom.java new file mode 100644 index 00000000..72b82ca4 --- /dev/null +++ b/src/main/java/io/vlingo/xoom/Xoom.java @@ -0,0 +1,116 @@ +// Copyright © 2012-2020 VLINGO LABS. All rights reserved. +// +// This Source Code Form is subject to the terms of the +// Mozilla Public License, v. 2.0. If a copy of the MPL +// was not distributed with this file, You can obtain +// one at https://mozilla.org/MPL/2.0/. + +package io.vlingo.xoom; + +import java.util.concurrent.atomic.AtomicReference; + +import io.vlingo.actors.Grid; +import io.vlingo.actors.Logger; +import io.vlingo.actors.World; +import io.vlingo.xoom.object.ObjectDescriptor; + +public class Xoom { + private static final String DefaultWorldName = "vlingo-xoom"; + private static final String GridPostfix = "-grid"; + + private static final AtomicReference xoom = new AtomicReference<>(); + + private Grid grid; + @SuppressWarnings("unused") + private ShutdownHook shutdownHook; + private World world; + + public static void main(final String[] args) { + final String name = args.length > 0 ? args[0] : DefaultWorldName; + + start(name); + } + + /** + * Answer the {@code Xoom}. + * @return Xoom + */ + public static Xoom xoom() { + return xoom.get(); + } + + /** + * Answers a new {@code World} with the given {@code name} and that is configured with + * the contents of the {@code vlingo-zoom.properties} file. + * @param name the {@code String} name to assign to the new {@code World} instance + * @return {@code World} + */ + public static synchronized Xoom start(final String name) { + if (xoom.get() == null) { + xoom.set(new Xoom(name)); + } + return xoom.get(); + } + + /** + * Answer a new object of type {@code T} from the {@code ObjectDescriptor} + * using my {@code grid}. + * @param the protocol of the object + * @param descriptor the {@code ObjectDescriptor} through which the new object instance will be obtained + * @return T + */ + public T objectInstance(final ObjectDescriptor descriptor) { + return descriptor.objectInstance(grid); + } + + /** + * Answer my {@code Grid}. + * @return Grid + */ + public Grid grid() { + return xoom.get().grid; + } + + /** + * Answer my {@code World}. + * @return World + */ + public World world() { + return xoom.get().world; + } + + /** + * Construct my state with a {@code name}. + * @param name the String name of my World + */ + private Xoom(final String name) { + try { + this.world = World.start(name); + this.grid = Grid.start(world, name + GridPostfix); + this.shutdownHook = new ShutdownHook(); + } catch (Exception e) { + System.out.println("Xoom failed to start because: " + e.getMessage()); + e.printStackTrace(); + } + } + + private final class ShutdownHook { + private ShutdownHook() { + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + if (xoom.get() != null) { + final World world = xoom.get().world; + final Logger logger = world.defaultLogger(); + final String name = world.name(); + + logger.info("\n=========="); + logger.info("Stopping Xoom: '" + name + "' ..."); + world.terminate(); + xoom.set(null); + logger.info("Stopped Xoom: '" + name + "'"); + } else { + System.out.println("Stopped unstarted Xoom."); // this should be unreacable + } + })); + } + } +} diff --git a/src/main/java/io/vlingo/xoom/object/ObjectDescriptor.java b/src/main/java/io/vlingo/xoom/object/ObjectDescriptor.java new file mode 100644 index 00000000..c20b8e9b --- /dev/null +++ b/src/main/java/io/vlingo/xoom/object/ObjectDescriptor.java @@ -0,0 +1,72 @@ +// Copyright © 2012-2020 VLINGO LABS. All rights reserved. +// +// This Source Code Form is subject to the terms of the +// Mozilla Public License, v. 2.0. If a copy of the MPL +// was not distributed with this file, You can obtain +// one at https://mozilla.org/MPL/2.0/. + +package io.vlingo.xoom.object; + +import io.vlingo.actors.Actor; +import io.vlingo.actors.Grid; +import io.vlingo.actors.Stage; +import io.vlingo.actors.World; + +/** + * A descriptor used to create runtime objects. + * @param

the {@code Class

} of the protocol + * @param the {@code Class} of the concrete actor type + */ +public class ObjectDescriptor { + private final Class

protocol; + private final Class type; + + /** + * Answer a new {@code ObjectDescriptor}. + * @param

the {@code Class

} of the protocol + * @param the {@code Class} of the concrete actor type + * @param protocol the {@code Class

} protocol that the the object supports + * @param type the {@code Class} concrete Actor that implements the protocol + * @return {@code ObjectDescriptor} + */ + public static ObjectDescriptor descriptorFor(final Class

protocol, final Class type) { + return new ObjectDescriptor(protocol, type); + } + + /** + * Constructs my state. + * @param protocol the {@code Class

} protocol that the the object supports + * @param type the {@code Class} concrete Actor that implements the protocol + */ + public ObjectDescriptor(final Class

protocol, final Class type) { + this.protocol = protocol; + this.type = type; + } + + /** + * Answer a new instance of the {@code P} object within the {@code grid}. Note that + * being in the {@code grid} the new object could be partitioned onto any node in + * the {@code grid} cluster. + * @param grid the Grid within which the object is instantiated + * @return P + */ + public P objectInstance(final Grid grid) { + return grid.actorFor(protocol, type); + } + + public P objectInstance(final Stage stage) { + return stage.actorFor(protocol, type); + } + + public P objectInstance(final World world) { + return objectInstance(world.stage()); + } + + public Class

protocol() { + return protocol; + } + + public Class type() { + return type; + } +} diff --git a/src/test/java/io/vlingo/xoom/BootTest.java b/src/test/java/io/vlingo/xoom/XoomTest.java similarity index 78% rename from src/test/java/io/vlingo/xoom/BootTest.java rename to src/test/java/io/vlingo/xoom/XoomTest.java index 3032e7a8..1cd5dbb5 100644 --- a/src/test/java/io/vlingo/xoom/BootTest.java +++ b/src/test/java/io/vlingo/xoom/XoomTest.java @@ -6,27 +6,28 @@ // one at https://mozilla.org/MPL/2.0/. package io.vlingo.xoom; -import io.vlingo.actors.World; +import static org.junit.Assert.assertEquals; + import org.junit.Test; -import static org.junit.Assert.assertEquals; +import io.vlingo.actors.World; -public class BootTest { +public class XoomTest { private static final String BootWorldName = "test-boot"; @Test public void testThatWorldBoots() { - Boot.main(new String[] { BootWorldName }); + Xoom.main(new String[] { BootWorldName }); - final World world = Boot.xoomBootWorld(); + final World world = Xoom.xoom().world(); assertEquals(BootWorldName, world.name()); } @Test public void testThatWorldStarts() { - final World world = Boot.start(BootWorldName); + final World world = Xoom.start(BootWorldName).world(); assertEquals(BootWorldName, world.name()); } From 765701f58260f45dd50d479c2be569938bf11265 Mon Sep 17 00:00:00 2001 From: VaughnVernon Date: Thu, 25 Feb 2021 15:28:20 -0700 Subject: [PATCH 2/2] Replaced AccountState with --- src/main/resources/codegen/EventSourcedEntity.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/codegen/EventSourcedEntity.ftl b/src/main/resources/codegen/EventSourcedEntity.ftl index 2ee44dd8..f92992d6 100644 --- a/src/main/resources/codegen/EventSourcedEntity.ftl +++ b/src/main/resources/codegen/EventSourcedEntity.ftl @@ -41,7 +41,7 @@ public final class ${entityName} extends EventSourced implements ${aggregateProt * @param currentVersion the int value of my current version; may be helpful in determining if snapshot is needed */ @Override - protected void restoreSnapshot(final ${stateName} snapshot, final int currentVersion) { + protected <${stateName}> void restoreSnapshot(final ${stateName} snapshot, final int currentVersion) { // OVERRIDE FOR SNAPSHOT SUPPORT // See: https://docs.vlingo.io/vlingo-lattice/entity-cqrs#eventsourced } @@ -50,7 +50,7 @@ public final class ${entityName} extends EventSourced implements ${aggregateProt * Answer the valid {@code ${stateName}} instance if a snapshot should * be taken and persisted along with applied {@code Source} instance(s). * - * @return AccountState + * @return ${stateName} */ @Override protected ${stateName} snapshot() {