Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace remaining string PDS product ids with PdsProductIdentifier objects #398

Merged
merged 4 commits into from
Dec 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.List;

import gov.nasa.pds.api.registry.model.ProductVersionSelector;
import gov.nasa.pds.api.registry.model.identifiers.PdsProductIdentifier;

public interface UserContext extends LidvidsContext {
public String getAccept();
Expand All @@ -11,7 +12,7 @@ public interface UserContext extends LidvidsContext {

public String getGroup();

public String getIdentifier();
public PdsProductIdentifier getIdentifier();

public List<String> getKeywords();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package gov.nasa.pds.api.registry.controller;

import java.util.List;

import gov.nasa.pds.api.registry.model.identifiers.PdsProductIdentifier;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Min;
import org.springframework.http.HttpStatus;
Expand Down Expand Up @@ -37,7 +39,7 @@ public ResponseEntity<Object> classMemberOf(String propertyClass, String identif
@Valid List<String> fields, @Min(0) @Valid Integer limit, @Valid List<String> sort,
@Valid List<String> searchAfter) {
return this.processs(new Member(false, false),
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(identifier)
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter)
.setVerifyClassAndId(true).build());
}
Expand All @@ -47,7 +49,7 @@ public ResponseEntity<Object> classMemberOfOf(String propertyClass, String ident
@Valid List<String> fields, @Min(0) @Valid Integer limit, @Valid List<String> sort,
@Valid List<String> searchAfter) {
return this.processs(new Member(false, true),
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(identifier)
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter)
.setVerifyClassAndId(true).build());
}
Expand All @@ -57,7 +59,7 @@ public ResponseEntity<Object> classMemberOfOfVers(String propertyClass, String i
String versions, @Valid List<String> fields, @Min(0) @Valid Integer limit,
@Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Member(false, true),
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(identifier)
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter)
.setVerifyClassAndId(true).setVersion(versions).build());
}
Expand All @@ -67,7 +69,7 @@ public ResponseEntity<Object> classMemberOfVers(String propertyClass, String ide
String versions, @Valid List<String> fields, @Min(0) @Valid Integer limit,
@Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Member(false, false),
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(identifier)
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter)
.setVerifyClassAndId(true).setVersion(versions).build());
}
Expand All @@ -77,7 +79,7 @@ public ResponseEntity<Object> classMembers(String propertyClass, String identifi
@Valid List<String> fields, @Min(0) @Valid Integer limit, @Valid List<String> sort,
@Valid List<String> searchAfter) {
return this.processs(new Member(true, false),
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(identifier)
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter)
.setVerifyClassAndId(true).build());
}
Expand All @@ -87,7 +89,7 @@ public ResponseEntity<Object> classMembersMembers(String propertyClass, String i
@Valid List<String> fields, @Min(0) @Valid Integer limit, @Valid List<String> sort,
@Valid List<String> searchAfter) {
return this.processs(new Member(true, true),
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(identifier)
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter)
.setVerifyClassAndId(true).build());
}
Expand All @@ -97,7 +99,7 @@ public ResponseEntity<Object> classMembersMembersVers(String propertyClass, Stri
String versions, @Valid List<String> fields, @Min(0) @Valid Integer limit,
@Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Member(true, true),
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(identifier)
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter)
.setVerifyClassAndId(true).setVersion(versions).build());
}
Expand All @@ -107,7 +109,7 @@ public ResponseEntity<Object> classMembersVers(String propertyClass, String iden
String versions, @Valid List<String> fields, @Min(0) @Valid Integer limit,
@Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Member(true, false),
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(identifier)
this.uriParametersBuilder.setGroup(propertyClass).setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter)
.setVerifyClassAndId(true).setVersion(versions).build());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package gov.nasa.pds.api.registry.controller;

import java.util.List;

import gov.nasa.pds.api.registry.model.identifiers.PdsProductIdentifier;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Min;
import org.springframework.http.ResponseEntity;
Expand All @@ -21,15 +23,15 @@ public ResponseEntity<Object> bundleList(@Valid List<String> fields, @Valid List
@Override
public ResponseEntity<Object> bundlesLidvid(String identifier, @Valid List<String> fields) {
return this.processs(new Standard(), this.uriParametersBuilder.setGroup("bundles")
.setIdentifier(identifier).setFields(fields).setVerifyClassAndId(true).build());
.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setVerifyClassAndId(true).build());
}

@Override
public ResponseEntity<Object> bundlesLidvidAll(String identifier, @Valid List<String> fields,
@Min(0) @Valid Integer limit, @Valid List<String> sort, @Valid List<String> searchAfter) {
// TODO: Investigate why start/searchAfter is just disregarded for this endpoint
return this.processs(new Standard(),
this.uriParametersBuilder.setGroup("bundles").setIdentifier(identifier).setFields(fields)
this.uriParametersBuilder.setGroup("bundles").setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields)
.setVerifyClassAndId(true).setVersion(ProductVersionSelector.ALL).build());
}

Expand Down Expand Up @@ -57,7 +59,7 @@ public ResponseEntity<Object> bundlesLidvidCollectionsLatest(String identifier,
@Override
public ResponseEntity<Object> bundlesLidvidLatest(String identifier, @Valid List<String> fields) {
return this.processs(new Standard(),
this.uriParametersBuilder.setGroup("bundles").setIdentifier(identifier).setFields(fields)
this.uriParametersBuilder.setGroup("bundles").setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields)
.setVerifyClassAndId(true).setVersion(ProductVersionSelector.LATEST).build());
}

Expand All @@ -77,15 +79,15 @@ public ResponseEntity<Object> collectionList(@Valid List<String> fields,
@Override
public ResponseEntity<Object> collectionsLidvid(String identifier, @Valid List<String> fields) {
return this.processs(new Standard(), this.uriParametersBuilder.setGroup("collections")
.setIdentifier(identifier).setFields(fields).setVerifyClassAndId(true).build());
.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setVerifyClassAndId(true).build());
}

@Override
public ResponseEntity<Object> collectionsLidvidAll(String identifier, @Valid List<String> fields,
@Min(0) @Valid Integer limit, @Valid List<String> sort, @Valid List<String> searchAfter) {
// TODO: Investigate why start/searchAfter is disregarded in this case
return this.processs(new Standard(),
this.uriParametersBuilder.setGroup("collections").setIdentifier(identifier)
this.uriParametersBuilder.setGroup("collections").setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setVerifyClassAndId(true).setVersion(ProductVersionSelector.ALL)
.build());
}
Expand All @@ -101,7 +103,7 @@ public ResponseEntity<Object> collectionsLidvidBundles(String identifier,
public ResponseEntity<Object> collectionsLidvidLatest(String identifier,
@Valid List<String> fields) {
return this.processs(new Standard(),
this.uriParametersBuilder.setGroup("collections").setIdentifier(identifier)
this.uriParametersBuilder.setGroup("collections").setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setVerifyClassAndId(true).setVersion(ProductVersionSelector.LATEST)
.build());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import gov.nasa.pds.api.base.PropertiesApi;
import gov.nasa.pds.api.registry.model.identifiers.PdsProductIdentifier;
import gov.nasa.pds.model.ProductPropertiesList200ResponseInner;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Min;
Expand Down Expand Up @@ -43,15 +44,15 @@ public ResponseEntity<Object> productList(@Valid List<String> fields,
public ResponseEntity<Object> productMemberOf(String identifier, @Valid List<String> fields,
@Min(0) @Valid Integer limit, @Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Member(false, false),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).setLimit(limit)
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setLimit(limit)
.setSort(sort).setSearchAfter(sort, searchAfter).build());
}

@Override
public ResponseEntity<Object> productMemberOfOf(String identifier, @Valid List<String> fields,
@Min(0) @Valid Integer limit, @Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Member(false, true),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).setLimit(limit)
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setLimit(limit)
.setSort(sort).setSearchAfter(sort, searchAfter).build());
}

Expand All @@ -60,7 +61,7 @@ public ResponseEntity<Object> productMemberOfOfVers(String identifier, String ve
@Valid List<String> fields, @Min(0) @Valid Integer limit, @Valid List<String> sort,
@Valid List<String> searchAfter) {
return this.processs(new Member(false, true),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).setLimit(limit)
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setLimit(limit)
.setSort(sort).setSearchAfter(sort, searchAfter).setVersion(versions).build());
}

Expand All @@ -69,22 +70,22 @@ public ResponseEntity<Object> productMemberOfVers(String identifier, String vers
@Valid List<String> fields, @Min(0) @Valid Integer limit, @Valid List<String> sort,
@Valid List<String> searchAfter) {
return this.processs(new Member(false, false),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).setLimit(limit)
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setLimit(limit)
.setSort(sort).setSearchAfter(sort, searchAfter).setVersion(versions).build());
}

@Override
public ResponseEntity<Object> productMembers(String identifier, @Valid List<String> fields,
@Min(0) @Valid Integer limit, @Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Member(true, false),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).setLimit(limit)
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setLimit(limit)
.setSort(sort).setSearchAfter(sort, searchAfter).build());
}

@Override
public ResponseEntity<Object> productMembersMembers(String identifier, @Valid List<String> fields,
@Min(0) @Valid Integer limit, @Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Member(true, true), this.uriParametersBuilder.setIdentifier(identifier)
return this.processs(new Member(true, true), this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setLimit(limit).setSort(sort).setSearchAfter(sort, searchAfter).build());
}

Expand All @@ -93,7 +94,7 @@ public ResponseEntity<Object> productMembersMembersVers(String identifier, Strin
@Valid List<String> fields, @Min(0) @Valid Integer limit, @Valid List<String> sort,
@Valid List<String> searchAfter) {
return this.processs(new Member(true, true),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).setLimit(limit)
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setLimit(limit)
.setSort(sort).setSearchAfter(sort, searchAfter).setVersion(versions).build());
}

Expand All @@ -102,28 +103,28 @@ public ResponseEntity<Object> productMembersVers(String identifier, String versi
@Valid List<String> fields, @Min(0) @Valid Integer limit, @Valid List<String> sort,
@Valid List<String> searchAfter) {
return this.processs(new Member(true, false),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).setLimit(limit)
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setLimit(limit)
.setSort(sort).setSearchAfter(sort, searchAfter).setVersion(versions).build());
}

@Override
public ResponseEntity<Object> selectByLidvid(String identifier, @Valid List<String> fields) {
return this.processs(new Standard(),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).build());
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).build());
}

@Override
public ResponseEntity<Object> selectByLidvidAll(String identifier, @Valid List<String> fields,
@Min(0) @Valid Integer limit, @Valid List<String> sort, @Valid List<String> searchAfter) {
return this.processs(new Standard(),
this.uriParametersBuilder.setIdentifier(identifier).setFields(fields).setLimit(limit)
this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier)).setFields(fields).setLimit(limit)
.setSort(sort).setSearchAfter(sort, searchAfter).setVersion(ProductVersionSelector.ALL).build());
}

@Override
public ResponseEntity<Object> selectByLidvidLatest(String identifier,
@Valid List<String> fields) {
return this.processs(new Standard(), this.uriParametersBuilder.setIdentifier(identifier)
return this.processs(new Standard(), this.uriParametersBuilder.setIdentifier(PdsProductIdentifier.fromString(identifier))
.setFields(fields).setVersion(ProductVersionSelector.LATEST).build());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class URIParameters implements UserContext {
private final String accept;
private final List<String> fields;
private final String group;
private final String identifier;
private final PdsProductIdentifier identifier;
private final List<String> keywords;
private final List<String> searchAfterValues;
private final Integer limit;
Expand Down Expand Up @@ -89,7 +89,7 @@ public String getGroup() {
}

@Override
public String getIdentifier() {
public PdsProductIdentifier getIdentifier() {
return identifier;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import java.util.ArrayList;
import java.util.List;

import gov.nasa.pds.api.registry.UserContext;
import gov.nasa.pds.api.registry.model.identifiers.PdsProductIdentifier;

import gov.nasa.pds.api.registry.UserContext;
import java.util.stream.Collectors;

Expand All @@ -23,7 +26,7 @@ public class URIParametersBuilder {
public String accept = "application/json";
public List<String> fields = new ArrayList<String>();
public String group = "";
public String identifier = "";
public PdsProductIdentifier identifier = null;
public List<String> keywords = new ArrayList<String>();
public List<String> searchAfter = null;
public Integer limit = 0; // Actual default value is passed in from the upstream frames of the
Expand Down Expand Up @@ -60,9 +63,8 @@ public URIParametersBuilder setGroup(String group) {
return this;
}

public URIParametersBuilder setIdentifier(String identifier) {
if (identifier != null)
this.identifier = identifier;
public URIParametersBuilder setIdentifier(PdsProductIdentifier identifier) {
this.identifier = identifier;
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public RequestAndResponseContext memberOf(ControlContext context, UserContext in
*/
RequestAndResponseContext rrContextFromConstraint(ControlContext ctrlContext, UserContext userContext, GroupConstraint constraint) throws IOException, ApplicationTypeException, LidVidNotFoundException {
// Reset identifier to prevent it being applied as a filter during query, which would result in zero hits
UserContext newUserContext = URIParametersBuilder.fromInstance(userContext).setIdentifier("").build();
UserContext newUserContext = URIParametersBuilder.fromInstance(userContext).setIdentifier(null).build();

RequestAndResponseContext rrContext =
RequestAndResponseContext.buildRequestAndResponseContext(
Expand Down
Loading