Search code examples
javawicketwicket-1.5

Migration to wicket 1.5 - resource (path) issue


I got the task to migrate to wicket 1.4 to wicket 1.5. Despite lack of information in migration guide I was somehow able to refactor most issues. Unfortunetly I'm stuck with "resource" - atm I'm getting this error

java.lang.IllegalArgumentException: Argument 'resource' may not be null.

What I understand by that is that something was change and wicket can no longer "get" to my resources. So I used to have (in wicket 1.4) that piece of code that was responsible for creating image and passing it (the method is in class that extends WebPage) :

    private void addImageLogo() {
            Resource res = new Resource() {
                @Override
                public IResourceStream getResourceStream() {
                    String logo = ConfigurationManager.getInstance().getPathValue(ConfigurationManager.LOGO_FILE_PATH);
                    return new FileResourceStream(new File(logo));

        };

        Image logo = new Image("logo", res);
        add(logo);
    }

Now Resource class no longer exists or I can't find it. While searching internet I was able to change it into this

private void addImageLogo() {
    String logoTxt = ConfigurationManager.getInstance().getPathValue(ConfigurationManager.LOGO_FILE_PATH);
    ResourceReference res = new ResourceReference(logoTxt) {
        @Override
        public IResource getResource() {
            return null;
        }
    };

    Image logo = new Image("logo", res);
    add(logo);
}

This is responsible for obtaining path (and its working): ConfigurationManager.getInstance().getPathValue(ConfigurationManager.LOGO_FILE_PATH)

Unfortunetly I'm still getting this error that I mentioned above. The method getResource() generated automaticly and I believe this is an issue because I'm retuning null but I have no idea what (or how) should I return.


Solution

  • Since it worked with a IResourceStream in 1.4.x then you can just use org.apache.wicket.request.resource.ResourceStreamResource as a IResource for the Image.

    Your first code snippet is not complete so I cannot give you exact replacement code.