@@ -30,85 +30,100 @@ import scala.jdk.CollectionConverters._
3030import scala .collection .immutable
3131import scala .compat .java8 .OptionConverters ._
3232
33- private [impl ] class MetadataImpl (val entries : immutable.Seq [MetadataEntry ]) extends Metadata with CloudEvent {
33+ private [akkaserverless ] class MetadataImpl (val entries : immutable.Seq [MetadataEntry ]) extends Metadata with CloudEvent {
3434
3535 override def has (key : String ): Boolean = entries.exists(_.key.equalsIgnoreCase(key))
3636
3737 override def get (key : String ): Optional [String ] =
38+ getScala(key).asJava
39+
40+ private [akkaserverless] def getScala (key : String ): Option [String ] =
3841 entries.collectFirst {
3942 case MetadataEntry (k, MetadataEntry .Value .StringValue (value), _) if key.equalsIgnoreCase(k) =>
4043 value
41- }.asJava
44+ }
4245
4346 override def getAll (key : String ): util.List [String ] =
47+ getAllScala(key).asJava
48+
49+ private [akkaserverless] def getAllScala (key : String ): Seq [String ] =
4450 entries.collect {
4551 case MetadataEntry (k, MetadataEntry .Value .StringValue (value), _) if key.equalsIgnoreCase(k) =>
4652 value
47- }.asJava
53+ }
4854
4955 override def getBinary (key : String ): Optional [ByteBuffer ] =
56+ getBinaryScala(key).asJava
57+
58+ private [akkaserverless] def getBinaryScala (key : String ): Option [ByteBuffer ] =
5059 entries.collectFirst {
5160 case MetadataEntry (k, MetadataEntry .Value .BytesValue (value), _) if key.equalsIgnoreCase(k) =>
5261 value.asReadOnlyByteBuffer()
53- }.asJava
62+ }
5463
5564 override def getBinaryAll (key : String ): util.List [ByteBuffer ] =
65+ getBinaryAllScala(key).asJava
66+
67+ private [akkaserverless] def getBinaryAllScala (key : String ): Seq [ByteBuffer ] =
5668 entries.collect {
5769 case MetadataEntry (k, MetadataEntry .Value .BytesValue (value), _) if key.equalsIgnoreCase(k) =>
5870 value.asReadOnlyByteBuffer()
59- }.asJava
71+ }
6072
61- override def getAllKeys : util.List [String ] = entries.map(_.key).asJava
73+ override def getAllKeys : util.List [String ] = getAllKeysScala.asJava
74+ private [akkaserverless] def getAllKeysScala : Seq [String ] = entries.map(_.key)
6275
6376 override def set (key : String , value : String ): MetadataImpl = {
6477 Objects .requireNonNull(key, " Key must not be null" )
6578 Objects .requireNonNull(value, " Value must not be null" )
6679 new MetadataImpl (removeKey(key) :+ MetadataEntry (key, MetadataEntry .Value .StringValue (value)))
6780 }
6881
69- override def setBinary (key : String , value : ByteBuffer ): Metadata = {
82+ override def setBinary (key : String , value : ByteBuffer ): MetadataImpl = {
7083 Objects .requireNonNull(key, " Key must not be null" )
7184 Objects .requireNonNull(value, " Value must not be null" )
7285 new MetadataImpl (removeKey(key) :+ MetadataEntry (key, MetadataEntry .Value .BytesValue (ByteString .copyFrom(value))))
7386 }
7487
75- override def add (key : String , value : String ): Metadata = {
88+ override def add (key : String , value : String ): MetadataImpl = {
7689 Objects .requireNonNull(key, " Key must not be null" )
7790 Objects .requireNonNull(value, " Value must not be null" )
7891 new MetadataImpl (entries :+ MetadataEntry (key, MetadataEntry .Value .StringValue (value)))
7992 }
8093
81- override def addBinary (key : String , value : ByteBuffer ): Metadata = {
94+ override def addBinary (key : String , value : ByteBuffer ): MetadataImpl = {
8295 Objects .requireNonNull(key, " Key must not be null" )
8396 Objects .requireNonNull(value, " Value must not be null" )
8497 new MetadataImpl (entries :+ MetadataEntry (key, MetadataEntry .Value .BytesValue (ByteString .copyFrom(value))))
8598 }
8699
87100 override def remove (key : String ): MetadataImpl = new MetadataImpl (removeKey(key))
88101
89- override def clear (): Metadata = MetadataImpl .Empty
102+ override def clear (): MetadataImpl = MetadataImpl .Empty
103+
104+ private [akkaserverless] def iteratorScala [R ](f : MetadataEntry => R ): Iterator [R ] =
105+ entries.iterator.map(f)
90106
91107 override def iterator (): util.Iterator [Metadata .MetadataEntry ] =
92- entries.iterator.map { entry =>
108+ iteratorScala( entry =>
93109 new Metadata .MetadataEntry {
94110 override def getKey : String = entry.key
95111 override def getValue : String = entry.value.stringValue.orNull
96112 override def getBinaryValue : ByteBuffer = entry.value.bytesValue.map(_.asReadOnlyByteBuffer()).orNull
97113 override def isText : Boolean = entry.value.isStringValue
98114 override def isBinary : Boolean = entry.value.isBytesValue
99- }
100- }.asJava
115+ }).asJava
101116
102117 private def removeKey (key : String ) = entries.filterNot(_.key.equalsIgnoreCase(key))
103118
104119 def isCloudEvent : Boolean = MetadataImpl .CeRequired .forall(h => has(h))
105120
106- override def asCloudEvent (): CloudEvent =
121+ override def asCloudEvent (): MetadataImpl =
107122 if (! isCloudEvent) {
108123 throw new IllegalStateException (" Metadata is not a CloudEvent!" )
109124 } else this
110125
111- override def asCloudEvent (id : String , source : URI , `type` : String ): CloudEvent =
126+ override def asCloudEvent (id : String , source : URI , `type` : String ): MetadataImpl =
112127 new MetadataImpl (
113128 entries.filterNot(e => MetadataImpl .CeRequired (e.key)) ++
114129 Seq (
@@ -131,41 +146,46 @@ private[impl] class MetadataImpl(val entries: immutable.Seq[MetadataEntry]) exte
131146
132147 override def id (): String = getRequiredCloudEventField(MetadataImpl .CeId )
133148
134- override def withId (id : String ): CloudEvent = set(MetadataImpl .CeId , id)
149+ override def withId (id : String ): MetadataImpl = set(MetadataImpl .CeId , id)
135150
136151 override def source (): URI = URI .create(getRequiredCloudEventField(MetadataImpl .CeSource ))
137152
138- override def withSource (source : URI ): CloudEvent = set(MetadataImpl .CeSource , source.toString)
153+ override def withSource (source : URI ): MetadataImpl = set(MetadataImpl .CeSource , source.toString)
139154
140155 override def `type` (): String = getRequiredCloudEventField(MetadataImpl .CeType )
141156
142- override def withType (`type` : String ): CloudEvent = set(MetadataImpl .CeType , `type`)
157+ override def withType (`type` : String ): MetadataImpl = set(MetadataImpl .CeType , `type`)
143158
144- override def datacontenttype (): Optional [String ] = get(MetadataImpl .CeDatacontenttype )
159+ override def datacontenttype (): Optional [String ] = getScala(MetadataImpl .CeDatacontenttype ).asJava
160+ private [akkaserverless] def datacontenttypeScala (): Option [String ] = getScala(MetadataImpl .CeDatacontenttype )
145161
146- override def withDatacontenttype (datacontenttype : String ): CloudEvent =
162+ override def withDatacontenttype (datacontenttype : String ): MetadataImpl =
147163 set(MetadataImpl .CeDatacontenttype , datacontenttype)
148164
149- override def clearDatacontenttype (): CloudEvent = remove(MetadataImpl .CeDatacontenttype )
165+ override def clearDatacontenttype (): MetadataImpl = remove(MetadataImpl .CeDatacontenttype )
150166
151- override def dataschema (): Optional [URI ] = get(MetadataImpl .CeDataschema ).map(URI .create(_))
167+ override def dataschema (): Optional [URI ] = dataschemaScala().asJava
168+ private [akkaserverless] def dataschemaScala (): Option [URI ] = getScala(MetadataImpl .CeDataschema ).map(URI .create(_))
152169
153- override def withDataschema (dataschema : URI ): CloudEvent = set(MetadataImpl .CeDataschema , dataschema.toString)
170+ override def withDataschema (dataschema : URI ): MetadataImpl = set(MetadataImpl .CeDataschema , dataschema.toString)
154171
155- override def clearDataschema (): CloudEvent = remove(MetadataImpl .CeDataschema )
172+ override def clearDataschema (): MetadataImpl = remove(MetadataImpl .CeDataschema )
156173
157- override def subject (): Optional [String ] = get(MetadataImpl .CeSubject )
174+ override def subject (): Optional [String ] = subjectScala.asJava
175+ private [akkaserverless] def subjectScala : Option [String ] = getScala(MetadataImpl .CeSubject )
158176
159- override def withSubject (subject : String ): CloudEvent = set(MetadataImpl .CeSubject , subject)
177+ override def withSubject (subject : String ): MetadataImpl = set(MetadataImpl .CeSubject , subject)
160178
161- override def clearSubject (): CloudEvent = remove(MetadataImpl .CeSubject )
179+ override def clearSubject (): MetadataImpl = remove(MetadataImpl .CeSubject )
162180
163- override def time (): Optional [ZonedDateTime ] = get(MetadataImpl .CeTime ).map(ZonedDateTime .parse(_))
181+ override def time (): Optional [ZonedDateTime ] = timeScala.asJava
182+ private [akkaserverless] def timeScala : Option [ZonedDateTime ] =
183+ getScala(MetadataImpl .CeTime ).map(ZonedDateTime .parse(_))
164184
165- override def withTime (time : ZonedDateTime ): CloudEvent =
185+ override def withTime (time : ZonedDateTime ): MetadataImpl =
166186 set(MetadataImpl .CeTime , DateTimeFormatter .ISO_OFFSET_DATE_TIME .format(time))
167187
168- override def clearTime (): CloudEvent = remove(MetadataImpl .CeTime )
188+ override def clearTime (): MetadataImpl = remove(MetadataImpl .CeTime )
169189
170190 override def asMetadata (): Metadata = this
171191}
0 commit comments