This is an automated email from the ASF dual-hosted git repository.
davidb pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-apiregions.git
The following commit(s) were added to refs/heads/master by this push:
new 3632b86 Close JSON Readers
3632b86 is described below
commit 3632b86676398b7e4a454347bb94080347eacf6e
Author: David Bosschaert <[email protected]>
AuthorDate: Fri Feb 8 16:21:10 2019 -0800
Close JSON Readers
---
.../apiregions/APIRegionMergeHandler.java | 162 +++++++++++----------
.../apiregions/BundleArtifactFeatureHandler.java | 69 ++++-----
2 files changed, 117 insertions(+), 114 deletions(-)
diff --git
a/src/main/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandler.java
b/src/main/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandler.java
index 836b197..b055807 100644
---
a/src/main/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandler.java
+++
b/src/main/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandler.java
@@ -65,105 +65,107 @@ public class APIRegionMergeHandler implements
MergeHandler {
storeBundleOrigins(context, source, target);
- JsonReader srcJR = Json.createReader(new
StringReader(sourceEx.getJSON()));
- JsonArray srcJA = srcJR.readArray();
-
- Map<String, Map<String, Object>> srcRegions = new LinkedHashMap<>();
- for (int i=0; i < srcJA.size(); i++) {
- String regionName = null;
- Map<String, Object> region = new LinkedHashMap<>();
- JsonObject jo = srcJA.getJsonObject(i);
- for (Map.Entry<String, JsonValue> entry : jo.entrySet()) {
- Object val;
- switch (entry.getKey()) {
- case EXPORTS_KEY:
- val = readJsonArray((JsonArray) entry.getValue());
- break;
- default:
- val = ((JsonString) entry.getValue()).getString();
- if (NAME_KEY.equals(entry.getKey())) {
- regionName = val.toString();
+ try (JsonReader srcJR = Json.createReader(new
StringReader(sourceEx.getJSON()))) {
+ JsonArray srcJA = srcJR.readArray();
+
+ Map<String, Map<String, Object>> srcRegions = new
LinkedHashMap<>();
+ for (int i=0; i < srcJA.size(); i++) {
+ String regionName = null;
+ Map<String, Object> region = new LinkedHashMap<>();
+ JsonObject jo = srcJA.getJsonObject(i);
+ for (Map.Entry<String, JsonValue> entry : jo.entrySet()) {
+ Object val;
+ switch (entry.getKey()) {
+ case EXPORTS_KEY:
+ val = readJsonArray((JsonArray) entry.getValue());
+ break;
+ default:
+ val = ((JsonString) entry.getValue()).getString();
+ if (NAME_KEY.equals(entry.getKey())) {
+ regionName = val.toString();
+ }
+ break;
}
- break;
+ region.put(entry.getKey(), val);
}
- region.put(entry.getKey(), val);
- }
- if (regionName == null) {
- throw new IllegalStateException("No region name specified: " +
sourceEx.getJSON());
+ if (regionName == null) {
+ throw new IllegalStateException("No region name specified:
" + sourceEx.getJSON());
+ }
+ srcRegions.put(regionName, region);
}
- srcRegions.put(regionName, region);
- }
- storeRegionOrigins(context, source, target, srcRegions.keySet());
+ storeRegionOrigins(context, source, target, srcRegions.keySet());
- JsonArray tgtJA;
- if (targetEx != null) {
- JsonReader tgtJR = Json.createReader(new
StringReader(targetEx.getJSON()));
- tgtJA = tgtJR.readArray();
- } else {
- targetEx = new Extension(sourceEx.getType(), sourceEx.getName(),
sourceEx.isRequired());
- target.getExtensions().add(targetEx);
+ JsonArray tgtJA;
+ if (targetEx != null) {
+ try (JsonReader tgtJR = Json.createReader(new
StringReader(targetEx.getJSON()))) {
+ tgtJA = tgtJR.readArray();
+ }
+ } else {
+ targetEx = new Extension(sourceEx.getType(),
sourceEx.getName(), sourceEx.isRequired());
+ target.getExtensions().add(targetEx);
- tgtJA = Json.createArrayBuilder().build();
- }
+ tgtJA = Json.createArrayBuilder().build();
+ }
- StringWriter sw = new StringWriter();
- JsonGenerator gen = Json.createGenerator(sw);
- gen.writeStartArray();
- for (JsonValue jv : tgtJA) {
- if (jv instanceof JsonObject) {
- JsonObject jo = (JsonObject) jv;
- Map<String, Object> srcRegion =
srcRegions.remove(jo.getString(NAME_KEY));
- if (srcRegion != null) {
- gen.writeStartObject();
- for (Map.Entry<String, JsonValue> entry : jo.entrySet()) {
- Object sp = srcRegion.get(entry.getKey());
- if (EXPORTS_KEY.equals(entry.getKey()) && sp
instanceof List) {
- List<String> tgtPkgs = readJsonArray((JsonArray)
entry.getValue());
- @SuppressWarnings("unchecked")
- List<String> srcPkgs = (List<String>) sp;
- for (String srcPkg : srcPkgs) {
- if (!tgtPkgs.contains(srcPkg)) {
- tgtPkgs.add(srcPkg);
+ StringWriter sw = new StringWriter();
+ JsonGenerator gen = Json.createGenerator(sw);
+ gen.writeStartArray();
+ for (JsonValue jv : tgtJA) {
+ if (jv instanceof JsonObject) {
+ JsonObject jo = (JsonObject) jv;
+ Map<String, Object> srcRegion =
srcRegions.remove(jo.getString(NAME_KEY));
+ if (srcRegion != null) {
+ gen.writeStartObject();
+ for (Map.Entry<String, JsonValue> entry :
jo.entrySet()) {
+ Object sp = srcRegion.get(entry.getKey());
+ if (EXPORTS_KEY.equals(entry.getKey()) && sp
instanceof List) {
+ List<String> tgtPkgs =
readJsonArray((JsonArray) entry.getValue());
+ @SuppressWarnings("unchecked")
+ List<String> srcPkgs = (List<String>) sp;
+ for (String srcPkg : srcPkgs) {
+ if (!tgtPkgs.contains(srcPkg)) {
+ tgtPkgs.add(srcPkg);
+ }
}
+ gen.writeStartArray(entry.getKey());
+ for (String p : tgtPkgs) {
+ gen.write(p);
+ }
+ gen.writeEnd();
+ } else {
+ gen.write(entry.getKey(), entry.getValue());
}
- gen.writeStartArray(entry.getKey());
- for (String p : tgtPkgs) {
- gen.write(p);
- }
- gen.writeEnd();
- } else {
- gen.write(entry.getKey(), entry.getValue());
}
+ gen.writeEnd();
+ } else {
+ gen.write(jv);
}
- gen.writeEnd();
- } else {
- gen.write(jv);
}
}
- }
- // If there are any remaining regions in the src extension, process
them now
- for (Map<String, Object> region : srcRegions.values()) {
- gen.writeStartObject();
- for (Map.Entry<String, Object> entry : region.entrySet()) {
- if (entry.getValue() instanceof Collection) {
- gen.writeStartArray(entry.getKey());
- for (Object o : (Collection<?>) entry.getValue()) {
- gen.write(o.toString());
+ // If there are any remaining regions in the src extension,
process them now
+ for (Map<String, Object> region : srcRegions.values()) {
+ gen.writeStartObject();
+ for (Map.Entry<String, Object> entry : region.entrySet()) {
+ if (entry.getValue() instanceof Collection) {
+ gen.writeStartArray(entry.getKey());
+ for (Object o : (Collection<?>) entry.getValue()) {
+ gen.write(o.toString());
+ }
+ gen.writeEnd();
+ } else {
+ gen.write(entry.getKey(), entry.getValue().toString());
}
- gen.writeEnd();
- } else {
- gen.write(entry.getKey(), entry.getValue().toString());
}
+ gen.writeEnd();
}
- gen.writeEnd();
- }
- gen.writeEnd();
- gen.close();
+ gen.writeEnd();
+ gen.close();
- targetEx.setJSON(sw.toString());
+ targetEx.setJSON(sw.toString());
+ }
}
private void storeRegionOrigins(HandlerContext context, Feature source,
Feature target, Set<String> regions) {
diff --git
a/src/main/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandler.java
b/src/main/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandler.java
index 58b7615..b934837 100644
---
a/src/main/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandler.java
+++
b/src/main/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandler.java
@@ -75,45 +75,46 @@ public class BundleArtifactFeatureHandler extends
AbstractHandler implements Pos
}
private void writeFeatureToRegionAndPackageMap(HandlerContext context,
Feature feature, Extension extension) throws IOException {
- JsonReader jr = Json.createReader(new
StringReader(extension.getJSON()));
- JsonArray ja = jr.readArray();
-
- File featuresFile = getFeatureDataFile(context, feature,
"features.properties");
- File regionsFile = getFeatureDataFile(context, feature,
"regions.properties");
- Properties frMap = loadProperties(featuresFile);
- Properties rpMap = loadProperties(regionsFile);
-
- for (JsonValue jv : ja) {
- if (jv instanceof JsonObject) {
- JsonObject jo = (JsonObject) jv;
- String fid = feature.getId().toMvnId();
-
- Set<String> regionSet = new HashSet<>();
- String regions = frMap.getProperty(fid);
- if (regions != null) {
- regionSet.addAll(Arrays.asList(regions.split(",")));
- }
- String region = jo.getString(NAME_KEY);
- regionSet.add(region);
+ try (JsonReader jr = Json.createReader(new
StringReader(extension.getJSON()))) {
+ JsonArray ja = jr.readArray();
+
+ File featuresFile = getFeatureDataFile(context, feature,
"features.properties");
+ File regionsFile = getFeatureDataFile(context, feature,
"regions.properties");
+ Properties frMap = loadProperties(featuresFile);
+ Properties rpMap = loadProperties(regionsFile);
+
+ for (JsonValue jv : ja) {
+ if (jv instanceof JsonObject) {
+ JsonObject jo = (JsonObject) jv;
+ String fid = feature.getId().toMvnId();
+
+ Set<String> regionSet = new HashSet<>();
+ String regions = frMap.getProperty(fid);
+ if (regions != null) {
+ regionSet.addAll(Arrays.asList(regions.split(",")));
+ }
+ String region = jo.getString(NAME_KEY);
+ regionSet.add(region);
- frMap.put(fid,
regionSet.stream().collect(Collectors.joining(",")));
+ frMap.put(fid,
regionSet.stream().collect(Collectors.joining(",")));
- Set<String> packageSet = new HashSet<>();
- String packages = rpMap.getProperty(region);
- if (packages != null) {
- packageSet.addAll(Arrays.asList(packages.split(",")));
- }
- if (jo.containsKey(EXPORTS_KEY)) {
- JsonArray eja = jo.getJsonArray(EXPORTS_KEY);
- for (int i=0; i < eja.size(); i++) {
- packageSet.add(eja.getString(i));
+ Set<String> packageSet = new HashSet<>();
+ String packages = rpMap.getProperty(region);
+ if (packages != null) {
+ packageSet.addAll(Arrays.asList(packages.split(",")));
}
+ if (jo.containsKey(EXPORTS_KEY)) {
+ JsonArray eja = jo.getJsonArray(EXPORTS_KEY);
+ for (int i=0; i < eja.size(); i++) {
+ packageSet.add(eja.getString(i));
+ }
+ }
+ rpMap.put(region,
packageSet.stream().collect(Collectors.joining(",")));
}
- rpMap.put(region,
packageSet.stream().collect(Collectors.joining(",")));
}
- }
- storeProperties(frMap, featuresFile);
- storeProperties(rpMap, regionsFile);
+ storeProperties(frMap, featuresFile);
+ storeProperties(rpMap, regionsFile);
+ }
}
}