| /** |
| * 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.MultiPoolConnectionInterceptor; |
| import org.apache.geronimo.connector.outbound.PoolingAttributes; |
| |
| /** |
| * @version $Rev$ $Date$ |
| */ |
| public class PartitionedPool implements PoolingSupport { |
| |
| private boolean partitionByConnectionRequestInfo; |
| private boolean partitionBySubject; |
| |
| private final SinglePool singlePool; |
| |
| private transient PoolingAttributes poolingAttributes; |
| |
| public PartitionedPool(int maxSize, int minSize, int blockingTimeoutMilliseconds, int idleTimeoutMinutes, boolean matchOne, boolean matchAll, boolean selectOneAssumeMatch, boolean partitionByConnectionRequestInfo, boolean partitionBySubject) { |
| singlePool = new SinglePool(maxSize, minSize, blockingTimeoutMilliseconds, idleTimeoutMinutes, matchOne, matchAll, selectOneAssumeMatch); |
| this.partitionByConnectionRequestInfo = partitionByConnectionRequestInfo; |
| this.partitionBySubject = partitionBySubject; |
| } |
| |
| public boolean isPartitionByConnectionRequestInfo() { |
| return partitionByConnectionRequestInfo; |
| } |
| |
| public void setPartitionByConnectionRequestInfo(boolean partitionByConnectionRequestInfo) { |
| this.partitionByConnectionRequestInfo = partitionByConnectionRequestInfo; |
| } |
| |
| public boolean isPartitionBySubject() { |
| return partitionBySubject; |
| } |
| |
| public void setPartitionBySubject(boolean partitionBySubject) { |
| this.partitionBySubject = partitionBySubject; |
| } |
| |
| public int getMaxSize() { |
| return singlePool.getMaxSize(); |
| } |
| |
| public void setMaxSize(int maxSize) { |
| singlePool.setMaxSize(maxSize); |
| } |
| |
| public int getBlockingTimeoutMilliseconds() { |
| return poolingAttributes.getBlockingTimeoutMilliseconds(); |
| } |
| |
| public void setBlockingTimeoutMilliseconds(int blockingTimeoutMilliseconds) { |
| poolingAttributes.setBlockingTimeoutMilliseconds(blockingTimeoutMilliseconds); |
| } |
| |
| public int getIdleTimeoutMinutes() { |
| return poolingAttributes.getIdleTimeoutMinutes(); |
| } |
| |
| public void setIdleTimeoutMinutes(int idleTimeoutMinutes) { |
| poolingAttributes.setIdleTimeoutMinutes(idleTimeoutMinutes); |
| } |
| |
| public boolean isMatchOne() { |
| return singlePool.isMatchOne(); |
| } |
| |
| public void setMatchOne(boolean matchOne) { |
| singlePool.setMatchOne(matchOne); |
| } |
| |
| public boolean isMatchAll() { |
| return singlePool.isMatchAll(); |
| } |
| |
| public void setMatchAll(boolean matchAll) { |
| singlePool.setMatchAll(matchAll); |
| } |
| |
| public boolean isSelectOneAssumeMatch() { |
| return singlePool.isSelectOneAssumeMatch(); |
| } |
| |
| public void setSelectOneAssumeMatch(boolean selectOneAssumeMatch) { |
| singlePool.setSelectOneAssumeMatch(selectOneAssumeMatch); |
| } |
| |
| public ConnectionInterceptor addPoolingInterceptors(ConnectionInterceptor tail) { |
| MultiPoolConnectionInterceptor pool = new MultiPoolConnectionInterceptor(tail, |
| singlePool, |
| isPartitionBySubject(), |
| isPartitionByConnectionRequestInfo()); |
| this.poolingAttributes = pool; |
| return pool; |
| } |
| |
| public int getPartitionCount() { |
| return poolingAttributes.getPartitionCount(); |
| } |
| |
| public int getPartitionMaxSize() { |
| return poolingAttributes.getPartitionMaxSize(); |
| } |
| |
| public void setPartitionMaxSize(int maxSize) throws InterruptedException { |
| poolingAttributes.setPartitionMaxSize(maxSize); |
| } |
| |
| public int getPartitionMinSize() { |
| return poolingAttributes.getPartitionMinSize(); |
| } |
| |
| public void setPartitionMinSize(int minSize) { |
| poolingAttributes.setPartitionMinSize(minSize); |
| } |
| |
| public int getIdleConnectionCount() { |
| return poolingAttributes.getIdleConnectionCount(); |
| } |
| |
| public int getConnectionCount() { |
| return poolingAttributes.getConnectionCount(); |
| } |
| } |