Skip to content

Commit 228c71a

Browse files
authored
Restore up__ID for covers (#455)
Fixes #452 Workaround, that is currently required to restore the up__ID, which is no longer provided through the OData API due to containment.
1 parent 233d2de commit 228c71a

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

srv/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@
234234
<configuration>
235235
<basePackage>cds.gen</basePackage>
236236
<strictSetters>true</strictSetters>
237+
<interfacesForAspects>true</interfacesForAspects>
237238
</configuration>
238239
</execution>
239240
</executions>

srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.sap.cds.ql.Update;
2424
import com.sap.cds.ql.Upsert;
2525
import com.sap.cds.ql.cqn.CqnAnalyzer;
26+
import com.sap.cds.ql.cqn.CqnStructuredTypeRef;
2627
import com.sap.cds.reflect.CdsModel;
2728
import com.sap.cds.services.ErrorStatuses;
2829
import com.sap.cds.services.EventContext;
@@ -43,6 +44,7 @@
4344
import cds.gen.adminservice.AdminService_;
4445
import cds.gen.adminservice.Books;
4546
import cds.gen.adminservice.BooksAddToOrderContext;
47+
import cds.gen.adminservice.BooksCovers;
4648
import cds.gen.adminservice.Books_;
4749
import cds.gen.adminservice.OrderItems;
4850
import cds.gen.adminservice.OrderItems_;
@@ -293,6 +295,12 @@ public void addBooksViaCsv(CdsUpdateEventContext context, Upload upload) {
293295
context.setResult(Arrays.asList(upload));
294296
}
295297

298+
@Before(event = {CqnService.EVENT_CREATE, CqnService.EVENT_UPDATE, DraftService.EVENT_DRAFT_NEW, DraftService.EVENT_DRAFT_PATCH})
299+
public void restoreCoversUpId(CqnStructuredTypeRef ref, BooksCovers cover) {
300+
// restore up__ID, which is not provided via OData due to containment
301+
cover.setUpId((String) analyzer.analyze(ref).rootKeys().get(Books.ID));
302+
}
303+
296304
private Supplier<ServiceException> notFound(String message) {
297305
return () -> new ServiceException(ErrorStatuses.NOT_FOUND, message);
298306
}

0 commit comments

Comments
 (0)