Hey,

I tried to use a MockWebRespone:

       // final StringResponse newResponse = new StringResponse();
        final MockWebResponse mockWebResponse = new MockWebResponse();
        requestCycle.setResponse(mockWebResponse);
        pageRenderer.respond(requestCycle);
        requestCycle.setResponse(oldResponse);

        return mockWebResponse.getTextResponse().toString();

But the getTextRespone() is null, because there is a redirect to the
correct mapped url:

"print/<external-id>"

Can I follow this redirect?



2011/9/29 Stefan Neumann <[email protected]>:
> Hey Martin,
>
> I get now a CastException in:
>
> Root cause:
>
> java.lang.ClassCastException:
> org.apache.wicket.response.StringResponse cannot be cast to
> org.apache.wicket.request.http.WebResponse
>     at 
> org.apache.wicket.request.handler.render.WebPageRenderer.redirectTo(WebPageRenderer.java:134)
>     at 
> org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:214)
>     at 
> com.freiheit.tango.presentation.application.WicketUtils.renderPageNew(WicketUtils.java:54)
>
> the corresponing line is:
>
>        final WebApplication application = WebApplication.get();
>
>        final RenderPageRequestHandler handler = new
> RenderPageRequestHandler(new PageProvider(pageClass, pageParameters));
>        final PageRenderer pageRenderer =
> application.getPageRendererProvider().get(handler);
>
>        final Response oldResponse = requestCycle.getResponse();
>        final StringResponse newResponse = new StringResponse();
>        requestCycle.setResponse(newResponse);
>
>  -->       pageRenderer.respond(requestCycle); <---
>        requestCycle.setResponse(oldResponse);
>
>        return newResponse.toString();
>
> But seems to get closer ;-)
>
> I can add the ticket when my case is running.
>
> Greetings
> Stefan
>
> 2011/9/29 Martin Grigorov <[email protected]>:
>> I guess I need to add an example of this in wicket-examples ...
>> Please create a ticket to not forget it.
>>
>> Here is how it should work:
>>
>> IRequestHandler handler = new RenderPageRequestHandler(Page.class, 
>> parameters);
>> PageReneder renderer = application.getgetPageRendererProvider().get(handler);
>>
>> oldResponse = requestCycle.getResponse();
>> StringResponse newResponse = new StringResponse();
>> requestCycle.setResponse(newResponse);
>>
>> renderer.respond(requestCycle);
>> requestCycle.setResponse(oldResponse);
>>
>> pageAsText = newResponse.toString();
>>
>> On Thu, Sep 29, 2011 at 12:09 PM, Stefan Neumann
>> <[email protected]> wrote:
>>> Hey Martin,
>>>
>>> thanks for the quick response.  It sounds quite good, but it is not working 
>>> yet.
>>>
>>> Since we use guice, I tried to use the WebApplication we have
>>> configured already:
>>>
>>>        final WicketTester wicketTester = new
>>> WicketTester(WebApplication.get());
>>>        wicketTester.startPage(pageClass,pageParameters);
>>>        return wicketTester.getLastResponseAsString();
>>>
>>> But I get following exception[1].
>>>
>>> Some more basic conditions.
>>> * A request is currently running.
>>> * I need to get session information into the rendering, since the data
>>> loading for the page contains authorization checks on the currently
>>> logged in user.
>>>
>>> Any suggestions?
>>>
>>> Stefan
>>>
>>>
>>>
>>>
>>> Caused by: java.lang.reflect.InvocationTargetException
>>>        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
>>> Method)
>>>        at 
>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>>        at 
>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>>        at 
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:177)
>>>        ... 37 more
>>> Caused by: java.lang.IllegalStateException: Application name can only
>>> be set once.
>>>        at org.apache.wicket.Application.setName(Application.java:846)
>>>        at 
>>> org.apache.wicket.util.tester.BaseWicketTester.<init>(BaseWicketTester.java:291)
>>>        at 
>>> org.apache.wicket.util.tester.BaseWicketTester.<init>(BaseWicketTester.java:241)
>>>        at 
>>> org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:192)
>>>        at 
>>> com.freiheit.tango.presentation.application.WicketUtils.renderPageWithWicketTester(WicketUtils.java:43)
>>>        at 
>>> com.freiheit.tango.presentation.dashboard.DashboardPage.<init>(DashboardPage.java:124)
>>>        at 
>>> com.freiheit.tango.presentation.dashboard.DashboardPage.<init>(DashboardPage.java:108)
>>>        at 
>>> com.freiheit.tango.presentation.dashboard.DashboardPage.<init>(DashboardPage.java:104)
>>>        ... 42 more
>>>
>>>
>>> 2011/9/29 Martin Grigorov <[email protected]>:
>>>> use WicketTester.startPage() and tester.getLastResponseAsString()
>>>>
>>>> On Thu, Sep 29, 2011 at 11:06 AM, Stefan Neumann
>>>> <[email protected]> wrote:
>>>>> Hey guys,
>>>>>
>>>>>  I need to render a page to a String or file. I have already read the
>>>>> typical reference [1] [2] for this topic.
>>>>>
>>>>> The difference is, that I am using wicket 1.5 and there must be some
>>>>> API changes so I could not use the given examples.
>>>>>
>>>>> Has someone an example? I tried my best to make the exampel compile
>>>>> but i alwas get a NPE at
>>>>> bufferedWebResponse.getText().toString()
>>>>>
>>>>> Appreciate your help in advance,
>>>>>
>>>>> Stefan
>>>>>
>>>>>
>>>>> [1]
>>>>> http://www.danwalmsley.com/2008/10/21/render-a-wicket-page-to-a-string-for-html-email/
>>>>> [2]
>>>>> https://gist.github.com/1152059
>>>>> [3]
>>>>>  public static String renderPage(final Class<? extends Page>
>>>>> pageClass, final PageParameters pageParameters)
>>>>>        {
>>>>>            final WebApplication application = WebApplication.get();
>>>>>            final ServletContext context =
>>>>> application.getServletContext();  //fake a request/response cycle
>>>>>            final MockHttpSession servletSession = new 
>>>>> MockHttpSession(context);
>>>>>            servletSession.setTemporary(true);
>>>>>            final MockHttpServletRequest servletRequest = new
>>>>> MockHttpServletRequest(application, servletSession, context);
>>>>>            final MockHttpServletResponse servletResponse = new
>>>>> MockHttpServletResponse(servletRequest);  //initialize request and
>>>>> response
>>>>>            servletRequest.initialize();
>>>>>            servletResponse.initialize();
>>>>>
>>>>>            final ServletWebRequest webRequest = new
>>>>> ServletWebRequest(servletRequest,"/");
>>>>>            final WebResponse webResponse = new
>>>>> ServletWebResponse(webRequest,servletResponse);
>>>>>            final BufferedWebResponse bufferedWebResponse = new
>>>>> BufferedWebResponse(webResponse);
>>>>>            //webResponse.setAjax(true);
>>>>>            final RequestCycle requestCycle = new RequestCycle(
>>>>>                new RequestCycleContext(webRequest, webResponse,
>>>>> application.getRootRequestMapper(,
>>>>> application.getExceptionMapperProvider().get()));
>>>>>
>>>>>            //requestCycle.setRequestTarget(new
>>>>> BookmarkablePageRequestTarget(pageClass, pageParameters));
>>>>>            requestCycle.setResponsePage(pageClass, pageParameters);
>>>>>
>>>>>            try
>>>>>            {
>>>>>                final boolean handled = 
>>>>> requestCycle.processRequestAndDetach();
>>>>>
>>>>>
>>>>>                LOGGER.info("Response after request: " +
>>>>> bufferedWebResponse.getText().toString());
>>>>>
>>>>>                if (! handled)
>>>>>                {
>>>>>                    LOGGER.error(">>>>>>>>>>>>>>>>>>>>>>> NOT HANDLED");
>>>>>                    //requestCycle.set(new
>>>>> ErrorCodeRequestHandler(HttpServletResponse.SC_NOT_FOUND));
>>>>>                }
>>>>>
>>>>>                //requestCycle.detach();
>>>>>            }
>>>>>            finally
>>>>>            {
>>>>>                requestCycle.getResponse().close();
>>>>>            }
>>>>>
>>>>>            return bufferedWebResponse.getText().toString();
>>>>>        }
>>>>>
>>>>> --
>>>>> Stefan Neumann
>>>>> Dipl.-Ing.
>>>>> freiheit.com technologies gmbh
>>>>> Straßenbahnring 22 / 20251 Hamburg, Germany
>>>>> fon +49 (0)40 / 890584-0
>>>>> fax +49 (0)40 / 890584-20
>>>>> HRB Hamburg 70814
>>>>> 1CB2 BA3C 168F 0C2B 6005 FC5E 3EBA BCE2 1BF0 21D3
>>>>> Geschäftsführer: Claudia Dietze, Stefan Richter, Jörg Kirchhof
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [email protected]
>>>>> For additional commands, e-mail: [email protected]
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Martin Grigorov
>>>> jWeekend
>>>> Training, Consulting, Development
>>>> http://jWeekend.com
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Stefan Neumann
>>> Dipl.-Ing.
>>> freiheit.com technologies gmbh
>>> Straßenbahnring 22 / 20251 Hamburg, Germany
>>> fon +49 (0)40 / 890584-0
>>> fax +49 (0)40 / 890584-20
>>> HRB Hamburg 70814
>>> 1CB2 BA3C 168F 0C2B 6005 FC5E 3EBA BCE2 1BF0 21D3
>>> Geschäftsführer: Claudia Dietze, Stefan Richter, Jörg Kirchhof
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>
>>
>>
>> --
>> Martin Grigorov
>> jWeekend
>> Training, Consulting, Development
>> http://jWeekend.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
>
>
> --
> Stefan Neumann
> Dipl.-Ing.
> freiheit.com technologies gmbh
> Straßenbahnring 22 / 20251 Hamburg, Germany
> fon +49 (0)40 / 890584-0
> fax +49 (0)40 / 890584-20
> HRB Hamburg 70814
> 1CB2 BA3C 168F 0C2B 6005 FC5E 3EBA BCE2 1BF0 21D3
> Geschäftsführer: Claudia Dietze, Stefan Richter, Jörg Kirchhof
>



-- 
Stefan Neumann
Dipl.-Ing.
freiheit.com technologies gmbh
Straßenbahnring 22 / 20251 Hamburg, Germany
fon +49 (0)40 / 890584-0
fax +49 (0)40 / 890584-20
HRB Hamburg 70814
1CB2 BA3C 168F 0C2B 6005 FC5E 3EBA BCE2 1BF0 21D3
Geschäftsführer: Claudia Dietze, Stefan Richter, Jörg Kirchhof

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to