11package com .avsystem .commons
22package serialization
33
4+ trait AcceptsAdditionalCustomMarkers extends AcceptsCustomEvents {
5+
6+ protected def markers : Set [CustomEventMarker [_]]
7+
8+ override def customEvent [T ](marker : CustomEventMarker [T ], event : T ): Boolean =
9+ marker match {
10+ case marker if markers(marker) => true
11+ case _ => super .customEvent(marker, event)
12+ }
13+ }
14+
415/**
516 * [[Input ]] implementation that adds additional markers [[CustomEventMarker ]] to the provided [[Input ]] instance
617 */
718final class CustomMarkersInputWrapper (
819 override protected val wrapped : Input ,
9- markers : Set [CustomEventMarker [_]],
10- ) extends InputWrapper {
20+ override protected val markers : Set [CustomEventMarker [_]],
21+ ) extends InputWrapper with AcceptsAdditionalCustomMarkers {
1122
1223 override def readList (): ListInput =
1324 new CustomMarkersInputWrapper .AdjustedListInput (super .readList(), markers)
1425
1526 override def readObject (): ObjectInput =
1627 new CustomMarkersInputWrapper .AdjustedObjectInput (super .readObject(), markers)
17-
18- override def customEvent [T ](marker : CustomEventMarker [T ], value : T ): Boolean =
19- marker match {
20- case marker if markers(marker) => true
21- case _ => super .customEvent(marker, value)
22- }
2328}
2429object CustomMarkersInputWrapper {
2530 def apply (input : Input , markers : CustomEventMarker [_]* ): CustomMarkersInputWrapper =
2631 new CustomMarkersInputWrapper (input, markers.toSet)
2732
2833 private final class AdjustedListInput (
2934 override protected val wrapped : ListInput ,
30- markers : Set [CustomEventMarker [_]],
31- ) extends ListInputWrapper {
35+ override protected val markers : Set [CustomEventMarker [_]],
36+ ) extends ListInputWrapper with AcceptsAdditionalCustomMarkers {
3237 override def nextElement (): Input = new CustomMarkersInputWrapper (super .nextElement(), markers)
33- override def customEvent [T ](marker : CustomEventMarker [T ], value : T ): Boolean =
34- marker match {
35- case marker if markers(marker) => true
36- case _ => super .customEvent(marker, value)
37- }
3838 }
3939
4040 private final class AdjustedFieldInput (
4141 override protected val wrapped : FieldInput ,
42- markers : Set [CustomEventMarker [_]],
43- ) extends FieldInputWrapper {
42+ override protected val markers : Set [CustomEventMarker [_]],
43+ ) extends FieldInputWrapper with AcceptsAdditionalCustomMarkers {
4444
4545 override def readList (): ListInput = new AdjustedListInput (super .readList(), markers)
4646 override def readObject (): ObjectInput = new AdjustedObjectInput (super .readObject(), markers)
47-
48- override def customEvent [T ](marker : CustomEventMarker [T ], value : T ): Boolean =
49- marker match {
50- case marker if markers(marker) => true
51- case _ => super .customEvent(marker, value)
52- }
5347 }
5448
5549 private final class AdjustedObjectInput (
5650 override protected val wrapped : ObjectInput ,
57- markers : Set [CustomEventMarker [_]],
58- ) extends ObjectInputWrapper {
51+ override protected val markers : Set [CustomEventMarker [_]],
52+ ) extends ObjectInputWrapper with AcceptsAdditionalCustomMarkers {
5953
6054 override def nextField (): FieldInput = new AdjustedFieldInput (super .nextField(), markers)
61-
6255 override def peekField (name : String ): Opt [FieldInput ] =
6356 super .peekField(name).map(new AdjustedFieldInput (_, markers))
64-
65- override def customEvent [T ](marker : CustomEventMarker [T ], value : T ): Boolean =
66- marker match {
67- case marker if markers(marker) => true
68- case _ => super .customEvent(marker, value)
69- }
7057 }
7158}
7259
@@ -75,8 +62,8 @@ object CustomMarkersInputWrapper {
7562 */
7663final class CustomMarkersOutputWrapper (
7764 override protected val wrapped : Output ,
78- markers : Set [CustomEventMarker [_]],
79- ) extends OutputWrapper {
65+ override protected val markers : Set [CustomEventMarker [_]],
66+ ) extends OutputWrapper with AcceptsAdditionalCustomMarkers {
8067
8168 override def writeSimple (): SimpleOutput =
8269 new CustomMarkersOutputWrapper .AdjustedSimpleOutput (super .writeSimple(), markers)
@@ -86,12 +73,6 @@ final class CustomMarkersOutputWrapper(
8673
8774 override def writeObject (): ObjectOutput =
8875 new CustomMarkersOutputWrapper .AdjustedObjectOutput (super .writeObject(), markers)
89-
90- override def customEvent [T ](marker : CustomEventMarker [T ], value : T ): Boolean =
91- marker match {
92- case marker if markers(marker) => true
93- case _ => super .customEvent(marker, value)
94- }
9576}
9677
9778object CustomMarkersOutputWrapper {
@@ -100,40 +81,24 @@ object CustomMarkersOutputWrapper {
10081
10182 private final class AdjustedSimpleOutput (
10283 override protected val wrapped : SimpleOutput ,
103- markers : Set [CustomEventMarker [_]],
104- ) extends SimpleOutputWrapper {
105- override def customEvent [T ](marker : CustomEventMarker [T ], value : T ): Boolean =
106- marker match {
107- case marker if markers(marker) => true
108- case _ => super .customEvent(marker, value)
109- }
110- }
84+ override protected val markers : Set [CustomEventMarker [_]],
85+ ) extends SimpleOutputWrapper with AcceptsAdditionalCustomMarkers
11186
11287 private final class AdjustedListOutput (
11388 override protected val wrapped : ListOutput ,
114- markers : Set [CustomEventMarker [_]],
115- ) extends ListOutputWrapper {
89+ override protected val markers : Set [CustomEventMarker [_]],
90+ ) extends ListOutputWrapper with AcceptsAdditionalCustomMarkers {
91+
11692 override def writeElement (): Output =
11793 new CustomMarkersOutputWrapper (super .writeElement(), markers)
118-
119- override def customEvent [T ](marker : CustomEventMarker [T ], value : T ): Boolean =
120- marker match {
121- case marker if markers(marker) => true
122- case _ => super .customEvent(marker, value)
123- }
12494 }
12595
12696 private final class AdjustedObjectOutput (
12797 override protected val wrapped : ObjectOutput ,
128- markers : Set [CustomEventMarker [_]],
129- ) extends ObjectOutputWrapper {
98+ override protected val markers : Set [CustomEventMarker [_]],
99+ ) extends ObjectOutputWrapper with AcceptsAdditionalCustomMarkers {
100+
130101 override def writeField (key : String ): Output =
131102 new CustomMarkersOutputWrapper (super .writeField(key), markers)
132-
133- override def customEvent [T ](marker : CustomEventMarker [T ], value : T ): Boolean =
134- marker match {
135- case marker if markers(marker) => true
136- case _ => super .customEvent(marker, value)
137- }
138103 }
139104}
0 commit comments