From 2ddf7ba0dc360dd499aae99455030c136632a083 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 1 Sep 2023 10:52:33 +0200
Subject: [PATCH] OZG-3626 add projection class to nativ build

---
 Jenkinsfile                                   |  3 ++
 .../de/itvsh/kop/user/UserIdProjection.java   | 44 +++++++++++++++++++
 .../de/itvsh/kop/user/UserRepository.java     | 12 +----
 .../itvsh/kop/user/common/NativeConfig.java   |  3 +-
 4 files changed, 50 insertions(+), 12 deletions(-)
 create mode 100644 user-manager-server/src/main/java/de/itvsh/kop/user/UserIdProjection.java

diff --git a/Jenkinsfile b/Jenkinsfile
index 43c1f2e2..8edba44a 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -90,6 +90,9 @@ pipeline {
         }
 
         stage ('OWASP Dependency-Check Vulnerabilities') {
+            when {
+                branch 'master'
+            }
             steps {
                 dependencyCheck additionalArguments: '''
                         -o "./"
diff --git a/user-manager-server/src/main/java/de/itvsh/kop/user/UserIdProjection.java b/user-manager-server/src/main/java/de/itvsh/kop/user/UserIdProjection.java
new file mode 100644
index 00000000..330046cd
--- /dev/null
+++ b/user-manager-server/src/main/java/de/itvsh/kop/user/UserIdProjection.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.itvsh.kop.user;
+
+import org.bson.codecs.pojo.annotations.BsonIgnore;
+import org.bson.types.ObjectId;
+
+import io.quarkus.mongodb.panache.common.ProjectionFor;
+import lombok.Getter;
+import lombok.Setter;
+
+@ProjectionFor(User.class)
+@Setter
+@Getter
+public class UserIdProjection {
+
+	private ObjectId id;
+
+	@BsonIgnore
+	public String getAsString() {
+		return id.toHexString();
+	}
+}
diff --git a/user-manager-server/src/main/java/de/itvsh/kop/user/UserRepository.java b/user-manager-server/src/main/java/de/itvsh/kop/user/UserRepository.java
index c0e79536..d0b96122 100644
--- a/user-manager-server/src/main/java/de/itvsh/kop/user/UserRepository.java
+++ b/user-manager-server/src/main/java/de/itvsh/kop/user/UserRepository.java
@@ -35,10 +35,7 @@ import org.bson.types.ObjectId;
 import de.itvsh.kop.common.logging.KopLogging;
 import de.itvsh.kop.user.common.errorhandling.ResourceNotFoundException;
 import io.quarkus.mongodb.panache.PanacheMongoRepository;
-import io.quarkus.mongodb.panache.common.ProjectionFor;
 import io.quarkus.panache.common.Parameters;
-import lombok.Getter;
-import lombok.Setter;
 
 @ApplicationScoped
 @KopLogging
@@ -126,18 +123,11 @@ class UserRepository implements PanacheMongoRepository<User> {
 	}
 
 	public Stream<String> findAllDeletedUserIds() {
-		return find(DELETED_FIELD, true).project(UserIdProjection.class).stream().map(UserIdProjection::getId).map(ObjectId::toHexString);
+		return find(DELETED_FIELD, true).project(UserIdProjection.class).stream().map(UserIdProjection::getAsString);
 	}
 
 	public void deleteById(String id) {
 		deleteById(new ObjectId(id));
 	}
 
-	@ProjectionFor(User.class)
-	@Setter
-	@Getter
-	public static class UserIdProjection {
-		private ObjectId id;
-	}
-
 }
\ No newline at end of file
diff --git a/user-manager-server/src/main/java/de/itvsh/kop/user/common/NativeConfig.java b/user-manager-server/src/main/java/de/itvsh/kop/user/common/NativeConfig.java
index 12c4482b..17a03635 100644
--- a/user-manager-server/src/main/java/de/itvsh/kop/user/common/NativeConfig.java
+++ b/user-manager-server/src/main/java/de/itvsh/kop/user/common/NativeConfig.java
@@ -42,7 +42,8 @@ import io.quarkus.runtime.annotations.RegisterForReflection;
 		org.jboss.resteasy.plugins.providers.multipart.MultipartFormAnnotationWriter.class,
 		org.jboss.resteasy.plugins.providers.multipart.MimeMultipartProvider.class,
 		org.jboss.resteasy.plugins.providers.multipart.XopWithMultipartRelatedReader.class,
-		org.jboss.resteasy.plugins.providers.multipart.XopWithMultipartRelatedWriter.class
+		org.jboss.resteasy.plugins.providers.multipart.XopWithMultipartRelatedWriter.class,
+		de.itvsh.kop.user.UserIdProjection.class
 })
 public class NativeConfig {
 }
-- 
GitLab