Skip to content

Commit 5c78185

Browse files
committed
Refactor. Move packages
1 parent 4d29bc5 commit 5c78185

10 files changed

Lines changed: 107 additions & 106 deletions

File tree

README.md

Lines changed: 87 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ Populate this file with the following content:
285285
```Java
286286
package io.eigr.spawn.java.demo;
287287

288-
import io.eigr.spawn.api.Value;
288+
import io.eigr.spawn.api.actors.Value;
289289
import io.eigr.spawn.api.actors.ActorContext;
290290
import io.eigr.spawn.api.actors.annotations.Action;
291291
import io.eigr.spawn.api.actors.annotations.stateful.StatefulNamedActor;
@@ -332,7 +332,7 @@ public class App {
332332
public static void main(String[] args) throws Exception {
333333
Spawn spawnSystem = new SpawnSystem()
334334
.create("spawn-system")
335-
.addActor(Joe.class)
335+
.withActor(Joe.class)
336336
.build();
337337

338338
spawnSystem.start();
@@ -346,21 +346,20 @@ Or passing transport options like:
346346
package io.eigr.spawn.java.demo;
347347

348348
import io.eigr.spawn.api.Spawn;
349-
import io.eigr.spawn.api.transport.TransportOpts;
349+
import io.eigr.spawn.api.TransportOpts;
350350

351351
public class App {
352352
public static void main(String[] args) throws Exception {
353353
TransportOpts opts = TransportOpts.builder()
354-
.executor()
355354
.port(8091)
356355
.proxyPort(9003)
357356
.executor(Executors.newVirtualThreadPerTaskExecutor()) // If you use java above 19 and use the --enable-preview flag when running the jvm
358357
.build();
359-
358+
360359
Spawn spawnSystem = new SpawnSystem()
361360
.create("spawn-system")
362-
.addActor(Joe.class)
363-
.withTransportOpts(opts)
361+
.withActor(Joe.class)
362+
.withTransportOptions(opts)
364363
.build();
365364

366365
spawnSystem.start();
@@ -433,7 +432,7 @@ In this case, it is enough to declare a constructor that receives a single argum
433432
```java
434433
package io.eigr.spawn.java.demo;
435434

436-
import io.eigr.spawn.api.Value;
435+
import io.eigr.spawn.api.actors.Value;
437436
import io.eigr.spawn.api.actors.ActorContext;
438437
import io.eigr.spawn.api.actors.annotations.Action;
439438
import io.eigr.spawn.api.actors.annotations.stateful.StatefulNamedActor;
@@ -443,27 +442,27 @@ import java.util.Map;
443442

444443
@StatefulNamedActor(name = "joe", stateful = true, stateType = Domain.JoeState.class, channel = "test")
445444
public final class Joe {
446-
private final String someValue;
445+
private final String someValue;
447446

448-
public Joe(Map<String, String> args) {
449-
this.someValue = args.get("someKey");
450-
}
447+
public Joe(Map<String, String> args) {
448+
this.someValue = args.get("someKey");
449+
}
451450

452-
@Action(inputType = Domain.Request.class)
453-
public Value setLanguage(Domain.Request msg, ActorContext<Domain.JoeState> context) {
454-
return Value.at()
455-
.response(Domain.Reply.newBuilder()
456-
.setResponse("Hello From Java")
457-
.build())
458-
.state(updateState("java"))
459-
.reply();
460-
}
451+
@Action(inputType = Domain.Request.class)
452+
public Value setLanguage(Domain.Request msg, ActorContext<Domain.JoeState> context) {
453+
return Value.at()
454+
.response(Domain.Reply.newBuilder()
455+
.setResponse("Hello From Java")
456+
.build())
457+
.state(updateState("java"))
458+
.reply();
459+
}
461460

462-
// ...
461+
// ...
463462
}
464463
```
465464

466-
Then you also need to register your Actor using the `addActorWithArgs` method like as follows:
465+
Then you also need to register your Actor passing arguments like as follows:
467466

468467
```java
469468
package io.eigr.spawn.java.demo;
@@ -481,9 +480,7 @@ public class App {
481480

482481
Spawn spawnSystem = new Spawn.SpawnSystem()
483482
.create("spawn-system")
484-
.withPort(8091)
485-
.withProxyPort(9003)
486-
.addActorWithArgs(Joe.class, actorConstructorArgs, arg -> new Joe((Map<String, String>) arg))
483+
.withActor(Joe.class, actorConstructorArgs, arg -> new Joe((Map<String, String>) arg))
487484
.build();
488485

489486
spawnSystem.start();
@@ -546,22 +543,22 @@ For this the developer just needs to make use of the correct annotation. For exa
546543
```java
547544
package io.eigr.spawn.test.actors;
548545

549-
import io.eigr.spawn.api.Value;
546+
import io.eigr.spawn.api.actors.Value;
550547
import io.eigr.spawn.api.actors.ActorContext;
551548
import io.eigr.spawn.api.actors.annotations.Action;
552549
import io.eigr.spawn.api.actors.annotations.stateless.StatelessNamedActor;
553550
import io.eigr.spawn.java.test.domain.Actor;
554551

555552
@StatelessNamedActor(name = "test_joe")
556553
public class JoeActor {
557-
@Action
558-
public Value hi(Actor.Request msg, ActorContext<?> context) {
559-
return Value.at()
560-
.response(Actor.Reply.newBuilder()
561-
.setResponse("Hello From Java")
562-
.build())
563-
.reply();
564-
}
554+
@Action
555+
public Value hi(Actor.Request msg, ActorContext<?> context) {
556+
return Value.at()
557+
.response(Actor.Reply.newBuilder()
558+
.setResponse("Hello From Java")
559+
.build())
560+
.reply();
561+
}
565562
}
566563
```
567564

@@ -638,7 +635,7 @@ See an example:
638635
```Java
639636
package io.eigr.spawn.java.demo;
640637

641-
import io.eigr.spawn.api.Value;
638+
import io.eigr.spawn.api.actors.Value;
642639
import io.eigr.spawn.api.actors.ActorContext;
643640
import io.eigr.spawn.api.actors.ActorRef;
644641
import io.eigr.spawn.api.actors.annotations.Action;
@@ -648,24 +645,24 @@ import io.eigr.spawn.java.demo.domain.Domain;
648645

649646
@StatefulNamedActor(name = "side_effect_actor", stateType = Domain.State.class)
650647
public class SideEffectActorExample {
651-
@Action
652-
public Value setLanguage(Domain.Request msg, ActorContext<Domain.State> ctx) throws Exception {
653-
// Create a ActorReference to send side effect message
654-
ActorRef sideEffectReceiverActor = ctx.getSpawnSystem()
655-
.createActorRef("spawn-system", "mike", "abs_actor");
648+
@Action
649+
public Value setLanguage(Domain.Request msg, ActorContext<Domain.State> ctx) throws Exception {
650+
// Create a ActorReference to send side effect message
651+
ActorRef sideEffectReceiverActor = ctx.getSpawnSystem()
652+
.createActorRef("spawn-system", "mike", "abs_actor");
656653

657-
return Value.at()
658-
.response(Domain.Reply.newBuilder()
659-
.setResponse("Hello From Java")
660-
.build())
661-
.state(updateState("java"))
662-
.flow(SideEffect.to(sideEffectReceiverActor, "setLanguage", msg))
663-
//.flow(SideEffect.to(emailSenderReceiverActor, "sendEmail", emailMessage))
664-
//.flow(SideEffect.to(otherReceiverActor, "otherAction", otherMessage))
665-
.noReply();
666-
}
654+
return Value.at()
655+
.response(Domain.Reply.newBuilder()
656+
.setResponse("Hello From Java")
657+
.build())
658+
.state(updateState("java"))
659+
.flow(SideEffect.to(sideEffectReceiverActor, "setLanguage", msg))
660+
//.flow(SideEffect.to(emailSenderReceiverActor, "sendEmail", emailMessage))
661+
//.flow(SideEffect.to(otherReceiverActor, "otherAction", otherMessage))
662+
.noReply();
663+
}
667664

668-
// ....
665+
// ....
669666
}
670667
```
671668

@@ -684,7 +681,7 @@ See an example:
684681
```Java
685682
package io.eigr.spawn.java.demo;
686683

687-
import io.eigr.spawn.api.Value;
684+
import io.eigr.spawn.api.actors.Value;
688685
import io.eigr.spawn.api.actors.ActorContext;
689686
import io.eigr.spawn.api.actors.ActorRef;
690687
import io.eigr.spawn.api.actors.annotations.Action;
@@ -708,7 +705,7 @@ public class ForwardExample {
708705
.createActorRef("spawn-system", "mike", "abs_actor");
709706

710707
return Value.at()
711-
.flow(Forward.to(forwardedActor,"setLanguage"))
708+
.flow(Forward.to(forwardedActor, "setLanguage"))
712709
.noReply();
713710
}
714711
}
@@ -726,7 +723,7 @@ Example:
726723
```Java
727724
package io.eigr.spawn.java.demo;
728725

729-
import io.eigr.spawn.api.Value;
726+
import io.eigr.spawn.api.actors.Value;
730727
import io.eigr.spawn.api.actors.ActorContext;
731728
import io.eigr.spawn.api.actors.ActorRef;
732729
import io.eigr.spawn.api.actors.annotations.Action;
@@ -737,25 +734,25 @@ import io.eigr.spawn.java.demo.domain.Domain;
737734
@StatefulNamedActor(name = "pipe_actor", stateType = Domain.State.class)
738735
public class PipeActorExample {
739736

740-
@Action
741-
public Value setLanguage(Domain.Request msg, ActorContext<Domain.State> ctx) throws Exception {
742-
ActorRef pipeReceiverActor = ctx.getSpawnSystem()
743-
.createActorRef("spawn-system", "joe");
737+
@Action
738+
public Value setLanguage(Domain.Request msg, ActorContext<Domain.State> ctx) throws Exception {
739+
ActorRef pipeReceiverActor = ctx.getSpawnSystem()
740+
.createActorRef("spawn-system", "joe");
744741

745-
return Value.at()
746-
.response(Domain.Reply.newBuilder()
747-
.setResponse("Hello From Java")
748-
.build())
749-
.flow(Pipe.to(pipeReceiverActor, "someAction"))
750-
.state(updateState("java"))
751-
.noReply();
752-
}
742+
return Value.at()
743+
.response(Domain.Reply.newBuilder()
744+
.setResponse("Hello From Java")
745+
.build())
746+
.flow(Pipe.to(pipeReceiverActor, "someAction"))
747+
.state(updateState("java"))
748+
.noReply();
749+
}
753750

754-
private Domain.State updateState(String language) {
755-
return Domain.State.newBuilder()
756-
.addLanguages(language)
757-
.build();
758-
}
751+
private Domain.State updateState(String language) {
752+
return Domain.State.newBuilder()
753+
.addLanguages(language)
754+
.build();
755+
}
759756
}
760757
```
761758

@@ -780,24 +777,24 @@ And this can be done in the following way:
780777
Example:
781778

782779
```Java
783-
import io.eigr.spawn.api.Value;
780+
import io.eigr.spawn.api.actors.Value;
784781
import io.eigr.spawn.api.actors.ActorContext;
785782
import io.eigr.spawn.api.actors.annotations.Action;
786783
import io.eigr.spawn.api.actors.annotations.stateful.StatefulNamedActor;
787784
import io.eigr.spawn.java.demo.domain.Domain;
788785

789786
@StatefulNamedActor(name = "joe", stateType = Domain.JoeState.class)
790787
public final class Joe {
791-
@Action(inputType = Domain.Request.class)
792-
public Value setLanguage(Domain.Request msg, ActorContext<Domain.JoeState> context) {
793-
return Value.at()
794-
.response(Domain.Reply.newBuilder()
795-
.setResponse("Hello From Java")
796-
.build())
797-
.state(updateState("java"), true)
798-
.reply();
799-
}
800-
// ...
788+
@Action(inputType = Domain.Request.class)
789+
public Value setLanguage(Domain.Request msg, ActorContext<Domain.JoeState> context) {
790+
return Value.at()
791+
.response(Domain.Reply.newBuilder()
792+
.setResponse("Hello From Java")
793+
.build())
794+
.state(updateState("java"), true)
795+
.reply();
796+
}
797+
// ...
801798
}
802799
```
803800

@@ -852,6 +849,7 @@ package io.eigr.spawn.java.demo;
852849
import io.eigr.spawn.api.Spawn;
853850
import io.eigr.spawn.api.Spawn.SpawnSystem;
854851
import io.eigr.spawn.api.actors.ActorRef;
852+
import io.eigr.spawn.api.TransportOpts;
855853
import io.eigr.spawn.java.demo.domain.Domain;
856854

857855
import java.util.Optional;
@@ -860,9 +858,13 @@ public class App {
860858
public static void main(String[] args) throws Exception {
861859
Spawn spawnSystem = new SpawnSystem()
862860
.create("spawn-system")
863-
.withPort(8091)
864-
.withProxyPort(9003)
865861
.withActor(Joe.class)
862+
.withTransportOptions(
863+
TransportOpts.builder()
864+
.port(8091)
865+
.proxyPort(9003)
866+
.build()
867+
)
866868
.build();
867869

868870
spawnSystem.start();

src/main/java/io/eigr/spawn/api/Spawn.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@
1111
import io.eigr.spawn.api.actors.annotations.stateless.StatelessNamedActor;
1212
import io.eigr.spawn.api.actors.annotations.stateless.StatelessPooledActor;
1313
import io.eigr.spawn.api.actors.annotations.stateless.StatelessUnNamedActor;
14-
import io.eigr.spawn.api.transport.TransportOpts;
1514
import io.eigr.spawn.internal.Entity;
16-
import io.eigr.spawn.internal.client.OkHttpSpawnClient;
17-
import io.eigr.spawn.internal.client.SpawnClient;
18-
import io.eigr.spawn.internal.handlers.ActorServiceHandler;
15+
import io.eigr.spawn.internal.transport.client.OkHttpSpawnClient;
16+
import io.eigr.spawn.internal.transport.client.SpawnClient;
17+
import io.eigr.spawn.internal.transport.server.ActorServiceHandler;
1918
import org.slf4j.Logger;
2019
import org.slf4j.LoggerFactory;
2120

@@ -234,28 +233,28 @@ public SpawnSystem create(String system) {
234233

235234
public SpawnSystem createFromEnv() {
236235
String system = System.getenv("PROXY_ACTOR_SYSTEM_NAME");
237-
Objects.requireNonNull(system, "To use createFromEnv it is necessary to have defined the environment variable PROXY_ACTOR_SYSTEM_NAME");
236+
Objects.requireNonNull(system, "To use createFromEnv method it is necessary to have defined the environment variable PROXY_ACTOR_SYSTEM_NAME");
238237
this.system = system;
239238
return this;
240239
}
241240

242-
public SpawnSystem addActor(Class<?> actorKlass) {
241+
public SpawnSystem withActor(Class<?> actorKlass) {
243242
Optional<Entity> maybeEntity = getEntity(actorKlass);
244243
if (maybeEntity.isPresent()) {
245244
this.entities.add(maybeEntity.get());
246245
}
247246
return this;
248247
}
249248

250-
public SpawnSystem addActorWithArgs(Class<?> actorKlass, Object arg, ActorFactory factory) {
249+
public SpawnSystem withActor(Class<?> actorKlass, Object arg, ActorFactory factory) {
251250
Optional<Entity> maybeEntity = getEntity(actorKlass, arg, factory);
252251
if (maybeEntity.isPresent()) {
253252
this.entities.add(maybeEntity.get());
254253
}
255254
return this;
256255
}
257256

258-
public SpawnSystem withTransportOpts(TransportOpts opts) {
257+
public SpawnSystem withTransportOptions(TransportOpts opts) {
259258
this.transportOpts = opts;
260259
return this;
261260
}

src/main/java/io/eigr/spawn/api/transport/TransportOpts.java renamed to src/main/java/io/eigr/spawn/api/TransportOpts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.eigr.spawn.api.transport;
1+
package io.eigr.spawn.api;
22

33
import lombok.*;
44

src/main/java/io/eigr/spawn/api/actors/ActorRef.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import io.eigr.spawn.api.InvocationOpts;
1111
import io.eigr.spawn.api.exceptions.ActorInvokeException;
1212
import io.eigr.spawn.api.exceptions.ActorNotFoundException;
13-
import io.eigr.spawn.internal.client.SpawnClient;
13+
import io.eigr.spawn.internal.transport.client.SpawnClient;
1414

1515
import java.time.Duration;
1616
import java.util.Objects;

src/main/java/io/eigr/spawn/api/Value.java renamed to src/main/java/io/eigr/spawn/api/actors/Value.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.eigr.spawn.api;
1+
package io.eigr.spawn.api.actors;
22

33
import com.google.protobuf.GeneratedMessageV3;
44
import io.eigr.spawn.api.actors.workflows.Broadcast;

src/main/java/io/eigr/spawn/internal/client/OkHttpSpawnClient.java renamed to src/main/java/io/eigr/spawn/internal/transport/client/OkHttpSpawnClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.eigr.spawn.internal.client;
1+
package io.eigr.spawn.internal.transport.client;
22

33
import io.eigr.functions.protocol.Protocol;
44
import okhttp3.*;

src/main/java/io/eigr/spawn/internal/client/SpawnClient.java renamed to src/main/java/io/eigr/spawn/internal/transport/client/SpawnClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.eigr.spawn.internal.client;
1+
package io.eigr.spawn.internal.transport.client;
22

33
import io.eigr.functions.protocol.Protocol;
44

0 commit comments

Comments
 (0)