1 /*
2  * JBoss, Home of Professional Open Source.
3  * Copyright 2014 Red Hat, Inc., and individual contributors
4  * as indicated by the @author tags.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  */

18
19 package io.undertow.servlet.core;
20
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import io.undertow.servlet.api.FilterInfo;
25 import io.undertow.servlet.handlers.ServletPathMatches;
26 import io.undertow.util.CopyOnWriteMap;
27
28 /**
29  * Runtime representation of filters. Basically a container for {@link io.undertow.servlet.core.ManagedFilter} instances
30  *
31  * @author Stuart Douglas
32  */

33 public class ManagedFilters {
34
35     private final Map<String, ManagedFilter> managedFilterMap = new CopyOnWriteMap<>();
36     private final DeploymentImpl deployment;
37     private final ServletPathMatches servletPathMatches;
38
39     public ManagedFilters(final DeploymentImpl deployment, final ServletPathMatches servletPathMatches) {
40         this.deployment = deployment;
41         this.servletPathMatches = servletPathMatches;
42     }
43
44     public ManagedFilter addFilter(final FilterInfo filterInfo) {
45         ManagedFilter managedFilter = new ManagedFilter(filterInfo, deployment.getServletContext());
46         managedFilterMap.put(filterInfo.getName(),managedFilter);
47         deployment.addLifecycleObjects(managedFilter);
48         servletPathMatches.invalidate();
49         return managedFilter;
50     }
51
52     public ManagedFilter getManagedFilter(final String name) {
53         return managedFilterMap.get(name);
54     }
55
56     public Map<String, ManagedFilter> getFilters() {
57         return new HashMap<>(managedFilterMap);
58     }
59
60 }
61