Не может вызвать "string.length ()", потому что «имя» является нулевымJAVA

Программисты JAVA общаются здесь
Anonymous
Не может вызвать "string.length ()", потому что «имя» является нулевым

Сообщение Anonymous »

У меня есть эта реализация для кеш -ведьмы для передачи значений заголовков между микросервисами: < /p>

Код: Выделить всё

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

Вернуться в «JAVA»