Код: Выделить всё
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public final class CacheFlagContext {
public static final String PROGRAM_ID_HEADER = "PROGRAM-ID";
public static final String STORE_ID_HEADER = "STORE-ID";
public static final String USER_ID_HEADER = "USER-ID";
private static final ThreadLocal context = ThreadLocal.withInitial(HashMap::new);
public static void clear()
{
context.remove();
}
public static void initContext()
{
Map contextMap = new HashMap();
contextMap.put(PROGRAM_ID_HEADER, null);
contextMap.put(STORE_ID_HEADER, null);
contextMap.put(USER_ID_HEADER, null);
context.set(contextMap);
}
public static void setCacheFlagHeaders(Map internalHeaders)
{
if (internalHeaders == null) {
clear();
} else {
context.set(new HashMap(internalHeaders));
}
}
public static Map getCacheFlagHeaders()
{
return Collections.synchronizedMap(new HashMap(context.get()));
}
}
< /code>
модульный тест: < /p>
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.HashMap;
import java.util.UUID;
import static CacheFlagContext.USER_ID_HEADER;
import static CacheFlagContext.getCacheFlagHeaders;
@ExtendWith(MockitoExtension.class)
public class AccountControllerTest {
@Test
public void validateRequest() throws Exception {
CacheFlagContext.initContext();
HashMap hashMap = new HashMap();
CacheFlagContext.setCacheFlagHeaders(hashMap);
getCacheFlagHeaders()
.put(USER_ID_HEADER, UUID.randomUUID().toString());
createRequestResource();
}
private static AccountResource createRequestResource() {
final AccountResource accountResource = new AccountResource();
accountResource.id = "1234";
accountResource.setAccountName("Name");
accountResource.setRequestId(UUID.fromString(
getCacheFlagHeaders().get(USER_ID_HEADER)));
return accountResource;
}
@AfterEach
public void clear() {
CacheFlagContext.clear();
}
static class AccountResource {
String id;
String accountName;
UUID requestId;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public UUID getRequestId() {
return requestId;
}
public void setRequestId(UUID requestId) {
this.requestId = requestId;
}
}
}
< /code>
Я получаю ошибку: < /p>
Cannot invoke "String.length()" because "name" is null
java.lang.NullPointerException: Cannot invoke "String.length()" because "name" is null
Подробнее здесь: https://stackoverflow.com/questions/794 ... me-is-null