KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > mina > integration > spring > ExecutorThreadModelFactoryBean


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.ExecutorThreadModel;
23 import org.springframework.beans.factory.FactoryBean;
24 import org.springframework.beans.factory.InitializingBean;
25 import org.springframework.util.Assert;
26
27 import java.util.concurrent.Executor JavaDoc;
28
29 /**
30  * Spring {@link FactoryBean} which makes it possible to set up a MINA
31  * {@link ExecutorThreadModel} using Spring. The <code>serviceName</code>
32  * property must be set using {@link #setServiceName(String)}.
33  *
34  * @author The Apache Directory Project (mina-dev@directory.apache.org)
35  * @version $Rev$, $Date$
36  */

37 public class ExecutorThreadModelFactoryBean implements FactoryBean,
38         InitializingBean {
39     private String JavaDoc serviceName = null;
40
41     private Executor JavaDoc executor = null;
42
43     /**
44      * Sets the {@link Executor} to use. If not set a default {@link Executor}
45      * will be used by the {@link ExecutorThreadModel} created by this
46      * factory bean.
47      *
48      * @param executor the executor.
49      * @throws IllegalArgumentException if the specified value is
50      * <code>null</code>.
51      */

52     public void setExecutor(Executor JavaDoc executor) {
53         Assert.notNull(executor, "Property 'executor' may not be null");
54         this.executor = executor;
55     }
56
57     /**
58      * Sets the name of the service as used in the call to
59      * {@link ExecutorThreadModel#getInstance(String)}. This property is
60      * required.
61      *
62      * @param executor the executor.
63      * @throws IllegalArgumentException if the specified value is
64      * <code>null</code>.
65      */

66     public void setServiceName(String JavaDoc serviceName) {
67         Assert.notNull(serviceName, "Property 'serviceName' may not be null");
68         this.serviceName = serviceName;
69     }
70
71     public Class JavaDoc getObjectType() {
72         return ExecutorThreadModel.class;
73     }
74
75     public Object JavaDoc getObject() throws Exception JavaDoc {
76         ExecutorThreadModel model = ExecutorThreadModel
77                 .getInstance(serviceName);
78         if (executor != null) {
79             model.setExecutor(executor);
80         }
81         return model;
82     }
83
84     public boolean isSingleton() {
85         return true;
86     }
87
88     public void afterPropertiesSet() throws Exception JavaDoc {
89         Assert.notNull(serviceName, "Property 'serviceName' may not be null");
90     }
91
92 }
93
Popular Tags