001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.commons.dbcp.datasources;
019
020 import javax.naming.RefAddr;
021 import javax.naming.Reference;
022
023 /**
024 * A JNDI ObjectFactory which creates <code>SharedPoolDataSource</code>s
025 * @version $Revision: 479137 $ $Date: 2006-11-25 10:51:48 -0500 (Sat, 25 Nov 2006) $
026 */
027 public class SharedPoolDataSourceFactory
028 extends InstanceKeyObjectFactory
029 {
030 private static final String SHARED_POOL_CLASSNAME =
031 SharedPoolDataSource.class.getName();
032
033 protected boolean isCorrectClass(String className) {
034 return SHARED_POOL_CLASSNAME.equals(className);
035 }
036
037 protected InstanceKeyDataSource getNewInstance(Reference ref) {
038 SharedPoolDataSource spds = new SharedPoolDataSource();
039 RefAddr ra = ref.get("maxActive");
040 if (ra != null && ra.getContent() != null) {
041 spds.setMaxActive(
042 Integer.parseInt(ra.getContent().toString()));
043 }
044
045 ra = ref.get("maxIdle");
046 if (ra != null && ra.getContent() != null) {
047 spds.setMaxIdle(
048 Integer.parseInt(ra.getContent().toString()));
049 }
050
051 ra = ref.get("maxWait");
052 if (ra != null && ra.getContent() != null) {
053 spds.setMaxWait(
054 Integer.parseInt(ra.getContent().toString()));
055 }
056
057 return spds;
058 }
059 }
060