Return-Path: Delivered-To: apmail-incubator-sling-commits-archive@locus.apache.org Received: (qmail 54539 invoked from network); 6 Mar 2008 09:24:57 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 6 Mar 2008 09:24:57 -0000 Received: (qmail 72752 invoked by uid 500); 6 Mar 2008 09:24:54 -0000 Delivered-To: apmail-incubator-sling-commits-archive@incubator.apache.org Received: (qmail 72725 invoked by uid 500); 6 Mar 2008 09:24:53 -0000 Mailing-List: contact sling-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: sling-dev@incubator.apache.org Delivered-To: mailing list sling-commits@incubator.apache.org Received: (qmail 72716 invoked by uid 99); 6 Mar 2008 09:24:53 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Mar 2008 01:24:53 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Mar 2008 09:24:25 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 94EFE1A983A; Thu, 6 Mar 2008 01:24:35 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r634201 - /incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/SlingMainServlet.java Date: Thu, 06 Mar 2008 09:24:35 -0000 To: sling-commits@incubator.apache.org From: bdelacretaz@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080306092435.94EFE1A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: bdelacretaz Date: Thu Mar 6 01:24:34 2008 New Revision: 634201 URL: http://svn.apache.org/viewvc?rev=634201&view=rev Log: SLING-310 - make SlingMainServlet the HttpContext, and detect if used after being deactivated Modified: incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/SlingMainServlet.java Modified: incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/SlingMainServlet.java URL: http://svn.apache.org/viewvc/incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/SlingMainServlet.java?rev=634201&r1=634200&r2=634201&view=diff ============================================================================== --- incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/SlingMainServlet.java (original) +++ incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/SlingMainServlet.java Thu Mar 6 01:24:34 2008 @@ -88,7 +88,7 @@ * @scr.reference name="Filter" interface="javax.servlet.Filter" * cardinality="0..n" policy="dynamic" */ -public class SlingMainServlet extends GenericServlet implements ErrorHandler { +public class SlingMainServlet extends GenericServlet implements ErrorHandler, HttpContext { /** default log */ private static final Logger log = LoggerFactory.getLogger(SlingMainServlet.class); @@ -110,6 +110,8 @@ private ComponentContext osgiComponentContext; private List delayedComponentFilters; + + private boolean activated; /** * The server information to report in the {@link #getServerInfo()} method. @@ -575,32 +577,10 @@ // register the servlet and resources try { - HttpContext httpContext = new HttpContext() { - public String getMimeType(String name) { - return mimeTypeService.getMimeType(name); - } - - public URL getResource(String name) { - return null; - } - - public boolean handleSecurity(HttpServletRequest request, - HttpServletResponse response) { - try { - return slingAuthenticator.authenticate(request, - response); - } catch (MissingRepositoryException mre) { - log.error( - "handleSecurity: Cannot authenticate request", mre); - return false; - } - } - }; - Dictionary servletConfig = toStringConfig(configuration); this.httpService.registerServlet(this.slingRoot, this, - servletConfig, httpContext); + servletConfig, this); log.info("{} ready to serve requests", this.getServerInfo()); @@ -630,6 +610,8 @@ initFilter(componentContext, serviceReference); } } + + activated = true; } protected void deactivate(ComponentContext componentContext) { @@ -648,6 +630,7 @@ this.slingServletContext = null; this.osgiComponentContext = null; + activated = false; log.info(this.getServerInfo() + " shut down"); } @@ -752,4 +735,33 @@ return stringConfig; } + /** {@inheritDoc} */ + public String getMimeType(String name) { + ensureActivated(); + return mimeTypeService.getMimeType(name); + } + + /** {@inheritDoc} */ + public URL getResource(String name) { + return null; + } + + /** {@inheritDoc} */ + public boolean handleSecurity(HttpServletRequest request, HttpServletResponse response) { + ensureActivated(); + try { + return slingAuthenticator.authenticate(request, + response); + } catch (MissingRepositoryException mre) { + log.error( + "handleSecurity: Cannot authenticate request", mre); + return false; + } + } + + protected void ensureActivated() { + if(!activated) { + throw new IllegalStateException("SlingMainServlet is inactive"); + } + } }