1616package com .metaformsystems .redline .domain .service ;
1717
1818import com .metaformsystems .redline .api .dto .request .TransferProcessRequest ;
19- import com .metaformsystems .redline .infrastructure .client .management .dto .ContractRequest ;
2019import com .metaformsystems .redline .api .dto .response .FileResource ;
2120import com .metaformsystems .redline .domain .entity .UploadedFile ;
2221import com .metaformsystems .redline .domain .exception .ObjectNotFoundException ;
2726import com .metaformsystems .redline .infrastructure .client .management .dto .Catalog ;
2827import com .metaformsystems .redline .infrastructure .client .management .dto .CelExpression ;
2928import com .metaformsystems .redline .infrastructure .client .management .dto .ContractNegotiation ;
29+ import com .metaformsystems .redline .infrastructure .client .management .dto .ContractRequest ;
3030import com .metaformsystems .redline .infrastructure .client .management .dto .Criterion ;
3131import com .metaformsystems .redline .infrastructure .client .management .dto .NewContractDefinition ;
3232import com .metaformsystems .redline .infrastructure .client .management .dto .NewPolicyDefinition ;
@@ -77,23 +77,11 @@ public DataAccessService(DataPlaneApiClient dataPlaneApiClient, WebDidResolver w
7777 }
7878
7979 @ Transactional
80- public void uploadFileForParticipant (Long participantId , Map <String , Object > publicMetadata , Map <String , Object > privateMetadata , InputStream fileStream , String contentType , String originalFilename , List <CelExpression > celExpressions , PolicySet policySet ) {
80+ public void uploadFileForParticipant (Long participantId , Map <String , Object > publicMetadata , Map <String , Object > privateMetadata , InputStream fileStream , String contentType , String originalFilename , ArrayList <CelExpression > celExpressions , PolicySet policySet ) {
8181
8282 var participant = participantRepository .findById (participantId ).orElseThrow (() -> new ObjectNotFoundException ("Participant not found with id: " + participantId ));
8383 var participantContextId = participant .getParticipantContextId ();
8484
85-
86- //-1. create CEL expressions
87- if (celExpressions != null ) {
88- celExpressions .forEach (celExpression -> {
89- try {
90- managementApiClient .createCelExpression (celExpression );
91- } catch (WebClientResponseException .Conflict e ) {
92- //do nothing, CEL expression already exists
93- }
94- });
95- }
96-
9785 //0. upload file to data plane
9886 var assetId = UUID .randomUUID ().toString ();
9987 publicMetadata .put ("assetId" , assetId );
@@ -102,26 +90,28 @@ public void uploadFileForParticipant(Long participantId, Map<String, Object> pub
10290 var response = dataPlaneApiClient .uploadMultipart (participantContextId , combinedMetadata , fileStream );
10391 var fileId = response .id ();
10492
105- //1. create asset
106- publicMetadata .put ("fileId" , fileId );
93+ //1. create CEL expressions
94+ celExpressions .add (CelExpression .Builder .aNewCelExpression ()
95+ .id (MEMBERSHIP_EXPRESSION_ID )
96+ .leftOperand ("MembershipCredential" )
97+ .description ("Expression for evaluating membership credential" )
98+ .scopes (Set .of ("catalog" , "contract.negotiation" , "transfer.process" ))
99+ .expression (MEMBERSHIP_EXPRESSION )
100+ .build ());
101+ celExpressions .forEach (celExpression -> {
102+ try {
103+ managementApiClient .createCelExpression (celExpression );
104+ } catch (WebClientResponseException .Conflict e ) {
105+ //do nothing, CEL expression already exists
106+ }
107+ });
107108
109+ //2. create asset
110+ publicMetadata .put ("fileId" , fileId );
108111 var asset = createAsset (assetId , publicMetadata , privateMetadata , contentType , originalFilename );
109112 managementApiClient .createAsset (participantContextId , asset );
110113
111- // create CEL expression
112- try {
113- managementApiClient .createCelExpression (CelExpression .Builder .aNewCelExpression ()
114- .id (MEMBERSHIP_EXPRESSION_ID )
115- .leftOperand ("MembershipCredential" )
116- .description ("Expression for evaluating membership credential" )
117- .scopes (Set .of ("catalog" , "contract.negotiation" , "transfer.process" ))
118- .expression (MEMBERSHIP_EXPRESSION )
119- .build ());
120- } catch (WebClientResponseException .Conflict e ) {
121- //do nothing, CEL expression already exists
122- }
123-
124- //2. create policy
114+ //3. create policy
125115 if (policySet != null ) {
126116 var constraints = new ArrayList <>(List .of (MEMBERSHIP_CONSTRAINT ));
127117 constraints .addAll (policySet .getPermission ().getFirst ().getConstraint ());
@@ -136,7 +126,7 @@ public void uploadFileForParticipant(Long participantId, Map<String, Object> pub
136126 .policy (policySet ).build ();
137127 managementApiClient .createPolicy (participantContextId , policy );
138128
139- //3 . create contract definition if none exists
129+ //4 . create contract definition if none exists
140130 var contractDef = NewContractDefinition .Builder .aNewContractDefinition ()
141131 .id (UUID .randomUUID ().toString ())
142132 .contractPolicyId (policy .getId ())
@@ -146,7 +136,7 @@ public void uploadFileForParticipant(Long participantId, Map<String, Object> pub
146136 managementApiClient .createContractDefinition (participantContextId , contractDef );
147137
148138
149- //2 . track uploaded file in DB
139+ //5 . track uploaded file in DB
150140 participant .getUploadedFiles ().add (new UploadedFile (fileId , originalFilename , contentType , combinedMetadata ));
151141 }
152142
0 commit comments