/*
 * Copyright (c) OSGi Alliance (2012, 2017). 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: ea523e825055d4a64329d48fe37d22c1a4c01a10 $
 */
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;
}
