Compare commits

2 Commits

Author SHA256 Message Date
Fridrich Štrba
4a46c7164f 0.12.0 2026-03-04 06:17:53 +01:00
Fridrich Štrba
7228ee4af1 Fix build with mchange-commons-0.4.0.patch 2026-03-03 15:48:19 +01:00
7 changed files with 407 additions and 56 deletions

BIN
c3p0-0.12.0-sources.jar LFS Normal file

Binary file not shown.

43
c3p0-0.12.0.pom Normal file
View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<name>c3p0</name>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<packaging>jar</packaging>
<description>A mature JDBC3+ Connection pooling library</description>
<version>0.12.0</version>
<url>https://www.mchange.com/projects/c3p0</url>
<licenses>
<license>
<name>LGPL-2.1-or-later</name>
<url>https://spdx.org/licenses/LGPL-2.1-or-later.html</url>
<distribution>repo</distribution>
</license>
<license>
<name>EPL-1.0</name>
<url>https://spdx.org/licenses/EPL-1.0.html</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<connection>scm:git:git://github.com/swaldman/c3p0.git</connection>
<developerConnection>scm:git:ssh://git@github.com:swaldman/c3p0.git</developerConnection>
<url>https://github.com/swaldman/c3p0</url>
</scm>
<developers>
<developer>
<id>swaldman</id>
<name>Steve Waldman</name>
<url>https://github.com/swaldman</url>
</developer>
</developers>
<dependencies>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>mchange-commons-java</artifactId>
<version>0.4.0</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:14c6f401fa7950f86ca254d8de5100b94d1008f06cba0f00f138f9e4750100ef
size 869069

122
c3p0-build.xml Normal file
View File

@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="c3p0" default="package" basedir=".">
<!-- ====================================================================== -->
<!-- Build environment properties -->
<!-- ====================================================================== -->
<property file="build.properties"/>
<property name="project.artifactId" value="c3p0"/>
<property name="project.version" value="0.12.0"/>
<property name="compiler.release" value="8"/>
<property name="compiler.source" value="1.${compiler.release}"/>
<property name="compiler.target" value="${compiler.source}"/>
<property name="build.finalName" value="${project.artifactId}-${project.version}"/>
<property name="build.dir" value="target"/>
<property name="build.outputDir" value="${build.dir}/classes"/>
<property name="build.srcDir" value="src/main/java"/>
<property name="reporting.outputDirectory" value="${build.dir}/site"/>
<!-- ====================================================================== -->
<!-- Defining classpaths -->
<!-- ====================================================================== -->
<path id="build.classpath">
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- ====================================================================== -->
<!-- Cleaning up target -->
<!-- ====================================================================== -->
<target name="clean" description="Clean the output directory">
<delete dir="${build.dir}"/>
</target>
<!-- ====================================================================== -->
<!-- Compilation target -->
<!-- ====================================================================== -->
<target name="compile" description="Compile the code">
<mkdir dir="${build.outputDir}"/>
<javac destdir="${build.outputDir}"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="${compiler.target}"
verbose="false"
fork="false"
source="${compiler.source}">
<src>
<pathelement location="${build.srcDir}"/>
</src>
<classpath refid="build.classpath"/>
</javac>
<copy todir="${build.outputDir}">
<fileset dir="${build.srcDir}">
<exclude name="**/*~"/>
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<!-- ====================================================================== -->
<!-- Javadoc target -->
<!-- ====================================================================== -->
<target name="javadoc" description="Generates the Javadoc of the application">
<javadoc sourcepath="${build.srcDir}"
packagenames="*"
destdir="${reporting.outputDirectory}/apidocs"
access="protected"
source="${compiler.source}"
verbose="false"
version="true"
use="true"
author="true"
splitindex="false"
nodeprecated="false"
nodeprecatedlist="false"
notree="false"
noindex="false"
nohelp="false"
nonavbar="false"
serialwarn="false"
encoding="utf-8"
linksource="false"
breakiterator="false">
<classpath refid="build.classpath"/>
</javadoc>
</target>
<!-- ====================================================================== -->
<!-- Package target -->
<!-- ====================================================================== -->
<target name="package" depends="compile" description="Package the application">
<jar jarfile="${build.dir}/${build.finalName}.jar"
compress="true"
index="false"
basedir="${build.outputDir}"
excludes="**/package.html">
<manifest>
<attribute name="Automatic-Module-Name" value="com.mchange.v2.c3p0"/>
</manifest>
</jar>
</target>
<!-- ====================================================================== -->
<!-- A dummy target for the package named after the type it creates -->
<!-- ====================================================================== -->
<target name="jar" depends="package" description="Builds the jar for the application"/>
</project>

View File

@@ -1,11 +0,0 @@
--- c3p0-0.9.5.2.src/build.xml 2017-09-18 08:13:57.431789022 +0200
+++ c3p0-0.9.5.2.src/build.xml 2017-09-18 08:14:32.571789622 +0200
@@ -597,7 +597,7 @@
<target name="javadoc" depends="init">
<javadoc packagenames="com.mchange.v2.c3p0"
destdir="${build.apidocs.dir}"
- classpathref="build-classpath"
+ classpathref="test-classpath"
windowtitle="${c3p0.name} API Documentation"
>
<fileset dir="${java.src.dir}" />

View File

@@ -1,3 +1,222 @@
-------------------------------------------------------------------
Wed Mar 4 04:24:41 UTC 2026 - Fridrich Strba <fstrba@suse.com>
- Upgrade to upstream version 0.12.0
* Changes of version 0.12.0
+ Replace com.mchange.v2.naming.permitNonlocalJndiNames with
more configurable com.mchange.v2.naming.nameGuardClassName.
By default, it is null, and the same "apparently local"
restriction previously enforced by
com.mchange.v2.naming.permitNonlocalJndiNames is enforced. But
users can supply custom com.mchange.v2.naming.NameGuard
instances to control what names are permissible, and four
implementations of NameGuard are provided.
+ Documentation updates.
+ Disable by default reflective instantiation of
javax.naming.spi.ObjectFactory instances unless their
classname is included on a whitelist. Define properties-style
config parameter com.mchange.v2.naming.objectFactoryWhitelist
where the comma-separated whitelist can be provided. By
default this parameter contains the two ObjectFactory classes
c3p0 includes in references it creates.
+ Change the format of userOverridesAsString, which is just a
String representation of Map<String,Map<String,String>>. Use a
CSV-inspired format, and the mchange-commons-java fastcsv
utility, rather than dangerous Java Object serialization of
the Map of Maps.
+ Disable by default support for resolving references serialized
with their own InitialContext custom environment. Define
properties-style config parametercom.mchange.v2.naming
.acceptDeserializedInitialContextEnvironment, defaulting to
false, to manage this dangerous functionality.
+ Disable by default JNDI lookups of nonlocal names
(conservatively, names that do not seem to be local). For now
only String names beginning with "java:" or Name objects whose
first component starts with "java:" are considered to be local.
Define properties-style config parameter com.mchange.v2.naming
.permitNonlocalJndiNames, defaulting to false, to manage this
dangerous functionality.
+ Disable by default support for loading of
javax.naming.spi.ObjectFactory from remote locations via
Reference.factoryClassLocation. Define properties-style config
parameter com.mchange.v2.naming
.supportReferenceRemoteFactoryClassLocation, defaulting to
false, to manage this dangerous functionality.
* Fix rare issue in Statement caching (GooGooStatementCache),
make sure any Statement we remove is checked into the cache in
order to ensure we don't see internal inconsistencies when
Statements we mean to cull fail to be removed by
removeStatement(...) because they are checked out.
* Changes of version 0.11.2
* Expose utilities `overwriteJavaBeanProperties` and
`overwriteC3P0PrefixedProperties` in the `DataSources` class,
and refactor existing functions to use those.
* Changes of version 0.11.1
+ in BasicResourcePool, forceKillAcquires() accidentally failed
to surrender its lock, leading to deadlocks following a full
round of acquisition failures.
* Changes of version 0.11.0
+ Additional testing.
* Changes of version 0.11.0-pre2
+ Define new property cancelAutomaticallyClosedStatements,
which, if true, ensures that Statement.cancel() will be called
prior to Statement.close() when c3p0 automatically close()es
statements because a client has neglected to, a Connection
with open Statements has exceeded its
unreturnedConnectionTimeout, or the Statement cache is
expiring a PreparedStatement.
* Changes of version 0.11.0-pre1
+ Rewrite BasicResourcePool and GooGooStatementCache in terms of
ReentrantLock and Condition.{await/signalAll} rather than
native monitors and wait()/notifyAll(), because wait() pins
loom virtual threads.
+ Double check after termination of BasicResourcePool
.awaitAvailable(...) that following notification/termination a
resource (Connection) remains available.
+ Prevent fragility under non-bootstrap/non-system CLASSLOADERs
under Java 8, where references to java.sql.ShardingKey not
available under Java 8 provoke NoClassDefFoundError. Bifurcate
Connection proxies, generate version without sharding key
methods under JVMs where ShardingKey is unavailable, full JDBC
4.3 Connection API proxies where ShardingKey is present.
* Changes of version 0.10.2
+ Prevent freeze due to re-waiting if a non-Exception Throwable
occurs while acquiring a PreparedStatement to cache.
* Changes of version 0.10.1
+ Implement more and "louder" (log ugly stack traces) validation
of config properties.
+ Modify former InUseLock (now InternalUseLock) and
NewProxyConnection to use ReentrantLock rather than native
monitors, to prevent pinning when clients run on loom virtual
threads.
+ Implement config parameter markSessionBoundaries, so that
users can disable JDBC 4.3 beginRequest / endRequest session
boundary marking when JDBC drivers so undesirable things with
those hints.
+ Implement more careful examination of begin/endRequest
methods, to take into account the case where those methods
exist on the JDBC driver Connection implementation, but not in
the Connection interface of a pre-Java-9 JVM. We still support
begin/endRequest in this case, but reflectively.
* Changes of version 0.10.0
+ A bit more testing
* Changes of version 0.10.0-pre7
+ Improve performance of begin/endRequest support
+ Implement c3p0-loom
UninstrumentedVirtualThreadPerTaskTaskRunnerFactory
+ Change mind. Eliminate naggingly prescriptive equals/hashCode
pseudorequirements from plugin interfaces, because our
canonicalization strategy is by key, doesn't actually rely
upon those implementations.
+ Guard collection of MBeanAttributeInfo against items that
would have no getter or setter to prevent ugly
IntrospectionExceptions.
+ Let C3P0PooledConnectionPool manager test introspected
authentication that appears perhaps incomplete, and revert to
NULL_AUTH (no-arg DataSource.getConnection()) if the test
fails.
* Changes of version 0.10.0-pre6
+ Lots of documentation work.
+ Implement attemptResurrectOnCheckin config parameter.
+ Add guard to automaticTestTable preventing use of weird or
potentially malicious table names.
* Pick up com.mchange.v2.c3p0.impl.DefaultConnectionTester
.isValidTimeout as default value of new
connectionIsValidTimeout property, so that users upgrading
from previous version still capture the setting from the old
config, even as their ConnectionTester now falls back to null.
* Changes of version 0.10.0-pre5
+ Lots of documenting, condensing, clean-up, etc.
+ Define connectionIsValidTimeout as an ordinary bean-style
config parameter. Previously users had to set a universal
property (in c3p0.properties or System properties) to set this
timeout.
+ Use simplified isValid(...) based timeout by default, use
traditional ConnectionTester logic only when users specify or
force a ConnectionTester
* Changes of version 0.10.0-pre4
+ Define (in a separate, Java 21, project) a loom
virtual-threads based TaskRunnerFactory,
VirtualThreadPerTaskExecutorTaskRunnerFactory.
+ DefineFixedThreadPoolExecutorTaskRunnerFactory, a simple
example that replaces c3p0's traditional Thread pool with an
unshared ThreadPoolExecutor of size numHelperThreads.
+ Define AbstractExecutorTaskRunnerFactory, which users can
extend to use or share java.util.concurrent.Executor instances
rather than c3p0's traditional hand-rolled Thread pool.
+ Define TaskRunnerFactory, and config param
TaskRunnerFactoryClassName. Users can provide implementations
of TaskRunnerFactory with a public no-arg constructor to take
full control of threading, thread-pooling, etc.
+ Support SOURCE_DATE_EPOCH for deterministic builds. (Here and
in mchange-commons-java.)
+ Eliminate support for traditional reflective proxies.
+ Fix bad anchor in docs.
+ Relicense to allow users to opt for LGPL-2.1 or later, rather
than LGPL-2.1-only. (Here and in mchange-commons-java.)
+ Update to mchange-commons-java 0.3.0
* Changes of version 0.10.0-pre3
+ Have build fail if we try to build with an unexpected JVM
version. We want to use a consistent JVM version (currently
11) and target version (currently 7) when we build c3p0.
+ Remove vestiges of unsupported BasicResourcePool.AcquireTask
+ Disable very slow handholding function intended to help with
misspellings / misspecifications of resource
"/c3p0-config.xml"
+ Let PooledDataSource implement AutoCloseable. This
necessitates targeting Java 7, rather than Java 6, classfiles.
+ Bring documentation of acquireRetryAttempts into sync with
c3p0's actual behavior.
+ Include license files in published source jar. (Here and in
mchange-commons-java.)
* Changes of version 0.10.0-pre2
+ Add "Automatic-Module-Name" entry to jar manifest for
interoperability with Project Jigsaw / Java 9 modules
+ Try context ClassLoader if library ClassLoader fails to load a
named, necessary driver class.
+ Let statement cache fail not-quietly if drivers provide
PreparedStatements without a proper equals implementation.
+ Be slightly less negative in the docs about
unreturnedConnectionTimeout.
+ Implement more robustly accurate checkoutTimeout.
+ Add support for JDBC 4.3 beginRequest and endRequest methods.
+ Consider ourselves to be a wrapper for a thing if the thing we
wrap itself declares itself as the wrapper of that thing.
+ Fix rare ConcurrentModificationException in
GooGooStatementCache when Connections are closed.
* Changes of version 0.10.0-pre1
+ Fix doc comments no longer acceptable under persnicketty JDK
11
+ Build with JDK 11 JVM (still emitting JDK 1.6 compatible
sources)
+ Get tests working under new mill build
+ Reorganize to switch build from ant to mill
+ Update to mchange-commons-java 0.2.20
- Build it from the *-sources.jar distributed to maven central,
since the project changed to mill tool for build
- Removed patches:
* c3p0-javadoc.patch
* c3p0-mchange-commons-0.4.0.patch
+ not needed with this version
- Build using Java >= 11 (since the APIs of this version are needed
in some files), but still produce Java 1.8 bytecode, to make it
usable for older versions that don't need the files using these
APIs.
- Remove RHEL conditions, since the build.xml file we created is
simple and does not need ant features from contrib.
-------------------------------------------------------------------
Tue Mar 3 14:40:24 UTC 2026 - Fridrich Strba <fstrba@suse.com>
- Bumped the minimal mchange-commons requirement to 0.4.0 because
of bsc#1258913, CVE-2026-27727
- Added patch:
* c3p0-mchange-commons-0.4.0.patch
+ Supply config to IndirectingSerializableExtension subclass in
order to support 'com.mchange.v2.naming
.supportReferenceRemoteFactoryClassLocation'
+ Track mchange-commons-java change in package of IndentedWriter
-------------------------------------------------------------------
Fri Sep 5 07:37:14 UTC 2025 - Fridrich Strba <fstrba@suse.com>
@@ -103,7 +322,7 @@ Fri Jun 27 17:56:06 UTC 2014 - smoioli@suse.com
-------------------------------------------------------------------
Fri Jun 27 16:14:57 UTC 2014 - smoioli@suse.com
- updated to upstream 0.9.5, that is compatible with Java 7 / JDBC 4
- updated to upstream 0.9.5, that is compatible with Java 7 / JDBC 4
-------------------------------------------------------------------
Tue Sep 24 09:51:34 UTC 2013 - dmacvicar@suse.de

View File

@@ -1,7 +1,7 @@
#
# spec file for package c3p0
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2026 SUSE LLC and contributors
# Copyright (c) 2000-2008, JPackage Project
#
# All modifications and additions to the file contributed by third parties
@@ -17,33 +17,23 @@
#
%define mchange_commons_min_version 0.2.15
Name: c3p0
Version: 0.9.5.5
Version: 0.12.0
Release: 0
Summary: JDBC DataSources/Resource Pools
License: LGPL-2.0-or-later
Group: Development/Libraries/Java
URL: https://www.mchange.com/projects/c3p0/
Source0: http://downloads.sourceforge.net/sourceforge/c3p0/c3p0-%{version}.src.tgz
Patch1: %{name}-javadoc.patch
Source0: https://repo1.maven.org/maven2/com/mchange/%{name}/%{version}/%{name}-%{version}-sources.jar
Source1: https://repo1.maven.org/maven2/com/mchange/%{name}/%{version}/%{name}-%{version}.pom
Source100: %{name}-build.xml
BuildRequires: ant
BuildRequires: fdupes
BuildRequires: java-devel >= 1.8
BuildRequires: java-devel >= 11
BuildRequires: javapackages-local >= 6
BuildRequires: junit
BuildRequires: mchange-commons >= %{mchange_commons_min_version}
BuildRequires: mchange-commons >= 0.4.0
BuildRequires: unzip
BuildArch: noarch
%if !0%{?rhel}
BuildRequires: ant-nodeps
%endif
%if 0%{?rhel} >= 9
BuildRequires: xmvn-tools
%endif
%if 0%{?rhel}
Requires(post): chkconfig
Requires(postun): chkconfig
%endif
%description
c3p0 is a library for augmenting traditional (DriverManager-based)
@@ -59,46 +49,34 @@ Group: Documentation/HTML
Javadoc documentation for c3p0.
%prep
%setup -q -n %{name}-%{version}.src
%patch -P 1 -p1
%{mvn_file} :c3p0 %{name}/%{name} %{name}
%setup -q -T -c
mkdir -p src/main/java
unzip %{SOURCE0} -d src/main/java
cp %{SOURCE100} build.xml
%build
export CLASSPATH=
export OPT_JAR_LIST="ant/ant-nodeps"
ant \
-Dmchange-commons-java.jar.file=%{_javadir}/mchange-commons/mchange-commons-java.jar \
-Djunit.jar.file=$(build-classpath junit) -Djvm.target.version=8 \
jar javadoc
sed -i "s/@c3p0.version.maven@/%{version}/g" src/maven/pom.xml
sed -i "s/@mchange-commons-java.version.maven@/%{mchange_commons_min_version}/g" \
src/maven/pom.xml
%{mvn_artifact} src/maven/pom.xml build/%{name}-%{version}.jar
mkdir -p lib
build-jar-repository -s lib mchange-commons
ant jar javadoc
%install
%if 0%{?rhel}
%mvn_install
%else
# jars
install -d -m 0755 %{buildroot}%{_javadir}
install -p -m 0644 build/%{name}-%{version}.jar \
install -p -m 0644 target/%{name}-%{version}.jar \
%{buildroot}%{_javadir}/%{name}.jar
# poms
install -d -m 0755 %{buildroot}%{_mavenpomdir}
%{mvn_install_pom} src/maven/pom.xml %{buildroot}%{_mavenpomdir}/%{name}.pom
%{mvn_install_pom} %{SOURCE1} %{buildroot}%{_mavenpomdir}/%{name}.pom
%add_maven_depmap %{name}.pom %{name}.jar -a c3p0:c3p0
%endif
# javadoc
mkdir -p %{buildroot}%{_javadocdir}/%{name}
cp -pr build/apidocs/* %{buildroot}%{_javadocdir}/%{name}
cp -pr target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}
%fdupes -s %{buildroot}%{_javadocdir}/%{name}
%files -f .mfiles
%license src/dist-static/LICENSE
%doc src/doc/index.html
%license src/main/java/LICENSE*
%files javadoc
%{_javadocdir}/%{name}