in src/main/java/org/apache/sling/feature/apiregions/model/io/json/ApiRegionsJSONParser.java [93:158]
public static ApiRegions parseApiRegions(String jsonRepresentation) {
requireNonNull(jsonRepresentation, "Impossible to extract api-regions from a null JSON representation");
ApiRegions apiRegions = new ApiRegions();
// pointers
Event event;
String regionName;
Collection<String> apis;
JsonParser parser = Json.createParser(new StringReader(jsonRepresentation));
if (Event.START_ARRAY != parser.next()) {
throw new IllegalStateException("Expected 'api-region' element to start with an Array: "
+ parser.getLocation());
}
while (Event.END_ARRAY != (event = parser.next())) {
if (Event.START_OBJECT != event) {
throw new IllegalStateException("Expected 'api-region' data to start with an Object: "
+ parser.getLocation());
}
regionName = null;
apis = null;
while (Event.END_OBJECT != (event = parser.next())) {
if (Event.KEY_NAME == event) {
switch (parser.getString()) {
case NAME_KEY:
parser.next();
regionName = parser.getString();
break;
case EXPORTS_KEY:
// start array
parser.next();
apis = new ArrayList<>();
while (parser.hasNext() && Event.VALUE_STRING == parser.next()) {
String api = parser.getString();
// skip comments
if ('#' != api.charAt(0)) {
apis.add(api);
}
}
break;
default:
break;
}
}
}
if (regionName != null
&& !regionName.isEmpty()
&& apis != null
&& !apis.isEmpty()) {
ApiRegion apiRegion = apiRegions.addNew(regionName);
apiRegion.addAll(apis);
}
}
return apiRegions;
}