Search code examples
javagwtgxtasynccallback

asynccallback failures


In my app I need to add string vallues to the file(.property file, if it is important). and user enter this values in gwt GUI. Here is it's important part:

final Button submit = new Button("Submit");
        addButton(submit);
        submit.addSelectionListener(new SelectionListener<ButtonEvent>() {
            @Override
            public void componentSelected(ButtonEvent ce) {
                keyWord.selectAll();
                regexp.selectAll();
                if (keyWord.getValue() != null){
                    setKeyWord(customerId, keyWord.getValue());
                    keyWord.setValue("");
                }
                if (regexp.getValue() != null){
                    setRegExp(customerId, regexp.getValue());
                    regexp.setValue("");
                }

            }
        });
    }

    private void setKeyWord(final String customerId, final String keyword){

        final AsyncCallback<String> callbackItems = new AsyncCallback<String>() {
            public void onFailure(final Throwable caught) {
                Window.alert("unable to add " + caught.toString());
            }

            public void onSuccess(final String x) {
                Window.alert(x);
            }
        };
        serverManagementSvc.setKeyWords(customerId, keyword, callbackItems);
    }

    private void setRegExp(final String customerId, final String regexp){

        final AsyncCallback<String> calbackItems = new AsyncCallback<String>() {
            @Override
            public void onFailure(Throwable throwable) {
                Window.alert("unable to add " + throwable.toString());
            }

            @Override
            public void onSuccess(String s) {
                Window.alert(s);
            }
        };
        serverManagementSvc.setRegExp(customerId, regexp, calbackItems);
    }

So I need to use Asunccallback to call methods which are in the "server part". here are these methods:

//adds a new keyword to customers properties
    public String setKeyWords(String customer, String word){
        try{
                PropertiesConfiguration props = new PropertiesConfiguration("/home/mikhail/bzrrep/DLP/DLPServer/src/main/resources/rules.properties");
                String newKeyWord = new String(props.getString("users." + customer + ".keywords" + "," + word));
                props.setProperty("users." + customer + ".keywords", newKeyWord);
                props.save();
        }catch (ConfigurationException e){
            e.printStackTrace();
        }
        return "keyword " + word + " added";
    }

    // adds a new regexp to customer properties
    public String setRegExp(String customer, String regexp){
        try {
                PropertiesConfiguration props = new PropertiesConfiguration("/home/mikhail/bzrrep/DLP/DLPServer/src/main/resources/rules.properties");
                String newRegValue = new String(props.getString("users." + customer + ".regexps" + "," + regexp));
                props.setProperty("users." + customer + ".regexps", newRegValue);
                props.save();
        } catch (ConfigurationException e){
            e.printStackTrace();
        }
        return "regexp " + regexp + " added to " + customer + "'s config";
    }

all interfaces are present. when I run my code And press "submit" button in gui I see that both asynccallback failured(Window.alert, as you can see, shows "null pointer exception" despite of the fact that values which I send to methods are not null). why can it be? can you suggest me something?

UPD here is error which is shown by firebug:

uncaught exception: java.lang.ClassCastException    
function W8(){try{null.a()}catch(a){return a}} 

Solution

  • the problem is solved: there were a simple mistake in the code. I've closed brackets at the wrong place:

    //adds a new keyword to customers properties
        public String setKeyWords(String customer, String word){
            try{
                    PropertiesConfiguration props = new PropertiesConfiguration("/home/mikhail/bzrrep/DLP/DLPServer/src/main/resources/rules.properties");
                    String newKeyWord = new String(props.getString("users." + customer + ".keywords") + "," + word);
                    props.setProperty("users." + customer + ".keywords", newKeyWord);
                    props.save();
            }catch (ConfigurationException e){
                e.printStackTrace();
            }
            return "keyword " + word + " added";
        }
    
        // adds a new regexp to customer properties
        public String setRegExp(String customer, String regexp){
            try {
                    PropertiesConfiguration props = new PropertiesConfiguration("/home/mikhail/bzrrep/DLP/DLPServer/src/main/resources/rules.properties");
                    String newRegValue = new String(props.getString("users." + customer + ".regexps") + "," + regexp);
                    props.setProperty("users." + customer + ".regexps", newRegValue);
                    props.save();
            } catch (ConfigurationException e){
                e.printStackTrace();
            }
            return "regexp " + regexp + " added to " + customer + "'s config";
        }