Proxy NullPointerException для HashMap

Я пытаюсь создать прокси между моим 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 ответ

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

Другие вопросы по тегам