Skip to content

Commit c576870

Browse files
committed
Default resource parser
Signed-off-by: Craig Perkins <[email protected]>
1 parent 1c51afd commit c576870

File tree

5 files changed

+9
-54
lines changed

5 files changed

+9
-54
lines changed

spi/src/main/java/org/opensearch/security/spi/ResourceSharingExtension.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ public interface ResourceSharingExtension {
2525
/**
2626
* @return returns a parser for this resource
2727
*/
28-
ResourceParser<? extends Resource> getResourceParser();
28+
default ResourceParser<? extends Resource> getResourceParser() {
29+
return null;
30+
};
2931

3032
void assignResourceSharingService(ResourceSharingService<? extends Resource> service);
3133
}

spi/src/main/java/org/opensearch/security/spi/actions/resource/get/GetResourceTransportAction.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package org.opensearch.security.spi.actions.resource.get;
1010

1111
import java.io.IOException;
12+
import java.util.Objects;
1213

1314
import org.apache.logging.log4j.LogManager;
1415
import org.apache.logging.log4j.Logger;
@@ -60,6 +61,7 @@ public GetResourceTransportAction(
6061
) {
6162
super(actionName, transportService, actionFilters, GetResourceRequest::new);
6263
this.resourceSharingService = resourceSharingService;
64+
Objects.requireNonNull(resourceParser);
6365
this.resourceParser = resourceParser;
6466
this.resourceIndex = resourceIndex;
6567
this.client = client;

spi/src/main/java/org/opensearch/security/spi/actions/resource/list/ListResourceTransportAction.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.io.IOException;
1212
import java.util.ArrayList;
1313
import java.util.List;
14+
import java.util.Objects;
1415
import java.util.concurrent.atomic.AtomicInteger;
1516

1617
import org.opensearch.OpenSearchException;
@@ -65,6 +66,7 @@ public ListResourceTransportAction(
6566
this.resourceSharingService = resourceSharingService != null ? resourceSharingService : new DefaultResourceSharingService<>();
6667
this.resourceIndex = resourceIndex;
6768
this.xContentRegistry = xContentRegistry;
69+
Objects.requireNonNull(resourceParser);
6870
this.resourceParser = resourceParser;
6971
}
7072

src/main/java/org/opensearch/security/OpenSearchSecurityPlugin.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,9 +1080,7 @@ public Collection<Object> createComponents(
10801080
for (ResourceSharingExtension extension : resourceSharingExtensions) {
10811081
ResourceSharingService<?> resourceSharingService = new SecurityResourceSharingService<>(
10821082
localClient,
1083-
extension.getResourceIndex(),
1084-
extension.getResourceParser(),
1085-
xContentRegistry
1083+
extension.getResourceIndex()
10861084
);
10871085
extension.assignResourceSharingService(resourceSharingService);
10881086
}

src/main/java/org/opensearch/security/resource/SecurityResourceSharingService.java

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,19 @@
1111

1212
package org.opensearch.security.resource;
1313

14-
import java.io.IOException;
15-
1614
import org.opensearch.OpenSearchException;
1715
import org.opensearch.ResourceNotFoundException;
18-
import org.opensearch.action.get.GetRequest;
19-
import org.opensearch.action.get.GetResponse;
2016
import org.opensearch.action.search.SearchRequest;
2117
import org.opensearch.action.search.SearchResponse;
2218
import org.opensearch.client.Client;
2319
import org.opensearch.common.util.concurrent.ThreadContext;
24-
import org.opensearch.common.xcontent.LoggingDeprecationHandler;
25-
import org.opensearch.common.xcontent.XContentHelper;
26-
import org.opensearch.common.xcontent.XContentType;
2720
import org.opensearch.core.action.ActionListener;
28-
import org.opensearch.core.xcontent.NamedXContentRegistry;
29-
import org.opensearch.core.xcontent.XContentParser;
3021
import org.opensearch.index.query.BoolQueryBuilder;
3122
import org.opensearch.index.query.QueryBuilders;
3223
import org.opensearch.search.SearchHit;
3324
import org.opensearch.search.builder.SearchSourceBuilder;
3425
import org.opensearch.security.rest.resource.ShareWith;
3526
import org.opensearch.security.spi.Resource;
36-
import org.opensearch.security.spi.ResourceParser;
3727
import org.opensearch.security.spi.ResourceSharingService;
3828
import org.opensearch.security.support.ConfigConstants;
3929
import org.opensearch.security.support.WildcardMatcher;
@@ -44,19 +34,10 @@
4434
public class SecurityResourceSharingService<T extends Resource> implements ResourceSharingService<T> {
4535
private final Client client;
4636
private final String resourceIndex;
47-
private final ResourceParser<T> resourceParser;
48-
private final NamedXContentRegistry xContentRegistry;
4937

50-
public SecurityResourceSharingService(
51-
Client client,
52-
String resourceIndex,
53-
ResourceParser<T> resourceParser,
54-
NamedXContentRegistry xContentRegistry
55-
) {
38+
public SecurityResourceSharingService(Client client, String resourceIndex) {
5639
this.client = client;
5740
this.resourceIndex = resourceIndex;
58-
this.resourceParser = resourceParser;
59-
this.xContentRegistry = xContentRegistry;
6041
}
6142

6243
private boolean hasPermissionsFor(User authenticatedUser, ResourceSharingEntry sharedWith) {
@@ -122,34 +103,4 @@ public void onFailure(Exception e) {
122103
client.search(searchRequest, searchListener);
123104
}
124105
}
125-
126-
private void finishGetResourceIfUserIsAllowed(String resourceId, ActionListener<T> getResourceListener) {
127-
try (ThreadContext.StoredContext ignore = client.threadPool().getThreadContext().stashContext()) {
128-
GetRequest gr = new GetRequest(resourceIndex);
129-
gr.id(resourceId);
130-
ActionListener<GetResponse> getListener = new ActionListener<>() {
131-
@Override
132-
public void onResponse(GetResponse getResponse) {
133-
try {
134-
XContentParser parser = XContentHelper.createParser(
135-
xContentRegistry,
136-
LoggingDeprecationHandler.INSTANCE,
137-
getResponse.getSourceAsBytesRef(),
138-
XContentType.JSON
139-
);
140-
T resource = resourceParser.parse(parser, getResponse.getId());
141-
getResourceListener.onResponse(resource);
142-
} catch (IOException e) {
143-
throw new OpenSearchException("Caught exception while loading resources: " + e.getMessage());
144-
}
145-
}
146-
147-
@Override
148-
public void onFailure(Exception e) {
149-
getResourceListener.onFailure(new OpenSearchException("Caught exception while loading resources: " + e.getMessage()));
150-
}
151-
};
152-
client.get(gr, getListener);
153-
}
154-
}
155106
}

0 commit comments

Comments
 (0)