Example usage for org.apache.commons.pool.impl GenericKeyedObjectPool borrowObject

List of usage examples for org.apache.commons.pool.impl GenericKeyedObjectPool borrowObject

Introduction

In this page you can find the example usage for org.apache.commons.pool.impl GenericKeyedObjectPool borrowObject.

Prototype

public Object borrowObject(Object key) throws Exception 

Source Link

Document

Borrows an object from the keyed pool associated with the given key.

If there is an idle instance available in the pool associated with the given key, then either the most-recently returned (if #getLifo() lifo == true) or "oldest" (lifo == false) instance sitting idle in the pool will be activated and returned.

Usage

From source file:TestKeyedObjectPool.java

 public static void main(String args[]) throws Exception {

   GenericKeyedObjectPool pool = new GenericKeyedObjectPool();
   pool.setFactory(new SkilledEmployeeFactory());

   pool.addObject("Java");
   pool.addObject("Java");
   pool.addObject("VB");
   pool.addObject("C++");

   System.err.println("Number of Java employees in pool: " +
     pool.getNumIdle("Java") + " out of total employees: " +
     pool.getNumIdle());/* www  .j a v  a 2  s .  c o m*/

   Employee employee = (Employee)pool.borrowObject("Java");

   employee.doWork();

   System.err.println("Employee: "  + employee);

   pool.returnObject("Java", employee);

   System.err.println("Number of Java employees in pool: " +
     pool.getNumIdle("Java") + " out of total employees: " +
     pool.getNumIdle());
}

From source file:com.googlecode.jmxtrans.model.output.OpenTSDBWriterTests.java

private static OpenTSDBWriter getOpenTSDBWriter(OutputStream out, List<String> typeNames) throws Exception {
    GenericKeyedObjectPool<InetSocketAddress, Socket> pool = Mockito.mock(GenericKeyedObjectPool.class);
    Socket socket = Mockito.mock(Socket.class);
    Mockito.when(pool.borrowObject(Matchers.any(InetSocketAddress.class))).thenReturn(socket);

    Mockito.when(socket.getOutputStream()).thenReturn(out);

    OpenTSDBWriter writer = OpenTSDBWriter.builder().setHost("localhost").setPort(4243).addTypeNames(typeNames)
            .build();//from ww  w  .java  2 s.  c om
    writer.setPool(pool);

    return writer;
}

From source file:com.googlecode.jmxtrans.model.output.GraphiteWriterTests.java

private static GraphiteWriter getGraphiteWriter(OutputStream out, List<String> typeNames) throws Exception {
    GenericKeyedObjectPool<InetSocketAddress, Socket> pool = mock(GenericKeyedObjectPool.class);
    Socket socket = mock(Socket.class);
    when(pool.borrowObject(Matchers.any(InetSocketAddress.class))).thenReturn(socket);

    when(socket.getOutputStream()).thenReturn(out);

    GraphiteWriter writer = GraphiteWriter.builder().setHost("localhost").setPort(2003).addTypeNames(typeNames)
            .build();/*from   w  w  w .  j  av  a2s  .  c  o m*/
    writer.setPool(pool);

    return writer;
}

From source file:com.googlecode.jmxtrans.model.output.OpenTSDBWriterTests.java

@Test
public void socketInvalidatedWhenError() throws Exception {
    GenericKeyedObjectPool<InetSocketAddress, Socket> pool = Mockito.mock(GenericKeyedObjectPool.class);
    Socket socket = Mockito.mock(Socket.class);
    Mockito.when(pool.borrowObject(Matchers.any(InetSocketAddress.class))).thenReturn(socket);
    UnflushableByteArrayOutputStream out = new UnflushableByteArrayOutputStream();
    Mockito.when(socket.getOutputStream()).thenReturn(out);

    OpenTSDBWriter writer = OpenTSDBWriter.builder().setHost("localhost").setPort(4243).build();
    writer.setPool(pool);/*from   w  w  w .  j  av a  2s  .co m*/

    writer.doWrite(dummyServer(), dummyQuery(), dummyResults());
    Mockito.verify(pool).invalidateObject(Matchers.any(InetSocketAddress.class), Matchers.eq(socket));
    Mockito.verify(pool, Mockito.never()).returnObject(Matchers.any(InetSocketAddress.class),
            Matchers.eq(socket));
}

From source file:com.googlecode.jmxtrans.model.output.GraphiteWriterTests.java

@Test
public void socketInvalidatedWhenError() throws Exception {
    GenericKeyedObjectPool<InetSocketAddress, Socket> pool = mock(GenericKeyedObjectPool.class);
    Socket socket = mock(Socket.class);
    when(pool.borrowObject(Matchers.any(InetSocketAddress.class))).thenReturn(socket);
    UnflushableByteArrayOutputStream out = new UnflushableByteArrayOutputStream();
    when(socket.getOutputStream()).thenReturn(out);

    GraphiteWriter writer = GraphiteWriter.builder().setHost("localhost").setPort(2003).build();
    writer.setPool(pool);/*from   w w  w  . j  a  va2s . co  m*/

    writer.doWrite(dummyServer(), dummyQuery(), dummyResults());
    Mockito.verify(pool).invalidateObject(Matchers.any(InetSocketAddress.class), Matchers.eq(socket));
    Mockito.verify(pool, Mockito.never()).returnObject(Matchers.any(InetSocketAddress.class),
            Matchers.eq(socket));
}

From source file:com.googlecode.jmxtrans.model.output.GraphiteWriterTests.java

@Test
public void booleanAsNumberWorks() throws Exception {
    File testInput = new File(GraphiteWriterTests.class.getResource("/booleanTest.json").toURI());

    boolean continueOnJsonError = true;

    JsonUtils jsonUtils = JmxTransModule.createInjector(new JmxTransConfiguration())
            .getInstance(JsonUtils.class);
    ImmutableList servers = new ConfigurationParser(jsonUtils).parseServers(of(testInput), continueOnJsonError);

    Result result = new Result(System.currentTimeMillis(), "attributeName", "className", "objDomain", null,
            "typeName", ImmutableMap.of("key", (Object) true));

    ByteArrayOutputStream out = new ByteArrayOutputStream();

    GenericKeyedObjectPool<InetSocketAddress, Socket> pool = mock(GenericKeyedObjectPool.class);
    Socket socket = mock(Socket.class);
    when(pool.borrowObject(Matchers.any(InetSocketAddress.class))).thenReturn(socket);

    when(socket.getOutputStream()).thenReturn(out);

    Server server = ((Server) servers.get(0));
    Query query = server.getQueries().asList().get(0);
    GraphiteWriter writer = (GraphiteWriter) (query.getOutputWriters().get(0));
    writer.setPool(pool);//from   w  ww.ja  va  2  s .c  om

    writer.doWrite(server, query, of(result));

    // check that the booleanAsNumber property was picked up from the JSON
    assertThat(out.toString()).startsWith("servers.host_123.objDomain.attributeName.key 1");
}

From source file:Pool146.java

public void testBlockedKeyDoesNotBlockPoolImproved() throws Exception {
    SimpleFactory factory = new SimpleFactory();
    GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory);
    pool.setWhenExhaustedAction(GenericKeyedObjectPool.WHEN_EXHAUSTED_BLOCK);
    pool.setMaxActive(1);//from  w  w w  . j a  va2  s .c  o  m
    pool.setMaxTotal(-1);

    // Borrow with one key
    Object obj = pool.borrowObject("one");

    // Borrow again with same key, should be blocked
    Runnable simple = new SimpleTestThread(pool, "one");
    Thread borrowThread = new Thread(simple);
    borrowThread.start();

    pool.borrowObject("two");
    assert (pool.getNumActive("one") == 1);
    assert (pool.getNumActive("two") == 1);

    // Unblock and join the thread
    pool.returnObject("one", obj);
    borrowThread.join();
    assert (pool.getNumActive("one") == 0);
    assert (pool.getNumActive("two") == 1);
}

From source file:com.googlecode.jmxtrans.model.ServerTests.java

@Test
public void testConnectionRepoolingOk() throws Exception {
    @SuppressWarnings("unchecked")
    GenericKeyedObjectPool<Server, JMXConnection> pool = mock(GenericKeyedObjectPool.class);

    Server server = Server.builder().setHost("host.example.net").setPort("4321").setLocal(true).setPool(pool)
            .build();/*w ww  .  ja  va 2 s.  co  m*/

    MBeanServerConnection mBeanConn = mock(MBeanServerConnection.class);

    JMXConnection conn = mock(JMXConnection.class);
    when(conn.getMBeanServerConnection()).thenReturn(mBeanConn);

    when(pool.borrowObject(server)).thenReturn(conn);

    Query query = mock(Query.class);
    Iterable<ObjectName> objectNames = Lists.emptyList();
    when(query.queryNames(mBeanConn)).thenReturn(objectNames);
    server.execute(query);

    verify(pool, never()).invalidateObject(server, conn);

    InOrder orderVerifier = inOrder(pool);
    orderVerifier.verify(pool).borrowObject(server);
    orderVerifier.verify(pool).returnObject(server, conn);
}

From source file:com.googlecode.jmxtrans.model.ServerTests.java

@Test
public void testConnectionRepoolingSkippedOnError() throws Exception {
    @SuppressWarnings("unchecked")
    GenericKeyedObjectPool<Server, JMXConnection> pool = mock(GenericKeyedObjectPool.class);

    Server server = Server.builder().setHost("host.example.net").setPort("4321").setLocal(true).setPool(pool)
            .build();/*w  w  w.  jav  a  2s.c  om*/

    MBeanServerConnection mBeanConn = mock(MBeanServerConnection.class);

    JMXConnection conn = mock(JMXConnection.class);
    when(conn.getMBeanServerConnection()).thenReturn(mBeanConn);

    when(pool.borrowObject(server)).thenReturn(conn);

    Query query = mock(Query.class);
    IOException e = mock(IOException.class);
    when(query.queryNames(mBeanConn)).thenThrow(e);

    try {
        server.execute(query);
        fail("No exception got throws");
    } catch (IOException e2) {
        if (e != e2) {
            fail("Wrong exception thrown (" + e + " instead of mock");
        }
    }

    verify(pool, never()).returnObject(server, conn);
    ;

    InOrder orderVerifier = inOrder(pool);
    orderVerifier.verify(pool).borrowObject(server);
    orderVerifier.verify(pool).invalidateObject(server, conn);
}

From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericKeyedObjectPool.java

public void testExceptionOnPassivateDuringReturn() throws Exception {
    SimpleFactory factory = new SimpleFactory();
    GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory);
    Object obj = pool.borrowObject("one");
    factory.setThrowExceptionOnPassivate(true);
    pool.returnObject("one", obj);
    assertEquals(0, pool.getNumIdle());/*from   w  ww. j a  va  2s  .com*/
    pool.close();
}