Use Nullable annotation to make clear that Email must be checked for null

This commit is contained in:
Sebastian Sdorra
2020-10-15 11:23:27 +02:00
parent 208fa0dcc8
commit e839ad32ea
4 changed files with 23 additions and 14 deletions

View File

@@ -32,6 +32,7 @@ import sonia.scm.repository.spi.MergeConflictResult;
import sonia.scm.repository.util.AuthorUtil;
import sonia.scm.user.EMail;
import javax.annotation.Nullable;
import java.util.Set;
/**
@@ -76,12 +77,13 @@ import java.util.Set;
*/
public class MergeCommandBuilder {
private final EMail eMail;
private final MergeCommand mergeCommand;
private final MergeCommandRequest request = new MergeCommandRequest();
MergeCommandBuilder(MergeCommand mergeCommand, EMail eMail) {
@Nullable
private final EMail eMail;
MergeCommandBuilder(MergeCommand mergeCommand, @Nullable EMail eMail) {
this.mergeCommand = mergeCommand;
this.eMail = eMail;
}

View File

@@ -38,6 +38,7 @@ import sonia.scm.repository.work.WorkdirProvider;
import sonia.scm.user.EMail;
import sonia.scm.util.IOUtil;
import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -52,7 +53,6 @@ import java.util.function.Consumer;
* default a {@link sonia.scm.AlreadyExistsException} will be thrown)</li>
* <li>modify existing files ({@link #modifyFile(String)}</li>
* <li>delete existing files ({@link #deleteFile(String)}</li>
* <li>move/rename existing files ({@link #moveFile(String, String)}</li>
* </ul>
*
* You can collect multiple changes before they are executed with a call to {@link #execute()}.
@@ -73,14 +73,15 @@ public class ModifyCommandBuilder {
private static final Logger LOG = LoggerFactory.getLogger(ModifyCommandBuilder.class);
private final EMail eMail;
private final ModifyCommand command;
private final File workdir;
@Nullable
private final EMail eMail;
private final ModifyCommandRequest request = new ModifyCommandRequest();
ModifyCommandBuilder(ModifyCommand command, WorkdirProvider workdirProvider, EMail eMail) {
ModifyCommandBuilder(ModifyCommand command, WorkdirProvider workdirProvider, @Nullable EMail eMail) {
this.command = command;
this.workdir = workdirProvider.createNewWorkdir();
this.eMail = eMail;

View File

@@ -36,6 +36,7 @@ import sonia.scm.repository.spi.RepositoryServiceProvider;
import sonia.scm.repository.work.WorkdirProvider;
import sonia.scm.user.EMail;
import javax.annotation.Nullable;
import java.io.Closeable;
import java.io.IOException;
import java.util.Set;
@@ -85,9 +86,11 @@ public final class RepositoryService implements Closeable {
private final PreProcessorUtil preProcessorUtil;
private final RepositoryServiceProvider provider;
private final Repository repository;
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "java:S3740"})
private final Set<ScmProtocolProvider> protocolProviders;
private final WorkdirProvider workdirProvider;
@Nullable
private final EMail eMail;
/**
@@ -100,11 +103,12 @@ public final class RepositoryService implements Closeable {
* @param eMail utility to compute email addresses if missing
*/
RepositoryService(CacheManager cacheManager,
RepositoryServiceProvider provider, Repository repository,
RepositoryServiceProvider provider,
Repository repository,
PreProcessorUtil preProcessorUtil,
@SuppressWarnings("rawtypes") Set<ScmProtocolProvider> protocolProviders,
@SuppressWarnings({"rawtypes", "java:S3740"}) Set<ScmProtocolProvider> protocolProviders,
WorkdirProvider workdirProvider,
EMail eMail) {
@Nullable EMail eMail) {
this.cacheManager = cacheManager;
this.provider = provider;
this.repository = repository;
@@ -452,7 +456,7 @@ public final class RepositoryService implements Closeable {
.map(this::createProviderInstanceForRepository);
}
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "java:S3740"})
private ScmProtocol createProviderInstanceForRepository(ScmProtocolProvider protocolProvider) {
return protocolProvider.get(repository);
}

View File

@@ -30,19 +30,21 @@ import sonia.scm.repository.Person;
import sonia.scm.user.EMail;
import sonia.scm.user.User;
import javax.annotation.Nullable;
public class AuthorUtil {
public static void setAuthorIfNotAvailable(CommandWithAuthor request) {
setAuthorIfNotAvailable(request, null);
}
public static void setAuthorIfNotAvailable(CommandWithAuthor request, EMail eMail) {
public static void setAuthorIfNotAvailable(CommandWithAuthor request, @Nullable EMail eMail) {
if (request.getAuthor() == null) {
request.setAuthor(createAuthorFromSubject(eMail));
}
}
private static Person createAuthorFromSubject(EMail eMail) {
private static Person createAuthorFromSubject(@Nullable EMail eMail) {
Subject subject = SecurityUtils.getSubject();
User user = subject.getPrincipals().oneByType(User.class);
String name = user.getDisplayName();