1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. 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,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 *
19 */
20 package org.apache.mina.integration.spring;
21
22 import org.apache.mina.common.IoFilter;
23 import org.springframework.beans.factory.InitializingBean;
24 import org.springframework.util.Assert;
25
26 /**
27 * Associates a name with an {@link IoFilter}. This makes it possible to configure
28 * named filters using Spring.
29 * <p>
30 * Use this class when you want to configure the
31 * filters added to the filter chain of all sessions created from a particular
32 * {@link org.apache.mina.common.IoService} created using one of the
33 * {@link org.apache.mina.integration.spring.IoAcceptorFactoryBean}
34 * sub-classes but you don't want the names to be generated automatically.
35 * </p>
36 * <p>
37 * This class can also be used when creating {@link Binding} objects. This lets
38 * one configure per-port filters. These filters will only be added to the
39 * filter chain of sessions for incoming connections on the port specified by
40 * the {@link Binding}. Note that {@link Binding} can also be configured to
41 * generate filter names automatically. In that case you add the {@link IoFilter}
42 * instances directly to the {@link Binding}.
43 * </p>
44 *
45 * @author The Apache Directory Project (mina-dev@directory.apache.org)
46 * @version $Rev: 555855 $, $Date: 2007-07-13 12:19:00 +0900 (Fri, 13 Jul 2007) $
47 *
48 * @see org.apache.mina.integration.spring.IoAcceptorFactoryBean
49 * @see org.apache.mina.integration.spring.Binding
50 */
51 public class IoFilterMapping implements InitializingBean {
52 private String name = null;
53
54 private IoFilter filter = null;
55
56 /**
57 * Creates a new empty instance.
58 */
59 public IoFilterMapping() {
60 }
61
62 /**
63 * Creates a new instance using the specified name and filter.
64 *
65 * @param name the name.
66 * @param filter the filter.
67 * @throws IllegalArgumentException if any of the arguments are
68 * <code>null</code>.
69 */
70 public IoFilterMapping(String name, IoFilter filter) {
71 Assert.notNull(name, "Argument 'name' may not be null");
72 Assert.notNull(filter, "Argument 'filter' may not be null");
73
74 this.name = name;
75 this.filter = filter;
76 }
77
78 /**
79 * Returns the filter of this mapping.
80 *
81 * @return the filter.
82 */
83 public IoFilter getFilter() {
84 return filter;
85 }
86
87 /**
88 * Returns the name associated with the filter.
89 *
90 * @return the name.
91 */
92 public String getName() {
93 return name;
94 }
95
96 /**
97 * Sets the filter of this mapping.
98 *
99 * @param filter the filter.
100 * @throws IllegalArgumentException if the specified value is
101 * <code>null</code>.
102 */
103 public void setFilter(IoFilter filter) {
104 Assert.notNull(filter, "Argument 'filter' may not be null");
105 this.filter = filter;
106 }
107
108 /**
109 * Sets the name associated with the filter.
110 *
111 * @param name the name.
112 * @throws IllegalArgumentException if the specified value is
113 * <code>null</code>.
114 */
115 public void setName(String name) {
116 Assert.notNull(name, "Argument 'name' may not be null");
117 this.name = name;
118 }
119
120 public void afterPropertiesSet() throws Exception {
121 Assert.notNull(name, "Argument 'name' may not be null");
122 Assert.notNull(filter, "Argument 'filter' may not be null");
123 }
124 }