org.texai.kb.persistence.RDFEntityManagerPool.java Source code

Java tutorial

Introduction

Here is the source code for org.texai.kb.persistence.RDFEntityManagerPool.java

Source

/*
 * RDFEntityManagerPool.java
 *
 * Created on Jun 16, 2009, 6:44:44 PM
 *
 * Description: Provides a pool of RDF entity manager instances.
 *
 * Copyright (C) Jun 16, 2009 Stephen L. Reed.
 *
 * This program is free software; you can redistribute it and/or modify it under the terms
 * of the GNU General Public License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program;
 * if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

package org.texai.kb.persistence;

import net.jcip.annotations.NotThreadSafe;
import org.apache.commons.pool.PoolableObjectFactory;
import org.apache.commons.pool.impl.StackObjectPool;

/** Given a PoolableObjectFactory, this class will maintain a simple pool of RDF entity manager instances. A finite number of "sleeping"
 * or idle instances is enforced, but when the pool is empty, new instances are created to support the new load.
 * Hence this class places no limit on the number of "active" instances created by the pool, but is quite useful
 * for re-using Objects without introducing artificial limits.
 *
 * @author Stephen L. Reed
 */
@NotThreadSafe
public final class RDFEntityManagerPool extends StackObjectPool {

    /** the RDF entity manager factory */
    private final PoolableObjectFactory rdfEntityManagerFactory;

    /**
     * Creates a new instance of RDFEntityManagerPool.
     *
     * @param rdfEntityManagerFactory the PoolableObjectFactory to use to create, validate and destroy objects
     * @param maxIdle cap on the number of "sleeping" instances in the pool
     */
    public RDFEntityManagerPool(final PoolableObjectFactory rdfEntityManagerFactory, final int maxIdle) {
        super(rdfEntityManagerFactory, maxIdle);

        this.rdfEntityManagerFactory = rdfEntityManagerFactory;
    }

    /** Gets the RDF entity manager factory.
     *
     * @return the RDF entity manager factory
     */
    public PoolableObjectFactory getRDFEntityLoaderFactory() {
        return rdfEntityManagerFactory;
    }
}