diff --git a/fed/mosaic-omnetpp/src/main/java/org/eclipse/mosaic/fed/omnetpp/ambassador/OmnetppAmbassador.java b/fed/mosaic-omnetpp/src/main/java/org/eclipse/mosaic/fed/omnetpp/ambassador/OmnetppAmbassador.java index f39a50479..3df36690a 100644 --- a/fed/mosaic-omnetpp/src/main/java/org/eclipse/mosaic/fed/omnetpp/ambassador/OmnetppAmbassador.java +++ b/fed/mosaic-omnetpp/src/main/java/org/eclipse/mosaic/fed/omnetpp/ambassador/OmnetppAmbassador.java @@ -25,6 +25,9 @@ import org.apache.commons.lang3.ObjectUtils; +import java.io.FileNotFoundException; +import java.nio.file.Files; +import java.nio.file.Paths; import javax.annotation.Nonnull; /** @@ -43,8 +46,11 @@ public OmnetppAmbassador(AmbassadorParameter ambassadorParameter) { @Nonnull @Override - public FederateExecutor createFederateExecutor(String host, int port, OperatingSystem os) { - String omnetppConfigFileName = ObjectUtils.defaultIfNull(config.federateConfigurationFile, "omnetpp.ini"); + public FederateExecutor createFederateExecutor(String host, int port, OperatingSystem os) throws FileNotFoundException { + String omnetppConfigFileName = ObjectUtils.defaultIfNull(config.federateConfigurationFile, "omnetpp.ini"); // default // this one is required + if(!Files.exists(Paths.get(this.ambassadorParameter.configuration.getParent(), omnetppConfigFileName))) { + throw new FileNotFoundException(omnetppConfigFileName + " missing"); + } String omnetppConfigFilePath = "omnetpp-federate/simulations/" + omnetppConfigFileName; String inetSourceDirectories = "inet:omnetpp-federate/src"; switch (os) { diff --git a/rti/mosaic-rti-api/src/main/java/org/eclipse/mosaic/rti/api/AbstractFederateAmbassador.java b/rti/mosaic-rti-api/src/main/java/org/eclipse/mosaic/rti/api/AbstractFederateAmbassador.java index 267bc026f..522c59da0 100644 --- a/rti/mosaic-rti-api/src/main/java/org/eclipse/mosaic/rti/api/AbstractFederateAmbassador.java +++ b/rti/mosaic-rti-api/src/main/java/org/eclipse/mosaic/rti/api/AbstractFederateAmbassador.java @@ -24,6 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.FileNotFoundException; import java.io.InputStream; import java.util.concurrent.PriorityBlockingQueue; import javax.annotation.Nonnull; @@ -210,7 +211,7 @@ public DockerFederateExecutor createDockerFederateExecutor(String imageName, CLo */ @Nonnull @Override - public FederateExecutor createFederateExecutor(String host, int port, CLocalHost.OperatingSystem os) { + public FederateExecutor createFederateExecutor(String host, int port, CLocalHost.OperatingSystem os) throws FileNotFoundException { log.trace("createFederateStarter(String host, int port, CLocalHost.OperatingSystem os); host: {}, port: {}, os: {}", host, port, os); return new NopFederateExecutor(); } diff --git a/rti/mosaic-rti-api/src/main/java/org/eclipse/mosaic/rti/api/FederateAmbassador.java b/rti/mosaic-rti-api/src/main/java/org/eclipse/mosaic/rti/api/FederateAmbassador.java index 5cbe19fde..4584318fd 100644 --- a/rti/mosaic-rti-api/src/main/java/org/eclipse/mosaic/rti/api/FederateAmbassador.java +++ b/rti/mosaic-rti-api/src/main/java/org/eclipse/mosaic/rti/api/FederateAmbassador.java @@ -20,6 +20,7 @@ import org.eclipse.mosaic.rti.api.parameters.FederateDescriptor; import org.eclipse.mosaic.rti.config.CLocalHost.OperatingSystem; +import java.io.FileNotFoundException; import java.io.InputStream; import javax.annotation.Nonnull; @@ -41,7 +42,7 @@ public interface FederateAmbassador extends Comparable { * @return the {@link FederateExecutor} which starts the federate */ @Nonnull - FederateExecutor createFederateExecutor(String host, int port, OperatingSystem os); + FederateExecutor createFederateExecutor(String host, int port, OperatingSystem os) throws FileNotFoundException; /** * If the federate or simulator can be executed as a docker container, this method returns a diff --git a/rti/mosaic-starter/src/main/java/org/eclipse/mosaic/starter/MosaicSimulation.java b/rti/mosaic-starter/src/main/java/org/eclipse/mosaic/starter/MosaicSimulation.java index 7fee54243..7466ee760 100644 --- a/rti/mosaic-starter/src/main/java/org/eclipse/mosaic/starter/MosaicSimulation.java +++ b/rti/mosaic-starter/src/main/java/org/eclipse/mosaic/starter/MosaicSimulation.java @@ -374,7 +374,7 @@ private FederateDescriptor loadFederate(Path scenarioDirectory, CRuntime.CFedera return descriptor; } - private void initializeFederate(CRuntime.CFederate federate, FederateDescriptor descriptor) { + private void initializeFederate(CRuntime.CFederate federate, FederateDescriptor descriptor) throws FileNotFoundException { final FederateAmbassador ambassador = descriptor.getAmbassador(); final CLocalHost host = descriptor.getHost();