1 Reply Latest reply on Apr 21, 2008 5:01 AM by matt.drees

    Change MockHttpServletRequest to give an optional request URI

    benoith

      Hi seam team,


      I first want to say thanks for all the work you've done until now.  It's really good to work with a framework like this one, and specially with all the functions that are available.


      I'm currently developing a web app and while I'm doing the integration tests, I need to give special URLs to my application to be able to test a specific business logic (the site has different behaviors upon the incoming URL)


      For this I'm using a NonFacesRequest() test giving a site url into the constructor but then when I'm resolving the siteUrl (from the seam component) I always get the same URL:


      http://localhost:8080/myproject/page.seam



      Here is the code of my seam component:



           @Factory("siteUrl")
           public void resolveURL() {
                HttpServletRequest request = (HttpServletRequest)
                          FacesContext.getCurrentInstance().getExternalContext().getRequest();
                try {
                     siteUrl = new URL(request.getRequestURL().toString());
                } catch (MalformedURLException e) {
                     FacesMessages.instance().add("Malformed URL for site");
                     log.error("Malformed URL for site.");
                }
           }
      



      After searching a bit in the seam code, I've seen that the MockHttpServletRequest has the getRequestURI() method hardcoded.



         public String getRequestURI()
         {
            return "http://localhost:8080/myproject/page.seam";
         }
      




      So, I'm wondering if it's better if I use my own Mock class, or it you can improve the default one to allow us putting different URLs?



      Cheers,


      /Benoit