Proxy NullPointerException for HashMap
I am trying to make a proxy between my WebApp and storage on my disk. I know everything works fine for the WebApp and it even saves stuff to the disk, so I know that the Invoke method on my InvocationHandler gets called, but the proxy itself seems to be Null, so nothing on the WebApp gets updated.
Creation of the proxy:
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);
}
I have checked and in creation of my InvocationHandler called "FileStorageMap", folder and proxiedMap are datafields and they are both not Null, those are both correctly filled in. Yet for the proxy itself, it returns a NullPointerException. Can anyone tell me why this is?
java proxy invocationhandler
add a comment |
I am trying to make a proxy between my WebApp and storage on my disk. I know everything works fine for the WebApp and it even saves stuff to the disk, so I know that the Invoke method on my InvocationHandler gets called, but the proxy itself seems to be Null, so nothing on the WebApp gets updated.
Creation of the proxy:
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);
}
I have checked and in creation of my InvocationHandler called "FileStorageMap", folder and proxiedMap are datafields and they are both not Null, those are both correctly filled in. Yet for the proxy itself, it returns a NullPointerException. Can anyone tell me why this is?
java proxy invocationhandler
Could you add the stacktrace of the exception?
– LuCio
Nov 13 '18 at 13:50
I fixed it, something was wrong with the Invoke method that hadn't really something to do with the proxy itself.
– DrRonne
Nov 13 '18 at 14:25
add a comment |
I am trying to make a proxy between my WebApp and storage on my disk. I know everything works fine for the WebApp and it even saves stuff to the disk, so I know that the Invoke method on my InvocationHandler gets called, but the proxy itself seems to be Null, so nothing on the WebApp gets updated.
Creation of the proxy:
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);
}
I have checked and in creation of my InvocationHandler called "FileStorageMap", folder and proxiedMap are datafields and they are both not Null, those are both correctly filled in. Yet for the proxy itself, it returns a NullPointerException. Can anyone tell me why this is?
java proxy invocationhandler
I am trying to make a proxy between my WebApp and storage on my disk. I know everything works fine for the WebApp and it even saves stuff to the disk, so I know that the Invoke method on my InvocationHandler gets called, but the proxy itself seems to be Null, so nothing on the WebApp gets updated.
Creation of the proxy:
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);
}
I have checked and in creation of my InvocationHandler called "FileStorageMap", folder and proxiedMap are datafields and they are both not Null, those are both correctly filled in. Yet for the proxy itself, it returns a NullPointerException. Can anyone tell me why this is?
java proxy invocationhandler
java proxy invocationhandler
asked Nov 13 '18 at 12:51
DrRonneDrRonne
82
82
Could you add the stacktrace of the exception?
– LuCio
Nov 13 '18 at 13:50
I fixed it, something was wrong with the Invoke method that hadn't really something to do with the proxy itself.
– DrRonne
Nov 13 '18 at 14:25
add a comment |
Could you add the stacktrace of the exception?
– LuCio
Nov 13 '18 at 13:50
I fixed it, something was wrong with the Invoke method that hadn't really something to do with the proxy itself.
– DrRonne
Nov 13 '18 at 14:25
Could you add the stacktrace of the exception?
– LuCio
Nov 13 '18 at 13:50
Could you add the stacktrace of the exception?
– LuCio
Nov 13 '18 at 13:50
I fixed it, something was wrong with the Invoke method that hadn't really something to do with the proxy itself.
– DrRonne
Nov 13 '18 at 14:25
I fixed it, something was wrong with the Invoke method that hadn't really something to do with the proxy itself.
– DrRonne
Nov 13 '18 at 14:25
add a comment |
1 Answer
1
active
oldest
votes
The mistake lied in the fact that the method names were wrong and more stuff was going to the else statement than I had intended. It wasn't really a problem with the proxy itself.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53281425%2fproxy-nullpointerexception-for-hashmap%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The mistake lied in the fact that the method names were wrong and more stuff was going to the else statement than I had intended. It wasn't really a problem with the proxy itself.
add a comment |
The mistake lied in the fact that the method names were wrong and more stuff was going to the else statement than I had intended. It wasn't really a problem with the proxy itself.
add a comment |
The mistake lied in the fact that the method names were wrong and more stuff was going to the else statement than I had intended. It wasn't really a problem with the proxy itself.
The mistake lied in the fact that the method names were wrong and more stuff was going to the else statement than I had intended. It wasn't really a problem with the proxy itself.
answered Nov 13 '18 at 14:27
DrRonneDrRonne
82
82
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53281425%2fproxy-nullpointerexception-for-hashmap%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Could you add the stacktrace of the exception?
– LuCio
Nov 13 '18 at 13:50
I fixed it, something was wrong with the Invoke method that hadn't really something to do with the proxy itself.
– DrRonne
Nov 13 '18 at 14:25