Я пытаюсь создать прокси между моим 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.Может кто-нибудь сказать мне, почему это?