main(String[] args)
method. You will see that it is in the TutorialPlane
for the tutorial repo (https://github.com/swimos/tutorial/blob/master/server/src/main/java/swim/tutorial/TutorialPlane.java#L15). The web agents themselves are defined in the TutorialPlane
as seen here: https://github.com/swimos/tutorial/blob/master/server/src/main/java/swim/tutorial/TutorialPlane.java#L12-L13. So the simplest thing for you to do is to add more WebAgent java classess using that pattern and keep the same method of running the application using the same gradle files
> Task :run
Running Server plane...
[/user/john] Hello, world!
[/user/john] Surname of John is "Doe XAE"
[/user/john] Surname of John is "{\"x\":\"y\"}"
swim.codec.DecoderException: incomplete
at swim.ws.WsStatusDecoder.decode(WsStatusDecoder.java:66)
at swim.ws.WsStatusDecoder.feed(WsStatusDecoder.java:39)
at swim.ws.WsFrameDecoder.decode(WsFrameDecoder.java:132)
at swim.ws.WsFrameDecoder.decode(WsFrameDecoder.java:179)
at swim.ws.WsDecoder.decodeCloseFrame(WsDecoder.java:115)
at swim.ws.WsDecoder.decodeFrame(WsDecoder.java:94)
at swim.ws.WsOpcodeDecoder.decode(WsOpcodeDecoder.java:38)
at swim.ws.WsOpcodeDecoder.feed(WsOpcodeDecoder.java:32)
at swim.io.IpSocketModem.doRead(IpSocketModem.java:164)
at swim.io.TcpSocket.doRead(TcpSocket.java:230)
at swim.io.StationTransport.doRead(Station.java:579)
at swim.io.StationReader.runTask(Station.java:796)
at swim.concurrent.TheaterTask.run(Theater.java:431)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1425)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
[/user/john] Surname of John is "Hello World"
swim.codec.DecoderException: incomplete
at swim.ws.WsStatusDecoder.decode(WsStatusDecoder.java:66)
at swim.ws.WsStatusDecoder.feed(WsStatusDecoder.java:39)
at swim.ws.WsFrameDecoder.decode(WsFrameDecoder.java:132)
at swim.ws.WsFrameDecoder.decode(WsFrameDecoder.java:179)
at swim.ws.WsDecoder.decodeCloseFrame(WsDecoder.java:115)
at swim.ws.WsDecoder.decodeFrame(WsDecoder.java:94)
at swim.ws.WsOpcodeDecoder.decode(WsOpcodeDecoder.java:38)
at swim.ws.WsOpcodeDecoder.feed(WsOpcodeDecoder.java:32)
at swim.io.IpSocketModem.doRead(IpSocketModem.java:164)
at swim.io.TcpSocket.doRead(TcpSocket.java:230)
at swim.io.StationTransport.doRead(Station.java:579)
at swim.io.StationReader.runTask(Station.java:796)
at swim.concurrent.TheaterTask.run(Theater.java:431)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1425)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
<=========----> 75% EXECUTING [5m 40s]
> :run
var swim = require("@swim/client");
var structure = require("@swim/structure");
var msg = structure.Text.from('Hello World')
const hostRef = swim.hostRef("warp://localhost:9001");
const client = new swim.WarpClient();
client.command("warp://localhost:9001", "/user/john", "getSurname", msg);
[/user/john] Surname of John is "Hello World"
swim.codec.DecoderException: incomplete
compile group: 'org.swimos', name: 'swim-server', version: '3.10.0'
compile group: 'org.swimos', name: 'swim-api', version: '3.10.0'
compile group: 'org.swimos', name: 'swim-client', version: '3.10.0'