|
32 | 32 | import java.util.function.Consumer; |
33 | 33 | import java.util.stream.Collectors; |
34 | 34 |
|
| 35 | +import org.apache.commons.rdf.api.BlankNodeOrIRI; |
35 | 36 | import org.apache.commons.rdf.api.Dataset; |
36 | 37 | import org.apache.commons.rdf.api.Graph; |
37 | 38 | import org.apache.commons.rdf.api.IRI; |
|
43 | 44 | */ |
44 | 45 | public class AccessControlResource extends RDFSource { |
45 | 46 |
|
46 | | - private static final URI SOLID_ACCESS_GRANT = URI.create("http://www.w3.org/ns/solid/vc#SolidAccessGrant"); |
| 47 | + public static final URI SOLID_ACCESS_GRANT = URI.create("http://www.w3.org/ns/solid/vc#SolidAccessGrant"); |
47 | 48 |
|
48 | 49 | /** |
49 | 50 | * Create a new Access Control Resource. |
@@ -85,28 +86,24 @@ public void compact() { |
85 | 86 | final var accessControls = stream(null, null, asIRI(RDF.type), asIRI(ACP.AccessControl)) |
86 | 87 | .map(Quad::getSubject).toList(); |
87 | 88 | for (final var accessControl : accessControls) { |
88 | | - if (!contains(null, null, null, accessControl)) { |
89 | | - for (final var quad : stream(null, accessControl, null, null).toList()) { |
90 | | - remove(quad); |
91 | | - } |
92 | | - } |
| 89 | + removeUnusedStatements(accessControl); |
93 | 90 | } |
94 | 91 |
|
95 | 92 | final var policies = stream(null, null, asIRI(RDF.type), asIRI(ACP.Policy)).map(Quad::getSubject).toList(); |
96 | 93 | for (final var policy : policies) { |
97 | | - if (!contains(null, null, null, policy)) { |
98 | | - for (final var quad : stream(null, policy, null, null).toList()) { |
99 | | - remove(quad); |
100 | | - } |
101 | | - } |
| 94 | + removeUnusedStatements(policy); |
102 | 95 | } |
103 | 96 |
|
104 | 97 | final var matchers = stream(null, null, asIRI(RDF.type), asIRI(ACP.Matcher)).map(Quad::getSubject).toList(); |
105 | 98 | for (final var matcher : matchers) { |
106 | | - if (!contains(null, null, null, matcher)) { |
107 | | - for (final var quad : stream(null, matcher, null, null).toList()) { |
108 | | - remove(quad); |
109 | | - } |
| 99 | + removeUnusedStatements(matcher); |
| 100 | + } |
| 101 | + } |
| 102 | + |
| 103 | + <T extends BlankNodeOrIRI> void removeUnusedStatements(final T resource) { |
| 104 | + if (!contains(null, null, null, resource)) { |
| 105 | + for (final var quad : stream(null, resource, null, null).toList()) { |
| 106 | + remove(quad); |
110 | 107 | } |
111 | 108 | } |
112 | 109 | } |
|
0 commit comments