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.geronimo.connector.outbound.connectionmanagerconfig;
019
020 import org.apache.geronimo.connector.outbound.ConnectionInterceptor;
021 import org.apache.geronimo.connector.outbound.PoolingAttributes;
022 import org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor;
023 import org.apache.geronimo.connector.outbound.SinglePoolMatchAllConnectionInterceptor;
024
025 /**
026 * @version $Rev: 550546 $ $Date: 2007-06-25 12:52:11 -0400 (Mon, 25 Jun 2007) $
027 */
028 public class SinglePool implements PoolingSupport {
029 private int maxSize;
030 private int minSize;
031 private int blockingTimeoutMilliseconds;
032 private int idleTimeoutMinutes;
033 private boolean matchOne;
034 private boolean matchAll;
035 private boolean selectOneAssumeMatch;
036
037 private transient PoolingAttributes pool;
038
039 public SinglePool(int maxSize, int minSize, int blockingTimeoutMilliseconds, int idleTimeoutMinutes, boolean matchOne, boolean matchAll, boolean selectOneAssumeMatch) {
040 this.maxSize = maxSize;
041 this.minSize = minSize;
042 this.blockingTimeoutMilliseconds = blockingTimeoutMilliseconds;
043 this.idleTimeoutMinutes = idleTimeoutMinutes;
044 this.matchOne = matchOne;
045 this.matchAll = matchAll;
046 this.selectOneAssumeMatch = selectOneAssumeMatch;
047 }
048
049 public int getMaxSize() {
050 return maxSize;
051 }
052
053 public void setMaxSize(int maxSize) {
054 this.maxSize = maxSize;
055 }
056
057 public int getMinSize() {
058 return minSize;
059 }
060
061 public void setMinSize(int minSize) {
062 this.minSize = minSize;
063 }
064
065 public int getBlockingTimeoutMilliseconds() {
066 return blockingTimeoutMilliseconds;
067 }
068
069 public void setBlockingTimeoutMilliseconds(int blockingTimeoutMilliseconds) {
070 this.blockingTimeoutMilliseconds = blockingTimeoutMilliseconds;
071 if (pool != null) {
072 pool.setBlockingTimeoutMilliseconds(blockingTimeoutMilliseconds);
073 }
074 }
075
076 public int getIdleTimeoutMinutes() {
077 return idleTimeoutMinutes;
078 }
079
080 public void setIdleTimeoutMinutes(int idleTimeoutMinutes) {
081 this.idleTimeoutMinutes = idleTimeoutMinutes;
082 if (pool != null) {
083 pool.setIdleTimeoutMinutes(idleTimeoutMinutes);
084 }
085 }
086
087 public boolean isMatchOne() {
088 return matchOne;
089 }
090
091 public void setMatchOne(boolean matchOne) {
092 this.matchOne = matchOne;
093 }
094
095 public boolean isMatchAll() {
096 return matchAll;
097 }
098
099 public void setMatchAll(boolean matchAll) {
100 this.matchAll = matchAll;
101 }
102
103 public boolean isSelectOneAssumeMatch() {
104 return selectOneAssumeMatch;
105 }
106
107 public void setSelectOneAssumeMatch(boolean selectOneAssumeMatch) {
108 this.selectOneAssumeMatch = selectOneAssumeMatch;
109 }
110
111 public ConnectionInterceptor addPoolingInterceptors(ConnectionInterceptor tail) {
112 if (isMatchAll()) {
113 SinglePoolMatchAllConnectionInterceptor pool = new SinglePoolMatchAllConnectionInterceptor(tail,
114 getMaxSize(),
115 getMinSize(),
116 getBlockingTimeoutMilliseconds(),
117 getIdleTimeoutMinutes());
118 this.pool = pool;
119 return pool;
120
121 } else {
122 SinglePoolConnectionInterceptor pool = new SinglePoolConnectionInterceptor(tail,
123 getMaxSize(),
124 getMinSize(),
125 getBlockingTimeoutMilliseconds(),
126 getIdleTimeoutMinutes(),
127 isSelectOneAssumeMatch());
128 this.pool = pool;
129 return pool;
130 }
131 }
132
133 public int getPartitionCount() {
134 return 1;
135 }
136
137 public int getPartitionMaxSize() {
138 return maxSize;
139 }
140
141 public void setPartitionMaxSize(int maxSize) throws InterruptedException {
142 if (pool != null) {
143 pool.setPartitionMaxSize(maxSize);
144 }
145 this.maxSize = maxSize;
146 }
147
148 public int getPartitionMinSize() {
149 return minSize;
150 }
151
152 public void setPartitionMinSize(int minSize) {
153 if (pool != null) {
154 pool.setPartitionMinSize(minSize);
155 }
156 this.minSize = minSize;
157 }
158
159 public int getIdleConnectionCount() {
160 return pool == null ? 0 : pool.getIdleConnectionCount();
161 }
162
163 public int getConnectionCount() {
164 return pool == null ? 0 : pool.getConnectionCount();
165 }
166 }