File tree Expand file tree Collapse file tree 1 file changed +14
-2
lines changed
model-api/src/commonMain/kotlin/org/modelix/model/api Expand file tree Collapse file tree 1 file changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -18,17 +18,29 @@ interface INodeReferenceSerializer {
18
18
}
19
19
20
20
fun register (serializer : INodeReferenceSerializer ) {
21
+ register(serializer, true )
22
+ }
23
+
24
+ fun register (serializer : INodeReferenceSerializer , replace : Boolean ) {
21
25
if (serializer is INodeReferenceSerializerEx ) {
22
26
val prefix = serializer.prefix
23
27
val existingDeserializer = deserializerForPrefix[prefix]
24
28
if (existingDeserializer != null ) {
25
- throw IllegalStateException (" Deserializer for '$prefix :' already registered: $existingDeserializer " )
29
+ if (replace) {
30
+ unregister(existingDeserializer)
31
+ } else {
32
+ throw IllegalStateException (" Deserializer for '$prefix :' already registered: $existingDeserializer " )
33
+ }
26
34
}
27
35
val supportedClasses = serializer.supportedReferenceClasses
28
36
for (supportedClass in supportedClasses) {
29
37
val existingSerializer = serializersForClass[supportedClass]
30
38
if (existingSerializer != null ) {
31
- throw IllegalStateException (" Serializer for $supportedClass already registered: $existingSerializer " )
39
+ if (replace) {
40
+ unregister(existingSerializer)
41
+ } else {
42
+ throw IllegalStateException (" Serializer for $supportedClass already registered: $existingSerializer " )
43
+ }
32
44
}
33
45
}
34
46
deserializerForPrefix[prefix] = serializer
You can’t perform that action at this time.
0 commit comments