This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
The following commit(s) were added to refs/heads/master by this push: new ac4fb09cb3 JAMES-2182 Fix inheritRightsReactive when disable ACL capability ac4fb09cb3 is described below commit ac4fb09cb35a4a869aa6b387d49ddb44a6e6c6c2 Author: TungTV <vtt...@linagora.com> AuthorDate: Thu Nov 14 11:45:39 2024 +0700 JAMES-2182 Fix inheritRightsReactive when disable ACL capability --- .../CassandraMailboxManagerWithoutAclTest.java | 70 ++++++++++++++++++++++ .../james/mailbox/store/StoreMailboxManager.java | 7 ++- 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerWithoutAclTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerWithoutAclTest.java new file mode 100644 index 0000000000..5e8697b9a3 --- /dev/null +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerWithoutAclTest.java @@ -0,0 +1,70 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ +package org.apache.james.mailbox.cassandra; + +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import java.util.EnumSet; +import java.util.Optional; + +import org.apache.james.backends.cassandra.CassandraClusterExtension; +import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration; +import org.apache.james.events.EventBus; +import org.apache.james.mailbox.MailboxManager; +import org.apache.james.mailbox.MailboxManagerTest; +import org.apache.james.mailbox.SubscriptionManager; +import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule; +import org.apache.james.mailbox.store.PreDeletionHooks; +import org.apache.james.mailbox.store.StoreSubscriptionManager; +import org.apache.james.metrics.tests.RecordingMetricFactory; +import org.junit.jupiter.api.extension.RegisterExtension; + +public class CassandraMailboxManagerWithoutAclTest extends MailboxManagerTest<CassandraMailboxManager> { + @RegisterExtension + static CassandraClusterExtension cassandra = new CassandraClusterExtension(MailboxAggregateModule.MODULE_WITH_QUOTA); + + @Override + protected CassandraMailboxManager provideMailboxManager() { + CassandraMailboxManager cassandraMailboxManager = spy(CassandraMailboxManagerProvider.provideMailboxManager( + cassandra.getCassandraCluster(), + new PreDeletionHooks(preDeletionHooks(), new RecordingMetricFactory()), + CassandraConfiguration.builder() + .aclEnabled(Optional.of(false)) + .build())); + when(cassandraMailboxManager.getSupportedMailboxCapabilities()) + .thenReturn(EnumSet.of( + MailboxManager.MailboxCapabilities.Move, + MailboxManager.MailboxCapabilities.UserFlag, + MailboxManager.MailboxCapabilities.Namespace, + MailboxManager.MailboxCapabilities.Annotation, + MailboxManager.MailboxCapabilities.Quota)); + return cassandraMailboxManager; + } + + @Override + protected SubscriptionManager provideSubscriptionManager() { + return new StoreSubscriptionManager(provideMailboxManager().getMapperFactory(), provideMailboxManager().getMapperFactory(), provideMailboxManager().getEventBus()); + } + + @Override + protected EventBus retrieveEventBus(CassandraMailboxManager mailboxManager) { + return mailboxManager.getEventBus(); + } +} diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java index 6f9548fe25..86972fbd2a 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java @@ -454,7 +454,12 @@ public class StoreMailboxManager implements MailboxManager { private Mono<Void> inheritRightsReactive(MailboxSession mailboxSession, MailboxPath path) { return nearestExistingParent(mailboxSession, path) .flatMap(parent -> Mono.from(listRightsReactive(parent, mailboxSession))) - .flatMap(acl -> storeRightManager.setRightsReactiveWithoutAccessControl(path, acl, mailboxSession)); + .flatMap(acl -> { + if (acl.getEntries().isEmpty()) { + return Mono.empty(); + } + return storeRightManager.setRightsReactiveWithoutAccessControl(path, acl, mailboxSession); + }); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org