You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2018/10/26 11:46:18 UTC

[incubator-plc4x] 01/02: Merge branch 'master' of github.com:apache/incubator-plc4x into resync-github

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch resync-github
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit 260b62966ce5ba3fbefa39feb65055eec8fe7a29
Merge: 138891f c5a2adf
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Oct 26 13:27:15 2018 +0200

    Merge branch 'master' of github.com:apache/incubator-plc4x into resync-github

 .../org/apache/plc4x/java/PlcDriverManager.java    |   4 +-
 .../plc4x/java/PlcDriverManagerInterface.java      |  29 ++++
 .../plc4x/java/connectionpool/ConnectionProxy.java |  24 ++++
 .../java/connectionpool/PlcConnectionManager.java  | 154 +++++++++++++++++++++
 .../java/connectionpool/PlcConnectionProxy.java    | 101 ++++++++++++++
 .../exceptions/NoConnectionAvailableException.java |  30 ++++
 .../java/exceptions/NotConnectedException.java     |  34 +++++
 .../connectionpool/PlcConnectionManagerTest.java   |  99 +++++++++++++
 .../connectionpool/PlcConnectionProxyTest.java     |  74 ++++++++++
 .../connectionpool/PooledPlcDriverManager.java     |   2 +
 10 files changed, 550 insertions(+), 1 deletion(-)

diff --cc plc4j/utils/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManager.java
index 3816598,b59cb7d..6f91165
--- a/plc4j/utils/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManager.java
+++ b/plc4j/utils/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManager.java
@@@ -72,19 -76,15 +72,21 @@@ public class PooledPlcDriverManager ext
  
      @Override
      public PlcConnection getConnection(String url, PlcAuthentication authentication) throws PlcConnectionException {
 -        Pair<String, PlcAuthentication> argPair = Pair.of(url, authentication);
 -        ObjectPool<PlcConnection> pool = retrieveFromPool(argPair);
 +        PoolKey poolKey = PoolKey.of(url, authentication);
 +        ObjectPool<PlcConnection> pool = retrieveFromPool(poolKey);
          try {
 -            LOGGER.debug("Try to borrow an object for url {} and authentication {}", url, authentication);
 +            if (LOGGER.isDebugEnabled()) {
 +                if (authentication != noPlcAuthentication) {
 +                    LOGGER.debug("Try to borrow an object for url {} and authentication {}", url, authentication);
 +                } else {
 +                    LOGGER.debug("Try to borrow an object for url {}", url);
 +                }
 +            }
              PlcConnection plcConnection = pool.borrowObject();
+             // TODO 25-10-2018 jf: Return a real wrapper object. This implementation leaks the connection.
+             // The connection can be reused by the pool but is still referenced and can thus still be used.
              return (PlcConnection) Proxy.newProxyInstance(classLoader, new Class[]{PlcConnection.class}, (o, method, objects) -> {
 -                if (method.getName().equals("close")) {
 +                if ("close".equals(method.getName())) {
                      LOGGER.debug("close called on {}. Returning to {}", plcConnection, pool);
                      pool.returnObject(plcConnection);
                      return null;