This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit d423c6a3acf054e6476ea84873593953d7743a68
Author: Benoit TELLIER <[email protected]>
AuthorDate: Tue Sep 30 08:01:42 2025 +0200

    [REMOVAL] Remove now unused CassandraJamesServerMain and friends
---
 .../org/apache/james/BlobStoreConfiguration.java   | 181 ----------------
 .../org/apache/james/BlobStoreModulesChooser.java  | 114 ----------
 .../org/apache/james/CassandraBlobStoreModule.java |  45 ----
 .../james/CassandraJamesServerConfiguration.java   | 238 ---------------------
 .../org/apache/james/CassandraJamesServerMain.java | 236 --------------------
 .../TestingDistributedJamesServerBuilder.java      |  39 ----
 6 files changed, 853 deletions(-)

diff --git 
a/server/apps/cassandra-app/src/main/java/org/apache/james/BlobStoreConfiguration.java
 
b/server/apps/cassandra-app/src/main/java/org/apache/james/BlobStoreConfiguration.java
deleted file mode 100644
index 3c2648dd71..0000000000
--- 
a/server/apps/cassandra-app/src/main/java/org/apache/james/BlobStoreConfiguration.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/****************************************************************
- * 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;
-
-import java.io.FileNotFoundException;
-import java.util.Objects;
-import java.util.Optional;
-
-import org.apache.commons.configuration2.Configuration;
-import org.apache.commons.configuration2.ex.ConfigurationException;
-import org.apache.james.blob.aes.CryptoConfig;
-import org.apache.james.modules.mailbox.ConfigurationComponent;
-import org.apache.james.server.blob.deduplication.StorageStrategy;
-import org.apache.james.server.core.filesystem.FileSystemImpl;
-import org.apache.james.utils.PropertiesProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-import io.vavr.control.Try;
-
-/**
- * See https://issues.apache.org/jira/browse/JAMES-3767
- *
- * Cassandra APP will be removed after 3.8.0 release.
- *
- * Please migrate to the distributed APP.
- */
-@Deprecated(forRemoval = true)
-public class BlobStoreConfiguration {
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(BlobStoreConfiguration.class);
-
-    @FunctionalInterface
-    public interface RequireStoringStrategy {
-        RequireCryptoConfig strategy(StorageStrategy storageStrategy);
-
-        default RequireCryptoConfig passthrough() {
-            return strategy(StorageStrategy.PASSTHROUGH);
-        }
-
-        default RequireCryptoConfig deduplication() {
-            return strategy(StorageStrategy.DEDUPLICATION);
-        }
-    }
-
-    @FunctionalInterface
-    public interface RequireCryptoConfig {
-        BlobStoreConfiguration cryptoConfig(Optional<CryptoConfig> 
cryptoConfig);
-
-        default BlobStoreConfiguration noCryptoConfig() {
-            return cryptoConfig(Optional.empty());
-        }
-
-        default BlobStoreConfiguration cryptoConfig(CryptoConfig cryptoConfig) 
{
-            return cryptoConfig(Optional.of(cryptoConfig));
-        }
-    }
-
-    public static RequireStoringStrategy builder() {
-        return storageStrategy -> cryptoConfig ->
-            new BlobStoreConfiguration(storageStrategy, cryptoConfig);
-    }
-
-    static final String ENCRYPTION_ENABLE_PROPERTY = "encryption.aes.enable";
-    static final String ENCRYPTION_PASSWORD_PROPERTY = 
"encryption.aes.password";
-    static final String ENCRYPTION_SALT_PROPERTY = "encryption.aes.salt";
-    static final String ENCRYPTION_PRIVATE_KEY_ALGORITHM_PROPERTY = 
"encryption.aes.private.key.algorithm";
-    static final String DEDUPLICATION_ENABLE_PROPERTY = "deduplication.enable";
-
-    public static BlobStoreConfiguration 
parse(org.apache.james.server.core.configuration.Configuration configuration) 
throws ConfigurationException {
-        PropertiesProvider propertiesProvider = new PropertiesProvider(new 
FileSystemImpl(configuration.directories()),
-            configuration.configurationPath());
-
-        return parse(propertiesProvider);
-    }
-
-    public static BlobStoreConfiguration parse(PropertiesProvider 
propertiesProvider) throws ConfigurationException {
-        try {
-            Configuration configuration = 
propertiesProvider.getConfigurations(ConfigurationComponent.NAMES);
-            return BlobStoreConfiguration.from(configuration);
-        } catch (FileNotFoundException e) {
-            LOGGER.warn("Could not find " + ConfigurationComponent.NAME + " 
configuration file, using deduplicating blobstore as the default");
-            return BlobStoreConfiguration.builder()
-                .deduplication()
-                .noCryptoConfig();
-        }
-    }
-
-    static BlobStoreConfiguration from(Configuration configuration) {
-        boolean deduplicationEnabled = Try.ofCallable(() -> 
configuration.getBoolean(DEDUPLICATION_ENABLE_PROPERTY))
-                .getOrElseThrow(() -> new 
IllegalStateException("deduplication.enable property is missing please use one 
of the supported values in: true, false\n" +
-                        "If you choose to enable deduplication, the mails with 
the same content will be stored only once.\n" +
-                        "Warning: Once this feature is enabled, there is no 
turning back as turning it off will lead to the deletion of all\n" +
-                        "the mails sharing the same content once one is 
deleted.\n" +
-                        "Upgrade note: If you are upgrading from James 3.5 or 
older, the deduplication was enabled."));
-        Optional<CryptoConfig> cryptoConfig = parseCryptoConfig(configuration);
-
-        if (deduplicationEnabled) {
-            return builder()
-                .deduplication()
-                .cryptoConfig(cryptoConfig);
-        } else {
-            return builder()
-                .passthrough()
-                .cryptoConfig(cryptoConfig);
-        }
-    }
-
-    private static Optional<CryptoConfig> parseCryptoConfig(Configuration 
configuration) {
-        final boolean enabled = 
configuration.getBoolean(ENCRYPTION_ENABLE_PROPERTY, false);
-        if (enabled) {
-            return Optional.of(CryptoConfig.builder()
-                
.password(Optional.ofNullable(configuration.getString(ENCRYPTION_PASSWORD_PROPERTY,
 null)).map(String::toCharArray).orElse(null))
-                .salt(configuration.getString(ENCRYPTION_SALT_PROPERTY, null))
-                
.privateKeyAlgorithm(Optional.ofNullable(configuration.getString(ENCRYPTION_PRIVATE_KEY_ALGORITHM_PROPERTY,
 null)))
-                .build());
-        }
-        return Optional.empty();
-    }
-
-
-    private final StorageStrategy storageStrategy;
-    private final Optional<CryptoConfig> cryptoConfig;
-
-    BlobStoreConfiguration(StorageStrategy storageStrategy, 
Optional<CryptoConfig> cryptoConfig) {
-
-        this.storageStrategy = storageStrategy;
-        this.cryptoConfig = cryptoConfig;
-    }
-
-
-    public StorageStrategy storageStrategy() {
-        return storageStrategy;
-    }
-
-    public Optional<CryptoConfig> getCryptoConfig() {
-        return cryptoConfig;
-    }
-
-    @Override
-    public final boolean equals(Object o) {
-        if (o instanceof BlobStoreConfiguration) {
-            BlobStoreConfiguration that = (BlobStoreConfiguration) o;
-
-            return Objects.equals(this.storageStrategy, that.storageStrategy)
-                && Objects.equals(this.cryptoConfig, that.cryptoConfig);
-        }
-        return false;
-    }
-
-    @Override
-    public final int hashCode() {
-        return Objects.hash(storageStrategy, cryptoConfig);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-            .add("storageStrategy", storageStrategy.name())
-            .add("cryptoConfig", cryptoConfig)
-            .toString();
-    }
-}
diff --git 
a/server/apps/cassandra-app/src/main/java/org/apache/james/BlobStoreModulesChooser.java
 
b/server/apps/cassandra-app/src/main/java/org/apache/james/BlobStoreModulesChooser.java
deleted file mode 100644
index 16d5506f05..0000000000
--- 
a/server/apps/cassandra-app/src/main/java/org/apache/james/BlobStoreModulesChooser.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************
- * 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;
-
-import static 
org.apache.james.blob.api.MetricableBlobStore.BLOB_STORE_IMPLEMENTATION;
-
-import java.util.List;
-import java.util.Optional;
-
-import org.apache.james.blob.aes.AESBlobStoreDAO;
-import org.apache.james.blob.aes.CryptoConfig;
-import org.apache.james.blob.api.BlobStore;
-import org.apache.james.blob.api.BlobStoreDAO;
-import org.apache.james.modules.blobstore.BlobDeduplicationGCModule;
-import 
org.apache.james.modules.blobstore.validation.BlobStoreConfigurationValidationStartUpCheck;
-import org.apache.james.modules.mailbox.BlobStoreAPIModule;
-import org.apache.james.server.blob.deduplication.DeDuplicationBlobStore;
-import org.apache.james.server.blob.deduplication.PassThroughBlobStore;
-import org.apache.james.server.blob.deduplication.StorageStrategy;
-
-import com.google.common.collect.ImmutableList;
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
-import com.google.inject.name.Named;
-import com.google.inject.name.Names;
-
-/**
- * See https://issues.apache.org/jira/browse/JAMES-3767
- *
- * Cassandra APP will be removed after 3.8.0 release.
- *
- * Please migrate to the distributed APP.
- */
-@Deprecated(forRemoval = true)
-public class BlobStoreModulesChooser {
-    static final String UNENCRYPTED = "unencrypted";
-
-    static class NoEncryptionModule extends AbstractModule {
-        @Provides
-        @Singleton
-        BlobStoreDAO blobStoreDAO(@Named(UNENCRYPTED) BlobStoreDAO 
unencrypted) {
-            return unencrypted;
-        }
-    }
-
-    static class EncryptionModule extends AbstractModule {
-        private final CryptoConfig cryptoConfig;
-
-        EncryptionModule(CryptoConfig cryptoConfig) {
-            this.cryptoConfig = cryptoConfig;
-        }
-
-        @Provides
-        @Singleton
-        BlobStoreDAO blobStoreDAO(@Named(UNENCRYPTED) BlobStoreDAO 
unencrypted) {
-            return new AESBlobStoreDAO(unencrypted, cryptoConfig);
-        }
-
-        @Provides
-        CryptoConfig cryptoConfig() {
-            return cryptoConfig;
-        }
-    }
-
-    public static List<Module> chooseModules(BlobStoreConfiguration 
choosingConfiguration) {
-        return ImmutableList.<Module>builder()
-            
.add(chooseEncryptionModule(choosingConfiguration.getCryptoConfig()))
-            
.addAll(chooseStoragePolicyModule(choosingConfiguration.storageStrategy()))
-            .add(binder -> 
binder.bind(BlobStoreConfiguration.class).toInstance(choosingConfiguration))
-            .add(binder -> 
binder.bind(BlobStoreConfigurationValidationStartUpCheck.StorageStrategySupplier.class).toInstance(choosingConfiguration::storageStrategy))
-            .build();
-    }
-
-    public static Module chooseEncryptionModule(Optional<CryptoConfig> 
cryptoConfig) {
-        Optional<Module> encryptionModule = 
cryptoConfig.map(EncryptionModule::new);
-        return encryptionModule.orElse(new NoEncryptionModule());
-    }
-
-    private static List<Module> chooseStoragePolicyModule(StorageStrategy 
storageStrategy) {
-        switch (storageStrategy) {
-            case DEDUPLICATION:
-                Module deduplicationBlobModule = binder -> 
binder.bind(BlobStore.class)
-                    .annotatedWith(Names.named(BLOB_STORE_IMPLEMENTATION))
-                    .to(DeDuplicationBlobStore.class);
-                return ImmutableList.of(new BlobDeduplicationGCModule(), 
deduplicationBlobModule);
-            case PASSTHROUGH:
-                Module passThroughBlobModule = binder -> 
binder.bind(BlobStore.class)
-                    .annotatedWith(Names.named(BLOB_STORE_IMPLEMENTATION))
-                    .to(PassThroughBlobStore.class);
-                return ImmutableList.of(new BlobStoreAPIModule(), 
passThroughBlobModule);
-            default:
-                throw new RuntimeException("Unknown storage strategy " + 
storageStrategy.name());
-        }
-    }
-}
diff --git 
a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraBlobStoreModule.java
 
b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraBlobStoreModule.java
deleted file mode 100644
index f960e8ecff..0000000000
--- 
a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraBlobStoreModule.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * 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;
-
-import static org.apache.james.BlobStoreModulesChooser.UNENCRYPTED;
-
-import org.apache.james.blob.api.BlobStoreDAO;
-import org.apache.james.blob.cassandra.CassandraBlobStoreDAO;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
-import com.google.inject.name.Names;
-
-/**
- * See https://issues.apache.org/jira/browse/JAMES-3767
- *
- * Cassandra APP will be removed after 3.8.0 release.
- *
- * Please migrate to the distributed APP.
- */
-@Deprecated(forRemoval = true)
-public class CassandraBlobStoreModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(CassandraBlobStoreDAO.class).in(Scopes.SINGLETON);
-        
bind(BlobStoreDAO.class).annotatedWith(Names.named(UNENCRYPTED)).to(CassandraBlobStoreDAO.class);
-    }
-}
diff --git 
a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
 
b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
deleted file mode 100644
index 6a9006abf5..0000000000
--- 
a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/****************************************************************
- * 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;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.Optional;
-
-import org.apache.commons.configuration2.ex.ConfigurationException;
-import org.apache.james.data.UsersRepositoryModuleChooser;
-import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.filesystem.api.JamesDirectoriesProvider;
-import org.apache.james.jmap.JMAPModule;
-import org.apache.james.server.core.JamesServerResourceLoader;
-import org.apache.james.server.core.MissingArgumentException;
-import org.apache.james.server.core.configuration.Configuration;
-import org.apache.james.server.core.configuration.FileConfigurationProvider;
-import org.apache.james.server.core.filesystem.FileSystemImpl;
-import org.apache.james.utils.PropertiesProvider;
-import org.apache.james.vault.VaultConfiguration;
-
-import com.github.fge.lambdas.Throwing;
-
-/**
- * See https://issues.apache.org/jira/browse/JAMES-3767
- *
- * Cassandra APP will be removed after 3.8.0 release.
- *
- * Please migrate to the distributed APP.
- */
-@Deprecated(forRemoval = true)
-public class CassandraJamesServerConfiguration implements Configuration {
-    public static class Builder {
-        private Optional<SearchConfiguration> searchConfiguration;
-        private Optional<String> rootDirectory;
-        private Optional<ConfigurationPath> configurationPath;
-        private Optional<BlobStoreConfiguration> blobStoreConfiguration;
-        private Optional<UsersRepositoryModuleChooser.Implementation> 
usersRepositoryImplementation;
-        private Optional<VaultConfiguration> vaultConfiguration;
-        private Optional<Boolean> jmapEnabled;
-        private Optional<Boolean> quotaCompatibilityMode;
-
-        private Builder() {
-            rootDirectory = Optional.empty();
-            configurationPath = Optional.empty();
-            searchConfiguration = Optional.empty();
-            usersRepositoryImplementation = Optional.empty();
-            blobStoreConfiguration = Optional.empty();
-            vaultConfiguration = Optional.empty();
-            jmapEnabled = Optional.empty();
-            quotaCompatibilityMode = Optional.empty();
-        }
-
-        public Builder workingDirectory(String path) {
-            rootDirectory = Optional.of(path);
-            return this;
-        }
-
-        public Builder workingDirectory(File file) {
-            rootDirectory = Optional.of(file.getAbsolutePath());
-            return this;
-        }
-
-        public Builder useWorkingDirectoryEnvProperty() {
-            rootDirectory = 
Optional.ofNullable(System.getProperty(WORKING_DIRECTORY));
-            if (!rootDirectory.isPresent()) {
-                throw new MissingArgumentException("Server needs a 
working.directory env entry");
-            }
-            return this;
-        }
-
-        public Builder configurationPath(ConfigurationPath path) {
-            configurationPath = Optional.of(path);
-            return this;
-        }
-
-        public Builder configurationFromClasspath() {
-            configurationPath = Optional.of(new 
ConfigurationPath(FileSystem.CLASSPATH_PROTOCOL));
-            return this;
-        }
-
-        public Builder blobStore(BlobStoreConfiguration 
blobStoreConfiguration) {
-            this.blobStoreConfiguration = Optional.of(blobStoreConfiguration);
-            return this;
-        }
-
-        public Builder searchConfiguration(SearchConfiguration 
searchConfiguration) {
-            this.searchConfiguration = Optional.of(searchConfiguration);
-            return this;
-        }
-
-        public Builder 
usersRepository(UsersRepositoryModuleChooser.Implementation implementation) {
-            this.usersRepositoryImplementation = Optional.of(implementation);
-            return this;
-        }
-
-        public Builder vaultConfiguration(VaultConfiguration 
vaultConfiguration) {
-            this.vaultConfiguration = Optional.of(vaultConfiguration);
-            return this;
-        }
-
-        public Builder quotaCompatibilityModeEnabled(boolean value) {
-            this.quotaCompatibilityMode = Optional.of(value);
-            return this;
-        }
-
-        public CassandraJamesServerConfiguration build() {
-            ConfigurationPath configurationPath = 
this.configurationPath.orElse(new 
ConfigurationPath(FileSystem.FILE_PROTOCOL_AND_CONF));
-            JamesServerResourceLoader directories = new 
JamesServerResourceLoader(rootDirectory
-                .orElseThrow(() -> new MissingArgumentException("Server needs 
a working.directory env entry")));
-
-            FileSystemImpl fileSystem = new FileSystemImpl(directories);
-            PropertiesProvider propertiesProvider = new 
PropertiesProvider(fileSystem, configurationPath);
-            SearchConfiguration searchConfiguration = 
this.searchConfiguration.orElseGet(Throwing.supplier(
-                () -> SearchConfiguration.parse(propertiesProvider)));
-
-            BlobStoreConfiguration blobStoreConfiguration = 
this.blobStoreConfiguration.orElseGet(Throwing.supplier(
-                () -> BlobStoreConfiguration.parse(propertiesProvider)));
-
-            FileConfigurationProvider configurationProvider = new 
FileConfigurationProvider(fileSystem, Basic.builder()
-                .configurationPath(configurationPath)
-                .workingDirectory(directories.getRootDirectory())
-                .build());
-            UsersRepositoryModuleChooser.Implementation usersRepositoryChoice 
= usersRepositoryImplementation.orElseGet(
-                () -> 
UsersRepositoryModuleChooser.Implementation.parse(configurationProvider));
-
-            VaultConfiguration vaultConfiguration = 
this.vaultConfiguration.orElseGet(() -> {
-                try {
-                    return 
VaultConfiguration.from(propertiesProvider.getConfiguration("deletedMessageVault"));
-                } catch (FileNotFoundException e) {
-                    return VaultConfiguration.DEFAULT;
-                } catch (ConfigurationException e) {
-                    throw new RuntimeException(e);
-                }
-            });
-
-            boolean quotaCompatibilityMode = 
this.quotaCompatibilityMode.orElseGet(() -> {
-                try {
-                    return 
propertiesProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode",
 false);
-                } catch (FileNotFoundException e) {
-                    return false;
-                } catch (ConfigurationException e) {
-                    throw new RuntimeException(e);
-                }
-            });
-
-            boolean jmapEnabled = this.jmapEnabled.orElseGet(() -> {
-                try {
-                    return 
JMAPModule.parseConfiguration(propertiesProvider).isEnabled();
-                } catch (FileNotFoundException e) {
-                    return false;
-                } catch (ConfigurationException e) {
-                    throw new RuntimeException(e);
-                }
-            });
-
-            return new CassandraJamesServerConfiguration(configurationPath, 
directories, searchConfiguration, blobStoreConfiguration, 
usersRepositoryChoice, vaultConfiguration, jmapEnabled, quotaCompatibilityMode);
-        }
-    }
-
-    public static CassandraJamesServerConfiguration.Builder builder() {
-        return new Builder();
-    }
-
-    private final ConfigurationPath configurationPath;
-    private final JamesDirectoriesProvider directories;
-    private final SearchConfiguration searchConfiguration;
-    private final BlobStoreConfiguration blobStoreConfiguration;
-    private final UsersRepositoryModuleChooser.Implementation 
usersRepositoryImplementation;
-    private final VaultConfiguration vaultConfiguration;
-    private final boolean jmapEnabled;
-    private final boolean quotaCompatibilityMode;
-
-    private CassandraJamesServerConfiguration(ConfigurationPath 
configurationPath, JamesDirectoriesProvider directories,
-                                              SearchConfiguration 
searchConfiguration, BlobStoreConfiguration blobStoreConfiguration,
-                                              
UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation,
-                                              VaultConfiguration 
vaultConfiguration, boolean jmapEnabled, boolean quotaCompatibilityMode) {
-        this.configurationPath = configurationPath;
-        this.directories = directories;
-        this.searchConfiguration = searchConfiguration;
-        this.blobStoreConfiguration = blobStoreConfiguration;
-        this.usersRepositoryImplementation = usersRepositoryImplementation;
-        this.vaultConfiguration = vaultConfiguration;
-        this.jmapEnabled = jmapEnabled;
-        this.quotaCompatibilityMode = quotaCompatibilityMode;
-    }
-
-    @Override
-    public ConfigurationPath configurationPath() {
-        return configurationPath;
-    }
-
-    @Override
-    public JamesDirectoriesProvider directories() {
-        return directories;
-    }
-
-    public SearchConfiguration searchConfiguration() {
-        return searchConfiguration;
-    }
-
-    public VaultConfiguration getVaultConfiguration() {
-        return vaultConfiguration;
-    }
-
-    public UsersRepositoryModuleChooser.Implementation 
getUsersRepositoryImplementation() {
-        return usersRepositoryImplementation;
-    }
-
-    public BlobStoreConfiguration getBlobStoreConfiguration() {
-        return blobStoreConfiguration;
-    }
-
-    public boolean isJmapEnabled() {
-        return jmapEnabled;
-    }
-
-    public boolean isQuotaCompatibilityMode() {
-        return quotaCompatibilityMode;
-    }
-}
diff --git 
a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerMain.java
 
b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerMain.java
deleted file mode 100644
index 80dd87884d..0000000000
--- 
a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerMain.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/****************************************************************
- * 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;
-
-import java.util.Set;
-
-import org.apache.james.data.UsersRepositoryModuleChooser;
-import org.apache.james.eventsourcing.eventstore.EventNestedTypes;
-import org.apache.james.jmap.JMAPListenerModule;
-import org.apache.james.jmap.JMAPModule;
-import org.apache.james.json.DTOModule;
-import org.apache.james.modules.BlobExportMechanismModule;
-import org.apache.james.modules.CassandraConsistencyTaskSerializationModule;
-import org.apache.james.modules.MailboxModule;
-import org.apache.james.modules.MailetProcessingModule;
-import org.apache.james.modules.data.CassandraDLPConfigurationStoreModule;
-import org.apache.james.modules.data.CassandraDelegationStoreModule;
-import org.apache.james.modules.data.CassandraDomainListModule;
-import org.apache.james.modules.data.CassandraJmapModule;
-import org.apache.james.modules.data.CassandraRecipientRewriteTableModule;
-import org.apache.james.modules.data.CassandraSieveQuotaLegacyModule;
-import org.apache.james.modules.data.CassandraSieveQuotaModule;
-import org.apache.james.modules.data.CassandraSieveRepositoryModule;
-import org.apache.james.modules.data.CassandraUsersRepositoryModule;
-import org.apache.james.modules.data.CassandraVacationModule;
-import org.apache.james.modules.eventstore.CassandraEventStoreModule;
-import org.apache.james.modules.mailbox.CassandraBlobStoreDependenciesModule;
-import org.apache.james.modules.mailbox.CassandraDeletedMessageVaultModule;
-import org.apache.james.modules.mailbox.CassandraMailboxModule;
-import org.apache.james.modules.mailbox.CassandraMailboxQuotaLegacyModule;
-import org.apache.james.modules.mailbox.CassandraMailboxQuotaModule;
-import org.apache.james.modules.mailbox.CassandraQuotaMailingModule;
-import org.apache.james.modules.mailbox.CassandraSessionModule;
-import org.apache.james.modules.mailbox.DefaultBucketModule;
-import org.apache.james.modules.mailbox.TikaMailboxModule;
-import org.apache.james.modules.mailrepository.CassandraMailRepositoryModule;
-import org.apache.james.modules.metrics.CassandraMetricsModule;
-import org.apache.james.modules.protocols.IMAPServerModule;
-import org.apache.james.modules.protocols.JMAPServerModule;
-import org.apache.james.modules.protocols.JmapEventBusModule;
-import org.apache.james.modules.protocols.LMTPServerModule;
-import org.apache.james.modules.protocols.ManageSieveServerModule;
-import org.apache.james.modules.protocols.POP3ServerModule;
-import org.apache.james.modules.protocols.ProtocolHandlerModule;
-import org.apache.james.modules.protocols.SMTPServerModule;
-import org.apache.james.modules.queue.activemq.ActiveMQQueueModule;
-import org.apache.james.modules.server.DKIMMailetModule;
-import org.apache.james.modules.server.DLPRoutesModule;
-import org.apache.james.modules.server.DataRoutesModules;
-import org.apache.james.modules.server.InconsistencyQuotasSolvingRoutesModule;
-import org.apache.james.modules.server.JMXServerModule;
-import org.apache.james.modules.server.JmapTasksModule;
-import org.apache.james.modules.server.JmapUploadCleanupModule;
-import org.apache.james.modules.server.MailQueueRoutesModule;
-import org.apache.james.modules.server.MailRepositoriesRoutesModule;
-import org.apache.james.modules.server.MailboxRoutesModule;
-import org.apache.james.modules.server.MailboxesExportRoutesModule;
-import org.apache.james.modules.server.MessagesRoutesModule;
-import org.apache.james.modules.server.SieveRoutesModule;
-import org.apache.james.modules.server.TaskManagerModule;
-import org.apache.james.modules.server.UserIdentityModule;
-import org.apache.james.modules.server.VacationRoutesModule;
-import org.apache.james.modules.server.WebAdminMailOverWebModule;
-import 
org.apache.james.modules.server.WebAdminReIndexingTaskSerializationModule;
-import org.apache.james.modules.server.WebAdminServerModule;
-import org.apache.james.modules.vault.DeletedMessageVaultRoutesModule;
-import org.apache.james.modules.webadmin.CassandraRoutesModule;
-import org.apache.james.modules.webadmin.InconsistencySolvingRoutesModule;
-import org.apache.james.vault.VaultConfiguration;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-import com.google.inject.TypeLiteral;
-import com.google.inject.name.Names;
-import com.google.inject.util.Modules;
-
-/**
- * See https://issues.apache.org/jira/browse/JAMES-3767
- *
- * Cassandra APP will be removed after 3.8.0 release.
- *
- * Please migrate to the distributed APP.
- */
-@Deprecated(forRemoval = true)
-public class CassandraJamesServerMain implements JamesServerMain {
-
-    public static final Module WEBADMIN = Modules.combine(
-        new CassandraRoutesModule(),
-        new DataRoutesModules(),
-        new VacationRoutesModule(),
-        new DLPRoutesModule(),
-        new InconsistencyQuotasSolvingRoutesModule(),
-        new InconsistencySolvingRoutesModule(),
-        new JmapUploadCleanupModule(),
-        new UserIdentityModule(),
-        new JmapTasksModule(),
-        new MailboxesExportRoutesModule(),
-        new MailboxRoutesModule(),
-        new MailQueueRoutesModule(),
-        new MailRepositoriesRoutesModule(),
-        new SieveRoutesModule(),
-        new WebAdminServerModule(),
-        new WebAdminReIndexingTaskSerializationModule(),
-        new MessagesRoutesModule(),
-        new WebAdminMailOverWebModule());
-
-    public static final Module PROTOCOLS = Modules.combine(
-        new CassandraJmapModule(),
-        new CassandraVacationModule(),
-        new IMAPServerModule(),
-        new LMTPServerModule(),
-        new ManageSieveServerModule(),
-        new POP3ServerModule(),
-        new ProtocolHandlerModule(),
-        new SMTPServerModule(),
-        new JMAPServerModule(),
-        JMAPModule.INSTANCE,
-        new JmapEventBusModule(),
-        WEBADMIN);
-
-    public static final Module PLUGINS = new CassandraQuotaMailingModule();
-
-    private static final Module BLOB_MODULE = new BlobExportMechanismModule();
-
-    private static final Module 
CASSANDRA_EVENT_STORE_JSON_SERIALIZATION_DEFAULT_MODULE = binder ->
-        binder.bind(new TypeLiteral<Set<DTOModule<?, ? extends 
org.apache.james.json.DTO>>>() 
{}).annotatedWith(Names.named(EventNestedTypes.EVENT_NESTED_TYPES_INJECTION_NAME))
-            .toInstance(ImmutableSet.of());
-
-    public static final Module CASSANDRA_SERVER_CORE_MODULE = Modules.combine(
-        new ActiveMQQueueModule(),
-        new CassandraDelegationStoreModule(),
-        new CassandraBlobStoreDependenciesModule(),
-        new CassandraDomainListModule(),
-        new CassandraDLPConfigurationStoreModule(),
-        new CassandraEventStoreModule(),
-        new CassandraMailRepositoryModule(),
-        new CassandraMetricsModule(),
-        new CassandraRecipientRewriteTableModule(),
-        new CassandraSessionModule(),
-        new CassandraSieveRepositoryModule(),
-        BLOB_MODULE,
-        CASSANDRA_EVENT_STORE_JSON_SERIALIZATION_DEFAULT_MODULE);
-
-    public static final Module CASSANDRA_MAILBOX_MODULE = Modules.combine(
-        new CassandraConsistencyTaskSerializationModule(),
-        new CassandraMailboxModule(),
-        new MailboxModule(),
-        new TikaMailboxModule());
-
-    public static final Module REQUIRE_TASK_MANAGER_MODULE = Modules.combine(
-        CASSANDRA_SERVER_CORE_MODULE,
-        CASSANDRA_MAILBOX_MODULE,
-        PROTOCOLS,
-        PLUGINS,
-        new DKIMMailetModule());
-
-    protected static final Module ALL_BUT_JMX_CASSANDRA_MODULE = 
Modules.combine(
-        new MailetProcessingModule(),
-        new DefaultBucketModule(),
-        new CassandraBlobStoreModule(),
-        REQUIRE_TASK_MANAGER_MODULE,
-        new TaskManagerModule(),
-        CASSANDRA_EVENT_STORE_JSON_SERIALIZATION_DEFAULT_MODULE
-    );
-
-    public static void main(String[] args) throws Exception {
-        ExtraProperties.initialize();
-
-        CassandraJamesServerConfiguration configuration = 
CassandraJamesServerConfiguration.builder()
-            .useWorkingDirectoryEnvProperty()
-            .build();
-
-        LOGGER.info("Loading configuration {}", configuration.toString());
-        GuiceJamesServer server = createServer(configuration)
-            .combineWith(new JMXServerModule());
-
-        JamesServerMain.main(server);
-    }
-
-    public static GuiceJamesServer 
createServer(CassandraJamesServerConfiguration configuration) {
-        return GuiceJamesServer.forConfiguration(configuration)
-            .combineWith(ALL_BUT_JMX_CASSANDRA_MODULE)
-            
.combineWith(BlobStoreModulesChooser.chooseModules(configuration.getBlobStoreConfiguration()))
-            
.combineWith(SearchModuleChooser.chooseModules(configuration.searchConfiguration()))
-            .combineWith(new UsersRepositoryModuleChooser(new 
CassandraUsersRepositoryModule())
-                
.chooseModules(configuration.getUsersRepositoryImplementation()))
-            
.combineWith(chooseDeletedMessageVault(configuration.getVaultConfiguration()))
-            .combineWith(chooseQuotaModule(configuration))
-            .combineWith(chooseJmapModule(configuration));
-    }
-
-    private static Module chooseDeletedMessageVault(VaultConfiguration 
vaultConfiguration) {
-        if (vaultConfiguration.isEnabled()) {
-            return Modules.combine(
-                new CassandraDeletedMessageVaultModule(),
-                new DeletedMessageVaultRoutesModule());
-        }
-        return binder -> {
-
-        };
-    }
-
-    private static Module chooseJmapModule(CassandraJamesServerConfiguration 
configuration) {
-        if (configuration.isJmapEnabled()) {
-            return new JMAPListenerModule();
-        }
-        return binder -> {
-
-        };
-    }
-
-    private static Module chooseQuotaModule(CassandraJamesServerConfiguration 
configuration) {
-        if (configuration.isQuotaCompatibilityMode()) {
-            return Modules.combine(new CassandraMailboxQuotaLegacyModule(), 
new CassandraSieveQuotaLegacyModule());
-        } else {
-            return Modules.combine(new CassandraMailboxQuotaModule(), new 
CassandraSieveQuotaModule());
-        }
-    }
-}
diff --git 
a/server/apps/cassandra-app/src/test/java/org/apache/james/TestingDistributedJamesServerBuilder.java
 
b/server/apps/cassandra-app/src/test/java/org/apache/james/TestingDistributedJamesServerBuilder.java
deleted file mode 100644
index 211ef78e23..0000000000
--- 
a/server/apps/cassandra-app/src/test/java/org/apache/james/TestingDistributedJamesServerBuilder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/****************************************************************
- * 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;
-
-public class TestingDistributedJamesServerBuilder {
-    @FunctionalInterface
-    interface ConfigurationSpecification {
-        CassandraJamesServerConfiguration.Builder 
customize(CassandraJamesServerConfiguration.Builder configuration);
-    }
-
-    public static JamesServerBuilder<CassandraJamesServerConfiguration> 
forConfiguration(ConfigurationSpecification configurationSpecification) {
-        return new JamesServerBuilder<>(tmpDir ->
-            
configurationSpecification.customize(CassandraJamesServerConfiguration.builder()
-                .workingDirectory(tmpDir)
-                .configurationFromClasspath())
-                .build());
-    }
-
-    public static JamesServerBuilder<CassandraJamesServerConfiguration> 
withSearchConfiguration(SearchConfiguration searchConfiguration) {
-        return forConfiguration(configuration -> 
configuration.searchConfiguration(searchConfiguration));
-    }
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to