Skip to content

Commit fc3d0a6

Browse files
authored
Merge pull request #183 from eclipse-thingweb/additional-property-fields
fix(property.dart): handle additional fields correctly
2 parents 8a182a6 + 487936b commit fc3d0a6

File tree

2 files changed

+38
-34
lines changed

2 files changed

+38
-34
lines changed

lib/src/core/definitions/interaction_affordances/property.dart

+37-33
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class Property extends InteractionAffordance implements DataSchema {
1414
required super.forms,
1515
super.uriVariables,
1616
super.additionalFields,
17-
this.dataSchema,
17+
required this.dataSchema,
1818
this.observable = false,
1919
});
2020

@@ -52,101 +52,105 @@ class Property extends InteractionAffordance implements DataSchema {
5252
}
5353

5454
/// The internal [DataSchema] this property is based on.
55-
final DataSchema? dataSchema;
55+
final DataSchema dataSchema;
5656

5757
@override
58-
String? get title => dataSchema?.title;
58+
String? get title => dataSchema.title;
5959

6060
@override
61-
Map<String, String>? get titles => dataSchema?.titles;
61+
Map<String, String>? get titles => dataSchema.titles;
6262

6363
@override
64-
String? get description => dataSchema?.description;
64+
String? get description => dataSchema.description;
6565

6666
@override
67-
Map<String, String>? get descriptions => dataSchema?.descriptions;
67+
Map<String, String>? get descriptions => dataSchema.descriptions;
6868

6969
@override
70-
List<String>? get atType => dataSchema?.atType;
70+
List<String>? get atType => dataSchema.atType;
7171

7272
@override
73-
Object? get constant => dataSchema?.constant;
73+
Object? get constant => dataSchema.constant;
7474

7575
@override
76-
Object? get defaultValue => dataSchema?.defaultValue;
76+
Object? get defaultValue => dataSchema.defaultValue;
7777

7878
@override
79-
List<Object?>? get enumeration => dataSchema?.enumeration;
79+
List<Object?>? get enumeration => dataSchema.enumeration;
8080

8181
@override
82-
String? get format => dataSchema?.format;
82+
String? get format => dataSchema.format;
8383

8484
@override
85-
List<DataSchema>? get oneOf => dataSchema?.oneOf;
85+
List<DataSchema>? get oneOf => dataSchema.oneOf;
8686

8787
@override
88-
bool get readOnly => dataSchema?.readOnly ?? false;
88+
bool get readOnly => dataSchema.readOnly ?? false;
8989

9090
@override
91-
String? get type => dataSchema?.type;
91+
String? get type => dataSchema.type;
9292

9393
@override
94-
String? get unit => dataSchema?.unit;
94+
String? get unit => dataSchema.unit;
9595

9696
@override
97-
bool get writeOnly => dataSchema?.writeOnly ?? false;
97+
bool get writeOnly => dataSchema.writeOnly ?? false;
9898

9999
@override
100-
String? get contentEncoding => dataSchema?.contentEncoding;
100+
String? get contentEncoding => dataSchema.contentEncoding;
101101

102102
@override
103-
String? get contentMediaType => dataSchema?.contentMediaType;
103+
String? get contentMediaType => dataSchema.contentMediaType;
104104

105105
@override
106-
num? get exclusiveMaximum => dataSchema?.exclusiveMaximum;
106+
num? get exclusiveMaximum => dataSchema.exclusiveMaximum;
107107

108108
@override
109-
num? get exclusiveMinimum => dataSchema?.exclusiveMinimum;
109+
num? get exclusiveMinimum => dataSchema.exclusiveMinimum;
110110

111111
@override
112-
List<DataSchema>? get items => dataSchema?.items;
112+
List<DataSchema>? get items => dataSchema.items;
113113

114114
@override
115-
int? get maxItems => dataSchema?.maxItems;
115+
int? get maxItems => dataSchema.maxItems;
116116

117117
@override
118-
int? get maxLength => dataSchema?.maxLength;
118+
int? get maxLength => dataSchema.maxLength;
119119

120120
@override
121-
num? get maximum => dataSchema?.maximum;
121+
num? get maximum => dataSchema.maximum;
122122

123123
@override
124-
int? get minItems => dataSchema?.minItems;
124+
int? get minItems => dataSchema.minItems;
125125

126126
@override
127-
int? get minLength => dataSchema?.minItems;
127+
int? get minLength => dataSchema.minItems;
128128

129129
@override
130-
num? get minimum => dataSchema?.minimum;
130+
num? get minimum => dataSchema.minimum;
131131

132132
@override
133-
num? get multipleOf => dataSchema?.multipleOf;
133+
num? get multipleOf => dataSchema.multipleOf;
134134

135135
@override
136-
String? get pattern => dataSchema?.pattern;
136+
String? get pattern => dataSchema.pattern;
137137

138138
@override
139-
Map<String, DataSchema>? get properties => dataSchema?.properties;
139+
Map<String, DataSchema>? get properties => dataSchema.properties;
140140

141141
@override
142-
List<String>? get required => dataSchema?.required;
142+
List<String>? get required => dataSchema.required;
143143

144144
/// A hint that indicates whether Servients hosting the Thing and
145145
/// Intermediaries should provide a Protocol Binding that supports the
146146
/// `observeproperty` and `unobserveproperty` operations for this Property.
147147
final bool observable;
148148

149149
@override
150-
Map<String, dynamic> get additionalFields =>
151-
dataSchema?.additionalFields ?? {};
150+
Map<String, dynamic> get additionalFields {
151+
final additionalDataSchemaFields = dataSchema.additionalFields.entries
152+
.where((entry) => super.additionalFields.containsKey(entry.key));
153+
154+
return Map.fromEntries(additionalDataSchemaFields);
155+
}
152156
}

test/core/operation_type_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import "package:test/test.dart";
1010
void main() {
1111
group("OperationType should indicate the correct default op values for", () {
1212
test("properties", () {
13-
const regularProperty = Property(forms: []);
13+
const regularProperty = Property(forms: [], dataSchema: DataSchema());
1414

1515
final regularPropertyOpValues =
1616
OperationType.defaultOpValues(regularProperty);

0 commit comments

Comments
 (0)