From 3e5f18d5759ff9850edbc861f03fc89030f7691c Mon Sep 17 00:00:00 2001 From: Karl Schrab Date: Fri, 19 Jul 2024 12:06:02 +0200 Subject: [PATCH] feat(output): pass RTI to output generators for additional interaction --- .../fed/output/ambassador/OutputAmbassador.java | 2 +- .../output/ambassador/OutputGeneratorLoader.java | 16 +++++++++++++++- .../output/generator/file/FileOutputLoader.java | 5 +++-- .../websocket/WebsocketVisualizerLoader.java | 5 +++-- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/ambassador/OutputAmbassador.java b/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/ambassador/OutputAmbassador.java index ea18fd199..ba9ff806f 100644 --- a/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/ambassador/OutputAmbassador.java +++ b/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/ambassador/OutputAmbassador.java @@ -126,7 +126,7 @@ private Collection loadConfiguration() { // create a new instance of the generator loader loader = loaderClass.getDeclaredConstructor().newInstance(); - loader.initialize(generatorXmlConfiguration, ambassadorParameter.configuration.getParentFile()); + loader.initialize(rti, generatorXmlConfiguration, ambassadorParameter.configuration.getParentFile()); } catch (InternalFederateException e) { throw e; } catch (Exception e) { diff --git a/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/ambassador/OutputGeneratorLoader.java b/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/ambassador/OutputGeneratorLoader.java index aa1111c0a..f2ceb8a78 100644 --- a/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/ambassador/OutputGeneratorLoader.java +++ b/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/ambassador/OutputGeneratorLoader.java @@ -15,6 +15,8 @@ package org.eclipse.mosaic.fed.output.ambassador; +import org.eclipse.mosaic.rti.api.RtiAmbassador; + import ch.qos.logback.classic.LoggerContext; import org.apache.commons.configuration2.HierarchicalConfiguration; import org.apache.commons.configuration2.tree.ImmutableNode; @@ -30,6 +32,7 @@ public abstract class OutputGeneratorLoader { private String id; + private RtiAmbassador rti; private int updateInterval; private long handleStartTime; private long handleEndTime; @@ -40,10 +43,12 @@ public abstract class OutputGeneratorLoader { * this method is called just after a new instance of a derived output generator config was created. * subclasses should call this method at first, and then proceed with reading custom parameters from the configuration * + * @param rti the {@link RtiAmbassador} of the federation * @param config output generator configuration * @param configurationDirectory output generator configuration directory path */ - public void initialize(HierarchicalConfiguration config, File configurationDirectory) throws Exception { + public void initialize(RtiAmbassador rti, HierarchicalConfiguration config, File configurationDirectory) throws Exception { + this.rti = rti; this.id = ConfigHelper.getId(config); this.updateInterval = ConfigHelper.getUpdateInterval(config); this.handleStartTime = ConfigHelper.getHandleStartTime(config); @@ -62,6 +67,15 @@ public String getId() { return id; } + /** + * Returns the {@link RtiAmbassador} of the federation for additional interaction with RTI. + * + * @return the {@link RtiAmbassador} of the federation. + */ + protected RtiAmbassador getRti() { + return rti; + } + /** * Returns the update interval. * diff --git a/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/generator/file/FileOutputLoader.java b/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/generator/file/FileOutputLoader.java index 5d1e64690..775865b63 100644 --- a/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/generator/file/FileOutputLoader.java +++ b/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/generator/file/FileOutputLoader.java @@ -23,6 +23,7 @@ import org.eclipse.mosaic.fed.output.generator.file.write.WriteByFile; import org.eclipse.mosaic.fed.output.generator.file.write.WriteByFileCompress; import org.eclipse.mosaic.fed.output.generator.file.write.WriteByLog; +import org.eclipse.mosaic.rti.api.RtiAmbassador; import org.apache.commons.configuration2.HierarchicalConfiguration; import org.apache.commons.configuration2.tree.ImmutableNode; @@ -146,8 +147,8 @@ private Write getWrite(HierarchicalConfiguration sub) throws IOEx } @Override - public void initialize(HierarchicalConfiguration config, File configurationDirectory) throws Exception { - super.initialize(config, configurationDirectory); + public void initialize(RtiAmbassador rti, HierarchicalConfiguration config, File configurationDirectory) throws Exception { + super.initialize(rti, config, configurationDirectory); try { this.writer = this.getWrite(config); this.interactionFormatter = this.createInteractionFormatter(config); diff --git a/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/generator/websocket/WebsocketVisualizerLoader.java b/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/generator/websocket/WebsocketVisualizerLoader.java index c7d94fc1b..97e431b03 100644 --- a/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/generator/websocket/WebsocketVisualizerLoader.java +++ b/fed/mosaic-output/src/main/java/org/eclipse/mosaic/fed/output/generator/websocket/WebsocketVisualizerLoader.java @@ -17,6 +17,7 @@ import org.eclipse.mosaic.fed.output.ambassador.AbstractOutputGenerator; import org.eclipse.mosaic.fed.output.ambassador.OutputGeneratorLoader; +import org.eclipse.mosaic.rti.api.RtiAmbassador; import org.apache.commons.configuration2.HierarchicalConfiguration; import org.apache.commons.configuration2.tree.ImmutableNode; @@ -28,8 +29,8 @@ public class WebsocketVisualizerLoader extends OutputGeneratorLoader { private int port; @Override - public void initialize(HierarchicalConfiguration config, File configurationDirectory) throws Exception { - super.initialize(config, configurationDirectory); + public void initialize(RtiAmbassador rti, HierarchicalConfiguration config, File configurationDirectory) throws Exception { + super.initialize(rti, config, configurationDirectory); port = config.getInt("port"); }