Прокси-объект NullPointerException для HashMap - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать прокси между моим WebApp и хранилищем на моем диске.Я знаю, что все отлично работает для WebApp и даже сохраняет данные на диск, поэтому я знаю, что вызывается метод Invoke на моем InvocationHandler, но сам прокси-сервер выглядит как Null, поэтому ничего в WebApp не обновляется.

Создание прокси:

public class Storage {

public static final Storage INSTANCE = new Storage();

private Storage() {

}

//private final Map<String, Note> tmpStorage = new HashMap<>();

public Map<String, Note> getStorageForUser(Credentials credentials) {
    String location = "./storage/"+credentials.getUsername();
    return (Map<String, Note>) Proxy.newProxyInstance(
            Map.class.getClassLoader(),
            new Class<?>[]{Map.class},
            new FileStorageMap(location, new HashMap<>()));
    //return tmpStorage;
}

}

InvocationHandler:

    @Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    if (method.getName() == "post" || method.getName() == "put"){
        FileUtils.writeStringToFile(new File(folder.getPath()+"/"+args[0]), (new NoteToJson((Note)args[1])).getJson().toString(), "UTF-8");
    }
    else{
        new File(folder.getPath()+"/"+args[0]).delete();
    }
    return method.invoke(proxiedMap, args);
}

Я проверил и в создании моего InvocationHandler под названием "FileStorageMap", папкаи proxiedMap являются полями данных, и они оба не равны Null, они оба правильно заполнены. Однако для самого прокси-сервера он возвращает исключение NullPointerException.Может кто-нибудь сказать мне, почему это?

1 Ответ

0 голосов
/ 13 ноября 2018

Ошибка заключалась в том, что имена методов были неправильными, и в оператор else было добавлено больше материала, чем я предполагал.Это не было проблемой с самим прокси.

...