Skip to content

Commit

Permalink
Merge pull request #3 from indexdata/PR-1709-dev
Browse files Browse the repository at this point in the history
PR-1709 Fix problem with missing Scheme attribute
  • Loading branch information
JanisSaldabols authored May 17, 2024
2 parents 410a23c + 994fd40 commit 524e325
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 9 deletions.
11 changes: 11 additions & 0 deletions src/main/java/org/folio/ncip/FolioNcipHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
import org.extensiblecatalog.ncip.v2.common.TranslatorFactory;
import org.extensiblecatalog.ncip.v2.service.NCIPInitiationData;
import org.extensiblecatalog.ncip.v2.service.NCIPResponseData;
import org.extensiblecatalog.ncip.v2.service.RequestScopeType;
import org.extensiblecatalog.ncip.v2.service.RequestType;
import org.extensiblecatalog.ncip.v2.service.SchemeValueBehavior;
import org.extensiblecatalog.ncip.v2.service.SchemeValuePair;
import org.folio.util.StringUtil;
import org.folio.util.PercentCodec;
import io.vertx.core.Future;
Expand Down Expand Up @@ -52,6 +56,7 @@ public class FolioNcipHelper {
protected Properties defaultToolkitObjects = new Properties();

public FolioNcipHelper(Promise<Void> promise) {
setUpMapping();
initToolkitDefaults().onComplete(promise);
}

Expand Down Expand Up @@ -86,6 +91,12 @@ private Future<Void> initToolkitDefaults() {
}
}

private void setUpMapping(){
SchemeValuePair.allowNullScheme(RequestType.class.getName(), RequestScopeType.class.getName());
SchemeValuePair.mapBehavior(RequestType.class.getName(), SchemeValueBehavior.ALLOW_ANY);
SchemeValuePair.mapBehavior(RequestScopeType.class.getName(), SchemeValueBehavior.ALLOW_ANY);
}

public InputStream ncipProcess(RoutingContext context) throws Exception {

logger.info("ncip process called...");
Expand Down
5 changes: 1 addition & 4 deletions src/main/java/org/folio/ncip/FolioRemoteServiceManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -580,10 +580,7 @@ public JsonObject requestItem(String hrid, UserId userId) throws Exception {
String requestUrl = baseUrl + Constants.REQUEST_URL;
String requestResponse = callApiPost(requestUrl, request);

returnValues.put("request", new JsonObject(requestResponse));
returnValues.put("item", itemObject);
returnValues.put("holding", holdingResponse);

returnValues.mergeIn(new JsonObject(requestResponse));
} else {
logger.error("Found total of " + totalRecords + " items by hrid " + hrid);
throw new FolioNcipException(Constants.REQUEST_ITEM_MISSING_PROBLEM);
Expand Down
17 changes: 12 additions & 5 deletions src/main/java/org/folio/ncip/services/FolioRequestItemService.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,20 @@ public RequestItemResponseData performService(RequestItemInitiationData initData
try {
JsonObject requestItemResponseDetails = ((FolioRemoteServiceManager)serviceManager)
.requestItem(bibliographicId.getBibliographicRecordId().getBibliographicRecordIdentifier(), userId);
String assignedRequestId = requestItemResponseDetails.getJsonObject("request").getString("id");
String barcode = requestItemResponseDetails.getJsonObject("item").getString("barcode");
String callNumber = requestItemResponseDetails.getJsonObject("item").getString("callNumber");
String locationName = requestItemResponseDetails.getJsonObject("item").getJsonObject("effectiveLocation").getString("name");
String assignedRequestId = requestItemResponseDetails.getString("id");
String barcode = null;
String callNumber = null;
String locationName = null;
if(requestItemResponseDetails.getJsonObject("item") != null) {
JsonObject item = requestItemResponseDetails.getJsonObject("item");
barcode = item.getString("barcode");
callNumber = item.getString("callNumber");
if (item.getJsonObject("location") != null) {
locationName = item.getJsonObject("location").getString("name") + " : " + item.getJsonObject("location").getString("libraryName");
}
}
ncipRequestId.setRequestIdentifierValue(assignedRequestId);
itemDescription.setCallNumber(callNumber);
itemDescription.setCopyNumber(barcode);
locationNameInstance.setLocationNameValue(locationName);
itemId.setItemIdentifierValue(barcode);
}
Expand Down
6 changes: 6 additions & 0 deletions src/test/java/org/folio/ncip/RequestItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
*/
public class RequestItem extends TestBase {
private static final String CREATED_REQUEST_ID = "de627598-d468-41e0-a849-450940478477";
private static final String ITEM_IDENTIFIER = "<ns1:ItemIdentifierValue>0000005</ns1:ItemIdentifierValue>";
private static final String CALL_NUMBER = "<ns1:CallNumber>58.95</ns1:CallNumber>";
private static final String LOCATION = "Annex : Datalogisk Institut";

/**
* @throws java.lang.Exception
Expand All @@ -35,6 +38,9 @@ public void callRequestItem() throws MalformedURLException {
System.out.println(body);
assertEquals(200, response.getStatusCode());
assertTrue(body.contains(CREATED_REQUEST_ID));
assertTrue(body.contains(ITEM_IDENTIFIER));
assertTrue(body.contains(CALL_NUMBER));
assertTrue(body.contains(LOCATION));
}

}
2 changes: 2 additions & 0 deletions src/test/resources/mockdata/ncip-requestitem.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
<ItemId>
<ItemIdentifierValue>item1</ItemIdentifierValue>
</ItemId>
<RequestType>Loan</RequestType>
<RequestScopeType>Bibliographic Item</RequestScopeType>
<BibliographicId>
<BibliographicRecordId>
<BibliographicRecordIdentifier>itemHrid1</BibliographicRecordIdentifier>
Expand Down

0 comments on commit 524e325

Please sign in to comment.