diff --git a/sre/io.janusproject/io.janusproject.plugin/pom.xml b/sre/io.janusproject/io.janusproject.plugin/pom.xml index 0998877c9f..f0838a44b6 100644 --- a/sre/io.janusproject/io.janusproject.plugin/pom.xml +++ b/sre/io.janusproject/io.janusproject.plugin/pom.xml @@ -17,6 +17,7 @@ 2.${project.version} io.janusproject.Boot + io.janusproject.Bootstrap @@ -115,12 +116,14 @@ -- ${cliRunnerMainClass} + ${bootstrap} updatemanifest + addbootstrap diff --git a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/Boot.java b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/Boot.java index 53289c9484..395deb7d38 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/Boot.java +++ b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/Boot.java @@ -57,6 +57,8 @@ import io.janusproject.services.network.NetworkConfig; import io.janusproject.util.LoggerCreator; +import io.sarl.core.SRE; +import io.sarl.core.SREBootstrap; import io.sarl.lang.SARLVersion; import io.sarl.lang.core.Agent; @@ -909,6 +911,11 @@ public static Kernel startJanusWithModule(Module startupModule, Class agentCls, Object... params) throws Exception { + final Kernel kern = this.kernel; + if (kern == null) { + synchronized (this) { + this.kernel = Boot.startJanus(agentCls, params); + } + return Boot.getBootAgentIdentifier(); + } + return kern.spawn(agentCls, params); + } + + @Override + public Iterable startAgent(int nbAgents, Class agentCls, Object... params) throws Exception { + Kernel kern = this.kernel; + if (kern == null) { + final List spawned = new ArrayList<>(); + synchronized (this) { + this.kernel = Boot.startJanus(agentCls, params); + kern = this.kernel; + } + spawned.add(Boot.getBootAgentIdentifier()); + if (nbAgents > 1) { + spawned.addAll(kern.spawn(nbAgents - 1, agentCls, params)); + } + return spawned; + } + return kern.spawn(nbAgents, agentCls, params); + } + + @Override + public UUID getBootAgentIdentifier() { + return Boot.getBootAgentIdentifier(); + } + +} diff --git a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/eclipse/sre/JanusSREInstall.java b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/eclipse/sre/JanusSREInstall.java index e956dca79d..1db973d375 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/eclipse/sre/JanusSREInstall.java +++ b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/eclipse/sre/JanusSREInstall.java @@ -31,6 +31,7 @@ import org.w3c.dom.Element; import io.janusproject.Boot; +import io.janusproject.Bootstrap; import io.janusproject.JanusConfig; import io.janusproject.eclipse.buildpath.JanusClasspathContainer; @@ -76,6 +77,7 @@ public JanusSREInstall() { this.location = this.janusSREInstallPath.toPortableString(); setName(JanusConfig.JANUS_DEFAULT_PLATFORM_NAME); setMainClass(Boot.class.getName()); + setBootstrap(Bootstrap.class.getName()); // setClassPathEntries(dependencies.getTransitiveRuntimeClasspathEntries(true)); }