aboutsummaryrefslogtreecommitdiffstats
path: root/dblib/common/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'dblib/common/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java')
-rw-r--r--dblib/common/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java136
1 files changed, 0 insertions, 136 deletions
diff --git a/dblib/common/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java b/dblib/common/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java
deleted file mode 100644
index 6535139..0000000
--- a/dblib/common/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openecomp
- * ================================================================================
- * Copyright (C) 2016 - 2017 AT&T
- * ================================================================================
- * Licensed 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.
- * ============LICENSE_END=========================================================
- */
-
-/*
- * 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.tomcat.jdbc.pool.interceptor;
-
-import java.lang.ref.WeakReference;
-import java.lang.reflect.Method;
-import java.sql.Statement;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.juli.logging.Log;
-import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.jdbc.pool.ConnectionPool;
-import org.apache.tomcat.jdbc.pool.PoolProperties;
-import org.apache.tomcat.jdbc.pool.PooledConnection;
-
-/**
- * Keeps track of statements associated with a connection and invokes close upon {@link java.sql.Connection#close()}
- * Useful for applications that dont close the associated statements after being done with a connection.
- *
- */
-public class StatementFinalizer extends AbstractCreateStatementInterceptor {
- private static final Log log = LogFactory.getLog(StatementFinalizer.class);
-
- protected List<StatementEntry> statements = new LinkedList<>();
-
- private boolean logCreationStack = false;
-
- @Override
- public Object createStatement(Object proxy, Method method, Object[] args, Object statement, long time) {
- try {
- if (statement instanceof Statement)
- statements.add(new StatementEntry((Statement)statement));
- }catch (ClassCastException x) {
- //ignore this one
- }
- return statement;
- }
-
- @SuppressWarnings("null") // st is not null when used
- @Override
- public void closeInvoked() {
- while (statements.size()>0) {
- StatementEntry ws = statements.remove(0);
- Statement st = ws.getStatement();
- boolean shallClose = false;
- try {
- shallClose = st!=null && (!st.isClosed());
- if (shallClose) {
- st.close();
- }
- } catch (Exception ignore) {
- if (log.isDebugEnabled()) {
- log.debug("Unable to closed statement upon connection close.",ignore);
- }
- } finally {
- if (logCreationStack && shallClose) {
- log.warn("Statement created, but was not closed at:", ws.getAllocationStack());
- }
- }
- }
- }
-
- @Override
- public void setProperties(Map<String, PoolProperties.InterceptorProperty> properties) {
- super.setProperties(properties);
-
- PoolProperties.InterceptorProperty logProperty = properties.get("trace");
- if (null != logProperty) {
- logCreationStack = logProperty.getValueAsBoolean(logCreationStack);
- }
- }
-
- @Override
- public void reset(ConnectionPool parent, PooledConnection con) {
- statements.clear();
- super.reset(parent, con);
- }
-
- protected class StatementEntry {
- private WeakReference<Statement> statement;
- private Throwable allocationStack;
-
- public StatementEntry(Statement statement) {
- this.statement = new WeakReference<>(statement);
- if (logCreationStack) {
- this.allocationStack = new Throwable();
- }
- }
-
- public Statement getStatement() {
- return statement.get();
- }
-
- public Throwable getAllocationStack() {
- return allocationStack;
- }
- }
-
-
-}