|
23 | 23 | import edu.harvard.iq.dataverse.authorization.RoleAssigneeDisplayInfo; |
24 | 24 | import edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroup; |
25 | 25 | import edu.harvard.iq.dataverse.authorization.groups.impl.ipaddress.IpGroup; |
| 26 | +import edu.harvard.iq.dataverse.authorization.groups.impl.ipaddress.ip.IpAddress; |
26 | 27 | import edu.harvard.iq.dataverse.authorization.groups.impl.ipaddress.ip.IpAddressRange; |
27 | 28 | import edu.harvard.iq.dataverse.authorization.groups.impl.shib.ShibGroup; |
28 | 29 | import edu.harvard.iq.dataverse.authorization.providers.AuthenticationProviderRow; |
|
31 | 32 | import edu.harvard.iq.dataverse.privateurl.PrivateUrl; |
32 | 33 | import edu.harvard.iq.dataverse.util.DatasetFieldWalker; |
33 | 34 | import edu.harvard.iq.dataverse.util.StringUtil; |
| 35 | +import static edu.harvard.iq.dataverse.util.json.NullSafeJsonBuilder.jsonObjectBuilder; |
34 | 36 | import java.util.Set; |
35 | 37 | import javax.json.Json; |
36 | 38 | import javax.json.JsonArrayBuilder; |
|
39 | 41 | import java.util.List; |
40 | 42 | import java.util.TreeSet; |
41 | 43 |
|
42 | | -import static edu.harvard.iq.dataverse.util.json.NullSafeJsonBuilder.jsonObjectBuilder; |
43 | | -import java.math.BigDecimal; |
| 44 | +import java.util.Arrays; |
44 | 45 | import java.util.Collection; |
45 | 46 | import java.util.Deque; |
46 | 47 | import java.util.EnumSet; |
|
51 | 52 | import java.util.function.Function; |
52 | 53 | import java.util.function.Supplier; |
53 | 54 | import java.util.stream.Collector; |
| 55 | +import static java.util.stream.Collectors.toList; |
54 | 56 | import javax.json.JsonArray; |
55 | 57 | import javax.json.JsonObject; |
56 | 58 | import javax.json.JsonValue; |
@@ -127,17 +129,33 @@ public static JsonObjectBuilder json( RoleAssigneeDisplayInfo d ) { |
127 | 129 | } |
128 | 130 |
|
129 | 131 | public static JsonObjectBuilder json(IpGroup grp) { |
130 | | - JsonArrayBuilder rangeBld = Json.createArrayBuilder(); |
131 | | - for (IpAddressRange r : grp.getRanges()) { |
132 | | - rangeBld.add(Json.createArrayBuilder().add(r.getBottom().toString()).add(r.getTop().toString())); |
133 | | - } |
134 | | - return jsonObjectBuilder() |
135 | | - .add("alias", grp.getPersistedGroupAlias()) |
| 132 | + // collect single addresses |
| 133 | + List<String> singles = grp.getRanges().stream().filter( IpAddressRange::isSingleAddress ) |
| 134 | + .map( IpAddressRange::getBottom ) |
| 135 | + .map( IpAddress::toString ).collect(toList()); |
| 136 | + // collect "real" ranges |
| 137 | + List<List<String>> ranges = grp.getRanges().stream().filter( rng -> !rng.isSingleAddress() ) |
| 138 | + .map( rng -> Arrays.asList(rng.getBottom().toString(), rng.getTop().toString()) ) |
| 139 | + .collect(toList()); |
| 140 | + |
| 141 | + JsonObjectBuilder bld = jsonObjectBuilder() |
| 142 | + .add("alias", grp.getPersistedGroupAlias() ) |
136 | 143 | .add("identifier", grp.getIdentifier()) |
137 | | - .add("id", grp.getId()) |
138 | | - .add("name", grp.getDisplayName()) |
139 | | - .add("description", grp.getDescription()) |
140 | | - .add("ranges", rangeBld); |
| 144 | + .add("id", grp.getId() ) |
| 145 | + .add("name", grp.getDisplayName() ) |
| 146 | + .add("description", grp.getDescription() ); |
| 147 | + |
| 148 | + if ( ! singles.isEmpty() ) { |
| 149 | + bld.add("addresses", asJsonArray(singles) ); |
| 150 | + } |
| 151 | + |
| 152 | + if ( ! ranges.isEmpty() ) { |
| 153 | + JsonArrayBuilder rangesBld = Json.createArrayBuilder(); |
| 154 | + ranges.forEach( r -> rangesBld.add( Json.createArrayBuilder().add(r.get(0)).add(r.get(1))) ); |
| 155 | + bld.add("ranges", rangesBld ); |
| 156 | + } |
| 157 | + |
| 158 | + return bld; |
141 | 159 | } |
142 | 160 |
|
143 | 161 | public static JsonObjectBuilder json(ShibGroup grp) { |
|
0 commit comments