From 4043f3ff904f2cac7b9b59df4663d861a21659f9 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Wed, 8 Dec 2021 17:12:27 +0100 Subject: [PATCH] WIP: fix null values in lists (grpc) --- .../server/accessControl/UserSources.java | 5 +---- .../implementation/MySQL/MySQLListRoles.java | 2 +- .../implementation/MySQL/MySQLListUsers.java | 2 +- .../MySQL/MySQLLogUserVisit.java | 2 +- .../MySQL/MySQLRetrieveEntityACL.java | 2 +- .../backend/interfaces/ListRolesImpl.java | 2 +- .../backend/interfaces/ListUsersImpl.java | 2 +- .../interfaces/RetrieveEntityACLImpl.java | 2 +- .../backend/transaction/ListRoles.java | 2 +- .../backend/transaction/ListUsers.java | 2 +- .../RetrieveEntityACLTransaction.java | 2 +- .../backend/transaction/UpdateUserRoles.java | 2 +- .../AccessControlManagementServiceImpl.java | 2 +- .../caosdb/server/grpc/AuthInterceptor.java | 2 +- .../server/grpc/CaosDBToGrpcConverters.java | 7 +++++- .../grpc/EntityTransactionServiceImpl.java | 2 +- .../server/grpc/GrpcToCaosDBConverters.java | 2 +- .../transaction/ListRolesTransaction.java | 2 +- .../transaction/ListUsersTransaction.java | 22 ++++++++++++------- .../server/transaction/RetrieveACL.java | 2 +- .../caosdb/server/transaction/UpdateACL.java | 2 +- .../caosdb/server/utils/ServerMessages.java | 2 +- 22 files changed, 40 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/caosdb/server/accessControl/UserSources.java b/src/main/java/org/caosdb/server/accessControl/UserSources.java index b169849b..bd63da6f 100644 --- a/src/main/java/org/caosdb/server/accessControl/UserSources.java +++ b/src/main/java/org/caosdb/server/accessControl/UserSources.java @@ -282,10 +282,7 @@ public class UserSources extends HashMap<String, UserSource> { return false; } - /** - * Log the current time as the user's last visit. - * - */ + /** Log the current time as the user's last visit. */ public static void logUserVisit(String realm, String username, String type) { try { LogUserVisitTransaction t = diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLListRoles.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLListRoles.java index 11505b07..69ac524e 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLListRoles.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLListRoles.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.implementation.MySQL; diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLListUsers.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLListUsers.java index cb79d4ad..83ebffe6 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLListUsers.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLListUsers.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.implementation.MySQL; diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLLogUserVisit.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLLogUserVisit.java index 7a0e8ba4..23050da8 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLLogUserVisit.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLLogUserVisit.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.implementation.MySQL; diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveEntityACL.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveEntityACL.java index 2cb97d80..5db8ed75 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveEntityACL.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveEntityACL.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.implementation.MySQL; diff --git a/src/main/java/org/caosdb/server/database/backend/interfaces/ListRolesImpl.java b/src/main/java/org/caosdb/server/database/backend/interfaces/ListRolesImpl.java index aafa16e2..aab9041a 100644 --- a/src/main/java/org/caosdb/server/database/backend/interfaces/ListRolesImpl.java +++ b/src/main/java/org/caosdb/server/database/backend/interfaces/ListRolesImpl.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.interfaces; diff --git a/src/main/java/org/caosdb/server/database/backend/interfaces/ListUsersImpl.java b/src/main/java/org/caosdb/server/database/backend/interfaces/ListUsersImpl.java index 0508a01a..6bdfda92 100644 --- a/src/main/java/org/caosdb/server/database/backend/interfaces/ListUsersImpl.java +++ b/src/main/java/org/caosdb/server/database/backend/interfaces/ListUsersImpl.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.interfaces; diff --git a/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveEntityACLImpl.java b/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveEntityACLImpl.java index d9c5fbba..230d4d34 100644 --- a/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveEntityACLImpl.java +++ b/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveEntityACLImpl.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.interfaces; diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/ListRoles.java b/src/main/java/org/caosdb/server/database/backend/transaction/ListRoles.java index 747b3c5c..75792475 100644 --- a/src/main/java/org/caosdb/server/database/backend/transaction/ListRoles.java +++ b/src/main/java/org/caosdb/server/database/backend/transaction/ListRoles.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.transaction; diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/ListUsers.java b/src/main/java/org/caosdb/server/database/backend/transaction/ListUsers.java index e4d5dabb..9f29a3c5 100644 --- a/src/main/java/org/caosdb/server/database/backend/transaction/ListUsers.java +++ b/src/main/java/org/caosdb/server/database/backend/transaction/ListUsers.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.transaction; diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveEntityACLTransaction.java b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveEntityACLTransaction.java index b3d2402e..9cb96112 100644 --- a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveEntityACLTransaction.java +++ b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveEntityACLTransaction.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.transaction; diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/UpdateUserRoles.java b/src/main/java/org/caosdb/server/database/backend/transaction/UpdateUserRoles.java index 5950c255..bbd23aa9 100644 --- a/src/main/java/org/caosdb/server/database/backend/transaction/UpdateUserRoles.java +++ b/src/main/java/org/caosdb/server/database/backend/transaction/UpdateUserRoles.java @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.database.backend.transaction; diff --git a/src/main/java/org/caosdb/server/grpc/AccessControlManagementServiceImpl.java b/src/main/java/org/caosdb/server/grpc/AccessControlManagementServiceImpl.java index 0079af6f..18dd29a2 100644 --- a/src/main/java/org/caosdb/server/grpc/AccessControlManagementServiceImpl.java +++ b/src/main/java/org/caosdb/server/grpc/AccessControlManagementServiceImpl.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.grpc; diff --git a/src/main/java/org/caosdb/server/grpc/AuthInterceptor.java b/src/main/java/org/caosdb/server/grpc/AuthInterceptor.java index 7f192503..b58769d4 100644 --- a/src/main/java/org/caosdb/server/grpc/AuthInterceptor.java +++ b/src/main/java/org/caosdb/server/grpc/AuthInterceptor.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.grpc; diff --git a/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java b/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java index 29b4ea11..fe09df56 100644 --- a/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java +++ b/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.grpc; @@ -299,6 +299,11 @@ public class CaosDBToGrpcConverters { } private ScalarValue convertScalarValue(final IndexedSingleValue v) { + if (v == null) { + return ScalarValue.newBuilder() + .setSpecialValue(SpecialValue.SPECIAL_VALUE_UNSPECIFIED) + .build(); + } return convertScalarValue(v.getWrapped()).build(); } diff --git a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java index 0d5288d9..9b43a04c 100644 --- a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java +++ b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.grpc; diff --git a/src/main/java/org/caosdb/server/grpc/GrpcToCaosDBConverters.java b/src/main/java/org/caosdb/server/grpc/GrpcToCaosDBConverters.java index 9798cbf5..5ec896fd 100644 --- a/src/main/java/org/caosdb/server/grpc/GrpcToCaosDBConverters.java +++ b/src/main/java/org/caosdb/server/grpc/GrpcToCaosDBConverters.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.grpc; diff --git a/src/main/java/org/caosdb/server/transaction/ListRolesTransaction.java b/src/main/java/org/caosdb/server/transaction/ListRolesTransaction.java index 5fda2b62..b8f5943c 100644 --- a/src/main/java/org/caosdb/server/transaction/ListRolesTransaction.java +++ b/src/main/java/org/caosdb/server/transaction/ListRolesTransaction.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.transaction; diff --git a/src/main/java/org/caosdb/server/transaction/ListUsersTransaction.java b/src/main/java/org/caosdb/server/transaction/ListUsersTransaction.java index 1756b2e1..b0c4af35 100644 --- a/src/main/java/org/caosdb/server/transaction/ListUsersTransaction.java +++ b/src/main/java/org/caosdb/server/transaction/ListUsersTransaction.java @@ -16,13 +16,12 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.transaction; import java.util.List; -import java.util.function.Predicate; import java.util.stream.Collectors; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; @@ -37,16 +36,23 @@ public class ListUsersTransaction extends AccessControlTransaction { @Override protected void transaction() throws Exception { Subject currentUser = SecurityUtils.getSubject(); - users = execute(new ListUsers(), getAccess()).getUsers().stream().filter(user -> currentUser.isPermitted(ACMPermissions.PERMISSION_RETRIEVE_USER_INFO(user.realm, user.name)) - ).collect(Collectors.toList()); - + users = + execute(new ListUsers(), getAccess()) + .getUsers() + .stream() + .filter( + user -> + currentUser.isPermitted( + ACMPermissions.PERMISSION_RETRIEVE_USER_INFO(user.realm, user.name))) + .collect(Collectors.toList()); + // remove roles - for(ProtoUser user : users) { - if(!currentUser.isPermitted(ACMPermissions.PERMISSION_RETRIEVE_USER_ROLES(user.realm, user.name))) { + for (ProtoUser user : users) { + if (!currentUser.isPermitted( + ACMPermissions.PERMISSION_RETRIEVE_USER_ROLES(user.realm, user.name))) { user.roles = null; } } - } public List<ProtoUser> getUsers() { diff --git a/src/main/java/org/caosdb/server/transaction/RetrieveACL.java b/src/main/java/org/caosdb/server/transaction/RetrieveACL.java index e780b460..c82ff76e 100644 --- a/src/main/java/org/caosdb/server/transaction/RetrieveACL.java +++ b/src/main/java/org/caosdb/server/transaction/RetrieveACL.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.transaction; diff --git a/src/main/java/org/caosdb/server/transaction/UpdateACL.java b/src/main/java/org/caosdb/server/transaction/UpdateACL.java index a5025181..49125a2b 100644 --- a/src/main/java/org/caosdb/server/transaction/UpdateACL.java +++ b/src/main/java/org/caosdb/server/transaction/UpdateACL.java @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.transaction; diff --git a/src/main/java/org/caosdb/server/utils/ServerMessages.java b/src/main/java/org/caosdb/server/utils/ServerMessages.java index 2938048c..c1f361e2 100644 --- a/src/main/java/org/caosdb/server/utils/ServerMessages.java +++ b/src/main/java/org/caosdb/server/utils/ServerMessages.java @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * */ package org.caosdb.server.utils; -- GitLab