From 32814257d91e08cf9ea4173e57b3c4acf576c6c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Fri, 12 Jun 2026 09:29:44 +0200 Subject: [PATCH 1/8] Show User Description --- package.json | 9 ++++-- .../handlers/UserDescriptionHandler.java | 31 +++++++++++++++++++ srv/src/main/resources/application.yaml | 10 ++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java diff --git a/package.json b/package.json index 8bb22a26..a171b687 100644 --- a/package.json +++ b/package.json @@ -9,5 +9,10 @@ }, "workspaces": [ "mtx/sidecar" - ] -} + ], + "cds": { + "cdsc": { + "draftUserDescription": true + } + } +} \ No newline at end of file diff --git a/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java new file mode 100644 index 00000000..92ac73a3 --- /dev/null +++ b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java @@ -0,0 +1,31 @@ +package my.bookshop.handlers; + +import com.sap.cds.CdsData; +import com.sap.cds.CdsDataProcessor; +import com.sap.cds.services.draft.DraftCreateEventContext; +import com.sap.cds.services.handler.EventHandler; +import com.sap.cds.services.handler.annotations.On; +import com.sap.cds.services.request.UserInfo; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class UserDescriptionHandler implements EventHandler { + + @On(service = "*") + protected void addDraftFields(DraftCreateEventContext context, List entries) { + CdsDataProcessor.Filter filter = + (path, element, type) -> + switch (element.getName()) { + case "InProcessByUserDescription" -> true; + default -> false; + }; + + UserInfo userInfo = context.getUserInfo(); + CdsDataProcessor.Generator generator = + (path, element, isNull) -> userInfo.getAdditionalAttribute("nickname"); + CdsDataProcessor dataProcessor = CdsDataProcessor.create().addGenerator(filter, generator); + + dataProcessor.process(entries, context.getTarget()); + } +} diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index 5f9dac1d..de70a02b 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -17,11 +17,21 @@ cds: password: admin roles: - admin + additional: + nickname: Chief Books Administrator attributes: businessPartner: - "10401010" + minad: + password: minad + roles: + - admin + additional: + nickname: Controller of Books user: password: user + additional: + nickname: Some user server.servlet.encoding: charset: UTF-8 force: true From 13dda96398328faff9e57d3746d5f7b38a3fd258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Tue, 28 Jul 2026 16:19:11 +0200 Subject: [PATCH 2/8] Update UserDescriptionHandler.java --- .../handlers/UserDescriptionHandler.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java index 92ac73a3..51fa5041 100644 --- a/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java +++ b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java @@ -3,29 +3,34 @@ import com.sap.cds.CdsData; import com.sap.cds.CdsDataProcessor; import com.sap.cds.services.draft.DraftCreateEventContext; +import com.sap.cds.services.draft.DraftService; import com.sap.cds.services.handler.EventHandler; -import com.sap.cds.services.handler.annotations.On; +import com.sap.cds.services.handler.annotations.Before; +import com.sap.cds.services.handler.annotations.ServiceName; import com.sap.cds.services.request.UserInfo; import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component +@ServiceName(value = "*", type = DraftService.class) public class UserDescriptionHandler implements EventHandler { - @On(service = "*") + @Autowired private UserInfo userInfo; + + @Before protected void addDraftFields(DraftCreateEventContext context, List entries) { CdsDataProcessor.Filter filter = - (path, element, type) -> - switch (element.getName()) { - case "InProcessByUserDescription" -> true; - default -> false; - }; - - UserInfo userInfo = context.getUserInfo(); - CdsDataProcessor.Generator generator = - (path, element, isNull) -> userInfo.getAdditionalAttribute("nickname"); + (path, element, type) -> "InProcessByUserDescription".equals(element.getName()); + CdsDataProcessor.Generator generator = (path, element, isNull) -> description(); CdsDataProcessor dataProcessor = CdsDataProcessor.create().addGenerator(filter, generator); dataProcessor.process(entries, context.getTarget()); } + + private String description() { + return userInfo.getAdditionalAttribute("given_name") + + " " + + userInfo.getAdditionalAttribute("family_name"); + } } From 1a5cc4c1f2f195e4ca8252dbbefb95816a36601c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Tue, 28 Jul 2026 16:19:59 +0200 Subject: [PATCH 3/8] Update application.yaml --- srv/src/main/resources/application.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index de70a02b..5518b81a 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -18,7 +18,8 @@ cds: roles: - admin additional: - nickname: Chief Books Administrator + given_name: Paul + family_name: Müller attributes: businessPartner: - "10401010" @@ -27,7 +28,8 @@ cds: roles: - admin additional: - nickname: Controller of Books + given_name: Emma + family_name: Maier user: password: user additional: From 196cc97a232b9f6b2e878883e97f32a4e606e0e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Tue, 28 Jul 2026 18:24:26 +0200 Subject: [PATCH 4/8] Apply suggestions from code review Co-authored-by: Marc Becker --- .../java/my/bookshop/handlers/UserDescriptionHandler.java | 6 +++--- srv/src/main/resources/application.yaml | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java index 51fa5041..4139d537 100644 --- a/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java +++ b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java @@ -23,9 +23,9 @@ protected void addDraftFields(DraftCreateEventContext context, List ent CdsDataProcessor.Filter filter = (path, element, type) -> "InProcessByUserDescription".equals(element.getName()); CdsDataProcessor.Generator generator = (path, element, isNull) -> description(); - CdsDataProcessor dataProcessor = CdsDataProcessor.create().addGenerator(filter, generator); - - dataProcessor.process(entries, context.getTarget()); + CdsDataProcessor.create() + .addGenerator(filter, generator) + .process(entries, context.getTarget()); } private String description() { diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index 5518b81a..3a6e4cab 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -32,8 +32,6 @@ cds: family_name: Maier user: password: user - additional: - nickname: Some user server.servlet.encoding: charset: UTF-8 force: true From 39251f15ab9cac107bc7efa441e61c3a793a2eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Tue, 28 Jul 2026 18:26:01 +0200 Subject: [PATCH 5/8] Update package.json --- package.json | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a171b687..8bb22a26 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,5 @@ }, "workspaces": [ "mtx/sidecar" - ], - "cds": { - "cdsc": { - "draftUserDescription": true - } - } -} \ No newline at end of file + ] +} From f30cb12f85beb2ed2e30a99187c7744b77b9b546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Tue, 28 Jul 2026 18:26:29 +0200 Subject: [PATCH 6/8] Update .cdsrc.json --- .cdsrc.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.cdsrc.json b/.cdsrc.json index d7bd9b1f..e69009c5 100644 --- a/.cdsrc.json +++ b/.cdsrc.json @@ -4,5 +4,8 @@ "extensibility": true, "toggles": true }, - "profile": "with-mtx-sidecar" + "profile": "with-mtx-sidecar", + "cdsc": { + "draftUserDescription": true + } } From ba7527716d60c0991202f722dffbe970132f7a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Tue, 28 Jul 2026 18:29:01 +0200 Subject: [PATCH 7/8] Update application.yaml --- srv/src/main/resources/application.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index 3a6e4cab..824aa60d 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -30,6 +30,9 @@ cds: additional: given_name: Emma family_name: Maier + attributes: + businessPartner: + - "1000020" user: password: user server.servlet.encoding: From b01c379fcb2349bb0feb238e30ae605744e1f7c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Wed, 29 Jul 2026 11:23:48 +0200 Subject: [PATCH 8/8] formatting --- .../java/my/bookshop/handlers/UserDescriptionHandler.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java index 4139d537..fe3635b9 100644 --- a/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java +++ b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java @@ -23,9 +23,7 @@ protected void addDraftFields(DraftCreateEventContext context, List ent CdsDataProcessor.Filter filter = (path, element, type) -> "InProcessByUserDescription".equals(element.getName()); CdsDataProcessor.Generator generator = (path, element, isNull) -> description(); - CdsDataProcessor.create() - .addGenerator(filter, generator) - .process(entries, context.getTarget()); + CdsDataProcessor.create().addGenerator(filter, generator).process(entries, context.getTarget()); } private String description() {