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 2017/01/03 08:12:45 UTC

svn commit: r1777088 [1/3] - in /felix/trunk/http: api/ api/src/main/appended-resources/META-INF/ api/src/main/java/org/apache/felix/http/api/ api/src/main/java/org/osgi/ api/src/main/java/org/osgi/service/ api/src/main/java/org/osgi/service/http/ api/...

Author: cziegeler
Date: Tue Jan  3 08:12:45 2017
New Revision: 1777088

URL: http://svn.apache.org/viewvc?rev=1777088&view=rev
Log:
FELIX-5296 : Implement Http Whiteboard Service Updates (RFC 223). Apply changes from sandbox branch

Added:
    felix/trunk/http/api/src/main/java/org/osgi/
    felix/trunk/http/api/src/main/java/org/osgi/service/
    felix/trunk/http/api/src/main/java/org/osgi/service/http/
    felix/trunk/http/api/src/main/java/org/osgi/service/http/context/
    felix/trunk/http/api/src/main/java/org/osgi/service/http/context/ServletContextHelper.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/context/package-info.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntime.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntimeConstants.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/BaseServletDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/DTOConstants.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ErrorPageDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedErrorPageDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedFilterDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedListenerDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedPreprocessorDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedResourceDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletContextDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FilterDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ListenerDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/PreprocessorDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RequestInfoDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ResourceDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RuntimeDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletContextDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletDTO.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/package-info.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/package-info.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/whiteboard/
    felix/trunk/http/api/src/main/java/org/osgi/service/http/whiteboard/HttpWhiteboardConstants.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/whiteboard/Preprocessor.java   (with props)
    felix/trunk/http/api/src/main/java/org/osgi/service/http/whiteboard/package-info.java   (with props)
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/PreprocessorHandler.java   (with props)
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/PreprocessorInfo.java   (with props)
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/PreprocessorDTOBuilder.java   (with props)
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/PreprocessorTracker.java   (with props)
Modified:
    felix/trunk/http/api/pom.xml
    felix/trunk/http/api/src/main/appended-resources/META-INF/DEPENDENCIES
    felix/trunk/http/api/src/main/appended-resources/META-INF/NOTICE
    felix/trunk/http/api/src/main/java/org/apache/felix/http/api/package-info.java
    felix/trunk/http/base/pom.xml
    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/registry/ServletRegistry.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FailedDTOHolder.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/RegistryRuntime.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/RuntimeDTOBuilder.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/FailureStateHandler.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/ServletTracker.java
    felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/whiteboard/FailureStateHandlerTest.java
    felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java
    felix/trunk/http/jetty/pom.xml
    felix/trunk/http/jetty/src/main/appended-resources/META-INF/DEPENDENCIES
    felix/trunk/http/jetty/src/main/appended-resources/META-INF/NOTICE

Modified: felix/trunk/http/api/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/pom.xml?rev=1777088&r1=1777087&r2=1777088&view=diff
==============================================================================
--- felix/trunk/http/api/pom.xml (original)
+++ felix/trunk/http/api/pom.xml Tue Jan  3 08:12:45 2017
@@ -42,6 +42,7 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
+                <version>3.2.0</version>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
@@ -79,7 +80,8 @@
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
+            <artifactId>org.osgi.service.http</artifactId>
+            <version>1.2.1</version>
         </dependency>
     </dependencies>
 

Modified: felix/trunk/http/api/src/main/appended-resources/META-INF/DEPENDENCIES
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/appended-resources/META-INF/DEPENDENCIES?rev=1777088&r1=1777087&r2=1777088&view=diff
==============================================================================
--- felix/trunk/http/api/src/main/appended-resources/META-INF/DEPENDENCIES (original)
+++ felix/trunk/http/api/src/main/appended-resources/META-INF/DEPENDENCIES Tue Jan  3 08:12:45 2017
@@ -2,14 +2,14 @@ I. Included Third-Party Software
 
 This product includes software developed at
 The OSGi Alliance (http://www.osgi.org/).
-Copyright (c) OSGi Alliance (2000, 2015).
+Copyright (c) OSGi Alliance (2000, 2016).
 Licensed under the Apache License 2.0. 
 
 II. Used Third-Party Software
 
 This product uses software developed at
 The OSGi Alliance (http://www.osgi.org/).
-Copyright (c) OSGi Alliance (2000, 2015).
+Copyright (c) OSGi Alliance (2000, 2016).
 Licensed under the Apache License 2.0. 
 
 III. License Summary

Modified: felix/trunk/http/api/src/main/appended-resources/META-INF/NOTICE
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/appended-resources/META-INF/NOTICE?rev=1777088&r1=1777087&r2=1777088&view=diff
==============================================================================
--- felix/trunk/http/api/src/main/appended-resources/META-INF/NOTICE (original)
+++ felix/trunk/http/api/src/main/appended-resources/META-INF/NOTICE Tue Jan  3 08:12:45 2017
@@ -1,4 +1,4 @@
 This product includes software developed at
 The OSGi Alliance (http://www.osgi.org/).
-Copyright (c) OSGi Alliance (2000, 2015).
+Copyright (c) OSGi Alliance (2000, 2016).
 Licensed under the Apache License 2.0.
\ No newline at end of file

Modified: felix/trunk/http/api/src/main/java/org/apache/felix/http/api/package-info.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/apache/felix/http/api/package-info.java?rev=1777088&r1=1777087&r2=1777088&view=diff
==============================================================================
--- felix/trunk/http/api/src/main/java/org/apache/felix/http/api/package-info.java (original)
+++ felix/trunk/http/api/src/main/java/org/apache/felix/http/api/package-info.java Tue Jan  3 08:12:45 2017
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@Version("2.0.6")
+@Version("2.0.8")
 package org.apache.felix.http.api;
 
 import org.osgi.annotation.versioning.Version;

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/context/ServletContextHelper.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/context/ServletContextHelper.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/context/ServletContextHelper.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/context/ServletContextHelper.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,310 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2015). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.context;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.LinkedHashSet;
+import java.util.Set;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.osgi.annotation.versioning.ConsumerType;
+import org.osgi.framework.Bundle;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
+
+/**
+ * Helper service for a servlet context used by a Http Whiteboard implementation
+ * to serve HTTP requests.
+ *
+ * <p>
+ * This service defines methods that the Http Whiteboard implementation may call
+ * to get information for a request when dealing with whiteboard services.
+ * 
+ * <p>
+ * Each {@code ServletContextHelper} is registered with a
+ * {@link HttpWhiteboardConstants#HTTP_WHITEBOARD_CONTEXT_NAME
+ * "osgi.http.whiteboard.context.name"} service property containing a name to
+ * reference by servlets, servlet filters, resources, and listeners. If there is
+ * more than one {@code ServletContextHelper} registered with the same context
+ * name, the one with the highest service ranking is active, the others are
+ * inactive.
+ * 
+ * <p>
+ * A context is registered with the
+ * {@link HttpWhiteboardConstants#HTTP_WHITEBOARD_CONTEXT_PATH
+ * "osgi.http.whiteboard.context.path"} service property to define a path under
+ * which all services registered with this context are reachable. If there is
+ * more than one {@code ServletContextHelper} registered with the same path,
+ * each duplicate context path is searched by service ranking order according to
+ * {@link org.osgi.framework.ServiceReference#compareTo(Object)} until a
+ * matching servlet or resource is found.
+ * 
+ * <p>
+ * Servlets, servlet filters, resources, and listeners services may be
+ * associated with a {@code ServletContextHelper} service with the
+ * {@link HttpWhiteboardConstants#HTTP_WHITEBOARD_CONTEXT_SELECT
+ * "osgi.http.whiteboard.context.select"} service property. If the referenced
+ * {@code ServletContextHelper} service does not exist or is currently not
+ * active, the whiteboard services for that {@code ServletContextHelper} are not
+ * active either.
+ * 
+ * <p>
+ * If no {@code ServletContextHelper} service is associated, that is no
+ * {@link HttpWhiteboardConstants#HTTP_WHITEBOARD_CONTEXT_SELECT
+ * "osgi.http.whiteboard.context.select"} service property is configured for a
+ * whiteboard service, a default {@code ServletContextHelper} is used.
+ * 
+ * <p>
+ * Those whiteboard services that are associated with the same
+ * {@code ServletContextHelper} object will share the same
+ * {@code ServletContext} object.
+ * 
+ * <p>
+ * The behavior of the methods on the default {@code ServletContextHelper} is
+ * defined as follows:
+ * <ul>
+ * <li>{@link #getMimeType(String) getMimeType} - Always returns {@code null}.</li>
+ * <li>{@link #handleSecurity(HttpServletRequest, HttpServletResponse)
+ * handleSecurity} - Always returns {@code true}.</li>
+ * <li>{@link #getResource(String) getResource} - Assumes the named resource is
+ * in the bundle of the whiteboard service, addressed from the root. This method
+ * calls the whiteboard service bundle's {@code Bundle.getEntry} method, and
+ * returns the appropriate URL to access the resource. On a Java runtime
+ * environment that supports permissions, the Http Whiteboard implementation
+ * needs to be granted {@code org.osgi.framework.AdminPermission[*,RESOURCE]}.</li>
+ * <li>{@link #getResourcePaths(String) getResourcePaths} - Assumes that the
+ * resources are in the bundle of the whiteboard service. This method calls
+ * {@code Bundle.findEntries} method, and returns the found entries. On a Java
+ * runtime environment that supports permissions, the Http Whiteboard
+ * implementation needs to be granted
+ * {@code org.osgi.framework.AdminPermission[*,RESOURCE]}.</li>
+ * <li>{@link #getRealPath(String) getRealPath} - Always returns {@code null}.</li>
+ * </ul>
+ * 
+ * @ThreadSafe
+ * @author $Id$
+ * @see HttpWhiteboardConstants#HTTP_WHITEBOARD_CONTEXT_NAME
+ * @see HttpWhiteboardConstants#HTTP_WHITEBOARD_CONTEXT_PATH
+ */
+@ConsumerType
+public abstract class ServletContextHelper {
+	/**
+	 * {@code HttpServletRequest} attribute specifying the name of the
+	 * authenticated user. The value of the attribute can be retrieved by
+	 * {@code HttpServletRequest.getRemoteUser}.
+	 */
+	public static final String	REMOTE_USER			= "org.osgi.service.http.authentication.remote.user";
+	/**
+	 * {@code HttpServletRequest} attribute specifying the scheme used in
+	 * authentication. The value of the attribute can be retrieved by
+	 * {@code HttpServletRequest.getAuthType}.
+	 */
+	public static final String	AUTHENTICATION_TYPE	= "org.osgi.service.http.authentication.type";
+	/**
+	 * {@code HttpServletRequest} attribute specifying the {@code Authorization}
+	 * object obtained from the {@code org.osgi.service.useradmin.UserAdmin}
+	 * service. The value of the attribute can be retrieved by
+	 * {@code HttpServletRequest.getAttribute(ServletContextHelper.AUTHORIZATION)}
+	 * .
+	 */
+	public static final String	AUTHORIZATION		= "org.osgi.service.useradmin.authorization";
+
+	/** Bundle associated with this context. */
+	private final Bundle		bundle;
+
+	/**
+	 * Construct a new context helper.
+	 * 
+	 * <p>
+	 * If needed, the subclass will have to handle the association with a
+	 * specific bundle.
+	 */
+	public ServletContextHelper() {
+		this(null);
+	}
+
+	/**
+	 * Construct a new context helper associated with the specified bundle.
+	 * 
+	 * @param bundle The bundle to be associated with this context helper.
+	 */
+	public ServletContextHelper(final Bundle bundle) {
+		this.bundle = bundle;
+	}
+
+	/**
+	 * Handles security for the specified request.
+	 * 
+	 * <p>
+	 * The Http Whiteboard implementation calls this method prior to servicing
+	 * the specified request. This method controls whether the request is
+	 * processed in the normal manner or an error is returned.
+	 * 
+	 * <p>
+	 * If the request requires authentication and the {@code Authorization}
+	 * header in the request is missing or not acceptable, then this method
+	 * should set the {@code WWW-Authenticate} header in the response object,
+	 * set the status in the response object to Unauthorized(401) and return
+	 * {@code false}. See also <a href="http://www.ietf.org/rfc/rfc2617.txt">RFC
+	 * 2617: HTTP Authentication: Basic and Digest Access Authentication</a>.
+	 * 
+	 * <p>
+	 * If the request requires a secure connection and the {@code getScheme}
+	 * method in the request does not return 'https' or some other acceptable
+	 * secure protocol, then this method should set the status in the response
+	 * object to Forbidden(403) and return {@code false}.
+	 * 
+	 * <p>
+	 * When this method returns {@code false}, the Http Whiteboard
+	 * implementation will send the response back to the client, thereby
+	 * completing the request. When this method returns {@code true}, the Http
+	 * Whiteboard implementation will proceed with servicing the request.
+	 * 
+	 * <p>
+	 * If the specified request has been authenticated, this method must set the
+	 * {@link #AUTHENTICATION_TYPE} request attribute to the type of
+	 * authentication used, and the {@link #REMOTE_USER} request attribute to
+	 * the remote user (request attributes are set using the
+	 * {@code setAttribute} method on the request). If this method does not
+	 * perform any authentication, it must not set these attributes.
+	 * 
+	 * <p>
+	 * If the authenticated user is also authorized to access certain resources,
+	 * this method must set the {@link #AUTHORIZATION} request attribute to the
+	 * {@code Authorization} object obtained from the
+	 * {@code org.osgi.service.useradmin.UserAdmin} service.
+	 * 
+	 * <p>
+	 * The servlet responsible for servicing the specified request determines
+	 * the authentication type and remote user by calling the
+	 * {@code getAuthType} and {@code getRemoteUser} methods, respectively, on
+	 * the request.
+	 * 
+	 * @param request The HTTP request.
+	 * @param response The HTTP response.
+	 * @return {@code true} if the request should be serviced, {@code false} if
+	 *         the request should not be serviced and Http Whiteboard
+	 *         implementation will send the response back to the client.
+	 * @throws java.io.IOException May be thrown by this method. If this occurs,
+	 *         the Http Whiteboard implementation will terminate the request and
+	 *         close the socket.
+	 */
+	public boolean handleSecurity(final HttpServletRequest request,
+			final HttpServletResponse response)
+			throws IOException {
+		return true;
+	}
+
+	/**
+	 * Maps a resource name to a URL.
+	 * 
+	 * <p>
+	 * Called by the Http Whiteboard implementation to map the specified
+	 * resource name to a URL. For servlets, the Http Whiteboard implementation
+	 * will call this method to support the {@code ServletContext} methods
+	 * {@code getResource} and {@code getResourceAsStream}. For resources, the
+	 * Http Whiteboard implementation will call this method to locate the named
+	 * resource.
+	 * 
+	 * <p>
+	 * The context can control from where resources come. For example, the
+	 * resource can be mapped to a file in the bundle's persistent storage area
+	 * via {@code BundleContext.getDataFile(name).toURI().toURL()} or to a
+	 * resource in the context's bundle via {@code getClass().getResource(name)}
+	 * 
+	 * @param name The name of the requested resource.
+	 * @return A URL that a Http Whiteboard implementation can use to read the
+	 *         resource or {@code null} if the resource does not exist.
+	 */
+	public URL getResource(String name) {
+		if ((name != null) && (bundle != null)) {
+			if (name.startsWith("/")) {
+				name = name.substring(1);
+			}
+
+			return bundle.getEntry(name);
+		}
+		return null;
+	}
+
+	/**
+	 * Maps a name to a MIME type.
+	 * 
+	 * <p>
+	 * Called by the Http Whiteboard implementation to determine the MIME type
+	 * for the specified name. For whiteboard services, the Http Whiteboard
+	 * implementation will call this method to support the
+	 * {@code ServletContext} method {@code getMimeType}. For resource servlets,
+	 * the Http Whiteboard implementation will call this method to determine the
+	 * MIME type for the {@code Content-Type} header in the response.
+	 *
+	 * @param name The name for which to determine the MIME type.
+	 * @return The MIME type (e.g. text/html) of the specified name or
+	 *         {@code null} to indicate that the Http Whiteboard implementation
+	 *         should determine the MIME type itself.
+	 */
+	public String getMimeType(final String name) {
+		return null;
+	}
+
+	/**
+	 * Returns a directory-like listing of all the paths to resources within the
+	 * web application whose longest sub-path matches the supplied path
+	 * argument.
+	 * 
+	 * <p>
+	 * Called by the Http Whiteboard implementation to support the
+	 * {@code ServletContext} method {@code getResourcePaths} for whiteboard
+	 * services.
+	 * 
+	 * @param path The partial path used to match the resources, which must
+	 *        start with a /.
+	 * @return A Set containing the directory listing, or {@code null} if there
+	 *         are no resources in the web application whose path begins with
+	 *         the supplied path.
+	 */
+	public Set<String> getResourcePaths(final String path) {
+		if ((path != null) && (bundle != null)) {
+			final Enumeration<URL> e = bundle.findEntries(path, null, false);
+			if (e != null) {
+				final Set<String> result = new LinkedHashSet<String>();
+				while (e.hasMoreElements()) {
+					result.add(e.nextElement().getPath());
+				}
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Gets the real path corresponding to the given virtual path.
+	 * 
+	 * <p>
+	 * Called by the Http Whiteboard implementation to support the
+	 * {@code ServletContext} method {@code getRealPath} for whiteboard
+	 * services.
+	 * 
+	 * @param path The virtual path to be translated to a real path.
+	 * @return The real path, or {@code null} if the translation cannot be
+	 *         performed.
+	 */
+	public String getRealPath(final String path) {
+		return null;
+	}
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/context/ServletContextHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/context/ServletContextHelper.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/context/package-info.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/context/package-info.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/context/package-info.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/context/package-info.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) OSGi Alliance (2010, 2015). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Http Whiteboard Context Package Version 1.0.
+ * 
+ * <p>
+ * Bundles wishing to use this package must list the package in the
+ * Import-Package header of the bundle's manifest. This package has two types of
+ * users: the consumers that use the API in this package and the providers that
+ * implement the API in this package.
+ * 
+ * <p>
+ * Example import for consumers using the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.http.context; version="[1.0,2.0)"}
+ * <p>
+ * Example import for providers implementing the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.http.context; version="[1.0,1.1)"}
+ * 
+ * @author $Id$
+ */
+
+@Version("1.0")
+package org.osgi.service.http.context;
+
+import org.osgi.annotation.versioning.Version;
+

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/context/package-info.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/context/package-info.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntime.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntime.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntime.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntime.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2015). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime;
+
+import org.osgi.annotation.versioning.ProviderType;
+import org.osgi.service.http.runtime.dto.RequestInfoDTO;
+import org.osgi.service.http.runtime.dto.RuntimeDTO;
+
+/**
+ * The HttpServiceRuntime service represents the runtime information of an Http
+ * Whiteboard implementation.
+ *
+ * <p>
+ * It provides access to DTOs representing the current state of the service.
+ * <p>
+ * The HttpServiceRuntime service must be registered with the
+ * {@link HttpServiceRuntimeConstants#HTTP_SERVICE_ENDPOINT} service
+ * property.
+ *
+ * @ThreadSafe
+ * @author $Id$
+ */
+@ProviderType
+public interface HttpServiceRuntime {
+
+	/**
+	 * Return the runtime DTO representing the current state.
+	 * 
+	 * @return The runtime DTO.
+	 */
+	public RuntimeDTO getRuntimeDTO();
+
+	/**
+	 * Return a request info DTO containing the services involved with
+	 * processing a request for the specified path.
+	 * 
+	 * @param path The request path, relative to the root of the Http Whiteboard
+	 *        implementation.
+	 * @return The request info DTO for the specified path.
+	 */
+	public RequestInfoDTO calculateRequestInfoDTO(String path);
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntime.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntime.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntimeConstants.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntimeConstants.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntimeConstants.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntimeConstants.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2015). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime;
+
+/**
+ * Defines standard names for Http Runtime Service constants.
+ * 
+ * @author $Id$
+ */
+public final class HttpServiceRuntimeConstants {
+	private HttpServiceRuntimeConstants() {
+		// non-instantiable
+	}
+
+	/**
+	 * Http Runtime Service service property specifying the endpoints upon which
+	 * the Http Whiteboard implementation is listening.
+	 * 
+	 * <p>
+	 * An endpoint value is a URL or a relative path, to which the Http
+	 * Whiteboard implementation is listening. For example,
+	 * {@code http://192.168.1.10:8080/} or {@code /myapp/}. A relative path may
+	 * be used if the scheme and authority parts of the URL are not known, e.g.
+	 * in a bridged Http Whiteboard implementation. If the Http Whiteboard
+	 * implementation is serving the root context and neither scheme nor
+	 * authority is known, the value of the property is "/". Both, a URL and a
+	 * relative path, must end with a slash.
+	 * <p>
+	 * An Http Whiteboard implementation can be listening on multiple endpoints.
+	 * 
+	 * <p>
+	 * The value of this service property must be of type {@code String},
+	 * {@code String[]}, or {@code Collection<String>}.
+	 */
+	public static final String	HTTP_SERVICE_ENDPOINT	= "osgi.http.endpoint";
+
+	/**
+	 * Http Runtime Service service property to associate the Http Runtime
+	 * Service with one or more HttpService services.
+	 * 
+	 * <p>
+	 * If this Http Whiteboard implementation also implements the Http Service
+	 * Specification, this service property is set to a collection of
+	 * {@code service.id} for the {@code HttpService} services registered by
+	 * this implementation.
+	 * 
+	 * <p>
+	 * The value of this service property must be of type
+	 * {@code Collection<Long>}.
+	 */
+	public static final String	HTTP_SERVICE_ID		= "osgi.http.service.id";
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntimeConstants.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/HttpServiceRuntimeConstants.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/BaseServletDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/BaseServletDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/BaseServletDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/BaseServletDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+import java.util.Map;
+import org.osgi.dto.DTO;
+
+/**
+ * Represents common information about a {@code javax.servlet.Servlet} service.
+ *
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public abstract class BaseServletDTO extends DTO {
+	/**
+	 * The name of the servlet. This value is never {@code null}.
+	 */
+	public String				name;
+
+	/**
+	 * The information string from the servlet.
+	 * <p>
+	 * This is the value returned by the {@code Servlet.getServletInfo()}
+	 * method.
+	 */
+	public String				servletInfo;
+
+	/**
+	 * Specifies whether the servlet supports asynchronous processing.
+	 */
+	public boolean				asyncSupported;
+
+	/**
+	 * The servlet initialization parameters as provided during registration of
+	 * the servlet. Additional parameters like the Http Service Runtime
+	 * attributes are not included. If the service has no initialization
+	 * parameters, the map is empty.
+	 */
+	public Map<String, String>	initParams;
+
+	/**
+	 * The service id of the servlet context for the servlet represented by this
+	 * DTO.
+	 */
+	public long		servletContextId;
+
+	/**
+	 * Service property identifying the servlet. In the case of a servlet
+	 * registered in the service registry and picked up by a Http Whiteboard
+	 * Implementation, this value is not negative and corresponds to the service
+	 * id in the registry. If the servlet has not been registered in the service
+	 * registry, the value is negative and a unique negative value is generated
+	 * by the Http Service Runtime in this case.
+	 */
+	public long		serviceId;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/BaseServletDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/BaseServletDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/DTOConstants.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/DTOConstants.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/DTOConstants.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/DTOConstants.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2015). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Defines standard constants for the DTOs.
+ */
+public final class DTOConstants {
+	private DTOConstants() {
+		// non-instantiable
+	}
+
+	/**
+	 * Failure reason is unknown.
+	 */
+	public static final int	FAILURE_REASON_UNKNOWN						= 0;
+
+	/**
+	 * No matching {@code ServletContextHelper}.
+	 **/
+	public static final int	FAILURE_REASON_NO_SERVLET_CONTEXT_MATCHING	= 1;
+
+	/**
+	 * Matching {@code ServletContextHelper}, but the context is not used due to
+	 * a problem with the context.
+	 */
+	public static final int	FAILURE_REASON_SERVLET_CONTEXT_FAILURE		= 2;
+
+	/**
+	 * Service is shadowed by another service.
+	 * <p>
+	 * For example, a service with the same service properties but a higher
+	 * service ranking.
+	 */
+	public static final int	FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE	= 3;
+
+	/**
+	 * An exception occurred during initializing of the service.
+	 * <p>
+	 * This reason can only happen for servlets and servlet filters.
+	 */
+	public static final int	FAILURE_REASON_EXCEPTION_ON_INIT			= 4;
+
+	/**
+	 * The service is registered in the service registry but getting the service
+	 * fails as it returns {@code null}.
+	 */
+	public static final int	FAILURE_REASON_SERVICE_NOT_GETTABLE			= 5;
+
+	/**
+	 * The service is registered in the service registry but the service
+	 * properties are invalid.
+	 */
+	public static final int	FAILURE_REASON_VALIDATION_FAILED			= 6;
+
+	/**
+	 * The service is not registered as a prototype scoped service and is
+	 * already in use with a servlet context and therefore can't be used with
+	 * another servlet context.
+	 */
+	public static final int	FAILURE_REASON_SERVICE_IN_USE				= 7;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/DTOConstants.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/DTOConstants.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ErrorPageDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ErrorPageDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ErrorPageDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ErrorPageDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Represents a {@code javax.servlet.Servlet} for handling errors and currently
+ * being used by a servlet context.
+ *
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class ErrorPageDTO extends BaseServletDTO {
+	/**
+	 * The exceptions the error page is used for. This array might be
+	 * empty.
+	 */
+	public String[]	exceptions;
+
+	/**
+	 * The error codes the error page is used for. This array might be
+	 * empty.
+	 */
+	public long[]	errorCodes;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ErrorPageDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ErrorPageDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedErrorPageDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedErrorPageDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedErrorPageDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedErrorPageDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Represents a {@code javax.servlet.Servlet} service registered as an error
+ * page but currently not being used by a servlet context due to a problem.
+ * <p>
+ * As the servlet represented by this DTO is not used due to a failure, the
+ * field {@link FailedErrorPageDTO#servletContextId} always returns {@code 0}
+ * and does not point to an existing {@code ServletContextHelper}.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class FailedErrorPageDTO extends ErrorPageDTO {
+
+	/**
+	 * The reason why the servlet represented by this DTO is not used.
+	 * 
+	 * @see DTOConstants#FAILURE_REASON_UNKNOWN
+	 * @see DTOConstants#FAILURE_REASON_EXCEPTION_ON_INIT
+	 * @see DTOConstants#FAILURE_REASON_NO_SERVLET_CONTEXT_MATCHING
+	 * @see DTOConstants#FAILURE_REASON_SERVICE_NOT_GETTABLE
+	 * @see DTOConstants#FAILURE_REASON_SERVLET_CONTEXT_FAILURE
+	 * @see DTOConstants#FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE
+	 */
+	public int	failureReason;
+
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedErrorPageDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedErrorPageDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedFilterDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedFilterDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedFilterDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedFilterDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Represents a servlet {@code Filter} service which is currently not being used
+ * by a servlet context due to a problem.
+ * <p>
+ * As the service represented by this DTO is not used due to a failure, the
+ * field {@link FailedFilterDTO#servletContextId} always returns {@code 0} and
+ * does not point to an existing servlet context.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class FailedFilterDTO extends FilterDTO {
+
+	/**
+	 * The reason why the servlet filter represented by this DTO is not used.
+	 * 
+	 * @see DTOConstants#FAILURE_REASON_UNKNOWN
+	 * @see DTOConstants#FAILURE_REASON_EXCEPTION_ON_INIT
+	 * @see DTOConstants#FAILURE_REASON_NO_SERVLET_CONTEXT_MATCHING
+	 * @see DTOConstants#FAILURE_REASON_SERVICE_NOT_GETTABLE
+	 * @see DTOConstants#FAILURE_REASON_SERVLET_CONTEXT_FAILURE
+	 * @see DTOConstants#FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE
+	 */
+	public int	failureReason;
+
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedFilterDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedFilterDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedListenerDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedListenerDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedListenerDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedListenerDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Represents a listener service which is currently not being used by a servlet
+ * context due to a problem.
+ * <p>
+ * As the listener represented by this DTO is not used due to a failure, the
+ * field {@link FailedErrorPageDTO#servletContextId} always returns {@code 0}
+ * and does not point to an existing servlet context.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class FailedListenerDTO extends ListenerDTO {
+
+	/**
+	 * The reason why the listener represented by this DTO is not used.
+	 * 
+	 * @see DTOConstants#FAILURE_REASON_UNKNOWN
+	 * @see DTOConstants#FAILURE_REASON_EXCEPTION_ON_INIT
+	 * @see DTOConstants#FAILURE_REASON_NO_SERVLET_CONTEXT_MATCHING
+	 * @see DTOConstants#FAILURE_REASON_SERVICE_NOT_GETTABLE
+	 * @see DTOConstants#FAILURE_REASON_SERVLET_CONTEXT_FAILURE
+	 * @see DTOConstants#FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE
+	 */
+	public int	failureReason;
+
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedListenerDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedListenerDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedPreprocessorDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedPreprocessorDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedPreprocessorDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedPreprocessorDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Represents a preprocessor service which is currently not being used due to a
+ * problem.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ * @since 1.1
+ */
+public class FailedPreprocessorDTO extends PreprocessorDTO {
+
+	/**
+	 * The reason why the preprocessor represented by this DTO is not used.
+	 * 
+	 * @see DTOConstants#FAILURE_REASON_UNKNOWN
+	 * @see DTOConstants#FAILURE_REASON_EXCEPTION_ON_INIT
+	 * @see DTOConstants#FAILURE_REASON_SERVICE_NOT_GETTABLE
+	 */
+	public int	failureReason;
+
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedPreprocessorDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedPreprocessorDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedResourceDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedResourceDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedResourceDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedResourceDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Represents a resource definition which is currently not being used by a
+ * servlet context due to a problem.
+ * <p>
+ * As the resource represented by this DTO is not used due to a failure, the
+ * field {@link FailedResourceDTO#servletContextId} always returns {@code 0} and
+ * does not point to an existing servlet context.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class FailedResourceDTO extends ResourceDTO {
+
+	/**
+	 * The reason why the resource represented by this DTO is not used.
+	 * 
+	 * @see DTOConstants#FAILURE_REASON_UNKNOWN
+	 * @see DTOConstants#FAILURE_REASON_EXCEPTION_ON_INIT
+	 * @see DTOConstants#FAILURE_REASON_NO_SERVLET_CONTEXT_MATCHING
+	 * @see DTOConstants#FAILURE_REASON_SERVICE_NOT_GETTABLE
+	 * @see DTOConstants#FAILURE_REASON_SERVLET_CONTEXT_FAILURE
+	 * @see DTOConstants#FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE
+	 */
+	public int	failureReason;
+
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedResourceDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedResourceDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletContextDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletContextDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletContextDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletContextDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Represents a servlet context that is currently not used due to some problem.
+ * 
+ * The following fields return an empty array for a
+ * {@code FailedServletContextDTO}:
+ * <ul>
+ * <li>{@link ServletContextDTO#servletDTOs}</li>
+ * <li>{@link ServletContextDTO#resourceDTOs}</li>
+ * <li>{@link ServletContextDTO#filterDTOs}</li>
+ * <li>{@link ServletContextDTO#errorPageDTOs}</li>
+ * <li>{@link ServletContextDTO#listenerDTOs}</li>
+ * </ul>
+ * <p>
+ * The method {@link ServletContextDTO#attributes} returns an empty map for a
+ * {@code FailedServletContextDTO}.
+ *
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class FailedServletContextDTO extends ServletContextDTO {
+
+	/**
+	 * The reason why the servlet context represented by this DTO is not used.
+	 * 
+	 * @see DTOConstants#FAILURE_REASON_UNKNOWN
+	 * @see DTOConstants#FAILURE_REASON_EXCEPTION_ON_INIT
+	 * @see DTOConstants#FAILURE_REASON_NO_SERVLET_CONTEXT_MATCHING
+	 * @see DTOConstants#FAILURE_REASON_SERVICE_NOT_GETTABLE
+	 * @see DTOConstants#FAILURE_REASON_SERVLET_CONTEXT_FAILURE
+	 * @see DTOConstants#FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE
+	 */
+	public int	failureReason;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletContextDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletContextDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+/**
+ * Represents a {@code javax.servlet.Servlet} service which is currently not
+ * being used by a servlet context due to a problem.
+ * <p>
+ * As the servlet represented by this DTO is not used due to a failure, the
+ * field {@link FailedErrorPageDTO#servletContextId} always returns {@code 0}
+ * and does not point to an existing servlet context.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class FailedServletDTO extends ServletDTO {
+
+	/**
+	 * The reason why the servlet represented by this DTO is not used.
+	 * 
+	 * @see DTOConstants#FAILURE_REASON_UNKNOWN
+	 * @see DTOConstants#FAILURE_REASON_EXCEPTION_ON_INIT
+	 * @see DTOConstants#FAILURE_REASON_NO_SERVLET_CONTEXT_MATCHING
+	 * @see DTOConstants#FAILURE_REASON_SERVICE_NOT_GETTABLE
+	 * @see DTOConstants#FAILURE_REASON_SERVLET_CONTEXT_FAILURE
+	 * @see DTOConstants#FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE
+	 */
+	public int	failureReason;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FailedServletDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FilterDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FilterDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FilterDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FilterDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+import java.util.Map;
+import org.osgi.dto.DTO;
+
+/**
+ * Represents a servlet {@code javax.servlet.Filter} service currently being
+ * used for by a servlet context.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class FilterDTO extends DTO {
+	/**
+	 * The name of the servlet filter. This field is never {@code null}.
+	 */
+	public String				name;
+
+	/**
+	 * The request mappings for the servlet filter.
+	 * 
+	 * <p>
+	 * The specified patterns are used to determine whether a request is mapped
+	 * to the servlet filter. This array might be empty.
+	 */
+	public String[]				patterns;
+
+	/**
+	 * The servlet names for the servlet filter.
+	 * 
+	 * <p>
+	 * The specified names are used to determine the servlets whose requests are
+	 * mapped to the servlet filter. This array might be empty.
+	 */
+	public String[]				servletNames;
+
+	/**
+	 * The request mappings for the servlet filter.
+	 * 
+	 * <p>
+	 * The specified regular expressions are used to determine whether a request
+	 * is mapped to the servlet filter. This array might be empty.
+	 */
+	public String[]				regexs;
+
+	/**
+	 * Specifies whether the servlet filter supports asynchronous processing.
+	 */
+	public boolean				asyncSupported;
+
+	/**
+	 * The dispatcher associations for the servlet filter.
+	 * 
+	 * <p>
+	 * The specified names are used to determine in what occasions the servlet
+	 * filter is called. This array is never {@code null}.
+	 */
+	public String[]				dispatcher;
+
+	/**
+	 * The servlet filter initialization parameters as provided during
+	 * registration of the servlet filter. Additional parameters like the Http
+	 * Service Runtime attributes are not included. If the servlet filter has
+	 * not initialization parameters, this map is empty.
+	 */
+	public Map<String, String>	initParams;
+
+	/**
+	 * Service property identifying the servlet filter. In the case of a servlet
+	 * filter registered in the service registry and picked up by a Http
+	 * Whiteboard Implementation, this value is not negative and corresponds to
+	 * the service id in the registry. If the servlet filter has not been
+	 * registered in the service registry, the value is negative and a unique
+	 * negative value is generated by the Http Service Runtime in this case.
+	 */
+	public long					serviceId;
+
+	/**
+	 * The service id of the servlet context for the servlet filter represented
+	 * by this DTO.
+	 */
+	public long		servletContextId;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FilterDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/FilterDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ListenerDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ListenerDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ListenerDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ListenerDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+import org.osgi.dto.DTO;
+
+/**
+ * Represents a listener currently being used by a servlet context.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class ListenerDTO extends DTO {
+
+	/**
+	 * The fully qualified type names the listener. This array is never empty.
+	 */
+	public String[]				types;
+
+	/**
+	 * Service property identifying the listener. In the case of a Listener
+	 * registered in the service registry and picked up by a Http Whiteboard
+	 * Implementation, this value is not negative and corresponds to the service
+	 * id in the registry. If the listener has not been registered in the
+	 * service registry, the value is negative and a unique negative value is
+	 * generated by the Http Service Runtime in this case.
+	 */
+	public long					serviceId;
+
+	/**
+	 * The service id of the servlet context for the listener represented by
+	 * this DTO.
+	 */
+	public long		servletContextId;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ListenerDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ListenerDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/PreprocessorDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/PreprocessorDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/PreprocessorDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/PreprocessorDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+import java.util.Map;
+
+import org.osgi.dto.DTO;
+
+/**
+ * Represents a preprocessor
+ * {@code org.osgi.service.http.whiteboard.Preprocessor} service currently being
+ * used during request processing.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ * @since 1.1
+ */
+public class PreprocessorDTO extends DTO {
+
+	/**
+	 * The preprocessor initialization parameters as provided during
+	 * registration of the preprocessor. Additional parameters like the Http
+	 * Service Runtime attributes are not included. If the preprocessor has not
+	 * initialization parameters, this map is empty.
+	 */
+	public Map<String, String>	initParams;
+
+	/**
+	 * Service property identifying the preprocessor. In the case of a
+	 * preprocessor registered in the service registry and picked up by a Http
+	 * Whiteboard Implementation, this value is not negative and corresponds to
+	 * the service id in the registry. If the preprocessor has not been
+	 * registered in the service registry, the value is negative and a unique
+	 * negative value is generated by the Http Service Runtime in this case.
+	 */
+	public long					serviceId;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/PreprocessorDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/PreprocessorDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RequestInfoDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RequestInfoDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RequestInfoDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RequestInfoDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+import org.osgi.dto.DTO;
+
+/**
+ * Represents the services used to process a specific request.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class RequestInfoDTO extends DTO {
+	/**
+	 * The path of the request relative to the root.
+	 */
+	public String				path;
+
+	/**
+	 * The service id of the servlet context processing the request represented
+	 * by this DTO.
+	 */
+	public long		servletContextId;
+	
+	/**
+	 * The servlet filters processing this request. If no servlet filters are
+	 * called for processing this request, an empty array is returned.
+	 */
+	public FilterDTO[] filterDTOs;
+	
+	/**
+	 * The servlet processing this request. If the request is processed by a
+	 * servlet, this field points to the DTO of the servlet. If the request is
+	 * processed by another type of component like a resource, this field is
+	 * {@code null}.
+	 */
+	public ServletDTO servletDTO;
+
+	/**
+	 * The resource processing this request. If the request is processed by a
+	 * resource, this field points to the DTO of the resource. If the request is
+	 * processed by another type of component like a servlet, this field is
+	 * {@code null}.
+	 */
+	public ResourceDTO resourceDTO;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RequestInfoDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RequestInfoDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ResourceDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ResourceDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ResourceDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ResourceDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+import org.osgi.dto.DTO;
+
+/**
+ * Represents a resource definition currently being used by a servlet context.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class ResourceDTO extends DTO {
+	/**
+	 * The request mappings for the resource.
+	 * 
+	 * <p>
+	 * The specified patterns are used to determine whether a request is mapped
+	 * to the resource. This value is never {@code null}.
+	 */
+	public String[]				patterns;
+
+	/**
+	 * The prefix of the resource.
+	 */
+	public String				prefix;
+
+	/**
+	 * Service property identifying the resource. In the case of a resource
+	 * registered in the service registry and picked up by a Http Whiteboard
+	 * Implementation, this value is not negative and corresponds to the service
+	 * id in the registry. If the resource has not been registered in the
+	 * service registry, the value is negative and a unique negative value is
+	 * generated by the Http Service Runtime in this case.
+	 */
+	public long					serviceId;
+
+	/**
+	 * The service id of the servlet context for the resource represented by
+	 * this DTO.
+	 */
+	public long		servletContextId;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ResourceDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ResourceDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RuntimeDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RuntimeDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RuntimeDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RuntimeDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2015). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+import org.osgi.dto.DTO;
+import org.osgi.framework.dto.ServiceReferenceDTO;
+
+/**
+ * Represents the state of a Http Service Runtime.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class RuntimeDTO extends DTO {
+
+	/**
+	 * The DTO for the corresponding
+	 * {@code org.osgi.service.http.runtime.HttpServiceRuntime}. This value is
+	 * never {@code null}.
+	 */
+	public ServiceReferenceDTO			serviceDTO;
+
+	/**
+	 * Returns the representations of the
+	 * {@code org.osgi.service.http.whiteboard.Preprocessor} objects used by the
+	 * Http Service Runtime. The returned array may be empty if the Http Service
+	 * Runtime is currently not using any
+	 * {@code  org.osgi.service.http.whiteboard.Preprocessor} objects.
+	 * 
+	 * @since 1.1.0
+	 */
+	public PreprocessorDTO[]			preprocessorDTOs;
+
+	/**
+	 * Returns the representations of the {@code javax.servlet.ServletContext}
+	 * objects used by the Http Service Runtime. The returned array may be empty
+	 * if the Http Service Runtime is currently not using any
+	 * {@code javax.servlet.ServletContext} objects.
+	 */
+	public ServletContextDTO[]			servletContextDTOs;
+
+	/**
+	 * Returns the representations of the {@code javax.servlet.ServletContext}
+	 * objects currently not used by the Http service runtime due to some
+	 * problem. The returned array may be empty.
+	 */
+	public FailedServletContextDTO[] failedServletContextDTOs;
+
+	/**
+	 * Returns the representations of the {@code javax.servlet.Servlet} services
+	 * associated with this runtime but currently not used due to some problem.
+	 * The returned array may be empty.
+	 */
+	public FailedServletDTO[] failedServletDTOs;
+
+	/**
+	 * Returns the representations of the resources associated with this runtime
+	 * but currently not used due to some problem. The returned array may be
+	 * empty.
+	 */
+	public FailedResourceDTO[] failedResourceDTOs;
+
+	/**
+	 * Returns the representations of the servlet
+	 * {@code org.osgi.service.http.whiteboard.Preprocessor} services associated
+	 * with this runtime but currently not used due to some problem. The
+	 * returned array may be empty.
+	 */
+	public FailedPreprocessorDTO[]		failedPreprocessorDTOs;
+
+	/**
+	 * Returns the representations of the {@code javax.servlet.Filter} services
+	 * associated with this runtime but currently not used due to some problem.
+	 * The returned array may be empty.
+	 */
+	public FailedFilterDTO[] failedFilterDTOs;
+
+	/**
+	 * Returns the representations of the error page
+	 * {@code javax.servlet.Servlet} services associated with this runtime but
+	 * currently not used due to some problem. The returned array may be empty.
+	 */
+	public FailedErrorPageDTO[] failedErrorPageDTOs;
+
+	/**
+	 * Returns the representations of the listeners associated with this runtime
+	 * but currently not used due to some problem. The returned array may be
+	 * empty.
+	 */
+	public FailedListenerDTO[] failedListenerDTOs;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RuntimeDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/RuntimeDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletContextDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletContextDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletContextDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletContextDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2015). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+import java.util.Map;
+import org.osgi.dto.DTO;
+
+/**
+ * Represents a {@code javax.servlet.ServletContext} created for servlets,
+ * resources, servlet Filters, and listeners associated with that servlet
+ * context. The Servlet Context is usually backed by a
+ * {@link org.osgi.service.http.context.ServletContextHelper} service.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class ServletContextDTO extends DTO {
+	/**
+	 * The name of the servlet context.
+	 * The name of the corresponding
+	 * {@link org.osgi.service.http.context.ServletContextHelper}.
+	 * <p>
+	 * This is the value returned by the
+	 * {@code ServletContext.getServletContextName()} method.
+	 */
+	public String name;
+
+	/**
+	 * The servlet context path.
+	 * 
+	 * This is the value returned by the {@code ServletContext.getContextPath()}
+	 * method.
+	 */
+	public String				contextPath;
+
+	/**
+	 * The servlet context initialization parameters. This is the set of
+	 * parameters provided when registering this context. Additional parameters
+	 * like the Http Service Runtime attributes are not included. If the context
+	 * has no initialization parameters, this map is empty.
+	 */
+	public Map<String, String>	initParams;
+
+	/**
+	 * The servlet context attributes.
+	 * 
+	 * <p>
+	 * The value type must be a numerical type, {@code Boolean}, {@code String},
+	 * {@code DTO} or an array of any of the former. Therefore this method will
+	 * only return the attributes of the servlet context conforming to this
+	 * constraint. Other attributes are omitted. If there are no attributes
+	 * conforming to the constraint, an empty map is returned.
+	 */
+	public Map<String, Object>	attributes;
+
+	/**
+	 * Service property identifying the servlet context. In the case of a
+	 * servlet context backed by a {@code ServletContextHelper} registered in
+	 * the service registry and picked up by a Http Whiteboard Implementation,
+	 * this value is not negative and corresponds to the service id in the
+	 * registry. If the servlet context is not backed by a service registered in
+	 * the service registry, the value is negative and a unique negative value
+	 * is generated by the Http Service Runtime in this case.
+	 */
+	public long					serviceId;
+
+	/**
+	 * Returns the representations of the {@code Servlet} services associated
+	 * with this context.
+	 * 
+	 * The representations of the {@code Servlet} services associated with this
+	 * context. The returned array may be empty if this context is currently not
+	 * associated with any {@code Servlet} services.
+	 */
+	public ServletDTO[]			servletDTOs;
+
+	/**
+	 * Returns the representations of the resource services associated with this
+	 * context.
+	 * 
+	 * The representations of the resource services associated with this
+	 * context. The returned array may be empty if this context is currently not
+	 * associated with any resource services.
+	 */
+	public ResourceDTO[]		resourceDTOs;
+
+	/**
+	 * Returns the representations of the servlet {@code Filter} services
+	 * associated with this context.
+	 * 
+	 * The representations of the servlet {@code Filter} services associated
+	 * with this context. The returned array may be empty if this context is
+	 * currently not associated with any servlet {@code Filter} services.
+	 */
+	public FilterDTO[]			filterDTOs;
+
+	/**
+	 * Returns the representations of the error page {@code Servlet} services
+	 * associated with this context.
+	 * 
+	 * The representations of the error page {@code Servlet} services associated
+	 * with this context. The returned array may be empty if this context is
+	 * currently not associated with any error pages.
+	 */
+	public ErrorPageDTO[]		errorPageDTOs;
+
+	/**
+	 * Returns the representations of the listener services associated with this
+	 * context.
+	 * 
+	 * The representations of the listener services associated with this
+	 * context. The returned array may be empty if this context is currently not
+	 * associated with any listener services.
+	 */
+	public ListenerDTO[]		listenerDTOs;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletContextDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletContextDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletDTO.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletDTO.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletDTO.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletDTO.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.http.runtime.dto;
+
+
+/**
+ * Represents a {@code javax.servlet.Servlet} currently being used by a servlet
+ * context.
+ * 
+ * @NotThreadSafe
+ * @author $Id$
+ */
+public class ServletDTO extends BaseServletDTO {
+	/**
+	 * The request mappings for the servlet.
+	 * 
+	 * <p>
+	 * The specified patterns are used to determine whether a request is mapped
+	 * to the servlet. This field is never {@code null}. The array might be empty.
+	 */
+	public String[]				patterns;
+
+	/**
+	 * Specifies whether multipart support is enabled.
+	 */
+	public boolean				multipartEnabled;
+
+	/**
+	 * Specifies the size threshold after which the file will be written to disk.
+	 */
+	public int					multipartFileSizeThreshold;
+
+	/**
+	 * Specifies the location where the files can be stored on disk.
+	 */
+	public String				multipartLocation;
+
+	/**
+	 * Specifies the maximum size of a file being uploaded.
+	 */
+	public long					multipartMaxFileSize;
+
+	/**
+	 * Specifies the maximum request size.
+	 */
+	public long					multipartMaxRequestSize;
+}

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletDTO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/ServletDTO.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/package-info.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/package-info.java?rev=1777088&view=auto
==============================================================================
--- felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/package-info.java (added)
+++ felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/package-info.java Tue Jan  3 08:12:45 2017
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) OSGi Alliance (2010, 2015). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Http Runtime DTO Package Version 1.0.
+ * 
+ * <p>
+ * Bundles wishing to use this package must list the package in the
+ * Import-Package header of the bundle's manifest. This package has two types of
+ * users: the consumers that use the API in this package and the providers that
+ * implement the API in this package.
+ * 
+ * <p>
+ * Example import for consumers using the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.http.runtime.dto; version="[1.0,2.0)"}
+ * <p>
+ * Example import for providers implementing the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.http.runtime.dto; version="[1.0,1.1)"}
+ * 
+ * @author $Id$
+ */
+
+@Version("1.1")
+package org.osgi.service.http.runtime.dto;
+
+import org.osgi.annotation.versioning.Version;
+

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/package-info.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/http/api/src/main/java/org/osgi/service/http/runtime/dto/package-info.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url