3232import java .util .List ;
3333import java .util .Objects ;
3434import java .util .concurrent .CompletionException ;
35- import java .util .stream .Collectors ;
3635import java .util .stream .Stream ;
3736
3837import static java .util .Collections .singletonList ;
5453import static org .folio .service .inventory .InventoryUtils .INVENTORY_LOOKUP_ENDPOINTS ;
5554
5655public class InventoryInstanceManager {
56+
5757 private static final Logger logger = LogManager .getLogger (InventoryInstanceManager .class );
5858
5959 public static final String ID = "id" ;
@@ -100,10 +100,11 @@ public Future<SharingInstance> createShadowInstanceIfNeeded(String instanceId, R
100100 .compose (consortiumConfiguration -> createShadowInstanceIfNeeded (instanceId , consortiumConfiguration .orElse (null ), requestContext ));
101101 }
102102
103- public Future <String > getOrCreateInstanceRecord (Title title , boolean isInstanceMatchingDisabled , RequestContext requestContext ) {
103+ public Future <String > getOrCreateInstanceRecord (Title title , boolean isInstanceMatchingDisabled ,
104+ boolean suppressDiscovery , RequestContext requestContext ) {
104105 logger .debug ("InventoryInstanceManager.getOrCreateInstanceRecord title.id={}" , title .getId ());
105106 if (CollectionUtils .isEmpty (title .getProductIds ()) || isInstanceMatchingDisabled ) {
106- return createInstanceRecord (title , requestContext );
107+ return createInstanceRecord (title , suppressDiscovery , requestContext );
107108 }
108109
109110 return searchInstancesByProducts (title .getProductIds (), requestContext )
@@ -112,7 +113,7 @@ public Future<String> getOrCreateInstanceRecord(Title title, boolean isInstanceM
112113 String instanceId = getFirstObjectFromResponse (instances , INSTANCES ).getString (ID );
113114 return Future .succeededFuture (instanceId );
114115 }
115- return createInstanceRecord (title , requestContext );
116+ return createInstanceRecord (title , suppressDiscovery , requestContext );
116117 });
117118 }
118119
@@ -124,7 +125,7 @@ public Future<PoLine> openOrderHandleInstance(PoLine poLine, boolean isInstanceM
124125 .map (poLine ::withInstanceId );
125126 }
126127
127- public Future <String > createInstanceRecord (Title title , RequestContext requestContext ) {
128+ public Future <String > createInstanceRecord (Title title , boolean suppressDiscovery , RequestContext requestContext ) {
128129 logger .debug ("InventoryInstanceManager.createInstanceRecord title.id={}" , title .getId ());
129130 JsonObject lookupObj = new JsonObject ();
130131 Future <Void > instanceTypeFuture = InventoryUtils .getEntryId (configurationEntriesCache , inventoryCache , INSTANCE_TYPES , MISSING_INSTANCE_TYPE , requestContext )
@@ -138,7 +139,7 @@ public Future<String> createInstanceRecord(Title title, RequestContext requestCo
138139 Future <Void > contributorNameTypeIdFuture = verifyContributorNameTypesExist (title .getContributors (), requestContext );
139140
140141 return GenericCompositeFuture .join (List .of (instanceTypeFuture , statusFuture , contributorNameTypeIdFuture ))
141- .map (cf -> buildInstanceRecordJsonObject (title , lookupObj ))
142+ .map (cf -> buildInstanceRecordJsonObject (title , suppressDiscovery , lookupObj ))
142143 .compose (instanceJson -> createInstance (instanceJson , requestContext ));
143144 }
144145
@@ -152,13 +153,13 @@ Future<JsonObject> searchInstancesByProducts(List<ProductId> productIds, Request
152153 return restClient .getAsJsonObject (requestEntry , requestContext );
153154 }
154155
155- JsonObject buildInstanceRecordJsonObject (Title title , JsonObject lookupObj ) {
156+ JsonObject buildInstanceRecordJsonObject (Title title , boolean suppressDiscovery , JsonObject lookupObj ) {
156157 JsonObject instance = new JsonObject ();
157158
158159 // MODORDERS-145 The Source and source code are required by schema
159160 instance .put (INSTANCE_SOURCE , SOURCE_FOLIO );
160161 instance .put (INSTANCE_TITLE , title .getTitle ());
161- instance .put (INSTANCE_DISCOVERY_SUPPRESS , false );
162+ instance .put (INSTANCE_DISCOVERY_SUPPRESS , suppressDiscovery );
162163
163164 if (title .getEdition () != null ) {
164165 instance .put (INSTANCE_EDITIONS , new JsonArray (singletonList (title .getEdition ())));
@@ -180,7 +181,7 @@ JsonObject buildInstanceRecordJsonObject(Title title, JsonObject lookupObj) {
180181 invContributor .put (CONTRIBUTOR_NAME_TYPE_ID , polContributor .getContributorNameTypeId ());
181182 invContributor .put (CONTRIBUTOR_NAME , polContributor .getContributor ());
182183 return invContributor ;
183- }).collect ( toList () );
184+ }).toList ();
184185 instance .put (INSTANCE_CONTRIBUTORS , contributors );
185186 }
186187
@@ -194,7 +195,7 @@ JsonObject buildInstanceRecordJsonObject(Title title, JsonObject lookupObj) {
194195 identifier .put (INSTANCE_IDENTIFIER_TYPE_VALUE , pId .getProductId ());
195196 return identifier ;
196197 })
197- .collect ( toList () );
198+ .toList ();
198199 instance .put (INSTANCE_IDENTIFIERS , new JsonArray (identifiers ));
199200 }
200201 return instance ;
@@ -326,7 +327,7 @@ private JsonObject buildInstanceRecordJsonObject(PoLine poLine, JsonObject looku
326327 invContributor .put (CONTRIBUTOR_NAME_TYPE_ID , polContributor .getContributorNameTypeId ());
327328 invContributor .put (CONTRIBUTOR_NAME , polContributor .getContributor ());
328329 return invContributor ;
329- }).collect ( toList () );
330+ }).toList ();
330331 instance .put (INSTANCE_CONTRIBUTORS , contributors );
331332 }
332333
@@ -341,7 +342,7 @@ private JsonObject buildInstanceRecordJsonObject(PoLine poLine, JsonObject looku
341342 identifier .put (INSTANCE_IDENTIFIER_TYPE_VALUE , pId .getProductId ());
342343 return identifier ;
343344 })
344- .collect ( toList () );
345+ .toList ();
345346 instance .put (INSTANCE_IDENTIFIERS , new JsonArray (identifiers ));
346347 }
347348 return instance ;
@@ -386,7 +387,7 @@ private Future<List<JsonObject>> getContributorNameTypeByIds(List<String> ids, R
386387 return restClient .getAsJsonObject (requestEntry , requestContext )
387388 .map (entries -> entries .getJsonArray (CONTRIBUTOR_NAME_TYPES ).stream ()
388389 .map (JsonObject ::mapFrom )
389- .collect ( Collectors . toList () )
390+ .toList ()
390391 )
391392 .recover (e -> {
392393 logger .error ("The issue happened getting contributor name types" , e );
@@ -446,7 +447,7 @@ private Future<SharingInstance> createShadowInstanceIfNeeded(String instanceId,
446447 }
447448 var targetTenant = TenantTool .tenantId (requestContext .getHeaders ());
448449 logger .info ("createShadowInstanceIfNeeded:: Getting instance: {} from tenant: {}" , instanceId , targetTenant );
449- return getInstanceById (instanceId , true , requestContext )
450+ return getInstanceById (instanceId , requestContext )
450451 .compose (instance -> {
451452 if (Objects .nonNull (instance ) && !instance .isEmpty ()) {
452453 logger .info ("createShadowInstanceIfNeeded:: Shadow instance {} already exists in tenant: {}, skipping..." , instanceId , targetTenant );
@@ -457,9 +458,8 @@ private Future<SharingInstance> createShadowInstanceIfNeeded(String instanceId,
457458 });
458459 }
459460
460- private Future <JsonObject > getInstanceById (String instanceId , boolean skipNotFoundException , RequestContext requestContext ) {
461+ private Future <JsonObject > getInstanceById (String instanceId , RequestContext requestContext ) {
461462 RequestEntry requestEntry = new RequestEntry (INVENTORY_LOOKUP_ENDPOINTS .get (INSTANCE_RECORDS_BY_ID_ENDPOINT )).withId (instanceId );
462- return restClient .getAsJsonObject (requestEntry , skipNotFoundException , requestContext );
463+ return restClient .getAsJsonObject (requestEntry , true , requestContext );
463464 }
464-
465465}
0 commit comments