You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/07/31 16:43:36 UTC

[plc4x] 03/04: fix(plc4go): fixed some issues regarding subscription tags

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit a86b2858727dbe77319c99ada2aa86ac455575f6
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Jul 31 18:42:49 2023 +0200

    fix(plc4go):
    fixed some issues regarding subscription tags
---
 plc4go/internal/ads/Subscriber.go                  |  2 +-
 plc4go/internal/cbus/Subscriber_test.go            |  2 +-
 plc4go/internal/cbus/Tag.go                        | 38 +++++++++-----
 plc4go/internal/cbus/Tag_test.go                   |  2 +-
 plc4go/internal/cbus/statusrequesttype_string.go   | 42 +++++++++++++++
 plc4go/pkg/api/model/plc_subscription.go           |  6 +--
 plc4go/spi/model/DefaultPlcSubscriptionRequest.go  | 26 +++++++---
 .../model/DefaultPlcSubscriptionRequest_test.go    | 60 +++++++++++-----------
 plc4go/spi/model/render_test.go                    |  2 +-
 9 files changed, 123 insertions(+), 57 deletions(-)

diff --git a/plc4go/internal/ads/Subscriber.go b/plc4go/internal/ads/Subscriber.go
index c4d61c3786..f40fb97e26 100644
--- a/plc4go/internal/ads/Subscriber.go
+++ b/plc4go/internal/ads/Subscriber.go
@@ -77,7 +77,7 @@ func (m *Connection) Subscribe(ctx context.Context, subscriptionRequest apiModel
 		subSubscriptionRequests[tagName] = spiModel.NewDefaultPlcSubscriptionRequest(
 			m,
 			[]string{tagName},
-			map[string]apiModel.PlcTag{tagName: directTag},
+			map[string]apiModel.PlcSubscriptionTag{tagName: directTag},
 			map[string]apiModel.PlcSubscriptionType{tagName: subscriptionType},
 			map[string]time.Duration{tagName: interval},
 			map[string][]apiModel.PlcSubscriptionEventConsumer{tagName: preRegisteredConsumers},
diff --git a/plc4go/internal/cbus/Subscriber_test.go b/plc4go/internal/cbus/Subscriber_test.go
index 022a6a9f1e..3f7ef73ad9 100644
--- a/plc4go/internal/cbus/Subscriber_test.go
+++ b/plc4go/internal/cbus/Subscriber_test.go
@@ -76,7 +76,7 @@ func TestSubscriber_Subscribe(t *testing.T) {
 			name: "just subscribe",
 			args: args{
 				in0:                 context.Background(),
-				subscriptionRequest: spiModel.NewDefaultPlcSubscriptionRequest(nil, []string{"blub"}, map[string]apiModel.PlcTag{"blub": NewMMIMonitorTag(readWriteModel.NewUnitAddress(1), nil, 1)}, nil, nil, nil),
+				subscriptionRequest: spiModel.NewDefaultPlcSubscriptionRequest(nil, []string{"blub"}, map[string]apiModel.PlcSubscriptionTag{"blub": NewMMIMonitorTag(readWriteModel.NewUnitAddress(1), nil, 1)}, nil, nil, nil),
 			},
 			setup: func(t *testing.T, fields *fields, args *args) {
 				fields.addSubscriber = func(subscriber *Subscriber) {
diff --git a/plc4go/internal/cbus/Tag.go b/plc4go/internal/cbus/Tag.go
index a4e18dcfc8..e279eeec85 100644
--- a/plc4go/internal/cbus/Tag.go
+++ b/plc4go/internal/cbus/Tag.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
+	"time"
 
 	apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
 	apiValues "github.com/apache/plc4x/plc4go/pkg/api/values"
@@ -31,6 +32,8 @@ import (
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
+//go:generate stringer -type StatusRequestType
+//go:generate go run ../../tools/plc4xlicenser/gen.go -type=StatusRequestType
 type StatusRequestType uint8
 
 const (
@@ -38,16 +41,6 @@ const (
 	StatusRequestTypeLevel
 )
 
-func (s StatusRequestType) String() string {
-	switch s {
-	case StatusRequestTypeBinaryState:
-		return "StatusRequestTypeBinaryState"
-	case StatusRequestTypeLevel:
-		return "StatusRequestTypeLevel"
-	}
-	return ""
-}
-
 type Tag interface {
 	apiModel.PlcTag
 
@@ -154,9 +147,14 @@ func NewSALTag(bridgeAddresses []readWriteModel.BridgeAddress, application readW
 	}
 }
 
+type SubscriptionTag interface {
+	Tag
+	apiModel.PlcSubscriptionTag
+}
+
 // SALMonitorTag can be used to monitor sal tags
 type SALMonitorTag interface {
-	Tag
+	SubscriptionTag
 
 	GetUnitAddress() readWriteModel.UnitAddress
 	GetApplication() *readWriteModel.ApplicationIdContainer
@@ -173,7 +171,7 @@ func NewSALMonitorTag(unitAddress readWriteModel.UnitAddress, application *readW
 
 // MMIMonitorTag can be used to monitor mmi tags
 type MMIMonitorTag interface {
-	Tag
+	SubscriptionTag
 
 	GetUnitAddress() readWriteModel.UnitAddress
 	GetApplication() *readWriteModel.ApplicationIdContainer
@@ -246,6 +244,14 @@ type salMonitorTag struct {
 	numElements uint16
 }
 
+func (s salMonitorTag) GetPlcSubscriptionType() apiModel.PlcSubscriptionType {
+	return apiModel.SubscriptionEvent
+}
+
+func (s salMonitorTag) GetDuration() time.Duration {
+	return 0
+}
+
 type mmiMonitorTag struct {
 	tagType     TagType
 	unitAddress readWriteModel.UnitAddress
@@ -253,6 +259,14 @@ type mmiMonitorTag struct {
 	numElements uint16
 }
 
+func (m mmiMonitorTag) GetPlcSubscriptionType() apiModel.PlcSubscriptionType {
+	return apiModel.SubscriptionEvent
+}
+
+func (m mmiMonitorTag) GetDuration() time.Duration {
+	return 0
+}
+
 //
 // Internal section
 //
diff --git a/plc4go/internal/cbus/Tag_test.go b/plc4go/internal/cbus/Tag_test.go
index 2270136230..0af72870ee 100644
--- a/plc4go/internal/cbus/Tag_test.go
+++ b/plc4go/internal/cbus/Tag_test.go
@@ -233,7 +233,7 @@ func TestStatusRequestType_String(t *testing.T) {
 		{
 			name: "non type",
 			s:    255,
-			want: "",
+			want: "StatusRequestType(255)",
 		},
 	}
 	for _, tt := range tests {
diff --git a/plc4go/internal/cbus/statusrequesttype_string.go b/plc4go/internal/cbus/statusrequesttype_string.go
new file mode 100644
index 0000000000..2e418ccfb6
--- /dev/null
+++ b/plc4go/internal/cbus/statusrequesttype_string.go
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+// Code generated by "stringer -type StatusRequestType"; DO NOT EDIT.
+
+package cbus
+
+import "strconv"
+
+func _() {
+	// An "invalid array index" compiler error signifies that the constant values have changed.
+	// Re-run the stringer command to generate them again.
+	var x [1]struct{}
+	_ = x[StatusRequestTypeBinaryState-0]
+	_ = x[StatusRequestTypeLevel-1]
+}
+
+const _StatusRequestType_name = "StatusRequestTypeBinaryStateStatusRequestTypeLevel"
+
+var _StatusRequestType_index = [...]uint8{0, 28, 50}
+
+func (i StatusRequestType) String() string {
+	if i >= StatusRequestType(len(_StatusRequestType_index)-1) {
+		return "StatusRequestType(" + strconv.FormatInt(int64(i), 10) + ")"
+	}
+	return _StatusRequestType_name[_StatusRequestType_index[i]:_StatusRequestType_index[i+1]]
+}
diff --git a/plc4go/pkg/api/model/plc_subscription.go b/plc4go/pkg/api/model/plc_subscription.go
index 8831d762c2..d53120b914 100644
--- a/plc4go/pkg/api/model/plc_subscription.go
+++ b/plc4go/pkg/api/model/plc_subscription.go
@@ -57,11 +57,11 @@ type PlcSubscriptionEventConsumer func(event PlcSubscriptionEvent)
 
 type PlcSubscriptionRequestBuilder interface {
 	AddCyclicTagAddress(tagName string, tagAddress string, interval time.Duration) PlcSubscriptionRequestBuilder
-	AddCyclicTag(tagName string, tag PlcTag, interval time.Duration) PlcSubscriptionRequestBuilder
+	AddCyclicTag(tagName string, tag PlcSubscriptionTag, interval time.Duration) PlcSubscriptionRequestBuilder
 	AddChangeOfStateTagAddress(tagName string, tagAddress string) PlcSubscriptionRequestBuilder
-	AddChangeOfStateTag(tagName string, tag PlcTag) PlcSubscriptionRequestBuilder
+	AddChangeOfStateTag(tagName string, tag PlcSubscriptionTag) PlcSubscriptionRequestBuilder
 	AddEventTagAddress(tagName string, tagAddress string) PlcSubscriptionRequestBuilder
-	AddEventTag(tagName string, tag PlcTag) PlcSubscriptionRequestBuilder
+	AddEventTag(tagName string, tag PlcSubscriptionTag) PlcSubscriptionRequestBuilder
 	AddPreRegisteredConsumer(tagName string, consumer PlcSubscriptionEventConsumer) PlcSubscriptionRequestBuilder
 	Build() (PlcSubscriptionRequest, error)
 }
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
index b35dea8d9b..55f24ff65e 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
@@ -35,7 +35,7 @@ type DefaultPlcSubscriptionRequestBuilder struct {
 	valueHandler           spi.PlcValueHandler `ignore:"true"`
 	tagNames               []string
 	tagAddresses           map[string]string
-	tags                   map[string]apiModel.PlcTag
+	tags                   map[string]apiModel.PlcSubscriptionTag
 	types                  map[string]apiModel.PlcSubscriptionType
 	intervals              map[string]time.Duration
 	preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer `ignore:"true"`
@@ -48,7 +48,7 @@ func NewDefaultPlcSubscriptionRequestBuilder(tagHandler spi.PlcTagHandler, value
 		valueHandler:           valueHandler,
 		tagNames:               make([]string, 0),
 		tagAddresses:           map[string]string{},
-		tags:                   map[string]apiModel.PlcTag{},
+		tags:                   map[string]apiModel.PlcSubscriptionTag{},
 		types:                  map[string]apiModel.PlcSubscriptionType{},
 		intervals:              map[string]time.Duration{},
 		preRegisteredConsumers: make(map[string][]apiModel.PlcSubscriptionEventConsumer),
@@ -63,7 +63,7 @@ func (d *DefaultPlcSubscriptionRequestBuilder) AddCyclicTagAddress(name string,
 	return d
 }
 
-func (d *DefaultPlcSubscriptionRequestBuilder) AddCyclicTag(name string, tag apiModel.PlcTag, interval time.Duration) apiModel.PlcSubscriptionRequestBuilder {
+func (d *DefaultPlcSubscriptionRequestBuilder) AddCyclicTag(name string, tag apiModel.PlcSubscriptionTag, interval time.Duration) apiModel.PlcSubscriptionRequestBuilder {
 	d.tagNames = append(d.tagNames, name)
 	d.tags[name] = tag
 	d.types[name] = apiModel.SubscriptionCyclic
@@ -78,7 +78,7 @@ func (d *DefaultPlcSubscriptionRequestBuilder) AddChangeOfStateTagAddress(name s
 	return d
 }
 
-func (d *DefaultPlcSubscriptionRequestBuilder) AddChangeOfStateTag(name string, tag apiModel.PlcTag) apiModel.PlcSubscriptionRequestBuilder {
+func (d *DefaultPlcSubscriptionRequestBuilder) AddChangeOfStateTag(name string, tag apiModel.PlcSubscriptionTag) apiModel.PlcSubscriptionRequestBuilder {
 	d.tagNames = append(d.tagNames, name)
 	d.tags[name] = tag
 	d.types[name] = apiModel.SubscriptionChangeOfState
@@ -92,7 +92,7 @@ func (d *DefaultPlcSubscriptionRequestBuilder) AddEventTagAddress(name string, t
 	return d
 }
 
-func (d *DefaultPlcSubscriptionRequestBuilder) AddEventTag(name string, tag apiModel.PlcTag) apiModel.PlcSubscriptionRequestBuilder {
+func (d *DefaultPlcSubscriptionRequestBuilder) AddEventTag(name string, tag apiModel.PlcSubscriptionTag) apiModel.PlcSubscriptionRequestBuilder {
 	d.tagNames = append(d.tagNames, name)
 	d.tags[name] = tag
 	d.types[name] = apiModel.SubscriptionEvent
@@ -114,7 +114,13 @@ func (d *DefaultPlcSubscriptionRequestBuilder) Build() (apiModel.PlcSubscription
 			if err != nil {
 				return nil, errors.Wrapf(err, "Error parsing tag query: %s", tagAddress)
 			}
-			d.tags[name] = tag
+			if tag == nil {
+				continue
+			}
+			d.tags[name], ok = tag.(apiModel.PlcSubscriptionTag)
+			if !ok {
+				return nil, errors.Errorf("%T isn't a PlcSubscriptionTag", tag)
+			}
 		}
 	}
 	return NewDefaultPlcSubscriptionRequest(d.subscriber, d.tagNames, d.tags, d.types, d.intervals, d.preRegisteredConsumers), nil
@@ -129,8 +135,12 @@ type DefaultPlcSubscriptionRequest struct {
 	subscriber             spi.PlcSubscriber
 }
 
-func NewDefaultPlcSubscriptionRequest(subscriber spi.PlcSubscriber, tagNames []string, tags map[string]apiModel.PlcTag, types map[string]apiModel.PlcSubscriptionType, intervals map[string]time.Duration, preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer) apiModel.PlcSubscriptionRequest {
-	return &DefaultPlcSubscriptionRequest{NewDefaultPlcTagRequest(tags, tagNames), types, intervals, preRegisteredConsumers, subscriber}
+func NewDefaultPlcSubscriptionRequest(subscriber spi.PlcSubscriber, tagNames []string, tags map[string]apiModel.PlcSubscriptionTag, types map[string]apiModel.PlcSubscriptionType, intervals map[string]time.Duration, preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer) apiModel.PlcSubscriptionRequest {
+	_tags := map[string]apiModel.PlcTag{}
+	for s, tag := range tags {
+		_tags[s] = tag
+	}
+	return &DefaultPlcSubscriptionRequest{NewDefaultPlcTagRequest(_tags, tagNames), types, intervals, preRegisteredConsumers, subscriber}
 }
 
 func (d *DefaultPlcSubscriptionRequest) Execute() <-chan apiModel.PlcSubscriptionRequestResult {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest_test.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest_test.go
index f859f9eea1..efdcc15a0d 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest_test.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequest_test.go
@@ -40,14 +40,14 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddChangeOfStateTag(t *testing.T)
 		valueHandler           spi.PlcValueHandler
 		tagNames               []string
 		tagAddresses           map[string]string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
 	}
 	type args struct {
 		name string
-		tag  apiModel.PlcTag
+		tag  apiModel.PlcSubscriptionTag
 	}
 	tests := []struct {
 		name   string
@@ -59,7 +59,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddChangeOfStateTag(t *testing.T)
 			name: "add it",
 			fields: fields{
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -67,7 +67,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddChangeOfStateTag(t *testing.T)
 			want: &DefaultPlcSubscriptionRequestBuilder{
 				tagNames:               []string{""},
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{"": nil},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{"": nil},
 				types:                  map[string]apiModel.PlcSubscriptionType{"": 2},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -99,7 +99,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddChangeOfStateTagAddress(t *test
 		valueHandler           spi.PlcValueHandler
 		tagNames               []string
 		tagAddresses           map[string]string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
@@ -118,7 +118,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddChangeOfStateTagAddress(t *test
 			name: "add it",
 			fields: fields{
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -126,7 +126,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddChangeOfStateTagAddress(t *test
 			want: &DefaultPlcSubscriptionRequestBuilder{
 				tagNames:               []string{""},
 				tagAddresses:           map[string]string{"": ""},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{"": 2},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -158,14 +158,14 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddCyclicTag(t *testing.T) {
 		valueHandler           spi.PlcValueHandler
 		tagNames               []string
 		tagAddresses           map[string]string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
 	}
 	type args struct {
 		name     string
-		tag      apiModel.PlcTag
+		tag      apiModel.PlcSubscriptionTag
 		interval time.Duration
 	}
 	tests := []struct {
@@ -178,7 +178,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddCyclicTag(t *testing.T) {
 			name: "add it",
 			fields: fields{
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -186,7 +186,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddCyclicTag(t *testing.T) {
 			want: &DefaultPlcSubscriptionRequestBuilder{
 				tagNames:               []string{""},
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{"": nil},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{"": nil},
 				types:                  map[string]apiModel.PlcSubscriptionType{"": 1},
 				intervals:              map[string]time.Duration{"": 0},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -218,7 +218,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddCyclicTagAddress(t *testing.T)
 		valueHandler           spi.PlcValueHandler
 		tagNames               []string
 		tagAddresses           map[string]string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
@@ -238,7 +238,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddCyclicTagAddress(t *testing.T)
 			name: "add it",
 			fields: fields{
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -246,7 +246,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddCyclicTagAddress(t *testing.T)
 			want: &DefaultPlcSubscriptionRequestBuilder{
 				tagNames:               []string{""},
 				tagAddresses:           map[string]string{"": ""},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{"": 1},
 				intervals:              map[string]time.Duration{"": 0},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -278,14 +278,14 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddEventTag(t *testing.T) {
 		valueHandler           spi.PlcValueHandler
 		tagNames               []string
 		tagAddresses           map[string]string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
 	}
 	type args struct {
 		name string
-		tag  apiModel.PlcTag
+		tag  apiModel.PlcSubscriptionTag
 	}
 	tests := []struct {
 		name   string
@@ -297,7 +297,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddEventTag(t *testing.T) {
 			name: "add it",
 			fields: fields{
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -305,7 +305,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddEventTag(t *testing.T) {
 			want: &DefaultPlcSubscriptionRequestBuilder{
 				tagNames:               []string{""},
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{"": nil},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{"": nil},
 				types:                  map[string]apiModel.PlcSubscriptionType{"": 3},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -337,7 +337,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddEventTagAddress(t *testing.T) {
 		valueHandler           spi.PlcValueHandler
 		tagNames               []string
 		tagAddresses           map[string]string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
@@ -356,7 +356,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddEventTagAddress(t *testing.T) {
 			name: "add it",
 			fields: fields{
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -364,7 +364,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddEventTagAddress(t *testing.T) {
 			want: &DefaultPlcSubscriptionRequestBuilder{
 				tagNames:               []string{""},
 				tagAddresses:           map[string]string{"": ""},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{"": 3},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
@@ -396,7 +396,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_AddPreRegisteredConsumer(t *testin
 		valueHandler           spi.PlcValueHandler
 		tagNames               []string
 		tagAddresses           map[string]string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
@@ -448,7 +448,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_Build(t *testing.T) {
 		valueHandler           spi.PlcValueHandler
 		tagNames               []string
 		tagAddresses           map[string]string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
@@ -463,7 +463,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_Build(t *testing.T) {
 		{
 			name: "build it",
 			want: &DefaultPlcSubscriptionRequest{
-				DefaultPlcTagRequest: NewDefaultPlcTagRequest(nil, nil),
+				DefaultPlcTagRequest: NewDefaultPlcTagRequest(map[string]apiModel.PlcTag{}, nil),
 			},
 			wantErr: assert.NoError,
 		},
@@ -472,7 +472,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_Build(t *testing.T) {
 			fields: fields{
 				tagNames:     []string{"a"},
 				tagAddresses: map[string]string{"a": ""},
-				tags:         map[string]apiModel.PlcTag{},
+				tags:         map[string]apiModel.PlcSubscriptionTag{},
 			},
 			setup: func(t *testing.T, fields *fields) {
 				handler := NewMockPlcTagHandler(t)
@@ -480,7 +480,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_Build(t *testing.T) {
 				fields.tagHandler = handler
 			},
 			want: &DefaultPlcSubscriptionRequest{
-				DefaultPlcTagRequest: NewDefaultPlcTagRequest(map[string]apiModel.PlcTag{"a": nil}, []string{"a"}),
+				DefaultPlcTagRequest: NewDefaultPlcTagRequest(map[string]apiModel.PlcTag{}, []string{"a"}),
 			},
 			wantErr: assert.NoError,
 		},
@@ -489,7 +489,7 @@ func TestDefaultPlcSubscriptionRequestBuilder_Build(t *testing.T) {
 			fields: fields{
 				tagNames:     []string{"a"},
 				tagAddresses: map[string]string{"a": ""},
-				tags:         map[string]apiModel.PlcTag{},
+				tags:         map[string]apiModel.PlcSubscriptionTag{},
 			},
 			setup: func(t *testing.T, fields *fields) {
 				handler := NewMockPlcTagHandler(t)
@@ -717,7 +717,7 @@ func TestNewDefaultPlcSubscriptionRequest(t *testing.T) {
 	type args struct {
 		subscriber             spi.PlcSubscriber
 		tagNames               []string
-		tags                   map[string]apiModel.PlcTag
+		tags                   map[string]apiModel.PlcSubscriptionTag
 		types                  map[string]apiModel.PlcSubscriptionType
 		intervals              map[string]time.Duration
 		preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
@@ -730,7 +730,7 @@ func TestNewDefaultPlcSubscriptionRequest(t *testing.T) {
 		{
 			name: "create it",
 			want: &DefaultPlcSubscriptionRequest{
-				DefaultPlcTagRequest: NewDefaultPlcTagRequest(nil, nil),
+				DefaultPlcTagRequest: NewDefaultPlcTagRequest(map[string]apiModel.PlcTag{}, nil),
 			},
 		},
 	}
@@ -757,7 +757,7 @@ func TestNewDefaultPlcSubscriptionRequestBuilder(t *testing.T) {
 			want: &DefaultPlcSubscriptionRequestBuilder{
 				tagNames:               []string{},
 				tagAddresses:           map[string]string{},
-				tags:                   map[string]apiModel.PlcTag{},
+				tags:                   map[string]apiModel.PlcSubscriptionTag{},
 				types:                  map[string]apiModel.PlcSubscriptionType{},
 				intervals:              map[string]time.Duration{},
 				preRegisteredConsumers: map[string][]apiModel.PlcSubscriptionEventConsumer{},
diff --git a/plc4go/spi/model/render_test.go b/plc4go/spi/model/render_test.go
index f08d24a44b..3db88192d9 100644
--- a/plc4go/spi/model/render_test.go
+++ b/plc4go/spi/model/render_test.go
@@ -266,7 +266,7 @@ func TestRenderTestCustom(t *testing.T) {
 			sut: NewDefaultPlcSubscriptionRequest(
 				nil,
 				[]string{"tagid"},
-				map[string]apiModel.PlcTag{
+				map[string]apiModel.PlcSubscriptionTag{
 					"tagid": nil,
 				},
 				map[string]apiModel.PlcSubscriptionType{