You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2008/01/09 17:32:56 UTC
svn commit: r610441 -
/incubator/sling/trunk/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java
Author: cziegeler
Date: Wed Jan 9 08:32:52 2008
New Revision: 610441
URL: http://svn.apache.org/viewvc?rev=610441&view=rev
Log:
Use simplified servlet registration taken from Felix sandbox.
Modified:
incubator/sling/trunk/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java
Modified: incubator/sling/trunk/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java?rev=610441&r1=610440&r2=610441&view=diff
==============================================================================
--- incubator/sling/trunk/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java (original)
+++ incubator/sling/trunk/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java Wed Jan 9 08:32:52 2008
@@ -107,6 +107,9 @@
// ---------- ServletResolver interface -----------------------------------
+ /**
+ * @see org.apache.sling.api.servlets.ServletResolver#resolveServlet(org.apache.sling.api.SlingHttpServletRequest)
+ */
public Servlet resolveServlet(SlingHttpServletRequest request) {
// resolve a servlet or script based on the request
@@ -140,6 +143,9 @@
// ---------- ErrorHandler interface --------------------------------------
+ /**
+ * @see org.apache.sling.core.servlets.ErrorHandler#handleError(int, java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+ */
public void handleError(int status, String message,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
@@ -178,6 +184,9 @@
response.sendError(status, message);
}
+ /**
+ * @see org.apache.sling.core.servlets.ErrorHandler#handleError(java.lang.Throwable, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+ */
public void handleError(Throwable throwable, HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
@@ -343,90 +352,50 @@
}
}
}
- List<ServiceReference> refs = null;
- synchronized (this) {
- if ( this.servletContext != null ) {
- refs = this.pendingServlets;
- this.pendingServlets = new ArrayList<ServiceReference>();
- }
- }
- if ( refs != null ) {
- this.createAllServlets(this.servletContext, refs);
- }
- }
- protected synchronized void bindServlet(ServiceReference reference) {
- if (context == null || servletContext == null) {
- pendingServlets.add(reference);
- } else {
- createServlet(servletContext, reference);
- }
- }
-
- protected synchronized void unbindServlet(ServiceReference reference) {
- if (context == null || servletContext == null) {
- pendingServlets.remove(reference);
- } else {
- destroyServlet(reference);
- }
- }
-
- protected void bindServletContext(ServletContext newServletContext) {
-
- boolean destroy;
Collection<ServiceReference> refs;
-
synchronized (this) {
- if (this.servletContext == null) {
+ refs = pendingServlets;
+ pendingServlets = new ArrayList<ServiceReference>();
- if ( this.context != null ) {
- refs = pendingServlets;
- pendingServlets = new ArrayList<ServiceReference>();
- } else {
- refs = null;
- }
- destroy = false;
+ // register servlets immediately from now on
+ this.context = context;
- } else {
+ }
- refs = new ArrayList<ServiceReference>(servletsByReference.keySet());
- destroy = true;
+ createAllServlets(refs);
+ }
- }
+ protected void deactivate(ComponentContext context) {
- this.servletContext = newServletContext;
+ // destroy all active servlets
+ Collection<ServiceReference> refs;
+ synchronized (this) {
+ refs = new ArrayList<ServiceReference>(servletsByReference.keySet());
+ this.context = null;
}
- if (destroy) {
- destroyAllServlets(refs);
- }
+ // destroy all servlets
+ destroyAllServlets(refs);
+ }
- if ( refs != null ) {
- createAllServlets(this.servletContext, refs);
+ protected synchronized void bindServlet(ServiceReference reference) {
+ if (context == null) {
+ pendingServlets.add(reference);
+ } else {
+ createServlet(servletContext, reference);
}
}
- protected void unbindServletContext(ServletContext oldServletContext) {
-
- if (this.servletContext == oldServletContext) {
-
- Collection<ServiceReference> refs;
- synchronized (this) {
- refs = new ArrayList<ServiceReference>(servletsByReference.keySet());
- pendingServlets.addAll(refs);
- this.servletContext = null;
- }
-
- // destroy all servlets
- destroyAllServlets(refs);
- }
+ protected synchronized void unbindServlet(ServiceReference reference) {
+ pendingServlets.remove(reference);
+ destroyServlet(reference);
}
// ---------- Servlet Management -------------------------------------------
- private void createAllServlets(ServletContext servletContext,
- Collection<ServiceReference> pendingServlets) {
+ private void createAllServlets(Collection<ServiceReference> pendingServlets) {
for (ServiceReference serviceReference : pendingServlets) {
createServlet(servletContext, serviceReference);
}