blob: 96c809955386cad321df02f9e28ae620f219b957 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.geronimo.connector.outbound.connectionmanagerconfig;
import org.apache.geronimo.connector.outbound.ConnectionInterceptor;
import org.apache.geronimo.connector.outbound.PoolingAttributes;
import org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor;
import org.apache.geronimo.connector.outbound.SinglePoolMatchAllConnectionInterceptor;
/**
* @version $Rev$ $Date$
*/
public class SinglePool implements PoolingSupport {
private int maxSize;
private int minSize;
private int blockingTimeoutMilliseconds;
private int idleTimeoutMinutes;
private boolean matchOne;
private boolean matchAll;
private boolean selectOneAssumeMatch;
private transient PoolingAttributes pool;
public SinglePool(int maxSize, int minSize, int blockingTimeoutMilliseconds, int idleTimeoutMinutes, boolean matchOne, boolean matchAll, boolean selectOneAssumeMatch) {
this.maxSize = maxSize;
this.minSize = minSize;
this.blockingTimeoutMilliseconds = blockingTimeoutMilliseconds;
this.idleTimeoutMinutes = idleTimeoutMinutes;
this.matchOne = matchOne;
this.matchAll = matchAll;
this.selectOneAssumeMatch = selectOneAssumeMatch;
}
public int getMaxSize() {
return maxSize;
}
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
public int getMinSize() {
return minSize;
}
public void setMinSize(int minSize) {
this.minSize = minSize;
}
public int getBlockingTimeoutMilliseconds() {
return blockingTimeoutMilliseconds;
}
public void setBlockingTimeoutMilliseconds(int blockingTimeoutMilliseconds) {
this.blockingTimeoutMilliseconds = blockingTimeoutMilliseconds;
if (pool != null) {
pool.setBlockingTimeoutMilliseconds(blockingTimeoutMilliseconds);
}
}
public int getIdleTimeoutMinutes() {
return idleTimeoutMinutes;
}
public void setIdleTimeoutMinutes(int idleTimeoutMinutes) {
this.idleTimeoutMinutes = idleTimeoutMinutes;
if (pool != null) {
pool.setIdleTimeoutMinutes(idleTimeoutMinutes);
}
}
public boolean isMatchOne() {
return matchOne;
}
public void setMatchOne(boolean matchOne) {
this.matchOne = matchOne;
}
public boolean isMatchAll() {
return matchAll;
}
public void setMatchAll(boolean matchAll) {
this.matchAll = matchAll;
}
public boolean isSelectOneAssumeMatch() {
return selectOneAssumeMatch;
}
public void setSelectOneAssumeMatch(boolean selectOneAssumeMatch) {
this.selectOneAssumeMatch = selectOneAssumeMatch;
}
public ConnectionInterceptor addPoolingInterceptors(ConnectionInterceptor tail) {
if (isMatchAll()) {
SinglePoolMatchAllConnectionInterceptor pool = new SinglePoolMatchAllConnectionInterceptor(tail,
getMaxSize(),
getMinSize(),
getBlockingTimeoutMilliseconds(),
getIdleTimeoutMinutes());
this.pool = pool;
return pool;
} else {
SinglePoolConnectionInterceptor pool = new SinglePoolConnectionInterceptor(tail,
getMaxSize(),
getMinSize(),
getBlockingTimeoutMilliseconds(),
getIdleTimeoutMinutes(),
isSelectOneAssumeMatch());
this.pool = pool;
return pool;
}
}
public int getPartitionCount() {
return 1;
}
public int getPartitionMaxSize() {
return maxSize;
}
public void setPartitionMaxSize(int maxSize) throws InterruptedException {
if (pool != null) {
pool.setPartitionMaxSize(maxSize);
}
this.maxSize = maxSize;
}
public int getPartitionMinSize() {
return minSize;
}
public void setPartitionMinSize(int minSize) {
if (pool != null) {
pool.setPartitionMinSize(minSize);
}
this.minSize = minSize;
}
public int getIdleConnectionCount() {
return pool == null ? 0 : pool.getIdleConnectionCount();
}
public int getConnectionCount() {
return pool == null ? 0 : pool.getConnectionCount();
}
}