Proxy NullPointerException for HashMap












0















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?










share|improve this question























  • 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
















0















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?










share|improve this question























  • 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














0












0








0


2






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?










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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



















  • 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












1 Answer
1






active

oldest

votes


















0














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.






share|improve this answer























    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    0














    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.






    share|improve this answer




























      0














      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.






      share|improve this answer


























        0












        0








        0







        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.






        share|improve this answer













        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.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 13 '18 at 14:27









        DrRonneDrRonne

        82




        82






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Bressuire

            Vorschmack

            Quarantine