You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2015/05/18 11:46:25 UTC
svn commit: r1679975 [1/2] - in /felix/trunk/http/base/src:
main/java/org/apache/felix/http/base/internal/dispatch/
main/java/org/apache/felix/http/base/internal/handler/
main/java/org/apache/felix/http/base/internal/handler/holder/
main/java/org/apach...
Author: cziegeler
Date: Mon May 18 09:46:24 2015
New Revision: 1679975
URL: http://svn.apache.org/r1679975
Log:
FELIX-4888 : ServletHandler's are not sorted by longest matching path. Finish error page registry. Start DTO handling (WiP)
Added:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java
- copied, changed from r1679892, felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/HttpServiceFilterHolder.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java
- copied, changed from r1679892, felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/HttpServiceServletHolder.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java
- copied, changed from r1679892, felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/WhiteboardFilterHolder.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistration.java
- copied, changed from r1679892, felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletHandler.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandlerTest.java
- copied, changed from r1679892, felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/handler/SimpleServletHandlerTest.java
Removed:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/AbstractHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerMapping.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRankingMultimap.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ResourceServletHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandlerRegistry.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/SimpleServletHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletHandler.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/handler/AbstractHandlerTest.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/handler/HandlerRankingMultimapTest.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/handler/SimpleServletHandlerTest.java
Modified:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/InvocationChain.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/FilterRegistry.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerMapping.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletResolution.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/RequestInfoDTOBuilder.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/handler/FilterHandlerTest.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ServletRegistryTest.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/runtime/WhiteboardServiceHelper.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/runtime/dto/RuntimeDTOBuilderTest.java
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java Mon May 18 09:46:24 2015
@@ -51,10 +51,10 @@ import javax.servlet.http.HttpServletRes
import javax.servlet.http.HttpSession;
import org.apache.felix.http.base.internal.context.ExtServletContext;
+import org.apache.felix.http.base.internal.handler.FilterHandler;
import org.apache.felix.http.base.internal.handler.HandlerRegistry;
import org.apache.felix.http.base.internal.handler.HttpSessionWrapper;
-import org.apache.felix.http.base.internal.handler.holder.FilterHolder;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
import org.apache.felix.http.base.internal.registry.PathResolution;
import org.apache.felix.http.base.internal.registry.ServletResolution;
import org.apache.felix.http.base.internal.util.UriUtils;
@@ -138,14 +138,14 @@ public final class Dispatcher implements
private final String servletName;
public ServletResponseWrapper(final HttpServletRequest req, final HttpServletResponse res,
- final ServletHolder servletHolder)
+ final ServletHandler servletHandler)
{
super(res);
this.request = req;
- if ( servletHolder != null )
+ if ( servletHandler != null )
{
- this.serviceId = servletHolder.getContextServiceId();
- this.servletName = servletHolder.getName();
+ this.serviceId = servletHandler.getContextServiceId();
+ this.servletName = servletHandler.getName();
}
else
{
@@ -201,10 +201,10 @@ public final class Dispatcher implements
final RequestInfo requestInfo = new RequestInfo(servletPath, pathInfo, queryString);
- final FilterHolder[] filterHolders = handlerRegistry.getFilters(errorResolution, DispatcherType.ERROR, request.getRequestURI());
+ final FilterHandler[] filterHandlers = handlerRegistry.getFilters(errorResolution, DispatcherType.ERROR, request.getRequestURI());
// TODO - is async = false correct?
- invokeChain(errorResolution.holder, filterHolders, new ServletRequestWrapper(request, errorResolution.holder.getContext(), requestInfo, this.serviceId, false), this);
+ invokeChain(errorResolution.holder, filterHandlers, new ServletRequestWrapper(request, errorResolution.holder.getContext(), requestInfo, this.serviceId, false), this);
invokeSuper = false;
}
@@ -607,7 +607,7 @@ public final class Dispatcher implements
final HttpServletRequest wrappedRequest = new ServletRequestWrapper(req, servletContext, requestInfo,
pr.holder.getContextServiceId(),
pr.holder.getServletInfo().isAsyncSupported());
- final FilterHolder[] filterHolders = this.handlerRegistry.getFilters(pr, req.getDispatcherType(), pr.requestURI);
+ final FilterHandler[] filterHandlers = this.handlerRegistry.getFilters(pr, req.getDispatcherType(), pr.requestURI);
try
{
@@ -615,7 +615,7 @@ public final class Dispatcher implements
{
servletContext.getServletRequestListener().requestInitialized(new ServletRequestEvent(servletContext, wrappedRequest));
}
- invokeChain(pr.holder, filterHolders, wrappedRequest, wrappedResponse);
+ invokeChain(pr.holder, filterHandlers, wrappedRequest, wrappedResponse);
}
catch ( final Exception e)
{
@@ -681,9 +681,9 @@ public final class Dispatcher implements
void forward(final ServletResolution resolution, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String requestURI = getRequestURI(request);
- FilterHolder[] filterHolders = this.handlerRegistry.getFilters(resolution, DispatcherType.FORWARD, requestURI);
+ FilterHandler[] filterHandlers = this.handlerRegistry.getFilters(resolution, DispatcherType.FORWARD, requestURI);
- invokeChain(resolution.holder, filterHolders, request, response);
+ invokeChain(resolution.holder, filterHandlers, request, response);
}
/**
@@ -694,9 +694,9 @@ public final class Dispatcher implements
void include(final ServletResolution resolution, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String requestURI = getRequestURI(request);
- FilterHolder[] filterHolders = this.handlerRegistry.getFilters(resolution, DispatcherType.INCLUDE, requestURI);
+ FilterHandler[] filterHandlers = this.handlerRegistry.getFilters(resolution, DispatcherType.INCLUDE, requestURI);
- invokeChain(resolution.holder, filterHolders, request, response);
+ invokeChain(resolution.holder, filterHandlers, request, response);
}
private String getRequestURI(HttpServletRequest req)
@@ -704,13 +704,13 @@ public final class Dispatcher implements
return UriUtils.relativePath(req.getContextPath(), req.getRequestURI());
}
- private void invokeChain(final ServletHolder servletHolder,
- final FilterHolder[] filterHolders,
+ private void invokeChain(final ServletHandler servletHandler,
+ final FilterHandler[] filterHandlers,
final HttpServletRequest request,
final HttpServletResponse response)
throws IOException, ServletException
{
- final FilterChain filterChain = new InvocationChain(servletHolder, filterHolders);
+ final FilterChain filterChain = new InvocationChain(servletHandler, filterHandlers);
filterChain.doFilter(request, response);
}
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/InvocationChain.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/InvocationChain.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/InvocationChain.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/InvocationChain.java Mon May 18 09:46:24 2015
@@ -29,20 +29,20 @@ import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.felix.http.base.internal.handler.holder.FilterHolder;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
+import org.apache.felix.http.base.internal.handler.FilterHandler;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
public class InvocationChain implements FilterChain
{
- private final ServletHolder servletHolder;
- private final FilterHolder[] filterHolders;
+ private final ServletHandler servletHandler;
+ private final FilterHandler[] filterHandlers;
private int index = -1;
- public InvocationChain(@Nonnull final ServletHolder servletHolder, @Nonnull final FilterHolder[] filterHolders)
+ public InvocationChain(@Nonnull final ServletHandler servletHandler, @Nonnull final FilterHandler[] filterHandlers)
{
- this.filterHolders = filterHolders;
- this.servletHolder = servletHolder;
+ this.filterHandlers = filterHandlers;
+ this.servletHandler = servletHandler;
}
@Override
@@ -54,7 +54,7 @@ public class InvocationChain implements
final HttpServletResponse hRes = (HttpServletResponse) res;
// invoke security
- if ( !servletHolder.getContext().handleSecurity(hReq, hRes))
+ if ( !servletHandler.getContext().handleSecurity(hReq, hRes))
{
// FELIX-3988: If the response is not yet committed and still has the default
// status, we're going to override this and send an error instead.
@@ -69,14 +69,14 @@ public class InvocationChain implements
}
this.index++;
- if (this.index < this.filterHolders.length)
+ if (this.index < this.filterHandlers.length)
{
- this.filterHolders[this.index].handle(req, res, this);
+ this.filterHandlers[this.index].handle(req, res, this);
}
else
{
// Last entry in the chain...
- this.servletHolder.handle(req, res);
+ this.servletHandler.handle(req, res);
}
}
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java Mon May 18 09:46:24 2015
@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
+import javax.annotation.Nonnull;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
@@ -28,23 +29,35 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.felix.http.base.internal.context.ExtServletContext;
+import org.apache.felix.http.base.internal.logger.SystemLogger;
import org.apache.felix.http.base.internal.runtime.FilterInfo;
-import org.apache.felix.http.base.internal.runtime.ServletContextHelperInfo;
import org.apache.felix.http.base.internal.runtime.dto.FilterRuntime;
import org.apache.felix.http.base.internal.util.PatternUtil;
+import org.osgi.service.http.runtime.dto.DTOConstants;
-public final class FilterHandler extends AbstractHandler<FilterHandler> implements FilterRuntime
+/**
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public class FilterHandler implements Comparable<FilterHandler>, FilterRuntime
{
- private final Filter filter;
+ private final long contextServiceId;
+
private final FilterInfo filterInfo;
- private final Pattern[] patterns;
- private final long contextServiceId;
+ private final ExtServletContext context;
+
+ private volatile Filter filter;
- public FilterHandler(final ServletContextHelperInfo contextInfo, ExtServletContext context, Filter filter, FilterInfo filterInfo)
+ protected volatile int useCount;
+
+ private final Pattern[] patterns;
+
+ public FilterHandler(final long contextServiceId,
+ final ExtServletContext context,
+ final FilterInfo filterInfo)
{
- super(context, filterInfo.getInitParameters(), filterInfo.getName());
- this.filter = filter;
+ this.contextServiceId = contextServiceId;
+ this.context = context;
this.filterInfo = filterInfo;
// Compose a single array of all patterns & regexs the filter must represent...
String[] patterns = getFilterPatterns(filterInfo);
@@ -54,31 +67,57 @@ public final class FilterHandler extends
{
this.patterns[i] = Pattern.compile(patterns[i]);
}
- if ( contextInfo != null )
+ }
+
+ private static String[] getFilterPatterns(FilterInfo filterInfo)
+ {
+ List<String> result = new ArrayList<String>();
+ if (filterInfo.getPatterns() != null)
{
- this.contextServiceId = contextInfo.getServiceId();
+ for (int i = 0; i < filterInfo.getPatterns().length; i++)
+ {
+ result.add(PatternUtil.convertToRegEx(filterInfo.getPatterns()[i]));
+ }
}
- else
+ if (filterInfo.getRegexs() != null)
{
- this.contextServiceId = 0;
+ for (int i = 0; i < filterInfo.getRegexs().length; i++)
+ {
+ result.add(filterInfo.getRegexs()[i]);
+ }
}
+ return result.toArray(new String[result.size()]);
+ }
+
+ public Pattern[] getPatterns() {
+ return this.patterns;
}
@Override
- public int compareTo(FilterHandler other)
+ public int compareTo(final FilterHandler other)
{
return this.filterInfo.compareTo(other.filterInfo);
}
@Override
- public void destroy()
+ public long getContextServiceId()
+ {
+ return this.contextServiceId;
+ }
+
+ public ExtServletContext getContext()
{
- this.filter.destroy();
+ return this.context;
}
public Filter getFilter()
{
- return this.filter;
+ return filter;
+ }
+
+ protected void setFilter(final Filter f)
+ {
+ this.filter = f;
}
@Override
@@ -87,62 +126,87 @@ public final class FilterHandler extends
return this.filterInfo;
}
- public int getRanking()
+ public String getName()
{
- return filterInfo.getRanking();
+ String name = this.filterInfo.getName();
+ if (name == null)
+ {
+ name = filter.getClass().getName();
+ }
+ return name;
}
- public void handle(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException
+ /**
+ * Initialize the object
+ * @return {code -1} on success, a failure reason according to {@link DTOConstants} otherwise.
+ */
+ public int init()
{
- this.filter.doFilter(req, res, chain);
- }
+ if ( this.useCount > 0 )
+ {
+ this.useCount++;
+ return -1;
+ }
- @Override
- public void init() throws ServletException
- {
- this.filter.init(new FilterConfigImpl(getName(), getContext(), getInitParams()));
+ if (this.filter == null)
+ {
+ return DTOConstants.FAILURE_REASON_SERVICE_NOT_GETTABLE;
+ }
+
+ try
+ {
+ filter.init(new FilterConfigImpl(getName(), getContext(), getFilterInfo().getInitParameters()));
+ }
+ catch (final ServletException e)
+ {
+ SystemLogger.error(this.getFilterInfo().getServiceReference(),
+ "Error during calling init() on filter " + this.filter,
+ e);
+ return DTOConstants.FAILURE_REASON_EXCEPTION_ON_INIT;
+ }
+ this.useCount++;
+ return -1;
}
- @Override
- protected Object getSubject()
+ public void handle(@Nonnull final ServletRequest req,
+ @Nonnull final ServletResponse res,
+ @Nonnull final FilterChain chain) throws ServletException, IOException
{
- return this.filter;
+ this.filter.doFilter(req, res, chain);
}
- private static String[] getFilterPatterns(FilterInfo filterInfo)
+ public boolean destroy()
{
- List<String> result = new ArrayList<String>();
- if (filterInfo.getPatterns() != null)
+ if (this.filter == null)
{
- for (int i = 0; i < filterInfo.getPatterns().length; i++)
- {
- result.add(PatternUtil.convertToRegEx(filterInfo.getPatterns()[i]));
- }
+ return false;
}
- if (filterInfo.getRegexs() != null)
+
+ this.useCount--;
+ if ( this.useCount == 0 )
{
- for (int i = 0; i < filterInfo.getRegexs().length; i++)
+ try
{
- result.add(filterInfo.getRegexs()[i]);
+ filter.destroy();
+ }
+ catch ( final Exception ignore )
+ {
+ // we ignore this
+ SystemLogger.error(this.getFilterInfo().getServiceReference(),
+ "Error during calling destroy() on filter " + this.filter,
+ ignore);
}
- }
- return result.toArray(new String[result.size()]);
- }
-
- @Override
- public Pattern[] getPatterns() {
- return this.patterns;
- }
- @Override
- public long getContextServiceId()
- {
- return this.contextServiceId;
+ filter = null;
+ return true;
+ }
+ return false;
}
- @Override
- protected long getServiceId()
+ public boolean dispose()
{
- return this.filterInfo.getServiceId();
+ // fully destroy the filter
+ this.useCount = 1;
+ return this.destroy();
}
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java Mon May 18 09:46:24 2015
@@ -24,8 +24,6 @@ import java.util.List;
import javax.annotation.Nonnull;
import javax.servlet.DispatcherType;
-import org.apache.felix.http.base.internal.handler.holder.FilterHolder;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
import org.apache.felix.http.base.internal.registry.PathResolution;
import org.apache.felix.http.base.internal.registry.PerContextHandlerRegistry;
import org.apache.felix.http.base.internal.registry.ServletResolution;
@@ -44,20 +42,17 @@ import org.apache.felix.http.base.intern
*/
public final class HandlerRegistry
{
- private static FilterHolder[] EMPTY_FILTER_HOLDER = new FilterHolder[0];
+ private static FilterHandler[] EMPTY_FILTER_HOLDER = new FilterHandler[0];
/** Current list of context registrations. */
private volatile List<PerContextHandlerRegistry> registrations = Collections.emptyList();
- private final ServletHandlerRegistry servletRegistry = new ServletHandlerRegistry();
-
/**
* Register default context registry for Http Service
*/
public void init()
{
this.add(new PerContextHandlerRegistry());
- servletRegistry.init();
}
/**
@@ -74,7 +69,6 @@ public final class HandlerRegistry
}
- servletRegistry.shutdown();
for(final PerContextHandlerRegistry r : list)
{
r.removeAll();
@@ -90,7 +84,6 @@ public final class HandlerRegistry
synchronized ( this )
{
this.add(new PerContextHandlerRegistry(info));
- this.servletRegistry.add(info);
}
}
@@ -102,7 +95,6 @@ public final class HandlerRegistry
{
synchronized ( this )
{
- this.servletRegistry.remove(info);
final List<PerContextHandlerRegistry> updatedList = new ArrayList<PerContextHandlerRegistry>(this.registrations);
final Iterator<PerContextHandlerRegistry> i = updatedList.iterator();
while ( i.hasNext() )
@@ -134,7 +126,7 @@ public final class HandlerRegistry
}
}
- public void addFilter(@Nonnull final FilterHolder holder)
+ public void addFilter(@Nonnull final FilterHandler holder)
{
final PerContextHandlerRegistry reg = this.getRegistry(holder.getContextServiceId());
// TODO - check whether we need to handle the null case as well
@@ -194,7 +186,7 @@ public final class HandlerRegistry
}
if ( reg != null )
{
- final ServletHolder holder = reg.getErrorHandler(code, exception);
+ final ServletHandler holder = reg.getErrorHandler(code, exception);
if ( holder != null )
{
final ServletResolution res = new ServletResolution();
@@ -207,18 +199,18 @@ public final class HandlerRegistry
return null;
}
- public FilterHolder[] getFilters(@Nonnull final ServletResolution pr,
+ public FilterHandler[] getFilters(@Nonnull final ServletResolution pr,
final DispatcherType dispatcherType,
@Nonnull String requestURI)
{
if ( pr != null && pr.handlerRegistry != null )
{
- return pr.handlerRegistry.getFilterHolders(pr.holder, dispatcherType, requestURI);
+ return pr.handlerRegistry.getFilterHandlers(pr.holder, dispatcherType, requestURI);
}
return EMPTY_FILTER_HOLDER;
}
- public void addServlet(final ServletHolder holder)
+ public void addServlet(final ServletHandler holder)
{
final PerContextHandlerRegistry reg = this.getRegistry(holder.getContextServiceId());
// TODO - check whether we need to handle the null case as well
@@ -274,7 +266,7 @@ public final class HandlerRegistry
final PerContextHandlerRegistry reg = (contextId == null ? null : this.getRegistry(contextId));
if ( reg != null )
{
- final ServletHolder holder = reg.resolveServletByName(name);
+ final ServletHandler holder = reg.resolveServletByName(name);
if ( holder != null )
{
final ServletResolution resolution = new ServletResolution();
Copied: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java (from r1679892, felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/HttpServiceFilterHolder.java)
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java?p2=felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java&p1=felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/HttpServiceFilterHolder.java&r1=1679892&r2=1679975&rev=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/HttpServiceFilterHolder.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceFilterHandler.java Mon May 18 09:46:24 2015
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.http.base.internal.handler.holder;
+package org.apache.felix.http.base.internal.handler;
import javax.servlet.Filter;
@@ -24,9 +24,9 @@ import org.apache.felix.http.base.intern
/**
* Servlet holder for filters registered through the ext http service.
*/
-public final class HttpServiceFilterHolder extends FilterHolder
+public final class HttpServiceFilterHandler extends FilterHandler
{
- public HttpServiceFilterHolder(final long contextServiceId,
+ public HttpServiceFilterHandler(final long contextServiceId,
final ExtServletContext context,
final FilterInfo filterInfo,
final Filter filter)
Copied: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java (from r1679892, felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/HttpServiceServletHolder.java)
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java?p2=felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java&p1=felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/HttpServiceServletHolder.java&r1=1679892&r2=1679975&rev=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/HttpServiceServletHolder.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpServiceServletHandler.java Mon May 18 09:46:24 2015
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.http.base.internal.handler.holder;
+package org.apache.felix.http.base.internal.handler;
import javax.servlet.Servlet;
@@ -22,11 +22,11 @@ import org.apache.felix.http.base.intern
import org.apache.felix.http.base.internal.runtime.ServletInfo;
/**
- * Servlet holder for servlets registered through the http service.
+ * Servlet handler for servlets registered through the http service.
*/
-public final class HttpServiceServletHolder extends ServletHolder
+public final class HttpServiceServletHandler extends ServletHandler
{
- public HttpServiceServletHolder(final long contextServiceId,
+ public HttpServiceServletHandler(final long contextServiceId,
final ExtServletContext context,
final ServletInfo servletInfo,
final Servlet servlet)
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java Mon May 18 09:46:24 2015
@@ -17,47 +17,40 @@
package org.apache.felix.http.base.internal.handler;
import java.io.IOException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.felix.http.base.internal.context.ExtServletContext;
+import org.apache.felix.http.base.internal.logger.SystemLogger;
import org.apache.felix.http.base.internal.runtime.ServletInfo;
import org.apache.felix.http.base.internal.runtime.dto.ServletRuntime;
-import org.apache.felix.http.base.internal.util.PatternUtil;
+import org.osgi.service.http.runtime.dto.DTOConstants;
/**
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-public abstract class ServletHandler extends AbstractHandler<ServletHandler> implements ServletRuntime
+public abstract class ServletHandler implements Comparable<ServletHandler>, ServletRuntime
{
- private final ServletInfo servletInfo;
- private final Pattern[] patterns;
private final long contextServiceId;
- public ServletHandler(final long contextServiceId,
- final ExtServletContext context,
- final ServletInfo servletInfo)
- {
- super(context, servletInfo.getInitParameters(), servletInfo.getName());
+ private final ServletInfo servletInfo;
- this.servletInfo = servletInfo;
+ private final ExtServletContext context;
- // Can be null in case of error-handling servlets...
- String[] patterns = this.servletInfo.getPatterns();
- final int length = patterns == null ? 0 : patterns.length;
+ private volatile Servlet servlet;
- this.patterns = new Pattern[length];
- for (int i = 0; i < length; i++)
- {
- final String pattern = patterns[i];
- this.patterns[i] = Pattern.compile(PatternUtil.convertToRegEx(pattern));
- }
+ protected volatile int useCount;
+ public ServletHandler(final long contextServiceId,
+ final ExtServletContext context,
+ final ServletInfo servletInfo)
+ {
this.contextServiceId = contextServiceId;
+ this.context = context;
+ this.servletInfo = servletInfo;
}
@Override
@@ -66,35 +59,32 @@ public abstract class ServletHandler ext
return this.servletInfo.compareTo(other.servletInfo);
}
- public void handle(ServletRequest req, ServletResponse res) throws ServletException, IOException
+ @Override
+ public long getContextServiceId()
{
- getServlet().service(req, res);
+ return this.contextServiceId;
}
- public String determineServletPath(String uri)
+ public ExtServletContext getContext()
{
- if (uri == null)
- {
- uri = "/";
- }
+ return this.context;
+ }
- // Patterns are sorted on length in descending order, so we should get the longest match first...
- for (int i = 0; i < this.patterns.length; i++)
- {
- Matcher matcher = this.patterns[i].matcher(uri);
- if (matcher.find(0))
- {
- return matcher.groupCount() > 0 ? matcher.group(1) : matcher.group();
- }
- }
+ @Override
+ public Servlet getServlet()
+ {
+ return servlet;
+ }
- return null;
+ protected void setServlet(final Servlet s)
+ {
+ this.servlet = s;
}
- @Override
- public Pattern[] getPatterns()
+ public void handle(final ServletRequest req, final ServletResponse res)
+ throws ServletException, IOException
{
- return this.patterns;
+ this.servlet.service(req, res);
}
@Override
@@ -103,31 +93,81 @@ public abstract class ServletHandler ext
return this.servletInfo;
}
- @Override
- public long getContextServiceId()
+ public String getName()
{
- return this.contextServiceId;
+ String name = this.servletInfo.getName();
+ if (name == null)
+ {
+ name = servlet.getClass().getName();
+ }
+ return name;
}
- @Override
- protected long getServiceId()
+ /**
+ * Initialize the object
+ * @return {code -1} on success, a failure reason according to {@link DTOConstants} otherwise.
+ */
+ public int init()
{
- return this.servletInfo.getServiceId();
- }
+ if ( this.useCount > 0 )
+ {
+ this.useCount++;
+ return -1;
+ }
- @Override
- protected Object getSubject()
- {
- return getServlet();
+ if (this.servlet == null)
+ {
+ return DTOConstants.FAILURE_REASON_SERVICE_NOT_GETTABLE;
+ }
+
+ try
+ {
+ servlet.init(new ServletConfigImpl(getName(), getContext(), getServletInfo().getInitParameters()));
+ }
+ catch (final ServletException e)
+ {
+ SystemLogger.error(this.getServletInfo().getServiceReference(),
+ "Error during calling init() on servlet " + this.servlet,
+ e);
+ return DTOConstants.FAILURE_REASON_EXCEPTION_ON_INIT;
+ }
+ this.useCount++;
+ return -1;
}
- protected static ServletInfo checkIsResource(ServletInfo servletInfo, boolean checkTrue)
+
+ public boolean destroy()
{
- if (checkTrue != servletInfo.isResource())
+ if (this.servlet == null)
{
- String message = "ServletInfo must " + (checkTrue ? "" : "not") + " represent a resource";
- throw new IllegalArgumentException(message);
+ return false;
+ }
+
+ this.useCount--;
+ if ( this.useCount == 0 )
+ {
+ try
+ {
+ servlet.destroy();
+ }
+ catch ( final Exception ignore )
+ {
+ // we ignore this
+ SystemLogger.error(this.getServletInfo().getServiceReference(),
+ "Error during calling destroy() on servlet " + this.servlet,
+ ignore);
+ }
+
+ servlet = null;
+ return true;
}
- return servletInfo;
+ return false;
+ }
+
+ public boolean dispose()
+ {
+ // fully destroy the servlet
+ this.useCount = 1;
+ return this.destroy();
}
}
Copied: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java (from r1679892, felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/WhiteboardFilterHolder.java)
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java?p2=felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java&p1=felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/WhiteboardFilterHolder.java&r1=1679892&r2=1679975&rev=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/holder/WhiteboardFilterHolder.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardFilterHandler.java Mon May 18 09:46:24 2015
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.http.base.internal.handler.holder;
+package org.apache.felix.http.base.internal.handler;
import javax.servlet.Filter;
@@ -27,11 +27,11 @@ import org.osgi.framework.ServiceReferen
/**
* Filter holder for filters registered through the http whiteboard.
*/
-public final class WhiteboardFilterHolder extends FilterHolder
+public final class WhiteboardFilterHandler extends FilterHandler
{
private final BundleContext bundleContext;
- public WhiteboardFilterHolder(final long contextServiceId,
+ public WhiteboardFilterHandler(final long contextServiceId,
final ExtServletContext context,
final FilterInfo filterInfo,
final BundleContext bundleContext)
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java Mon May 18 09:46:24 2015
@@ -17,85 +17,69 @@
package org.apache.felix.http.base.internal.handler;
import javax.servlet.Servlet;
-import javax.servlet.ServletException;
import org.apache.felix.http.base.internal.context.ExtServletContext;
-import org.apache.felix.http.base.internal.runtime.ServletContextHelperInfo;
import org.apache.felix.http.base.internal.runtime.ServletInfo;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceObjects;
import org.osgi.framework.ServiceReference;
+/**
+ * Servlet handler for servlets registered through the http whiteboard.
+ */
public final class WhiteboardServletHandler extends ServletHandler
{
private final BundleContext bundleContext;
- private Servlet servlet;
-
- public WhiteboardServletHandler(ServletContextHelperInfo contextInfo,
- ExtServletContext context,
- ServletInfo servletInfo,
- BundleContext bundleContext)
+ public WhiteboardServletHandler(final long contextServiceId,
+ final ExtServletContext context,
+ final ServletInfo servletInfo,
+ final BundleContext bundleContext)
{
- super(contextInfo.getServiceId(), context, checkIsResource(servletInfo, false));
+ super(contextServiceId, context, servletInfo);
this.bundleContext = bundleContext;
}
@Override
- public Servlet getServlet()
- {
- return servlet;
- }
-
- @Override
- protected Object getSubject()
- {
- return getServlet();
- }
-
- @Override
- public void init() throws ServletException
+ public int init()
{
- if (servlet != null)
+ if ( this.useCount > 0 )
{
- return;
+ this.useCount++;
+ return -1;
}
- ServiceReference<Servlet> serviceReference = getServletInfo().getServiceReference();
- ServiceObjects<Servlet> so = this.bundleContext.getServiceObjects(serviceReference);
+ final ServiceReference<Servlet> serviceReference = getServletInfo().getServiceReference();
+ final ServiceObjects<Servlet> so = this.bundleContext.getServiceObjects(serviceReference);
- servlet = so.getService();
+ this.setServlet((so == null ? null : so.getService()));
- if (servlet == null)
+ final int reason = super.init();
+ if ( reason != -1 )
{
- // TODO throw Exception - service ungettable ?
- return;
- }
-
- try {
- servlet.init(new ServletConfigImpl(getName(), getContext(), getInitParams()));
- } catch (ServletException e) {
- so.ungetService(servlet);
- throw e;
+ so.ungetService(this.getServlet());
+ this.setServlet(null);
}
+ return reason;
}
@Override
- public void destroy()
+ public boolean destroy()
{
- if (servlet == null)
+ final Servlet s = this.getServlet();
+ if ( s != null )
{
- return;
- }
-
- servlet.destroy();
+ if ( super.destroy() )
+ {
- ServiceObjects<Servlet> so = this.bundleContext.getServiceObjects(getServletInfo().getServiceReference());
- // TODO check if this is needed
- if (so != null)
- {
- so.ungetService(servlet);
+ final ServiceObjects<Servlet> so = this.bundleContext.getServiceObjects(getServletInfo().getServiceReference());
+ if (so != null)
+ {
+ so.ungetService(s);
+ }
+ return true;
+ }
}
- servlet = null;
+ return false;
}
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java Mon May 18 09:46:24 2015
@@ -30,7 +30,7 @@ import java.util.regex.Pattern;
import javax.annotation.Nonnull;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
import org.apache.felix.http.base.internal.runtime.ServletInfo;
import org.apache.felix.http.base.internal.runtime.dto.ErrorPageRuntime;
import org.apache.felix.http.base.internal.runtime.dto.ServletRuntime;
@@ -76,8 +76,8 @@ public final class ErrorPageRegistry
return null;
}
- private final Map<Long, List<ServletHolder>> errorCodesMap = new ConcurrentHashMap<Long, List<ServletHolder>>();
- private final Map<String, List<ServletHolder>> exceptionsMap = new ConcurrentHashMap<String, List<ServletHolder>>();
+ private final Map<Long, List<ServletHandler>> errorCodesMap = new ConcurrentHashMap<Long, List<ServletHandler>>();
+ private final Map<String, List<ServletHandler>> exceptionsMap = new ConcurrentHashMap<String, List<ServletHandler>>();
private final Map<ServletInfo, ErrorRegistrationStatus> statusMapping = new ConcurrentHashMap<ServletInfo, ErrorRegistrationStatus>();
@@ -87,7 +87,7 @@ public final class ErrorPageRegistry
}
private static final class ErrorRegistrationStatus {
- ServletHolder holder;
+ ServletHandler holder;
final Map<Long, Integer> errorCodeMapping = new ConcurrentHashMap<Long, Integer>();
final Map<String, Integer> exceptionMapping = new ConcurrentHashMap<String, Integer>();
}
@@ -114,7 +114,7 @@ public final class ErrorPageRegistry
* Add the servlet for error handling
* @param holder The servlet holder.
*/
- public void addServlet(@Nonnull final ServletHolder holder)
+ public void addServlet(@Nonnull final ServletHandler holder)
{
final ErrorRegistration reg = getErrorRegistration(holder.getServletInfo());
if ( reg != null )
@@ -123,20 +123,20 @@ public final class ErrorPageRegistry
status.holder = holder;
for(final long code : reg.errorCodes)
{
- List<ServletHolder> list = errorCodesMap.get(code);
+ List<ServletHandler> list = errorCodesMap.get(code);
if ( list == null )
{
// activate
if ( tryToActivate(code, holder, status) )
{
- final List<ServletHolder> newList = new ArrayList<ServletHolder>(1);
+ final List<ServletHandler> newList = new ArrayList<ServletHandler>(1);
newList.add(holder);
errorCodesMap.put(code, newList);
}
}
else
{
- final List<ServletHolder> newList = new ArrayList<ServletHolder>(list);
+ final List<ServletHandler> newList = new ArrayList<ServletHandler>(list);
newList.add(holder);
Collections.sort(newList);
@@ -145,7 +145,7 @@ public final class ErrorPageRegistry
// activate and reactive
if ( tryToActivate(code, holder, status) )
{
- final ServletHolder old = list.get(0);
+ final ServletHandler old = list.get(0);
old.destroy();
errorCodesMap.put(code, newList);
}
@@ -160,20 +160,20 @@ public final class ErrorPageRegistry
}
for(final String exception : reg.exceptions)
{
- List<ServletHolder> list = exceptionsMap.get(exception);
+ List<ServletHandler> list = exceptionsMap.get(exception);
if ( list == null )
{
// activate
if ( tryToActivate(exception, holder, status) )
{
- final List<ServletHolder> newList = new ArrayList<ServletHolder>(1);
+ final List<ServletHandler> newList = new ArrayList<ServletHandler>(1);
newList.add(holder);
exceptionsMap.put(exception, newList);
}
}
else
{
- final List<ServletHolder> newList = new ArrayList<ServletHolder>(list);
+ final List<ServletHandler> newList = new ArrayList<ServletHandler>(list);
newList.add(holder);
Collections.sort(newList);
@@ -182,7 +182,7 @@ public final class ErrorPageRegistry
// activate and reactive
if ( tryToActivate(exception, holder, status) )
{
- final ServletHolder old = list.get(0);
+ final ServletHandler old = list.get(0);
old.destroy();
exceptionsMap.put(exception, newList);
}
@@ -211,19 +211,19 @@ public final class ErrorPageRegistry
this.statusMapping.remove(info);
for(final long code : reg.errorCodes)
{
- final List<ServletHolder> list = errorCodesMap.get(code);
+ final List<ServletHandler> list = errorCodesMap.get(code);
if ( list != null )
{
int index = 0;
- final Iterator<ServletHolder> i = list.iterator();
+ final Iterator<ServletHandler> i = list.iterator();
while ( i.hasNext() )
{
- final ServletHolder holder = i.next();
+ final ServletHandler holder = i.next();
if ( holder.getServletInfo().equals(info) )
{
holder.destroy();
- final List<ServletHolder> newList = new ArrayList<ServletHolder>(list);
+ final List<ServletHandler> newList = new ArrayList<ServletHandler>(list);
newList.remove(holder);
if ( index == 0 )
@@ -231,7 +231,7 @@ public final class ErrorPageRegistry
index++;
while ( index < list.size() )
{
- final ServletHolder next = list.get(index);
+ final ServletHandler next = list.get(index);
if ( tryToActivate(code, next, statusMapping.get(next.getServletInfo())) )
{
break;
@@ -259,19 +259,19 @@ public final class ErrorPageRegistry
}
for(final String exception : reg.exceptions)
{
- final List<ServletHolder> list = exceptionsMap.get(exception);
+ final List<ServletHandler> list = exceptionsMap.get(exception);
if ( list != null )
{
int index = 0;
- final Iterator<ServletHolder> i = list.iterator();
+ final Iterator<ServletHandler> i = list.iterator();
while ( i.hasNext() )
{
- final ServletHolder holder = i.next();
+ final ServletHandler holder = i.next();
if ( holder.getServletInfo().equals(info) )
{
holder.destroy();
- final List<ServletHolder> newList = new ArrayList<ServletHolder>(list);
+ final List<ServletHandler> newList = new ArrayList<ServletHandler>(list);
newList.remove(holder);
if ( index == 0 )
@@ -279,7 +279,7 @@ public final class ErrorPageRegistry
index++;
while ( index < list.size() )
{
- final ServletHolder next = list.get(index);
+ final ServletHandler next = list.get(index);
if ( tryToActivate(exception, next, statusMapping.get(next.getServletInfo())) )
{
break;
@@ -314,9 +314,9 @@ public final class ErrorPageRegistry
* @param errorCode Error code
* @return The servlet handling the error or {@code null}
*/
- public ServletHolder get(final Throwable exception, final int errorCode)
+ public ServletHandler get(final Throwable exception, final int errorCode)
{
- ServletHolder errorHandler = this.get(exception);
+ ServletHandler errorHandler = this.get(exception);
if (errorHandler != null)
{
return errorHandler;
@@ -325,9 +325,9 @@ public final class ErrorPageRegistry
return get(errorCode);
}
- private ServletHolder get(final int errorCode)
+ private ServletHandler get(final int errorCode)
{
- final List<ServletHolder> list = this.errorCodesMap.get(errorCode);
+ final List<ServletHandler> list = this.errorCodesMap.get(errorCode);
if ( list != null )
{
return list.get(0);
@@ -335,18 +335,18 @@ public final class ErrorPageRegistry
return null;
}
- private ServletHolder get(final Throwable exception)
+ private ServletHandler get(final Throwable exception)
{
if (exception == null)
{
return null;
}
- ServletHolder servletHandler = null;
+ ServletHandler servletHandler = null;
Class<?> throwableClass = exception.getClass();
while ( servletHandler == null && throwableClass != null )
{
- final List<ServletHolder> list = this.errorCodesMap.get(throwableClass.getName());
+ final List<ServletHandler> list = this.errorCodesMap.get(throwableClass.getName());
if ( list != null )
{
servletHandler = list.get(0);
@@ -364,7 +364,7 @@ public final class ErrorPageRegistry
return servletHandler;
}
- private boolean tryToActivate(final Long code, final ServletHolder holder, final ErrorRegistrationStatus status)
+ private boolean tryToActivate(final Long code, final ServletHandler holder, final ErrorRegistrationStatus status)
{
// add to active
final int result = holder.init();
@@ -373,7 +373,7 @@ public final class ErrorPageRegistry
return result == -1;
}
- private boolean tryToActivate(final String exception, final ServletHolder holder, final ErrorRegistrationStatus status)
+ private boolean tryToActivate(final String exception, final ServletHandler holder, final ErrorRegistrationStatus status)
{
// add to active
final int result = holder.init();
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/FilterRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/FilterRegistry.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/FilterRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/FilterRegistry.java Mon May 18 09:46:24 2015
@@ -29,8 +29,8 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.servlet.DispatcherType;
-import org.apache.felix.http.base.internal.handler.holder.FilterHolder;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
+import org.apache.felix.http.base.internal.handler.FilterHandler;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
import org.apache.felix.http.base.internal.runtime.FilterInfo;
import org.apache.felix.http.base.internal.runtime.dto.FailureRuntime;
import org.apache.felix.http.base.internal.runtime.dto.FilterRuntime;
@@ -44,10 +44,10 @@ public final class FilterRegistry
private static final class FilterRegistrationStatus
{
public int result;
- public FilterHolder holder;
+ public FilterHandler holder;
}
- public void addFilter(@Nonnull final FilterHolder holder)
+ public void addFilter(@Nonnull final FilterHandler holder)
{
final int result = holder.init();
if ( result == -1 )
@@ -77,16 +77,16 @@ public final class FilterRegistry
}
}
- public FilterHolder[] getFilterHolders(@CheckForNull final ServletHolder holder,
+ public FilterHandler[] getFilterHandlers(@CheckForNull final ServletHandler holder,
@CheckForNull DispatcherType dispatcherType,
@Nonnull String requestURI)
{
// See Servlet 3.0 specification, section 6.2.4...
- final List<FilterHolder> result = new ArrayList<FilterHolder>();
+ final List<FilterHandler> result = new ArrayList<FilterHandler>();
result.addAll(this.filterMapping.getAllMatches(requestURI));
// TODO this is not the most efficient/fastest way of doing this...
- Iterator<FilterHolder> iter = result.iterator();
+ Iterator<FilterHandler> iter = result.iterator();
while (iter.hasNext())
{
if (!referencesDispatcherType(iter.next(), dispatcherType))
@@ -97,7 +97,7 @@ public final class FilterRegistry
final String servletName = (holder != null) ? holder.getName() : null;
// TODO this is not the most efficient/fastest way of doing this...
- for (FilterHolder filterHandler : this.filterMapping.values())
+ for (FilterHandler filterHandler : this.filterMapping.values())
{
if (referencesServletByName(filterHandler, servletName))
{
@@ -105,10 +105,10 @@ public final class FilterRegistry
}
}
- return result.toArray(new FilterHolder[result.size()]);
+ return result.toArray(new FilterHandler[result.size()]);
}
- private boolean referencesDispatcherType(FilterHolder holder, DispatcherType dispatcherType)
+ private boolean referencesDispatcherType(FilterHandler holder, DispatcherType dispatcherType)
{
if (dispatcherType == null)
{
@@ -117,7 +117,7 @@ public final class FilterRegistry
return Arrays.asList(holder.getFilterInfo().getDispatcher()).contains(dispatcherType);
}
- private boolean referencesServletByName(FilterHolder handler, String servletName)
+ private boolean referencesServletByName(FilterHandler handler, String servletName)
{
if (servletName == null)
{
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerMapping.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerMapping.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerMapping.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerMapping.java Mon May 18 09:46:24 2015
@@ -35,7 +35,7 @@ import java.util.regex.Pattern;
import javax.annotation.Nonnull;
-import org.apache.felix.http.base.internal.handler.holder.FilterHolder;
+import org.apache.felix.http.base.internal.handler.FilterHandler;
import org.apache.felix.http.base.internal.util.PatternUtil;
import org.apache.felix.http.base.internal.util.PatternUtil.PatternComparator;
@@ -50,16 +50,16 @@ import org.apache.felix.http.base.intern
*/
public final class HandlerMapping
{
- private final SortedMap<Pattern, Set<FilterHolder>> exactMap;
- private final SortedMap<Pattern, Set<FilterHolder>> wildcardMap;
- private final Set<FilterHolder> mappedHandlers;
+ private final SortedMap<Pattern, Set<FilterHandler>> exactMap;
+ private final SortedMap<Pattern, Set<FilterHandler>> wildcardMap;
+ private final Set<FilterHandler> mappedHandlers;
/**
* Creates a new, empty, {@link HandlerMapping} instance.
*/
public HandlerMapping()
{
- this(Collections.<Pattern, Collection<FilterHolder>>emptyMap());
+ this(Collections.<Pattern, Collection<FilterHandler>>emptyMap());
}
/**
@@ -67,35 +67,35 @@ public final class HandlerMapping
*
* @param mappings the elements to map.
*/
- private HandlerMapping(@Nonnull final Map<Pattern, Collection<FilterHolder>> mappings)
+ private HandlerMapping(@Nonnull final Map<Pattern, Collection<FilterHandler>> mappings)
{
- this.exactMap = new TreeMap<Pattern, Set<FilterHolder>>(PatternComparator.INSTANCE);
- this.wildcardMap = new TreeMap<Pattern, Set<FilterHolder>>(PatternComparator.INSTANCE);
- this.mappedHandlers = new TreeSet<FilterHolder>();
+ this.exactMap = new TreeMap<Pattern, Set<FilterHandler>>(PatternComparator.INSTANCE);
+ this.wildcardMap = new TreeMap<Pattern, Set<FilterHandler>>(PatternComparator.INSTANCE);
+ this.mappedHandlers = new TreeSet<FilterHandler>();
- for (Map.Entry<Pattern, Collection<FilterHolder>> mapping : mappings.entrySet())
+ for (Map.Entry<Pattern, Collection<FilterHandler>> mapping : mappings.entrySet())
{
Pattern pattern = mapping.getKey();
- Collection<FilterHolder> handlers = mapping.getValue();
+ Collection<FilterHandler> handlers = mapping.getValue();
mappedHandlers.addAll(handlers);
if (PatternUtil.isWildcardPattern(pattern))
{
- Set<FilterHolder> vs = this.wildcardMap.get(pattern);
+ Set<FilterHandler> vs = this.wildcardMap.get(pattern);
if (vs == null)
{
- vs = new TreeSet<FilterHolder>();
+ vs = new TreeSet<FilterHandler>();
this.wildcardMap.put(pattern, vs);
}
vs.addAll(handlers);
}
else
{
- Set<FilterHolder> vs = this.exactMap.get(pattern);
+ Set<FilterHandler> vs = this.exactMap.get(pattern);
if (vs == null)
{
- vs = new TreeSet<FilterHolder>();
+ vs = new TreeSet<FilterHandler>();
this.exactMap.put(pattern, vs);
}
vs.addAll(handlers);
@@ -111,9 +111,9 @@ public final class HandlerMapping
* @return a new {@link HandlerMapping} instance with a mapping for the
* given handler.
*/
- public HandlerMapping add(@Nonnull final FilterHolder handler)
+ public HandlerMapping add(@Nonnull final FilterHandler handler)
{
- final Map<Pattern, FilterHolder> mappings = new TreeMap<Pattern, FilterHolder>(PatternComparator.INSTANCE);
+ final Map<Pattern, FilterHandler> mappings = new TreeMap<Pattern, FilterHandler>(PatternComparator.INSTANCE);
for (final Pattern pattern : handler.getPatterns())
{
mappings.put(pattern, handler);
@@ -121,9 +121,9 @@ public final class HandlerMapping
return add(mappings);
}
- HandlerMapping add(@Nonnull final Map<Pattern, FilterHolder> mappings)
+ HandlerMapping add(@Nonnull final Map<Pattern, FilterHandler> mappings)
{
- final Map<Pattern, Collection<FilterHolder>> newMappings = getAllMappings();
+ final Map<Pattern, Collection<FilterHandler>> newMappings = getAllMappings();
addMappings(mappings, newMappings);
return new HandlerMapping(newMappings);
}
@@ -136,9 +136,9 @@ public final class HandlerMapping
* @return a new {@link HandlerMapping} instance without a mapping for the
* given handler.
*/
- public HandlerMapping remove(FilterHolder handler)
+ public HandlerMapping remove(FilterHandler handler)
{
- Map<Pattern, FilterHolder> mappings = new TreeMap<Pattern, FilterHolder>(PatternComparator.INSTANCE);
+ Map<Pattern, FilterHandler> mappings = new TreeMap<Pattern, FilterHandler>(PatternComparator.INSTANCE);
for (Pattern pattern : handler.getPatterns())
{
mappings.put(pattern, handler);
@@ -146,38 +146,38 @@ public final class HandlerMapping
return remove(mappings);
}
- HandlerMapping remove(Map<Pattern, FilterHolder> mappings)
+ HandlerMapping remove(Map<Pattern, FilterHandler> mappings)
{
- Map<Pattern, Collection<FilterHolder>> newMappings = getAllMappings();
+ Map<Pattern, Collection<FilterHandler>> newMappings = getAllMappings();
removeMappings(mappings, newMappings);
return new HandlerMapping(newMappings);
}
- HandlerMapping update(Map<Pattern, FilterHolder> add, Map<Pattern, FilterHolder> remove)
+ HandlerMapping update(Map<Pattern, FilterHandler> add, Map<Pattern, FilterHandler> remove)
{
- Map<Pattern, Collection<FilterHolder>> newMappings = getAllMappings();
+ Map<Pattern, Collection<FilterHandler>> newMappings = getAllMappings();
removeMappings(remove, newMappings);
addMappings(add, newMappings);
return new HandlerMapping(newMappings);
}
- private void addMappings(Map<Pattern, FilterHolder> mappings, Map<Pattern, Collection<FilterHolder>> target)
+ private void addMappings(Map<Pattern, FilterHandler> mappings, Map<Pattern, Collection<FilterHandler>> target)
{
- for (Map.Entry<Pattern, FilterHolder> mapping : mappings.entrySet())
+ for (Map.Entry<Pattern, FilterHandler> mapping : mappings.entrySet())
{
if (!target.containsKey(mapping.getKey()))
{
- target.put(mapping.getKey(), new TreeSet<FilterHolder>());
+ target.put(mapping.getKey(), new TreeSet<FilterHandler>());
}
target.get(mapping.getKey()).add(mapping.getValue());
}
}
- private void removeMappings(Map<Pattern, FilterHolder> mappings, Map<Pattern, Collection<FilterHolder>> target)
+ private void removeMappings(Map<Pattern, FilterHandler> mappings, Map<Pattern, Collection<FilterHandler>> target)
{
- for (Map.Entry<Pattern, FilterHolder> mapping : mappings.entrySet())
+ for (Map.Entry<Pattern, FilterHandler> mapping : mappings.entrySet())
{
- Collection<FilterHolder> mappedHandlers = target.get(mapping.getKey());
+ Collection<FilterHandler> mappedHandlers = target.get(mapping.getKey());
if (mappedHandlers == null)
{
continue;
@@ -190,9 +190,9 @@ public final class HandlerMapping
}
}
- private Map<Pattern, Collection<FilterHolder>> getAllMappings()
+ private Map<Pattern, Collection<FilterHandler>> getAllMappings()
{
- Map<Pattern, Collection<FilterHolder>> newMappings = new TreeMap<Pattern, Collection<FilterHolder>>(PatternComparator.INSTANCE);
+ Map<Pattern, Collection<FilterHandler>> newMappings = new TreeMap<Pattern, Collection<FilterHandler>>(PatternComparator.INSTANCE);
newMappings.putAll(exactMap);
newMappings.putAll(wildcardMap);
return newMappings;
@@ -205,7 +205,7 @@ public final class HandlerMapping
* <code>Collection</code> is unmodifiable and never
* <code>null</code>.
*/
- public Collection<FilterHolder> values()
+ public Collection<FilterHandler> values()
{
return unmodifiableCollection(mappedHandlers);
}
@@ -216,7 +216,7 @@ public final class HandlerMapping
* @return <code>true</code> if the handlers contains the specified handler,
* <code>false</code> otherwise
*/
- public boolean contains(FilterHolder handler)
+ public boolean contains(FilterHandler handler)
{
return mappedHandlers.contains(handler);
}
@@ -227,7 +227,7 @@ public final class HandlerMapping
* @param path the path that should match, cannot be <code>null</code>.
* @return a {@link Collection} of all matching handlers, never <code>null</code>.
*/
- public List<FilterHolder> getAllMatches(String path)
+ public List<FilterHandler> getAllMatches(String path)
{
return getAllMatches(path, false /* firstOnly */);
}
@@ -245,9 +245,9 @@ public final class HandlerMapping
* @param path the path that should match, cannot be <code>null</code>.
* @return the best matching handler for the given path, or <code>null</code> in case no handler matched.
*/
- FilterHolder getBestMatch(String path)
+ FilterHandler getBestMatch(String path)
{
- List<FilterHolder> allMatches = getAllMatches(path, true /* firstOnly */);
+ List<FilterHandler> allMatches = getAllMatches(path, true /* firstOnly */);
return allMatches.isEmpty() ? null : allMatches.get(0);
}
@@ -257,14 +257,14 @@ public final class HandlerMapping
* @param name the name of the handler to return, can be <code>null</code> in which case this method will return <code>null</code>.
* @return the element with the given name, or <code>null</code> if not found, or the given argument was <code>null</code>.
*/
- FilterHolder getByName(String name)
+ FilterHandler getByName(String name)
{
if (name == null)
{
return null;
}
- for (FilterHolder element : this.mappedHandlers)
+ for (FilterHandler element : this.mappedHandlers)
{
if (name.equals(element.getName()))
{
@@ -294,38 +294,38 @@ public final class HandlerMapping
* <code>false</code> if all matching patterns should be returned.
* @return a list with matching elements, never <code>null</code>.
*/
- private List<FilterHolder> getAllMatches(String path, boolean firstOnly)
+ private List<FilterHandler> getAllMatches(String path, boolean firstOnly)
{
path = (path == null) ? "" : path.trim();
- Set<FilterHolder> result = new TreeSet<FilterHolder>();
+ Set<FilterHandler> result = new TreeSet<FilterHandler>();
// Look for exact matches only, that is, those patterns without wildcards...
- for (Entry<Pattern, Set<FilterHolder>> entry : this.exactMap.entrySet())
+ for (Entry<Pattern, Set<FilterHandler>> entry : this.exactMap.entrySet())
{
Matcher matcher = entry.getKey().matcher(path);
// !!! we should always match the *entire* pattern, instead of the longest prefix...
if (matcher.matches())
{
- Set<FilterHolder> vs = entry.getValue();
- for (FilterHolder v : vs)
+ Set<FilterHandler> vs = entry.getValue();
+ for (FilterHandler v : vs)
{
result.add(v);
if (firstOnly)
{
- return new ArrayList<FilterHolder>(result);
+ return new ArrayList<FilterHandler>(result);
}
}
}
}
// Try to apply the wildcard patterns...
- for (Entry<Pattern, Set<FilterHolder>> entry : this.wildcardMap.entrySet())
+ for (Entry<Pattern, Set<FilterHandler>> entry : this.wildcardMap.entrySet())
{
Matcher matcher = entry.getKey().matcher(path);
if (matcher.find(0))
{
- Set<FilterHolder> vs = entry.getValue();
- for (FilterHolder v : vs)
+ Set<FilterHandler> vs = entry.getValue();
+ for (FilterHandler v : vs)
{
result.add(v);
@@ -337,6 +337,6 @@ public final class HandlerMapping
}
}
- return new ArrayList<FilterHolder>(result);
+ return new ArrayList<FilterHandler>(result);
}
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java Mon May 18 09:46:24 2015
@@ -19,8 +19,8 @@ package org.apache.felix.http.base.inter
import javax.annotation.Nonnull;
import javax.servlet.DispatcherType;
-import org.apache.felix.http.base.internal.handler.holder.FilterHolder;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
+import org.apache.felix.http.base.internal.handler.FilterHandler;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
import org.apache.felix.http.base.internal.runtime.FilterInfo;
import org.apache.felix.http.base.internal.runtime.ServletContextHelperInfo;
import org.apache.felix.http.base.internal.runtime.ServletInfo;
@@ -138,7 +138,7 @@ public final class PerContextHandlerRegi
return this.servletRegistry.resolve(relativeRequestURI);
}
- public ServletHolder resolveServletByName(final String name)
+ public ServletHandler resolveServletByName(final String name)
{
return this.servletRegistry.resolveByName(name);
}
@@ -148,7 +148,7 @@ public final class PerContextHandlerRegi
* @param holder The servlet holder
* @param info The servlet info
*/
- public void addServlet(@Nonnull final ServletHolder holder)
+ public void addServlet(@Nonnull final ServletHandler holder)
{
this.servletRegistry.addServlet(holder);
this.errorPageRegistry.addServlet(holder);
@@ -164,7 +164,7 @@ public final class PerContextHandlerRegi
this.errorPageRegistry.removeServlet(info, destroy);
}
- public void addFilter(@Nonnull final FilterHolder holder)
+ public void addFilter(@Nonnull final FilterHandler holder)
{
this.filterRegistry.addFilter(holder);
}
@@ -174,13 +174,13 @@ public final class PerContextHandlerRegi
this.filterRegistry.removeFilter(info, destroy);
}
- public FilterHolder[] getFilterHolders(final ServletHolder servletHolder,
+ public FilterHandler[] getFilterHandlers(final ServletHandler servletHandler,
DispatcherType dispatcherType, String requestURI)
{
- return this.filterRegistry.getFilterHolders(servletHolder, dispatcherType, requestURI);
+ return this.filterRegistry.getFilterHandlers(servletHandler, dispatcherType, requestURI);
}
- public ServletHolder getErrorHandler(int code, Throwable exception)
+ public ServletHandler getErrorHandler(int code, Throwable exception)
{
return this.errorPageRegistry.get(exception, code);
}
Copied: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistration.java (from r1679892, felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletHandler.java)
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistration.java?p2=felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistration.java&p1=felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletHandler.java&r1=1679892&r2=1679975&rev=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistration.java Mon May 18 09:46:24 2015
@@ -21,26 +21,26 @@ import java.util.regex.Pattern;
import javax.annotation.Nonnull;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
import org.apache.felix.http.base.internal.util.UriUtils;
/**
* Servlet handler is registered with a pattern and a servlet holder
*/
-public class ServletHandler
+public class ServletRegistration
{
- private final ServletHolder holder;
+ private final ServletHandler handler;
private final Pattern pattern;
- public ServletHandler(@Nonnull final ServletHolder holder, @Nonnull final Pattern pattern)
+ public ServletRegistration(@Nonnull final ServletHandler handler, @Nonnull final Pattern pattern)
{
- this.holder = holder;
+ this.handler = handler;
this.pattern = pattern;
}
- public ServletHolder getServletHolder()
+ public ServletHandler getServletHandler()
{
- return this.holder;
+ return this.handler;
}
public PathResolution resolve(@Nonnull final String requestURI)
@@ -51,7 +51,7 @@ public class ServletHandler
final PathResolution pr = new PathResolution();
pr.servletPath = matcher.groupCount() > 0 ? matcher.group(1) : matcher.group();
pr.pathInfo = UriUtils.compactPath(UriUtils.relativePath(pr.servletPath, requestURI));
- pr.holder = this.holder;
+ pr.holder = this.handler;
return pr;
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java Mon May 18 09:46:24 2015
@@ -27,7 +27,7 @@ import java.util.regex.Pattern;
import javax.annotation.Nonnull;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
import org.apache.felix.http.base.internal.runtime.ServletInfo;
import org.apache.felix.http.base.internal.util.PatternUtil;
import org.osgi.service.http.runtime.dto.DTOConstants;
@@ -42,9 +42,9 @@ import org.osgi.service.http.runtime.dto
*/
public final class ServletRegistry
{
- private final Map<String, ServletHandler> activeServletMappings = new ConcurrentHashMap<String, ServletHandler>();
+ private final Map<String, ServletRegistration> activeServletMappings = new ConcurrentHashMap<String, ServletRegistration>();
- private final Map<String, List<ServletHolder>> inactiveServletMappings = new HashMap<String, List<ServletHolder>>();
+ private final Map<String, List<ServletHandler>> inactiveServletMappings = new HashMap<String, List<ServletHandler>>();
private final Map<ServletInfo, ServletRegistrationStatus> statusMapping = new ConcurrentHashMap<ServletInfo, ServletRegistry.ServletRegistrationStatus>();
@@ -53,9 +53,9 @@ public final class ServletRegistry
private static final class ServletNameStatus implements Comparable<ServletNameStatus>
{
public volatile boolean isActive = false;
- public final ServletHolder holder;
+ public final ServletHandler holder;
- public ServletNameStatus(final ServletHolder h)
+ public ServletNameStatus(final ServletHandler h)
{
this.holder = h;
}
@@ -76,7 +76,7 @@ public final class ServletRegistry
{
int len = -1;
PathResolution candidate = null;
- for(final Map.Entry<String, ServletHandler> entry : this.activeServletMappings.entrySet())
+ for(final Map.Entry<String, ServletRegistration> entry : this.activeServletMappings.entrySet())
{
final PathResolution pr = entry.getValue().resolve(relativeRequestURI);
if ( pr != null && entry.getKey().length() > len )
@@ -93,7 +93,7 @@ public final class ServletRegistry
*
* @param holder The servlet holder
*/
- public void addServlet(@Nonnull final ServletHolder holder)
+ public void addServlet(@Nonnull final ServletHandler holder)
{
// we have to check for every pattern in the info
// Can be null in case of error-handling servlets...
@@ -103,18 +103,18 @@ public final class ServletRegistry
for(final String pattern : holder.getServletInfo().getPatterns())
{
- final ServletHandler regHandler = this.activeServletMappings.get(pattern);
+ final ServletRegistration regHandler = this.activeServletMappings.get(pattern);
if ( regHandler != null )
{
- if ( regHandler.getServletHolder().getServletInfo().getServiceReference().compareTo(holder.getServletInfo().getServiceReference()) < 0 )
+ if ( regHandler.getServletHandler().getServletInfo().getServiceReference().compareTo(holder.getServletInfo().getServiceReference()) < 0 )
{
// replace if no error with new servlet
if ( this.tryToActivate(pattern, holder, status) )
{
// nameStatus.isActive = true;
- regHandler.getServletHolder().destroy();
+ regHandler.getServletHandler().destroy();
- this.addToInactiveList(pattern, regHandler.getServletHolder(), this.statusMapping.get(regHandler.getServletHolder().getServletInfo()));
+ this.addToInactiveList(pattern, regHandler.getServletHandler(), this.statusMapping.get(regHandler.getServletHandler().getServletInfo()));
}
}
else
@@ -145,16 +145,16 @@ public final class ServletRegistry
if ( info.getPatterns() != null )
{
this.statusMapping.remove(info);
- ServletHolder cleanupHolder = null;
+ ServletHandler cleanupHolder = null;
for(final String pattern : info.getPatterns())
{
- final ServletHandler regHandler = this.activeServletMappings.get(pattern);
- if ( regHandler != null && regHandler.getServletHolder().getServletInfo().equals(info) )
+ final ServletRegistration regHandler = this.activeServletMappings.get(pattern);
+ if ( regHandler != null && regHandler.getServletHandler().getServletInfo().equals(info) )
{
- cleanupHolder = regHandler.getServletHolder();
- final List<ServletHolder> inactiveList = this.inactiveServletMappings.get(pattern);
+ cleanupHolder = regHandler.getServletHandler();
+ final List<ServletHandler> inactiveList = this.inactiveServletMappings.get(pattern);
if ( inactiveList == null )
{
this.activeServletMappings.remove(pattern);
@@ -164,7 +164,7 @@ public final class ServletRegistry
boolean done = false;
while ( !done )
{
- final ServletHolder h = inactiveList.remove(0);
+ final ServletHandler h = inactiveList.remove(0);
done = this.tryToActivate(pattern, h, this.statusMapping.get(h.getServletInfo()));
if ( !done )
{
@@ -179,13 +179,13 @@ public final class ServletRegistry
}
else
{
- final List<ServletHolder> inactiveList = this.inactiveServletMappings.get(pattern);
+ final List<ServletHandler> inactiveList = this.inactiveServletMappings.get(pattern);
if ( inactiveList != null )
{
- final Iterator<ServletHolder> i = inactiveList.iterator();
+ final Iterator<ServletHandler> i = inactiveList.iterator();
while ( i.hasNext() )
{
- final ServletHolder h = i.next();
+ final ServletHandler h = i.next();
if ( h.getServletInfo().equals(info) )
{
i.remove();
@@ -208,12 +208,12 @@ public final class ServletRegistry
}
}
- private void addToInactiveList(final String pattern, final ServletHolder holder, final ServletRegistrationStatus status)
+ private void addToInactiveList(final String pattern, final ServletHandler holder, final ServletRegistrationStatus status)
{
- List<ServletHolder> inactiveList = this.inactiveServletMappings.get(pattern);
+ List<ServletHandler> inactiveList = this.inactiveServletMappings.get(pattern);
if ( inactiveList == null )
{
- inactiveList = new ArrayList<ServletHolder>();
+ inactiveList = new ArrayList<ServletHandler>();
this.inactiveServletMappings.put(pattern, inactiveList);
}
inactiveList.add(holder);
@@ -221,14 +221,14 @@ public final class ServletRegistry
status.pathToStatus.put(pattern, DTOConstants.FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE);
}
- private boolean tryToActivate(final String pattern, final ServletHolder holder, final ServletRegistrationStatus status)
+ private boolean tryToActivate(final String pattern, final ServletHandler holder, final ServletRegistrationStatus status)
{
// add to active
final int result = holder.init();
if ( result == -1 )
{
final Pattern p = Pattern.compile(PatternUtil.convertToRegEx(pattern));
- final ServletHandler handler = new ServletHandler(holder, p);
+ final ServletRegistration handler = new ServletRegistration(holder, p);
this.activeServletMappings.put(pattern, handler);
// add ok
@@ -248,7 +248,7 @@ public final class ServletRegistry
return this.statusMapping;
}
- public ServletHolder resolveByName(@Nonnull String name)
+ public ServletHandler resolveByName(@Nonnull String name)
{
final List<ServletNameStatus> holderList = this.servletsByName.get(name);
if ( holderList != null )
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletResolution.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletResolution.java?rev=1679975&r1=1679974&r2=1679975&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletResolution.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletResolution.java Mon May 18 09:46:24 2015
@@ -16,11 +16,11 @@
*/
package org.apache.felix.http.base.internal.registry;
-import org.apache.felix.http.base.internal.handler.holder.ServletHolder;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
public class ServletResolution {
- public ServletHolder holder;
+ public ServletHandler holder;
public PerContextHandlerRegistry handlerRegistry;
}