diff --git a/amber/src/main/scala/org/apache/texera/amber/engine/architecture/messaginglayer/AmberFIFOChannel.scala b/amber/src/main/scala/org/apache/texera/amber/engine/architecture/messaginglayer/AmberFIFOChannel.scala index d81b4239ba7..d1b5d7ab01c 100644 --- a/amber/src/main/scala/org/apache/texera/amber/engine/architecture/messaginglayer/AmberFIFOChannel.scala +++ b/amber/src/main/scala/org/apache/texera/amber/engine/architecture/messaginglayer/AmberFIFOChannel.scala @@ -117,6 +117,10 @@ class AmberFIFOChannel(val channelId: ChannelIdentity) extends AmberLogging { } def getPortId: PortIdentity = { - this.portId.get + this.portId.getOrElse( + throw new IllegalStateException( + s"portId has not been set for channel $channelId; call setPortId before getPortId" + ) + ) } } diff --git a/amber/src/test/scala/org/apache/texera/amber/engine/architecture/messaginglayer/AmberFIFOChannelSpec.scala b/amber/src/test/scala/org/apache/texera/amber/engine/architecture/messaginglayer/AmberFIFOChannelSpec.scala index 2109d22e328..5da17269d05 100644 --- a/amber/src/test/scala/org/apache/texera/amber/engine/architecture/messaginglayer/AmberFIFOChannelSpec.scala +++ b/amber/src/test/scala/org/apache/texera/amber/engine/architecture/messaginglayer/AmberFIFOChannelSpec.scala @@ -184,12 +184,13 @@ class AmberFIFOChannelSpec extends AnyFlatSpec { // PortId association // --------------------------------------------------------------------------- - "AmberFIFOChannel.getPortId" should "throw when no portId has been set" in { + "AmberFIFOChannel.getPortId" should "throw IllegalStateException with a descriptive message when no portId has been set" in { val ch = new AmberFIFOChannel(cid) - // Option.get on None - assertThrows[NoSuchElementException] { + val ex = intercept[IllegalStateException] { ch.getPortId } + assert(ex.getMessage.contains("portId has not been set")) + assert(ex.getMessage.contains(cid.toString)) } it should "return the most recently configured portId" in {