View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.dbcp.datasources;
19  
20  import javax.naming.RefAddr;
21  import javax.naming.Reference;
22  
23  /**
24   * A JNDI ObjectFactory which creates <code>SharedPoolDataSource</code>s
25   * @version $Revision: 1023401 $ $Date: 2010-10-16 21:54:24 -0400 (Sat, 16 Oct 2010) $
26   */
27  public class SharedPoolDataSourceFactory
28      extends InstanceKeyObjectFactory
29  {
30      private static final String SHARED_POOL_CLASSNAME =
31          SharedPoolDataSource.class.getName();
32  
33      protected boolean isCorrectClass(String className) {
34          return SHARED_POOL_CLASSNAME.equals(className);
35      }
36  
37      protected InstanceKeyDataSource getNewInstance(Reference ref) {
38          SharedPoolDataSource spds = new SharedPoolDataSource();
39          RefAddr ra = ref.get("maxActive");
40          if (ra != null && ra.getContent() != null) {
41              spds.setMaxActive(
42                  Integer.parseInt(ra.getContent().toString()));
43          }
44  
45          ra = ref.get("maxIdle");
46          if (ra != null && ra.getContent() != null) {
47              spds.setMaxIdle(
48                  Integer.parseInt(ra.getContent().toString()));
49          }
50  
51          ra = ref.get("maxWait");
52          if (ra != null && ra.getContent() != null) {
53              spds.setMaxWait(
54                  Integer.parseInt(ra.getContent().toString()));
55          }
56          
57          return spds;
58      }            
59  }
60