Skip to content

Commit a831632

Browse files
author
Anton Bashirov
authored
Merge pull request #277 from art-community/arrays-bug
Arrays bug
2 parents fdcbc52 + f3c0fe7 commit a831632

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

application-entity/src/main/java/ru/art/entity/Entity.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -792,12 +792,17 @@ public EntityBuilder valueCollectionField(String name, Collection<Value> value)
792792
return this;
793793
}
794794

795+
public EntityBuilder collectionValueField(String name, CollectionValue<?> value) {
796+
fields.put(name, value);
797+
return this;
798+
}
799+
795800
public EntityBuilder stringParametersCollectionField(String name, Collection<StringParametersMap> value) {
796801
fields.put(name, collectionValue(CollectionElementsType.STRING_PARAMETERS_MAP, value));
797802
return this;
798803
}
799804

800-
public EntityBuilder collectionValueCollectionField(String name, Collection<CollectionValue<?>> value) {
805+
public EntityBuilder collectionValueCollectionField(String name, Collection<CollectionValue<Entity>> value) {
801806
fields.put(name, collectionValue(CollectionElementsType.COLLECTION, value));
802807
return this;
803808
}

application-json/src/main/java/ru/art/json/descriptor/JsonEntityReader.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ private static void parseArray(EntityBuilder entityBuilder, JsonParser parser) t
154154
entityBuilder.entityCollectionField(currentName, parseEntityArray(parser));
155155
return;
156156
case START_ARRAY:
157-
parseArray(entityBuilder, parser);
157+
entityBuilder.collectionValueCollectionField(currentName, parseArraysArray(parser));
158158
return;
159159
case VALUE_STRING:
160160
entityBuilder.stringCollectionField(currentName, parseStringArray(parser));
@@ -187,7 +187,7 @@ private static CollectionValue<?> parseArray(JsonParser parser) throws IOExcepti
187187
case START_OBJECT:
188188
return entityCollection(parseEntityArray(parser));
189189
case START_ARRAY:
190-
return parseArray(parser);
190+
return collectionOfCollections(parseArraysArray(parser));
191191
case VALUE_STRING:
192192
return stringCollection(parseStringArray(parser));
193193
case VALUE_NUMBER_INT:
@@ -267,4 +267,14 @@ private static Collection<Entity> parseEntityArray(JsonParser parser) throws IOE
267267
} while (!parser.isClosed() && currentToken != END_ARRAY);
268268
return array;
269269
}
270+
271+
private Collection<CollectionValue<Entity>> parseArraysArray(JsonParser parser) throws IOException {
272+
List<CollectionValue<Entity>> array = dynamicArrayOf();
273+
JsonToken currentToken = parser.currentToken();
274+
do {
275+
if (currentToken != START_ARRAY) array.add(entityCollection(parseEntityArray(parser)));
276+
currentToken = parser.nextToken();
277+
} while (!parser.isClosed() && currentToken != END_ARRAY);
278+
return array;
279+
}
270280
}

0 commit comments

Comments
 (0)