Justin,

Thanks .. it turns out that the issue was the query parameter was named 
"resource" which appears to be a reserved parameter name in Sling. Changing it 
to "redirect" allows me to hook into my custom servlet.

I am running into a strange issue now that my Servlet will only be executed if 
the 
* @scr.property name="sling.servlet.paths" has a value that being with "/libs" 
or "/apps" 

If i put it to anything else, it the request initially is mapped to my custom 
servlet but then gets hijacked by the DefaultGetServlet. IN the recent requests 
Web Console i can see that Sling is able to resolve to my SimpleSlingServlet, 
however the DefaultGetServlet ends up being executed. Any thoughts on why this 
is for anything not under /libs or /apps?


---------
Pretty Pastie of recently requested: 
http://pastie.org/2045907



-----------
Ugly Text Dump

0 (2011-06-09 23:14:41) TIMER_START{Request Processing}
 0 (2011-06-09 23:14:41) COMMENT timer_end format is {<elapsed msec>,<timer 
name>} <optional message>
 0 (2011-06-09 23:14:41) LOG Method=GET, PathInfo=/accounts/logout.html
 0 (2011-06-09 23:14:41) TIMER_START{ResourceResolution}
 0 (2011-06-09 23:14:41) TIMER_END{0,ResourceResolution} 
URI=/accounts/logout.html resolves to Resource=ServletResource, 
servlet=com.test.dm.svc.SimpleSlingServlet, path=/accounts/logout
 0 (2011-06-09 23:14:41) LOG Resource Path Info: SlingRequestPathInfo: 
path='/accounts/logout', selectorString='null', extension='html', suffix='null'
 0 (2011-06-09 23:14:41) TIMER_START{ServletResolution}
 0 (2011-06-09 23:14:41) TIMER_START{resolveServlet(ServletResource, 
servlet=com.test.dm.svc.SimpleSlingServlet, path=/accounts/logout)}
 1 (2011-06-09 23:14:41) TIMER_END{1,resolveServlet(ServletResource, 
servlet=com.test.dm.svc.SimpleSlingServlet, path=/accounts/logout)} Using 
servlet org.apache.sling.servlets.get.DefaultGetServlet
 1 (2011-06-09 23:14:41) TIMER_END{1,ServletResolution} 
URI=/accounts/logout.html handled by 
Servlet=org.apache.sling.servlets.get.DefaultGetServlet
 1 (2011-06-09 23:14:41) LOG Applying Requestfilters
 1 (2011-06-09 23:14:41) LOG Calling filter: 
org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter
 1 (2011-06-09 23:14:41) LOG Calling filter: 
org.apache.sling.portal.container.internal.request.PortalFilter
 1 (2011-06-09 23:14:41) LOG Calling filter: 
org.apache.sling.rewriter.impl.RewriterFilter
 1 (2011-06-09 23:14:41) LOG Calling filter: 
com.day.cq.wcm.core.impl.WCMRequestFilter
 1 (2011-06-09 23:14:41) LOG Calling filter: 
org.apache.sling.i18n.impl.I18NFilter
 1 (2011-06-09 23:14:41) LOG Calling filter: 
com.day.cq.theme.impl.ThemeResolverFilter
 2 (2011-06-09 23:14:41) LOG Calling filter: 
com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet
 2 (2011-06-09 23:14:41) LOG Calling filter: 
org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter
 2 (2011-06-09 23:14:41) LOG Calling filter: 
com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter
 3 (2011-06-09 23:14:41) LOG RedirectFilter did not redirect 
(MobileUtil.isMobileResource() returns false)
 3 (2011-06-09 23:14:41) LOG Applying Componentfilters
 3 (2011-06-09 23:14:41) LOG Calling filter: 
com.day.cq.wcm.core.impl.WCMComponentFilter
28 (2011-06-09 23:14:41) LOG Calling filter: 
com.day.cq.wcm.core.impl.WCMDebugFilter
29 (2011-06-09 23:14:41) 
TIMER_START{org.apache.sling.servlets.get.DefaultGetServlet#0}
29 (2011-06-09 23:14:41) LOG No renderer for extension html
29 (2011-06-09 23:14:41) TIMER_START{handleError:status=404}
31 (2011-06-09 23:14:41) TIMER_END{2,handleError:status=404} Using handler 
/libs/sling/servlet/errorhandler/404.jsp
35 (2011-06-09 23:14:41) TIMER_END{6,handleError:status=404} Error handler 
finished
35 (2011-06-09 23:14:41) 
TIMER_END{6,org.apache.sling.servlets.get.DefaultGetServlet#0}
35 (2011-06-09 23:14:41) TIMER_END{35,Request Processing} Request Processing




-- 
David Gonzalez
Sent with Sparrow (http://www.sparrowmailapp.com)

On Thursday, June 9, 2011 at 10:28 PM, David Gonzalez wrote:

> Justin,
> 
> 
> 
> 
> -- 
> David Gonzalez
> Sent with Sparrow (http://www.sparrowmailapp.com)
> 
> On Thursday, June 9, 2011 at 10:14 PM, Justin Edelson wrote:
> 
> > I'd suggest using the recent requests web console plugin to see how the 
> > request is getting decomposed.
> > 
> > Justin
> > 
> > On Jun 9, 2011, at 7:30 PM, "David G." <[email protected] 
> > (mailto:[email protected])> wrote:
> > 
> > > I have a Sling Servlet that Im creating .. It seems to be working just
> > > fine until i pass a query parameter to it.
> > > 
> > > Ex.
> > > 
> > > http://example.com/libs/logout.html > logs the user out
> > > 
> > > http://example.com/libs/logout.html?resource=/bar/foo.html > does not
> > > even call the servlet
> > > 
> > > 
> > > 
> > > It appears the Sling Servlet is ignoring any requests to its base path
> > > if there are query params involved. Any ideas how to get around this?
> > > Is this expected behavior?
> > > 
> > > Thanks
> > > 
> > > -------------------------
> > > Pretty Pastie of code snippet: http://www.pastie.org/2045227
> > > 
> > > 
> > > --------------------------------
> > > Ugly email snippet:
> > > 
> > > 
> > > /**
> > > *
> > > * @scr.component immediate="true" description="Logout Servlet"
> > > * @scr.service interface="javax.servlet.Servlet"
> > > * @scr.property name="sling.servlet.extensions" values.0 = "html"
> > > * @scr.property name="sling.servlet.methods" values.0 = "GET"
> > > * @scr.property name="sling.servlet.paths" value="/libs/logout"
> > > */
> > > @SuppressWarnings("serial")
> > > public class LogoutSlingServlet extends SlingAllMethodsServlet {
> > > 
> > >  /**
> > >  * @scr.reference
> > >  */
> > >  Authenticator auth;
> > > 
> > >  @Override
> > >  protected void doGet(SlingHttpServletRequest request,
> > >  SlingHttpServletResponse response) throws ServletException,
> > >  IOException {
> > > 
> > >  String redirectUri = request.getParameter("resource");
> > > 
> > >  if(redirectUri == null) {
> > >  redirectUri = "/foo.html";
> > >  }
> > > 
> > >  System.out.println(redirectUri);
> > > 
> > >  if (auth != null) {
> > >  try {
> > >  auth.logout(request, response);
> > >  } catch (Exception ex) {
> > >  response.sendError("Could not log user out");
> > >  }
> > >  }
> > > 
> > >  response.sendRedirect(redirectUri);
> > >  return;
> > > 
> > >  }
> 

Reply via email to