MAJ V3
- Refonte graphique. - Ajout de classe liée a la BDD. - Debug et améliorations .
@@ -1,15 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="//NASCCB/Documents/Programmation/eclipse-workspace/DB/mysql-connector-java-8.0.26/mariadb-java-client-2.7.4.jar">
|
||||
<classpathentry kind="lib" path="//NASCCB/Workspace/JAVA-eclipse/DB/mysql-connector-java-8.0.26/mariadb-java-client-2.7.4.jar">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="miglayout15-swing.jar" sourcepath="miglayout-src.zip"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=16
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=16
|
||||
|
||||
BIN
bin/images/Thumbs.db
Normal file
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 43 KiB |
BIN
bin/images/favicon2.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 6.6 KiB |
@@ -1,4 +0,0 @@
|
||||
build-date: 2021-06-08 16:39:29 +0000
|
||||
os-info: Linux i386 4.1.12-124.48.6.el6uek.x86_64
|
||||
compiler: javac 1.8.0_241
|
||||
build-tool: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
|
||||
@@ -1,5 +0,0 @@
|
||||
version: 8.0.26
|
||||
branch: release/8.0.26
|
||||
date: 2021-06-08 14:49:03 +0100
|
||||
commit: 9aae1e450989d62c06616c1dcda3e404ef84df70
|
||||
short: 9aae1e45
|
||||
@@ -1,28 +0,0 @@
|
||||
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This is a release of MySQL Connector/J, a JDBC Type 4 driver for MySQL that
|
||||
also supports the new X DevAPI.
|
||||
|
||||
License information can be found in the LICENSE file.
|
||||
|
||||
This distribution may include materials developed by third parties.
|
||||
For license and attribution notices for these materials, please refer to the
|
||||
LICENSE file.
|
||||
|
||||
For more information on MySQL Connector/J, visit
|
||||
https://dev.mysql.com/doc/connector-j/8.0/en/
|
||||
|
||||
For additional downloads and the source of MySQL Connector/J, visit
|
||||
https://dev.mysql.com/downloads/
|
||||
|
||||
MySQL Connector/J is brought to you by the MySQL team at Oracle.
|
||||
|
||||
Notice:
|
||||
- In order to use the logging capabilities provided by the default
|
||||
implementation com.mysql.cj.log.Slf4JLogger, it is required to add one or
|
||||
more jars for Simple Logging Facade for Java (SLF4J) to your CLASSPATH.
|
||||
- To use the X DevAPI features in Connector/J, you also need the external
|
||||
library protobuf-java, which you can download manually from the official
|
||||
Maven repository and add it to the CLASSPATH, or use Maven's automatic
|
||||
dependency resolution features by adding a dependency to "GroupId: mysql"
|
||||
and "ArtifactId: mysql-connector-java" to your project's pom.xml file.
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>misc</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -1,66 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (c) 2019, 2020, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License, version 2.0, as published by the
|
||||
Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including but not
|
||||
limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
particular file or component or in included license documentation. The
|
||||
authors of MySQL hereby grant you an additional permission to link the
|
||||
program and your derivative works with the separately licensed software that
|
||||
they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file, which is
|
||||
part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
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, version 2.0,
|
||||
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.,
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
-->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Product Id="*" Name="MySQL Connector J" Language="1033" Version="$(var.ProductVersion)" Manufacturer="Oracle Corporation" UpgradeCode="a887f346-5f02-4cf1-bb85-bf34b4c5f248">
|
||||
<Package InstallerVersion="200" Compressed="yes" />
|
||||
<Upgrade Id="574f7b74-d753-4965-995d-2de6a79afd01">
|
||||
<UpgradeVersion OnlyDetect="no"
|
||||
Minimum="6.0.0"
|
||||
IncludeMinimum="yes"
|
||||
Maximum="8.0.12"
|
||||
IncludeMaximum="yes"
|
||||
Property="OLDERVERSIONBEINGUPGRADED_OLD"/>
|
||||
</Upgrade>
|
||||
<Upgrade Id="a887f346-5f02-4cf1-bb85-bf34b4c5f248">
|
||||
<UpgradeVersion OnlyDetect="no"
|
||||
Minimum="8.0.13"
|
||||
IncludeMinimum="yes"
|
||||
Maximum="$(var.ProductVersion)"
|
||||
Property="OLDERVERSIONBEINGUPGRADED"
|
||||
IncludeMaximum="yes" />
|
||||
</Upgrade>
|
||||
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="ProgramFilesFolder">
|
||||
<Directory Id="MySQL" Name="MySQL">
|
||||
<Directory Id="INSTALLLOCATION" Name="MySQL Connector J 8.0">
|
||||
<!-- Components Autogenerated using the WiX tool named Heat. See the Project properties for cmd line. -->
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Feature Id="ProductFeature" Title="wix_solution" Level="1">
|
||||
<ComponentGroupRef Id="ConnJZipContents"/>
|
||||
</Feature>
|
||||
<InstallExecuteSequence>
|
||||
<RemoveExistingProducts After="InstallInitialize" />
|
||||
</InstallExecuteSequence>
|
||||
</Product>
|
||||
</Wix>
|
||||
@@ -1,5 +0,0 @@
|
||||
@PRODUCT_NAME@@PRODUCT_SUFFIX@ (@MYSQL_CJ_VERSION@@MYSQL_CJ_VERSION_SNAPSHOT@@DEB_VERSION_SUFFIX@@ID_RELEASE@) @CODENAME@; urgency=low
|
||||
|
||||
* For release notes, please refer to https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/
|
||||
|
||||
-- @MAINTAINER_EMAIL@ @PACKAGE_TIMESTAMP@
|
||||
@@ -1 +0,0 @@
|
||||
9
|
||||
@@ -1,14 +0,0 @@
|
||||
Source: @PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
Section: database
|
||||
Priority: optional
|
||||
Maintainer: Oracle MySQL Product Engineering Team <mysql-build@oss.oracle.com>
|
||||
Standards-Version: 3.9.2
|
||||
Build-Depends: debhelper (>= 8.9.4)
|
||||
Homepage: http://dev.mysql.com/downloads/connector/j/
|
||||
|
||||
Package: @PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
Section: database
|
||||
Architecture: all
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: MySQL Connector/J
|
||||
Standardized MySQL database driver for Java
|
||||
@@ -1,9 +0,0 @@
|
||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: @PRODUCT@
|
||||
Upstream-Contact: MySQL Release Engineering <mysql-build@oss.oracle.com>
|
||||
Source: http://dev.mysql.com/
|
||||
|
||||
Files: *
|
||||
Copyright: 2002, 2021, Oracle and/or its affiliates.
|
||||
License:
|
||||
For licensing information see the LICENSE file in this distribution.
|
||||
@@ -1,8 +0,0 @@
|
||||
dist/toArchive/@PACKAGE_NAME@/@PRODUCT_NAME@@PRODUCT_SUFFIX@-@VERSION_FULL@.jar usr/share/java
|
||||
|
||||
#legal
|
||||
dist/toArchive/@PACKAGE_NAME@/@LIC_FILE@ usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
dist/toArchive/@PACKAGE_NAME@/README usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
dist/toArchive/@PACKAGE_NAME@/CHANGES usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
dist/toArchive/@PACKAGE_NAME@/INFO_SRC usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
dist/toArchive/@PACKAGE_NAME@/INFO_BIN usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
# Copyright (c) 2016, 2020, Oracle and/or its affiliates.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License, version 2.0, as published by the
|
||||
# Free Software Foundation.
|
||||
#
|
||||
# This program is also distributed with certain software (including but not
|
||||
# limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
# particular file or component or in included license documentation. The
|
||||
# authors of MySQL hereby grant you an additional permission to link the
|
||||
# program and your derivative works with the separately licensed software that
|
||||
# they have included with MySQL.
|
||||
#
|
||||
# Without limiting anything contained in the foregoing, this file, which is
|
||||
# part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
# version 1.0, a copy of which can be found at
|
||||
# http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
#
|
||||
# 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, version 2.0,
|
||||
# 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.,
|
||||
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
upstream_version := $(shell dpkg-parsechangelog | sed -n -e'/^Version: / { s/Version: //; s/-[^-]\+$$//; p }')
|
||||
base_version = $(shell echo $(upstream_version) | sed -e's/r[0-9]\+$$//')
|
||||
|
||||
ANT_COMMON_OPTIONS=\
|
||||
-Dcom.mysql.cj.build.dir.driver=build/driver \
|
||||
-Dcom.mysql.cj.extra.libs=@WITH_JARDEPS@ \
|
||||
-Dcom.mysql.cj.build.driver.version.status=@MYSQL_CJ_VERSION_STATUS@ \
|
||||
-Dcom.mysql.cj.build.driver.version.extra=@MYSQL_CJ_VERSION_EXTRA@ \
|
||||
-Dcom.mysql.cj.build.driver.version.snapshot=@MYSQL_CJ_VERSION_SNAPSHOT@ \
|
||||
-Dcom.mysql.cj.build.driver.extraName=@PRODUCT_SUFFIX@ \
|
||||
-Dcom.mysql.cj.dist.licenseUrl=@MYSQL_CJ_LICENSEURL@ \
|
||||
-Djava.awt.headless=true
|
||||
|
||||
ifeq ($(ANT_HOME),)
|
||||
ANT_CMD=ant
|
||||
else
|
||||
ANT_CMD=$(ANT_HOME)/bin/ant
|
||||
endif
|
||||
|
||||
ANT_OPTS=-Xmx512M
|
||||
|
||||
ifneq ($(JAVA_HOME),)
|
||||
ANT_JAVA_OPT=-Dcom.mysql.cj.build.jdk=$(JAVA_HOME)
|
||||
endif
|
||||
|
||||
ifneq ($(COMMERCIAL),)
|
||||
ANT_COM_OPT=-Dcom.mysql.cj.build.commercial=true
|
||||
endif
|
||||
|
||||
%:
|
||||
#dh $@ --with autoreconf
|
||||
dh $@
|
||||
|
||||
override_dh_auto_configure:
|
||||
|
||||
override_dh_auto_build:
|
||||
echo $(PATH)
|
||||
echo $(JAVA_HOME)
|
||||
$(ANT_CMD) \
|
||||
$(ANT_COMMON_OPTIONS) \
|
||||
$(ANT_JAVA_OPT) \
|
||||
$(ANT_COM_OPT) \
|
||||
full-package-no-sources
|
||||
|
||||
override_dh_auto_clean:
|
||||
$(ANT_CMD) $(ANT_COMMON_OPTIONS) clean
|
||||
|
||||
override_dh_installchangelogs:
|
||||
dh_installchangelogs -XCHANGES
|
||||
@@ -1 +0,0 @@
|
||||
3.0 (quilt)
|
||||
@@ -1,2 +0,0 @@
|
||||
version=3
|
||||
http://mysql.osuosl.org/Downloads/@PRODUCT_NAME@-(.+)\.tar\.gz
|
||||
@@ -1,67 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
Copyright (c) 2006, 2020, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License, version 2.0, as published by the
|
||||
Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including but not
|
||||
limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
particular file or component or in included license documentation. The
|
||||
authors of MySQL hereby grant you an additional permission to link the
|
||||
program and your derivative works with the separately licensed software that
|
||||
they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file, which is
|
||||
part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
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, version 2.0,
|
||||
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.,
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
-->
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>@MYSQL_CJ_VERSION@</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>MySQL Connector/J</name>
|
||||
<description>JDBC Type 4 driver for MySQL</description>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The GNU General Public License, v2 with FOSS exception</name>
|
||||
<distribution>repo</distribution>
|
||||
<comments>For detailed license information see the LICENSE file in this distribution.</comments>
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
<url>http://dev.mysql.com/doc/connector-j/en/</url>
|
||||
|
||||
<scm>
|
||||
<connection>scm:git:git@github.com:mysql/mysql-connector-j.git</connection>
|
||||
<url>https://github.com/mysql/mysql-connector-j</url>
|
||||
</scm>
|
||||
|
||||
<organization>
|
||||
<name>Oracle Corporation</name>
|
||||
<url>http://www.oracle.com</url>
|
||||
</organization>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
<version>3.11.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -1,197 +0,0 @@
|
||||
# Copyright (c) 2017, 2020, Oracle and/or its affiliates.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License, version 2.0, as published by the
|
||||
# Free Software Foundation.
|
||||
#
|
||||
# This program is also distributed with certain software (including but not
|
||||
# limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
# particular file or component or in included license documentation. The
|
||||
# authors of MySQL hereby grant you an additional permission to link the
|
||||
# program and your derivative works with the separately licensed software that
|
||||
# they have included with MySQL.
|
||||
#
|
||||
# Without limiting anything contained in the foregoing, this file, which is
|
||||
# part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
# version 1.0, a copy of which can be found at
|
||||
# http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
#
|
||||
# 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, version 2.0,
|
||||
# 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.,
|
||||
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# You can pass these options to "rpmbuild"
|
||||
#
|
||||
# --define="commercial <nonempty>"
|
||||
# --define="with_ant <path>"
|
||||
# --define="with_java <path>"
|
||||
# --define="with_jardeps <path>"
|
||||
# --define="with_docs <path>"
|
||||
#
|
||||
# The 'with_docs' option should have a path that points out
|
||||
#
|
||||
# <docs-base>/en/html/connector-j.html
|
||||
# <docs-base>/en/html/mvl.css (not really used)
|
||||
# <docs-base>/en/pdf/connector-j.pdf
|
||||
# <docs-base>/en/txt/connector-j.txt
|
||||
|
||||
# Some linux distributions doesn't set the "dist" macro. There is a
|
||||
# list how to identify dists here
|
||||
# https://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto
|
||||
|
||||
# SuSE will not set "dist", others do
|
||||
%if 0%{?suse_version} == 1315
|
||||
%global dist .sles12
|
||||
%global sles12 1
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} == 1500
|
||||
%global dist .sl15
|
||||
%global sles15 1
|
||||
%endif
|
||||
|
||||
%if 0%{?commercial:1}
|
||||
%global lic_tag Commercial
|
||||
%else
|
||||
%global lic_tag GPLv2
|
||||
%endif
|
||||
|
||||
Summary: Standardized MySQL database driver for Java
|
||||
Name: @MYSQL_CJ_EXTENDED_PROD_NAME@
|
||||
Version: @MYSQL_CJ_VERSION_NUMERIC@
|
||||
Release: @MYSQL_CJ_RPM_RELEASE_FULL@%{?dist}
|
||||
Epoch: 1
|
||||
License: %{lic_tag}
|
||||
Group: Development/Libraries
|
||||
URL: http://dev.mysql.com/downloads/connector/j/
|
||||
Source0: https://cdn.mysql.com/Downloads/Connector-J/@MYSQL_CJ_FULL_PROD_NAME@.tar.gz
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildArch: noarch
|
||||
|
||||
%if 0%{?commercial:1}
|
||||
Obsoletes: mysql-connector-java < %{version}-%{release}
|
||||
Provides: mysql-connector-java = %{version}-%{release}
|
||||
%endif
|
||||
|
||||
%if 0%{!?with_ant:1}
|
||||
BuildRequires: ant
|
||||
%endif
|
||||
|
||||
%if 0%{!?with_java:1}
|
||||
BuildRequires: java-devel >= 1:1.8.0
|
||||
%endif
|
||||
|
||||
%if 0%{?sles12:1} || 0%{?sles15:1}
|
||||
Requires: java-headless >= 1.8.0
|
||||
%else
|
||||
Requires: java-headless >= 1:1.8.0
|
||||
%endif
|
||||
|
||||
%description
|
||||
MySQL provides connectivity for client applications developed in the
|
||||
Java programming language with @MYSQL_CJ_DISPLAY_PROD_NAME@, a driver that
|
||||
implements the [Java Database Connectivity (JDBC) API]
|
||||
(http://www.oracle.com/technetwork/java/javase/jdbc/).
|
||||
|
||||
@MYSQL_CJ_DISPLAY_PROD_NAME@ @MYSQL_CJ_VERSION_SERIES@ is a JDBC Type 4 driver that is compatible with
|
||||
the [JDBC 4.2](http://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/)
|
||||
specification. The Type 4 designation means that the driver is a pure
|
||||
Java implementation of the MySQL protocol and does not rely on the
|
||||
MySQL client libraries.
|
||||
|
||||
For detailed information please visit the official
|
||||
[@MYSQL_CJ_DISPLAY_PROD_NAME@ documentation]
|
||||
(http://dev.mysql.com/doc/connector-j/en/).
|
||||
|
||||
%prep
|
||||
%setup -q -n @MYSQL_CJ_FULL_PROD_NAME@
|
||||
|
||||
%build
|
||||
COMMON_OPTIONS="\
|
||||
-Dcom.mysql.cj.build.dir.driver=build/driver
|
||||
-Dcom.mysql.cj.extra.libs=%{with_jardeps} \
|
||||
-Dcom.mysql.cj.build.driver.version.status=@MYSQL_CJ_VERSION_STATUS@ \
|
||||
-Dcom.mysql.cj.build.driver.version.extra=@MYSQL_CJ_VERSION_EXTRA@ \
|
||||
-Dcom.mysql.cj.build.driver.version.snapshot=@MYSQL_CJ_VERSION_SNAPSHOT@ \
|
||||
-Dcom.mysql.cj.build.driver.extraName=@MYSQL_CJ_EXTRA_NAME@ \
|
||||
-Dcom.mysql.cj.dist.licenseUrl=@MYSQL_CJ_LICENSEURL@ \
|
||||
-Djava.awt.headless=true"
|
||||
|
||||
%if 0%{?with_ant:1}
|
||||
export ANT_HOME=%{with_ant}
|
||||
export ANT_CMD="${ANT_HOME}/bin/ant"
|
||||
%else
|
||||
export ANT_CMD="ant"
|
||||
%endif
|
||||
|
||||
export ANT_OPTS=-Xmx512M
|
||||
|
||||
%if 0%{?with_java:1}
|
||||
export JAVA_HOME=%{with_java}
|
||||
export PATH=${JAVA_HOME}/bin:$PATH
|
||||
COMMON_OPTIONS="${COMMON_OPTIONS} -Dcom.mysql.cj.build.jdk=${JAVA_HOME}"
|
||||
%endif
|
||||
|
||||
%if 0%{?commercial:1}
|
||||
COMMON_OPTIONS="${COMMON_OPTIONS} -Dcom.mysql.cj.build.commercial=true"
|
||||
%endif
|
||||
|
||||
# Get the file revision-info.properties again because it was excluded
|
||||
# from SOURCES
|
||||
cp %{_tmppath}/@MYSQL_CJ_FULL_PROD_NAME@/revision-info.properties .
|
||||
|
||||
${ANT_CMD} \
|
||||
${COMMON_OPTIONS} \
|
||||
full-package-no-sources
|
||||
|
||||
# We use the 'full-package-no-sources' as there are changes done only
|
||||
# when creating a package, 'dist' is not enough. To make it a bit easier
|
||||
# in the install step, we rename the directory with the content
|
||||
mv dist/toArchive/@PACKAGE_NAME@ package-content
|
||||
|
||||
# The 'package' target doesn't copy the HTML or PDF doc like 'dist',
|
||||
# we copy it here
|
||||
%if 0%{?with_docs:1}
|
||||
mkdir -p package-content/docs
|
||||
cp %{with_docs}/en/html/connector-j.html package-content/docs/
|
||||
cp %{with_docs}/en/html/mvl.css package-content/docs/
|
||||
cp %{with_docs}/en/pdf/connector-j.pdf package-content/docs/
|
||||
cp %{with_docs}/en/txt/connector-j.txt package-content/docs/
|
||||
%endif
|
||||
|
||||
%install
|
||||
install -d -m 0755 %{buildroot}%{_javadir}
|
||||
install -p -m 0644 package-content/@MYSQL_CJ_FULL_PROD_NAME@.jar %{buildroot}%{_javadir}/%{name}.jar
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%files
|
||||
%doc package-content/CHANGES
|
||||
# EL6 doesn't like 'license' macro here, so we use 'doc'
|
||||
%doc package-content/LICENSE
|
||||
%doc package-content/README
|
||||
%doc package-content/INFO_BIN
|
||||
%doc package-content/INFO_SRC
|
||||
|
||||
%if 0%{?with_docs:1}
|
||||
# README.txt is a rename of "connector-j.txt"
|
||||
%doc package-content/docs/connector-j.txt
|
||||
%doc package-content/docs/connector-j.pdf
|
||||
%doc package-content/docs/connector-j.html
|
||||
%doc package-content/docs/mvl.css
|
||||
%endif
|
||||
|
||||
%{_javadir}/%{name}.jar
|
||||
|
||||
%changelog
|
||||
* Mon Nov 27 2017 MySQL Release Engineering <mysql-build@oss.oracle.com> - 8.0.9-1
|
||||
- Set more in "build.xml"
|
||||
* Tue Mar 14 2017 MySQL Release Engineering <mysql-build@oss.oracle.com> - 6.0.7-1
|
||||
- initial package
|
||||
@@ -1,18 +0,0 @@
|
||||
<body>
|
||||
<h1>MySQL Connector/J Reference</h1>
|
||||
<p/>
|
||||
|
||||
This is a full documentation of Connector/J.
|
||||
|
||||
<p/>
|
||||
To get started with X DevAPI, check out some of the main classes:
|
||||
|
||||
<ul>
|
||||
<li>Sessions can be created with {@link com.mysql.cj.xdevapi.SessionFactory}.</li>
|
||||
<li>Session operations are available on a {@link com.mysql.cj.xdevapi.Session}.</li>
|
||||
<li>JSON document collections are represented by a {@link com.mysql.cj.xdevapi.Collection}.</li>
|
||||
<li>Working with JSON documents is done with a {@link com.mysql.cj.xdevapi.DbDoc}.</li>
|
||||
</ul>
|
||||
|
||||
For an introduction to X DevAPI concepts, refer to the <a href="http://dev.mysql.com/doc/x-devapi-userguide/en/index.html">X DevAPI User Guide</a>.
|
||||
</body>
|
||||
@@ -1,15 +0,0 @@
|
||||
<body>
|
||||
<h1>MySQL Connector/J X DevAPI Reference</h1>
|
||||
<p></p>
|
||||
|
||||
This documentation covers the public classes and interfaces of the Java implementation of the X DevAPI. To get started, check out some of the main classes:
|
||||
|
||||
<ul>
|
||||
<li>Sessions can be created with {@link com.mysql.cj.xdevapi.SessionFactory}.</li>
|
||||
<li>Session operations are available on a {@link com.mysql.cj.xdevapi.Session}.</li>
|
||||
<li>JSON document collections are represented by a {@link com.mysql.cj.xdevapi.Collection}.</li>
|
||||
<li>Working with JSON documents is done with a {@link com.mysql.cj.xdevapi.DbDoc}.</li>
|
||||
</ul>
|
||||
|
||||
For an introduction to concepts, refer to the <a href="http://dev.mysql.com/doc/x-devapi-userguide/en/index.html" target="_blank">X DevAPI User Guide</a>.
|
||||
</body>
|
||||
@@ -1,110 +0,0 @@
|
||||
# Copyright (c) 2019, 2020, Oracle and/or its affiliates.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License, version 2.0, as published by the
|
||||
# Free Software Foundation.
|
||||
#
|
||||
# This program is also distributed with certain software (including but not
|
||||
# limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
# particular file or component or in included license documentation. The
|
||||
# authors of MySQL hereby grant you an additional permission to link the
|
||||
# program and your derivative works with the separately licensed software that
|
||||
# they have included with MySQL.
|
||||
#
|
||||
# Without limiting anything contained in the foregoing, this file, which is
|
||||
# part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
# version 1.0, a copy of which can be found at
|
||||
# http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
#
|
||||
# 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, version 2.0,
|
||||
# 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.,
|
||||
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Mandatory TLS Ciphers
|
||||
TLSCiphers.Mandatory=\
|
||||
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,\
|
||||
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,\
|
||||
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
||||
|
||||
# Approved TLS Ciphers
|
||||
TLSCiphers.Approved=\
|
||||
TLS_AES_128_GCM_SHA256,\
|
||||
TLS_AES_256_GCM_SHA384,\
|
||||
TLS_CHACHA20_POLY1305_SHA256,\
|
||||
TLS_AES_128_CCM_SHA256,\
|
||||
TLS_AES_128_CCM_8_SHA256,\
|
||||
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,\
|
||||
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,\
|
||||
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,\
|
||||
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,\
|
||||
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,\
|
||||
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,\
|
||||
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,\
|
||||
TLS_DH_DSS_WITH_AES_128_GCM_SHA256,\
|
||||
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,\
|
||||
TLS_DH_DSS_WITH_AES_256_GCM_SHA384,\
|
||||
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,\
|
||||
TLS_DH_RSA_WITH_AES_128_GCM_SHA256,\
|
||||
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,\
|
||||
TLS_DH_RSA_WITH_AES_256_GCM_SHA384,\
|
||||
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
|
||||
|
||||
# Deprecated TLS Ciphers
|
||||
TLSCiphers.Deprecated=\
|
||||
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,\
|
||||
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,\
|
||||
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,\
|
||||
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,\
|
||||
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,\
|
||||
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,\
|
||||
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,\
|
||||
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,\
|
||||
TLS_DHE_DSS_WITH_AES_128_CBC_SHA,\
|
||||
TLS_DHE_RSA_WITH_AES_128_CBC_SHA,\
|
||||
TLS_DHE_DSS_WITH_AES_256_CBC_SHA,\
|
||||
TLS_DHE_RSA_WITH_AES_256_CBC_SHA,\
|
||||
TLS_DH_RSA_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_DH_RSA_WITH_AES_256_CBC_SHA256,\
|
||||
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,\
|
||||
TLS_DH_DSS_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,\
|
||||
TLS_DH_DSS_WITH_AES_128_CBC_SHA,\
|
||||
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,\
|
||||
TLS_DH_DSS_WITH_AES_256_CBC_SHA,\
|
||||
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,\
|
||||
TLS_DH_DSS_WITH_AES_256_CBC_SHA256,\
|
||||
TLS_DH_RSA_WITH_AES_128_CBC_SHA,\
|
||||
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,\
|
||||
TLS_DH_RSA_WITH_AES_256_CBC_SHA,\
|
||||
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,\
|
||||
TLS_RSA_WITH_AES_128_GCM_SHA256,\
|
||||
TLS_RSA_WITH_AES_256_GCM_SHA384,\
|
||||
TLS_RSA_WITH_AES_128_CBC_SHA256,\
|
||||
TLS_RSA_WITH_AES_256_CBC_SHA256,\
|
||||
TLS_RSA_WITH_AES_128_CBC_SHA,\
|
||||
TLS_RSA_WITH_AES_256_CBC_SHA,\
|
||||
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,\
|
||||
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,\
|
||||
TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA,\
|
||||
TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA,\
|
||||
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,\
|
||||
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,\
|
||||
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,\
|
||||
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,\
|
||||
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,\
|
||||
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,\
|
||||
TLS_RSA_WITH_3DES_EDE_CBC_SHA
|
||||
|
||||
# Unacceptable TLS Ciphers
|
||||
TLSCiphers.Unacceptable.Mask=_ANON_,_NULL_,_EXPORT,_MD5,_DES,_RC2_,_RC4_,_PSK_
|
||||
@@ -1,16 +0,0 @@
|
||||
#
|
||||
# Settings to maintain Connector/J 3.0.x compatibility
|
||||
# (as much as it can be)
|
||||
#
|
||||
|
||||
emptyStringsConvertToZero=true
|
||||
jdbcCompliantTruncation=false
|
||||
noDatetimeStringSync=true
|
||||
nullCatalogMeansCurrent=true
|
||||
transformedBitIsBoolean=false
|
||||
dontTrackOpenResources=true
|
||||
zeroDateTimeBehavior=CONVERT_TO_NULL
|
||||
useServerPrepStmts=false
|
||||
autoClosePStmtStreams=true
|
||||
processEscapeCodesForPrepStmts=false
|
||||
populateInsertRowWithDefaultValues=false
|
||||
@@ -1,3 +0,0 @@
|
||||
# Basic properties for clusters
|
||||
autoReconnect=true
|
||||
failOverReadOnly=false
|
||||
@@ -1,16 +0,0 @@
|
||||
#
|
||||
# Properties for optimal usage in ColdFusion
|
||||
#
|
||||
|
||||
#
|
||||
# CF's pool tends to be "chatty" like DBCP
|
||||
#
|
||||
|
||||
alwaysSendSetIsolation=false
|
||||
useLocalSessionState=true
|
||||
|
||||
#
|
||||
# CF's pool seems to loose connectivity on page restart
|
||||
#
|
||||
|
||||
autoReconnect=true
|
||||
@@ -1,6 +0,0 @@
|
||||
# Settings for 'max-debug' style situations
|
||||
profileSQL=true
|
||||
gatherPerfMetrics=true
|
||||
useUsageAdvisor=true
|
||||
logSlowQueries=true
|
||||
explainSlowQueries=true
|
||||
@@ -1,38 +0,0 @@
|
||||
#
|
||||
# A configuration that maximizes performance, while
|
||||
# still staying JDBC-compliant and not doing anything that
|
||||
# would be "dangerous" to run-of-the-mill J2EE applications
|
||||
#
|
||||
# Note that because we're caching things like callable statements
|
||||
# and the server configuration, this bundle isn't appropriate
|
||||
# for use with servers that get config'd dynamically without
|
||||
# restarting the application using this configuration bundle.
|
||||
|
||||
cachePrepStmts=true
|
||||
cacheCallableStmts=true
|
||||
|
||||
cacheServerConfiguration=true
|
||||
|
||||
#
|
||||
# Reduces amount of calls to database to set
|
||||
# session state. "Safe" as long as application uses
|
||||
# Connection methods to set current database, autocommit
|
||||
# and transaction isolation
|
||||
#
|
||||
|
||||
useLocalSessionState=true
|
||||
elideSetAutoCommits=true
|
||||
alwaysSendSetIsolation=false
|
||||
|
||||
# Can cause high-GC pressure if timeouts are used on every
|
||||
# query
|
||||
enableQueryTimeouts=false
|
||||
|
||||
# Bypass connection attribute handling during connection
|
||||
# setup
|
||||
connectionAttributes=none
|
||||
|
||||
# INFORMATION_SCHEMA in MySQL 8.0 is more efficient because
|
||||
# of integration with data dictionary
|
||||
useInformationSchema=true
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
#
|
||||
# A configuration that maximizes performance, while
|
||||
# still staying JDBC-compliant and not doing anything that
|
||||
# would be "dangerous" to run-of-the-mill J2EE applications
|
||||
#
|
||||
# Note that because we're caching things like callable statements
|
||||
# and the server configuration, this bundle isn't appropriate
|
||||
# for use with servers that get config'd dynamically without
|
||||
# restarting the application using this configuration bundle.
|
||||
|
||||
cachePrepStmts=true
|
||||
cacheCallableStmts=true
|
||||
|
||||
cacheServerConfiguration=true
|
||||
|
||||
#
|
||||
# Reduces amount of calls to database to set
|
||||
# session state. "Safe" as long as application uses
|
||||
# Connection methods to set current database, autocommit
|
||||
# and transaction isolation
|
||||
#
|
||||
|
||||
useLocalSessionState=true
|
||||
elideSetAutoCommits=true
|
||||
alwaysSendSetIsolation=false
|
||||
|
||||
# Can cause high-GC pressure if timeouts are used on every
|
||||
# query
|
||||
enableQueryTimeouts=false
|
||||
|
||||
# Bypass connection attribute handling during connection
|
||||
# setup
|
||||
connectionAttributes=none
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
#
|
||||
# Solaris has pretty high syscall overhead, so these configs
|
||||
# remove as many syscalls as possible.
|
||||
#
|
||||
|
||||
# Reduce recv() syscalls
|
||||
|
||||
useUnbufferedInput=false
|
||||
useReadAheadInput=false
|
||||
|
||||
# Reduce number of calls to getTimeOfDay()
|
||||
|
||||
maintainTimeStats=false
|
||||
@@ -1,502 +0,0 @@
|
||||
# Copyright (c) 2014, 2020, Oracle and/or its affiliates.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License, version 2.0, as published by the
|
||||
# Free Software Foundation.
|
||||
#
|
||||
# This program is also distributed with certain software (including but not
|
||||
# limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
# particular file or component or in included license documentation. The
|
||||
# authors of MySQL hereby grant you an additional permission to link the
|
||||
# program and your derivative works with the separately licensed software that
|
||||
# they have included with MySQL.
|
||||
#
|
||||
# Without limiting anything contained in the foregoing, this file, which is
|
||||
# part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
# version 1.0, a copy of which can be found at
|
||||
# http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
#
|
||||
# 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, version 2.0,
|
||||
# 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.,
|
||||
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
#Windows Zones
|
||||
#Mon Apr 24 23:22:45 WEST 2017
|
||||
AUS\ Central\ Daylight\ Time=Australia/Darwin
|
||||
AUS\ Central\ Standard\ Time=Australia/Darwin
|
||||
AUS\ Eastern\ Daylight\ Time=Australia/Sydney
|
||||
AUS\ Eastern\ Standard\ Time=Australia/Sydney
|
||||
Afghanistan\ Daylight\ Time=Asia/Kabul
|
||||
Afghanistan\ Standard\ Time=Asia/Kabul
|
||||
Alaskan\ Daylight\ Time=America/Anchorage
|
||||
Alaskan\ Standard\ Time=America/Anchorage
|
||||
Aleutian\ Daylight\ Time=America/Adak
|
||||
Aleutian\ Standard\ Time=America/Adak
|
||||
Altai\ Daylight\ Time=Asia/Barnaul
|
||||
Altai\ Standard\ Time=Asia/Barnaul
|
||||
Arab\ Daylight\ Time=Asia/Riyadh
|
||||
Arab\ Standard\ Time=Asia/Riyadh
|
||||
Arabian\ Daylight\ Time=Asia/Dubai
|
||||
Arabian\ Standard\ Time=Asia/Dubai
|
||||
Arabic\ Daylight\ Time=Asia/Baghdad
|
||||
Arabic\ Standard\ Time=Asia/Baghdad
|
||||
Argentina\ Daylight\ Time=America/Buenos_Aires
|
||||
Argentina\ Standard\ Time=America/Buenos_Aires
|
||||
Astrakhan\ Daylight\ Time=Europe/Astrakhan
|
||||
Astrakhan\ Standard\ Time=Europe/Astrakhan
|
||||
Atlantic\ Daylight\ Time=America/Halifax
|
||||
Atlantic\ Standard\ Time=America/Halifax
|
||||
Aus\ Central\ W.\ Daylight\ Time=Australia/Eucla
|
||||
Aus\ Central\ W.\ Standard\ Time=Australia/Eucla
|
||||
Azerbaijan\ Daylight\ Time=Asia/Baku
|
||||
Azerbaijan\ Standard\ Time=Asia/Baku
|
||||
Azores\ Daylight\ Time=Atlantic/Azores
|
||||
Azores\ Standard\ Time=Atlantic/Azores
|
||||
Bahia\ Daylight\ Time=America/Bahia
|
||||
Bahia\ Standard\ Time=America/Bahia
|
||||
Bangladesh\ Daylight\ Time=Asia/Dhaka
|
||||
Bangladesh\ Standard\ Time=Asia/Dhaka
|
||||
Belarus\ Daylight\ Time=Europe/Minsk
|
||||
Belarus\ Standard\ Time=Europe/Minsk
|
||||
Bougainville\ Daylight\ Time=Pacific/Bougainville
|
||||
Bougainville\ Standard\ Time=Pacific/Bougainville
|
||||
Canada\ Central\ Daylight\ Time=America/Regina
|
||||
Canada\ Central\ Standard\ Time=America/Regina
|
||||
Cape\ Verde\ Daylight\ Time=Atlantic/Cape_Verde
|
||||
Cape\ Verde\ Standard\ Time=Atlantic/Cape_Verde
|
||||
Caucasus\ Daylight\ Time=Asia/Yerevan
|
||||
Caucasus\ Standard\ Time=Asia/Yerevan
|
||||
Cen.\ Australia\ Daylight\ Time=Australia/Adelaide
|
||||
Cen.\ Australia\ Standard\ Time=Australia/Adelaide
|
||||
Central\ America\ Daylight\ Time=America/Guatemala
|
||||
Central\ America\ Standard\ Time=America/Guatemala
|
||||
Central\ Asia\ Daylight\ Time=Asia/Almaty
|
||||
Central\ Asia\ Standard\ Time=Asia/Almaty
|
||||
Central\ Brazilian\ Daylight\ Time=America/Cuiaba
|
||||
Central\ Brazilian\ Standard\ Time=America/Cuiaba
|
||||
Central\ Daylight\ Time=America/Chicago
|
||||
Central\ Daylight\ Time\ (Mexico)=America/Mexico_City
|
||||
Central\ Europe\ Daylight\ Time=Europe/Budapest
|
||||
Central\ Europe\ Standard\ Time=Europe/Budapest
|
||||
Central\ European\ Daylight\ Time=Europe/Warsaw
|
||||
Central\ European\ Standard\ Time=Europe/Warsaw
|
||||
Central\ Pacific\ Daylight\ Time=Pacific/Guadalcanal
|
||||
Central\ Pacific\ Standard\ Time=Pacific/Guadalcanal
|
||||
Central\ Standard\ Time=America/Chicago
|
||||
Central\ Standard\ Time\ (Mexico)=America/Mexico_City
|
||||
Chatham\ Islands\ Daylight\ Time=Pacific/Chatham
|
||||
Chatham\ Islands\ Standard\ Time=Pacific/Chatham
|
||||
China\ Daylight\ Time=Asia/Shanghai
|
||||
China\ Standard\ Time=Asia/Shanghai
|
||||
Cuba\ Daylight\ Time=America/Havana
|
||||
Cuba\ Standard\ Time=America/Havana
|
||||
Dateline\ Daylight\ Time=Etc/GMT+12
|
||||
Dateline\ Standard\ Time=Etc/GMT+12
|
||||
E.\ Africa\ Daylight\ Time=Africa/Nairobi
|
||||
E.\ Africa\ Standard\ Time=Africa/Nairobi
|
||||
E.\ Australia\ Daylight\ Time=Australia/Brisbane
|
||||
E.\ Australia\ Standard\ Time=Australia/Brisbane
|
||||
E.\ Europe\ Daylight\ Time=Europe/Chisinau
|
||||
E.\ Europe\ Standard\ Time=Europe/Chisinau
|
||||
E.\ South\ America\ Daylight\ Time=America/Sao_Paulo
|
||||
E.\ South\ America\ Standard\ Time=America/Sao_Paulo
|
||||
Easter\ Island\ Daylight\ Time=Pacific/Easter
|
||||
Easter\ Island\ Standard\ Time=Pacific/Easter
|
||||
Eastern\ Daylight\ Time=America/New_York
|
||||
Eastern\ Daylight\ Time\ (Mexico)=America/Cancun
|
||||
Eastern\ Standard\ Time=America/New_York
|
||||
Eastern\ Standard\ Time\ (Mexico)=America/Cancun
|
||||
Egypt\ Daylight\ Time=Africa/Cairo
|
||||
Egypt\ Standard\ Time=Africa/Cairo
|
||||
Ekaterinburg\ Daylight\ Time=Asia/Yekaterinburg
|
||||
Ekaterinburg\ Standard\ Time=Asia/Yekaterinburg
|
||||
FLE\ Daylight\ Time=Europe/Kiev
|
||||
FLE\ Standard\ Time=Europe/Kiev
|
||||
Fiji\ Daylight\ Time=Pacific/Fiji
|
||||
Fiji\ Standard\ Time=Pacific/Fiji
|
||||
GMT\ Daylight\ Time=Europe/London
|
||||
GMT\ Standard\ Time=Europe/London
|
||||
GTB\ Daylight\ Time=Europe/Bucharest
|
||||
GTB\ Standard\ Time=Europe/Bucharest
|
||||
Georgian\ Daylight\ Time=Asia/Tbilisi
|
||||
Georgian\ Standard\ Time=Asia/Tbilisi
|
||||
Greenland\ Daylight\ Time=America/Godthab
|
||||
Greenland\ Standard\ Time=America/Godthab
|
||||
Greenwich\ Daylight\ Time=Atlantic/Reykjavik
|
||||
Greenwich\ Standard\ Time=Atlantic/Reykjavik
|
||||
Haiti\ Daylight\ Time=America/Port-au-Prince
|
||||
Haiti\ Standard\ Time=America/Port-au-Prince
|
||||
Hawaiian\ Daylight\ Time=Pacific/Honolulu
|
||||
Hawaiian\ Standard\ Time=Pacific/Honolulu
|
||||
India\ Daylight\ Time=Asia/Calcutta
|
||||
India\ Standard\ Time=Asia/Calcutta
|
||||
Iran\ Daylight\ Time=Asia/Tehran
|
||||
Iran\ Standard\ Time=Asia/Tehran
|
||||
Israel\ Daylight\ Time=Asia/Jerusalem
|
||||
Israel\ Standard\ Time=Asia/Jerusalem
|
||||
Jordan\ Daylight\ Time=Asia/Amman
|
||||
Jordan\ Standard\ Time=Asia/Amman
|
||||
Kaliningrad\ Daylight\ Time=Europe/Kaliningrad
|
||||
Kaliningrad\ Standard\ Time=Europe/Kaliningrad
|
||||
Korea\ Daylight\ Time=Asia/Seoul
|
||||
Korea\ Standard\ Time=Asia/Seoul
|
||||
Libya\ Daylight\ Time=Africa/Tripoli
|
||||
Libya\ Standard\ Time=Africa/Tripoli
|
||||
Line\ Islands\ Daylight\ Time=Pacific/Kiritimati
|
||||
Line\ Islands\ Standard\ Time=Pacific/Kiritimati
|
||||
Lord\ Howe\ Daylight\ Time=Australia/Lord_Howe
|
||||
Lord\ Howe\ Standard\ Time=Australia/Lord_Howe
|
||||
Magadan\ Daylight\ Time=Asia/Magadan
|
||||
Magadan\ Standard\ Time=Asia/Magadan
|
||||
Marquesas\ Daylight\ Time=Pacific/Marquesas
|
||||
Marquesas\ Standard\ Time=Pacific/Marquesas
|
||||
Mauritius\ Daylight\ Time=Indian/Mauritius
|
||||
Mauritius\ Standard\ Time=Indian/Mauritius
|
||||
Middle\ East\ Daylight\ Time=Asia/Beirut
|
||||
Middle\ East\ Standard\ Time=Asia/Beirut
|
||||
Montevideo\ Daylight\ Time=America/Montevideo
|
||||
Montevideo\ Standard\ Time=America/Montevideo
|
||||
Morocco\ Daylight\ Time=Africa/Casablanca
|
||||
Morocco\ Standard\ Time=Africa/Casablanca
|
||||
Mountain\ Daylight\ Time=America/Denver
|
||||
Mountain\ Daylight\ Time\ (Mexico)=America/Chihuahua
|
||||
Mountain\ Standard\ Time=America/Denver
|
||||
Mountain\ Standard\ Time\ (Mexico)=America/Chihuahua
|
||||
Myanmar\ Daylight\ Time=Asia/Rangoon
|
||||
Myanmar\ Standard\ Time=Asia/Rangoon
|
||||
N.\ Central\ Asia\ Daylight\ Time=Asia/Novosibirsk
|
||||
N.\ Central\ Asia\ Standard\ Time=Asia/Novosibirsk
|
||||
Namibia\ Daylight\ Time=Africa/Windhoek
|
||||
Namibia\ Standard\ Time=Africa/Windhoek
|
||||
Nepal\ Daylight\ Time=Asia/Katmandu
|
||||
Nepal\ Standard\ Time=Asia/Katmandu
|
||||
New\ Zealand\ Daylight\ Time=Pacific/Auckland
|
||||
New\ Zealand\ Standard\ Time=Pacific/Auckland
|
||||
Newfoundland\ Daylight\ Time=America/St_Johns
|
||||
Newfoundland\ Standard\ Time=America/St_Johns
|
||||
Norfolk\ Daylight\ Time=Pacific/Norfolk
|
||||
Norfolk\ Standard\ Time=Pacific/Norfolk
|
||||
North\ Asia\ Daylight\ Time=Asia/Krasnoyarsk
|
||||
North\ Asia\ East\ Daylight\ Time=Asia/Irkutsk
|
||||
North\ Asia\ East\ Standard\ Time=Asia/Irkutsk
|
||||
North\ Asia\ Standard\ Time=Asia/Krasnoyarsk
|
||||
North\ Korea\ Daylight\ Time=Asia/Pyongyang
|
||||
North\ Korea\ Standard\ Time=Asia/Pyongyang
|
||||
Omsk\ Daylight\ Time=Asia/Omsk
|
||||
Omsk\ Standard\ Time=Asia/Omsk
|
||||
Pacific\ Daylight\ Time=America/Los_Angeles
|
||||
Pacific\ Daylight\ Time\ (Mexico)=America/Tijuana
|
||||
Pacific\ SA\ Daylight\ Time=America/Santiago
|
||||
Pacific\ SA\ Standard\ Time=America/Santiago
|
||||
Pacific\ Standard\ Time=America/Los_Angeles
|
||||
Pacific\ Standard\ Time\ (Mexico)=America/Tijuana
|
||||
Pakistan\ Daylight\ Time=Asia/Karachi
|
||||
Pakistan\ Standard\ Time=Asia/Karachi
|
||||
Paraguay\ Daylight\ Time=America/Asuncion
|
||||
Paraguay\ Standard\ Time=America/Asuncion
|
||||
Romance\ Daylight\ Time=Europe/Paris
|
||||
Romance\ Standard\ Time=Europe/Paris
|
||||
Russia\ Time\ Zone\ 10=Asia/Srednekolymsk
|
||||
Russia\ Time\ Zone\ 11=Asia/Kamchatka
|
||||
Russia\ Time\ Zone\ 3=Europe/Samara
|
||||
Russian\ Daylight\ Time=Europe/Moscow
|
||||
Russian\ Standard\ Time=Europe/Moscow
|
||||
SA\ Eastern\ Daylight\ Time=America/Cayenne
|
||||
SA\ Eastern\ Standard\ Time=America/Cayenne
|
||||
SA\ Pacific\ Daylight\ Time=America/Bogota
|
||||
SA\ Pacific\ Standard\ Time=America/Bogota
|
||||
SA\ Western\ Daylight\ Time=America/La_Paz
|
||||
SA\ Western\ Standard\ Time=America/La_Paz
|
||||
SE\ Asia\ Daylight\ Time=Asia/Bangkok
|
||||
SE\ Asia\ Standard\ Time=Asia/Bangkok
|
||||
Saint\ Pierre\ Daylight\ Time=America/Miquelon
|
||||
Saint\ Pierre\ Standard\ Time=America/Miquelon
|
||||
Sakhalin\ Daylight\ Time=Asia/Sakhalin
|
||||
Sakhalin\ Standard\ Time=Asia/Sakhalin
|
||||
Samoa\ Daylight\ Time=Pacific/Apia
|
||||
Samoa\ Standard\ Time=Pacific/Apia
|
||||
Singapore\ Daylight\ Time=Asia/Singapore
|
||||
Singapore\ Standard\ Time=Asia/Singapore
|
||||
South\ Africa\ Daylight\ Time=Africa/Johannesburg
|
||||
South\ Africa\ Standard\ Time=Africa/Johannesburg
|
||||
Sri\ Lanka\ Daylight\ Time=Asia/Colombo
|
||||
Sri\ Lanka\ Standard\ Time=Asia/Colombo
|
||||
Syria\ Daylight\ Time=Asia/Damascus
|
||||
Syria\ Standard\ Time=Asia/Damascus
|
||||
Taipei\ Daylight\ Time=Asia/Taipei
|
||||
Taipei\ Standard\ Time=Asia/Taipei
|
||||
Tasmania\ Daylight\ Time=Australia/Hobart
|
||||
Tasmania\ Standard\ Time=Australia/Hobart
|
||||
Tocantins\ Daylight\ Time=America/Araguaina
|
||||
Tocantins\ Standard\ Time=America/Araguaina
|
||||
Tokyo\ Daylight\ Time=Asia/Tokyo
|
||||
Tokyo\ Standard\ Time=Asia/Tokyo
|
||||
Tomsk\ Daylight\ Time=Asia/Tomsk
|
||||
Tomsk\ Standard\ Time=Asia/Tomsk
|
||||
Tonga\ Daylight\ Time=Pacific/Tongatapu
|
||||
Tonga\ Standard\ Time=Pacific/Tongatapu
|
||||
Transbaikal\ Daylight\ Time=Asia/Chita
|
||||
Transbaikal\ Standard\ Time=Asia/Chita
|
||||
Turkey\ Daylight\ Time=Europe/Istanbul
|
||||
Turkey\ Standard\ Time=Europe/Istanbul
|
||||
Turks\ And\ Caicos\ Daylight\ Time=America/Grand_Turk
|
||||
Turks\ And\ Caicos\ Standard\ Time=America/Grand_Turk
|
||||
US\ Eastern\ Daylight\ Time=America/Indianapolis
|
||||
US\ Eastern\ Standard\ Time=America/Indianapolis
|
||||
US\ Mountain\ Daylight\ Time=America/Phoenix
|
||||
US\ Mountain\ Standard\ Time=America/Phoenix
|
||||
UTC=Etc/GMT
|
||||
UTC+12=Etc/GMT-12
|
||||
UTC-02=Etc/GMT+2
|
||||
UTC-08=Etc/GMT+8
|
||||
UTC-09=Etc/GMT+9
|
||||
UTC-11=Etc/GMT+11
|
||||
Ulaanbaatar\ Daylight\ Time=Asia/Ulaanbaatar
|
||||
Ulaanbaatar\ Standard\ Time=Asia/Ulaanbaatar
|
||||
Venezuela\ Daylight\ Time=America/Caracas
|
||||
Venezuela\ Standard\ Time=America/Caracas
|
||||
Vladivostok\ Daylight\ Time=Asia/Vladivostok
|
||||
Vladivostok\ Standard\ Time=Asia/Vladivostok
|
||||
W.\ Australia\ Daylight\ Time=Australia/Perth
|
||||
W.\ Australia\ Standard\ Time=Australia/Perth
|
||||
W.\ Central\ Africa\ Daylight\ Time=Africa/Lagos
|
||||
W.\ Central\ Africa\ Standard\ Time=Africa/Lagos
|
||||
W.\ Europe\ Daylight\ Time=Europe/Berlin
|
||||
W.\ Europe\ Standard\ Time=Europe/Berlin
|
||||
W.\ Mongolia\ Daylight\ Time=Asia/Hovd
|
||||
W.\ Mongolia\ Standard\ Time=Asia/Hovd
|
||||
West\ Asia\ Daylight\ Time=Asia/Tashkent
|
||||
West\ Asia\ Standard\ Time=Asia/Tashkent
|
||||
West\ Bank\ Daylight\ Time=Asia/Hebron
|
||||
West\ Bank\ Standard\ Time=Asia/Hebron
|
||||
West\ Pacific\ Daylight\ Time=Pacific/Port_Moresby
|
||||
West\ Pacific\ Standard\ Time=Pacific/Port_Moresby
|
||||
Yakutsk\ Daylight\ Time=Asia/Yakutsk
|
||||
Yakutsk\ Standard\ Time=Asia/Yakutsk
|
||||
#Linked Time Zones alias
|
||||
#Mon Apr 24 23:22:45 WEST 2017
|
||||
Africa/Addis_Ababa=Africa/Nairobi
|
||||
Africa/Asmara=Africa/Nairobi
|
||||
Africa/Asmera=Africa/Nairobi
|
||||
Africa/Bamako=Africa/Abidjan
|
||||
Africa/Bangui=Africa/Lagos
|
||||
Africa/Banjul=Africa/Abidjan
|
||||
Africa/Blantyre=Africa/Maputo
|
||||
Africa/Brazzaville=Africa/Lagos
|
||||
Africa/Bujumbura=Africa/Maputo
|
||||
Africa/Conakry=Africa/Abidjan
|
||||
Africa/Dakar=Africa/Abidjan
|
||||
Africa/Dar_es_Salaam=Africa/Nairobi
|
||||
Africa/Djibouti=Africa/Nairobi
|
||||
Africa/Douala=Africa/Lagos
|
||||
Africa/Freetown=Africa/Abidjan
|
||||
Africa/Gaborone=Africa/Maputo
|
||||
Africa/Harare=Africa/Maputo
|
||||
Africa/Juba=Africa/Khartoum
|
||||
Africa/Kampala=Africa/Nairobi
|
||||
Africa/Kigali=Africa/Maputo
|
||||
Africa/Kinshasa=Africa/Lagos
|
||||
Africa/Libreville=Africa/Lagos
|
||||
Africa/Lome=Africa/Abidjan
|
||||
Africa/Luanda=Africa/Lagos
|
||||
Africa/Lubumbashi=Africa/Maputo
|
||||
Africa/Lusaka=Africa/Maputo
|
||||
Africa/Malabo=Africa/Lagos
|
||||
Africa/Maseru=Africa/Johannesburg
|
||||
Africa/Mbabane=Africa/Johannesburg
|
||||
Africa/Mogadishu=Africa/Nairobi
|
||||
Africa/Niamey=Africa/Lagos
|
||||
Africa/Nouakchott=Africa/Abidjan
|
||||
Africa/Ouagadougou=Africa/Abidjan
|
||||
Africa/Porto-Novo=Africa/Lagos
|
||||
Africa/Sao_Tome=Africa/Abidjan
|
||||
Africa/Timbuktu=Africa/Abidjan
|
||||
America/Anguilla=America/Port_of_Spain
|
||||
America/Antigua=America/Port_of_Spain
|
||||
America/Argentina/ComodRivadavia=America/Argentina/Catamarca
|
||||
America/Aruba=America/Curacao
|
||||
America/Atka=America/Adak
|
||||
America/Buenos_Aires=America/Argentina/Buenos_Aires
|
||||
America/Catamarca=America/Argentina/Catamarca
|
||||
America/Cayman=America/Panama
|
||||
America/Coral_Harbour=America/Atikokan
|
||||
America/Cordoba=America/Argentina/Cordoba
|
||||
America/Dominica=America/Port_of_Spain
|
||||
America/Ensenada=America/Tijuana
|
||||
America/Fort_Wayne=America/Indiana/Indianapolis
|
||||
America/Grenada=America/Port_of_Spain
|
||||
America/Guadeloupe=America/Port_of_Spain
|
||||
America/Indianapolis=America/Indiana/Indianapolis
|
||||
America/Jujuy=America/Argentina/Jujuy
|
||||
America/Knox_IN=America/Indiana/Knox
|
||||
America/Kralendijk=America/Curacao
|
||||
America/Louisville=America/Kentucky/Louisville
|
||||
America/Lower_Princes=America/Curacao
|
||||
America/Marigot=America/Port_of_Spain
|
||||
America/Mendoza=America/Argentina/Mendoza
|
||||
America/Montreal=America/Toronto
|
||||
America/Montserrat=America/Port_of_Spain
|
||||
America/Porto_Acre=America/Rio_Branco
|
||||
America/Rosario=America/Argentina/Cordoba
|
||||
America/Santa_Isabel=America/Tijuana
|
||||
America/Shiprock=America/Denver
|
||||
America/St_Barthelemy=America/Port_of_Spain
|
||||
America/St_Kitts=America/Port_of_Spain
|
||||
America/St_Lucia=America/Port_of_Spain
|
||||
America/St_Thomas=America/Port_of_Spain
|
||||
America/St_Vincent=America/Port_of_Spain
|
||||
America/Tortola=America/Port_of_Spain
|
||||
America/Virgin=America/Port_of_Spain
|
||||
Antarctica/McMurdo=Pacific/Auckland
|
||||
Antarctica/South_Pole=Pacific/Auckland
|
||||
Arctic/Longyearbyen=Europe/Oslo
|
||||
Asia/Aden=Asia/Riyadh
|
||||
Asia/Ashkhabad=Asia/Ashgabat
|
||||
Asia/Bahrain=Asia/Qatar
|
||||
Asia/Calcutta=Asia/Kolkata
|
||||
Asia/Chongqing=Asia/Shanghai
|
||||
Asia/Chungking=Asia/Shanghai
|
||||
Asia/Dacca=Asia/Dhaka
|
||||
Asia/Harbin=Asia/Shanghai
|
||||
Asia/Istanbul=Europe/Istanbul
|
||||
Asia/Kashgar=Asia/Urumqi
|
||||
Asia/Katmandu=Asia/Kathmandu
|
||||
Asia/Kuwait=Asia/Riyadh
|
||||
Asia/Macao=Asia/Macau
|
||||
Asia/Muscat=Asia/Dubai
|
||||
Asia/Phnom_Penh=Asia/Bangkok
|
||||
Asia/Rangoon=Asia/Yangon
|
||||
Asia/Saigon=Asia/Ho_Chi_Minh
|
||||
Asia/Tel_Aviv=Asia/Jerusalem
|
||||
Asia/Thimbu=Asia/Thimphu
|
||||
Asia/Ujung_Pandang=Asia/Makassar
|
||||
Asia/Ulan_Bator=Asia/Ulaanbaatar
|
||||
Asia/Vientiane=Asia/Bangkok
|
||||
Atlantic/Faeroe=Atlantic/Faroe
|
||||
Atlantic/Jan_Mayen=Europe/Oslo
|
||||
Atlantic/St_Helena=Africa/Abidjan
|
||||
Australia/ACT=Australia/Sydney
|
||||
Australia/Canberra=Australia/Sydney
|
||||
Australia/LHI=Australia/Lord_Howe
|
||||
Australia/NSW=Australia/Sydney
|
||||
Australia/North=Australia/Darwin
|
||||
Australia/Queensland=Australia/Brisbane
|
||||
Australia/South=Australia/Adelaide
|
||||
Australia/Tasmania=Australia/Hobart
|
||||
Australia/Victoria=Australia/Melbourne
|
||||
Australia/West=Australia/Perth
|
||||
Australia/Yancowinna=Australia/Broken_Hill
|
||||
Brazil/Acre=America/Rio_Branco
|
||||
Brazil/DeNoronha=America/Noronha
|
||||
Brazil/East=America/Sao_Paulo
|
||||
Brazil/West=America/Manaus
|
||||
Canada/Atlantic=America/Halifax
|
||||
Canada/Central=America/Winnipeg
|
||||
Canada/East-Saskatchewan=America/Regina
|
||||
Canada/Eastern=America/Toronto
|
||||
Canada/Mountain=America/Edmonton
|
||||
Canada/Newfoundland=America/St_Johns
|
||||
Canada/Pacific=America/Vancouver
|
||||
Canada/Saskatchewan=America/Regina
|
||||
Canada/Yukon=America/Whitehorse
|
||||
Chile/Continental=America/Santiago
|
||||
Chile/EasterIsland=Pacific/Easter
|
||||
Cuba=America/Havana
|
||||
Egypt=Africa/Cairo
|
||||
Eire=Europe/Dublin
|
||||
Europe/Belfast=Europe/London
|
||||
Europe/Bratislava=Europe/Prague
|
||||
Europe/Busingen=Europe/Zurich
|
||||
Europe/Guernsey=Europe/London
|
||||
Europe/Isle_of_Man=Europe/London
|
||||
Europe/Jersey=Europe/London
|
||||
Europe/Ljubljana=Europe/Belgrade
|
||||
Europe/Mariehamn=Europe/Helsinki
|
||||
Europe/Nicosia=Asia/Nicosia
|
||||
Europe/Podgorica=Europe/Belgrade
|
||||
Europe/San_Marino=Europe/Rome
|
||||
Europe/Sarajevo=Europe/Belgrade
|
||||
Europe/Skopje=Europe/Belgrade
|
||||
Europe/Tiraspol=Europe/Chisinau
|
||||
Europe/Vaduz=Europe/Zurich
|
||||
Europe/Vatican=Europe/Rome
|
||||
Europe/Zagreb=Europe/Belgrade
|
||||
GB=Europe/London
|
||||
GB-Eire=Europe/London
|
||||
GMT+0=Etc/GMT
|
||||
GMT-0=Etc/GMT
|
||||
GMT0=Etc/GMT
|
||||
Greenwich=Etc/GMT
|
||||
Hongkong=Asia/Hong_Kong
|
||||
Iceland=Atlantic/Reykjavik
|
||||
Indian/Antananarivo=Africa/Nairobi
|
||||
Indian/Comoro=Africa/Nairobi
|
||||
Indian/Mayotte=Africa/Nairobi
|
||||
Iran=Asia/Tehran
|
||||
Israel=Asia/Jerusalem
|
||||
Jamaica=America/Jamaica
|
||||
Japan=Asia/Tokyo
|
||||
Kwajalein=Pacific/Kwajalein
|
||||
Libya=Africa/Tripoli
|
||||
Mexico/BajaNorte=America/Tijuana
|
||||
Mexico/BajaSur=America/Mazatlan
|
||||
Mexico/General=America/Mexico_City
|
||||
NZ=Pacific/Auckland
|
||||
NZ-CHAT=Pacific/Chatham
|
||||
Navajo=America/Denver
|
||||
PRC=Asia/Shanghai
|
||||
Pacific/Johnston=Pacific/Honolulu
|
||||
Pacific/Midway=Pacific/Pago_Pago
|
||||
Pacific/Ponape=Pacific/Pohnpei
|
||||
Pacific/Saipan=Pacific/Guam
|
||||
Pacific/Samoa=Pacific/Pago_Pago
|
||||
Pacific/Truk=Pacific/Chuuk
|
||||
Pacific/Yap=Pacific/Chuuk
|
||||
Poland=Europe/Warsaw
|
||||
Portugal=Europe/Lisbon
|
||||
ROC=Asia/Taipei
|
||||
ROK=Asia/Seoul
|
||||
Singapore=Asia/Singapore
|
||||
Turkey=Europe/Istanbul
|
||||
UCT=Etc/UCT
|
||||
US/Alaska=America/Anchorage
|
||||
US/Aleutian=America/Adak
|
||||
US/Arizona=America/Phoenix
|
||||
US/Central=America/Chicago
|
||||
US/East-Indiana=America/Indiana/Indianapolis
|
||||
US/Eastern=America/New_York
|
||||
US/Hawaii=Pacific/Honolulu
|
||||
US/Indiana-Starke=America/Indiana/Knox
|
||||
US/Michigan=America/Detroit
|
||||
US/Mountain=America/Denver
|
||||
US/Pacific=America/Los_Angeles
|
||||
US/Pacific-New=America/Los_Angeles
|
||||
US/Samoa=Pacific/Pago_Pago
|
||||
Universal=Etc/UTC
|
||||
W-SU=Europe/Moscow
|
||||
Zulu=Etc/UTC
|
||||
#Standard (IANA) abbreviations
|
||||
#Mon Apr 24 23:22:45 WEST 2017
|
||||
AWST=Australia/Perth
|
||||
BST=Europe/London
|
||||
CAT=Africa/Maputo
|
||||
ChST=Pacific/Guam
|
||||
HDT=America/Adak
|
||||
HKT=Asia/Hong_Kong
|
||||
IDT=Asia/Jerusalem
|
||||
JST=Asia/Tokyo
|
||||
NDT=America/St_Johns
|
||||
NST=America/St_Johns
|
||||
NZDT=Pacific/Auckland
|
||||
NZST=Pacific/Auckland
|
||||
PKT=Asia/Karachi
|
||||
SAST=Africa/Johannesburg
|
||||
SST=Pacific/Pago_Pago
|
||||
WAST=Africa/Windhoek
|
||||
WIT=Asia/Jayapura
|
||||
WITA=Asia/Makassar
|
||||
@@ -1,24 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEGzCCAwOgAwIBAgIUFkSKT1xCWg2PSu8fZs6OlZps+WIwDQYJKoZIhvcNAQEL
|
||||
BQAwgZwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRcwFQYDVQQH
|
||||
DA5SZWR3b29kIFNob3JlczEPMA0GA1UECgwGT3JhY2xlMQ4wDAYDVQQLDAVNeVNR
|
||||
TDEdMBsGA1UEAwwUTXlTUUwgQ29ubmVjdG9yL0ogQ0ExHzAdBgkqhkiG9w0BCQEW
|
||||
EG15c3FsQG9yYWNsZS5jb20wHhcNMjAwNjAzMjMyNTMwWhcNMzAwNjAxMjMyNTMw
|
||||
WjCBnDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFzAVBgNVBAcM
|
||||
DlJlZHdvb2QgU2hvcmVzMQ8wDQYDVQQKDAZPcmFjbGUxDjAMBgNVBAsMBU15U1FM
|
||||
MR0wGwYDVQQDDBRNeVNRTCBDb25uZWN0b3IvSiBDQTEfMB0GCSqGSIb3DQEJARYQ
|
||||
bXlzcWxAb3JhY2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||
AMkV8+jk2aOxHxnNOu86Ejlqd28i6BcfXtjXz9c7sEDrKJStrOzSHI94wka7HEYe
|
||||
r3lcMf5rBO3/hNGcL6YLzkpZVKfttR/lvqsihxatLgZ0mFHp2onXd7yPkK3Ana6q
|
||||
xmHCQ1ASAq4sFXCmNN7Zo6u5Y48pg1ZEMCyGlz3Stu9jov4/YrXY8r3bvnda+B9S
|
||||
FNJenl8ynSxy6ynnpgk9y9wKFbM2wj2BjGbpirvgr+wmPsmbgExzUrED2YsJpkof
|
||||
nxlWBuxPnpx7cJ6zGdDQLagbfZ5ortHRSFMcYVMIpGJr9eGjf7u4sE9/UVx4gp/f
|
||||
p6jQKlOG2FxjQLyvjstu7BsCAwEAAaNTMFEwHQYDVR0OBBYEFC6X3Chl98Mi25O5
|
||||
xl08SCvAaeL/MB8GA1UdIwQYMBaAFC6X3Chl98Mi25O5xl08SCvAaeL/MA8GA1Ud
|
||||
EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAIs+qEZxZUcjdYSIbXMxbppf
|
||||
r522fQ1yAzVgb/k2SaRR8gRTMW2/u6iazIrTRCuy2UyCY0cSw/I6j+H7rKEikhLl
|
||||
Nu2whzIQKUCoO1b8EKYrtX0djmxTTo/G/AgjygmlxEWMI1v2GpiaD+rOXXMvfFGC
|
||||
sNfQ2Bbi1mw8V/ZHShb53Bdpzs5H5NNF75Lz0SIiLxmi6fXoHXXmUHtE5dkfRmko
|
||||
a4/V8WcyMDOJQK/TSnsG3ug3Mg6Lkdu8uwXZcyEJ3eX40xjLyrNpq+evVHI4jM/W
|
||||
93ak/JebSNWMyMY9USETkDT0nWxvcKm5stMH6WKW+7cf4TQdGNKWwbzE4GMwQnw=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,24 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEDTCCAvWgAwIBAgIJAIiYHFajCcAZMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEXMBUGA1UEBwwOUmVkd29vZCBT
|
||||
aG9yZXMxDzANBgNVBAoMBk9yYWNsZTEOMAwGA1UECwwFTXlTUUwxHTAbBgNVBAMM
|
||||
FE15U1FMIENvbm5lY3Rvci9KIENBMR8wHQYJKoZIhvcNAQkBFhBteXNxbEBvcmFj
|
||||
bGUuY29tMB4XDTE3MDMwNDAwMDM0M1oXDTI3MDMwMjAwMDM0M1owgZwxCzAJBgNV
|
||||
BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRcwFQYDVQQHDA5SZWR3b29kIFNo
|
||||
b3JlczEPMA0GA1UECgwGT3JhY2xlMQ4wDAYDVQQLDAVNeVNRTDEdMBsGA1UEAwwU
|
||||
TXlTUUwgQ29ubmVjdG9yL0ogQ0ExHzAdBgkqhkiG9w0BCQEWEG15c3FsQG9yYWNs
|
||||
ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDLkHXpKMO4oUI0
|
||||
S64R4D2MIFtS9xXX4BK7jDW/VefKh87k9kLBPqKPb7NKqdCFcJk/JBrfvgQwb63U
|
||||
FH2TX3NYSQ/4gXG/UZoUMG9EK8KZ7gpKvrbgBSYAyOhE+dLrE7HYCesmS3Y4Owib
|
||||
0QJx8IozDQm/JencKk7swfT6sSBvPb/rvAegiOoxb7S2EW0zWlIw4P9kPmu8X4IW
|
||||
6u79gW1HyOAIi0wKFbqgXwTHaz+VtqjRglYi0U48H2xqw5IpVhZg9Di1VzeZESkD
|
||||
RVPNoFhhlX0xYfl3/+ZoNRVJDQHE6qXSfkDLePzw81Bl+OwO2CYZ0EXwW0bzgk9u
|
||||
HXuvuKrpAgMBAAGjUDBOMB0GA1UdDgQWBBSaoJ8RI8gbLGSrUwrrCbqvZR3i6DAf
|
||||
BgNVHSMEGDAWgBSaoJ8RI8gbLGSrUwrrCbqvZR3i6DAMBgNVHRMEBTADAQH/MA0G
|
||||
CSqGSIb3DQEBCwUAA4IBAQCHl2ezisRplspyEyqEH4uvBbBr1zGDXKn6BtPufXws
|
||||
4S+itxrw16sGI3RmYheyYuZPM+9PlwFMsWRJtfxZc4svZRr/s9IoHHQiV/KBILfu
|
||||
5JDxY1UwZcGHZ0b8XlgeBOxnq15z7YaU7+pPAVmpxmnehJCK8s+y5TlM2S2OEvYP
|
||||
I2swAXDE5Gzwq1Y/VExQZhRQL5LXGiNjZV+VHeLO3Vf5HrKUsKSTnq5kvdIwWELz
|
||||
o3NqS88gr36lBzh3aqX3/rxS0QdR4iecoG+ztO5ZS5mFpgqP+2aNAano/8cQ7jIQ
|
||||
8cm4akxWarBQRLik2lB+kwsxiyGF+k8NjVUAIUh70U7H
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpgIBAAKCAQEAyRXz6OTZo7EfGc067zoSOWp3byLoFx9e2NfP1zuwQOsolK2s
|
||||
7NIcj3jCRrscRh6veVwx/msE7f+E0ZwvpgvOSllUp+21H+W+qyKHFq0uBnSYUena
|
||||
idd3vI+QrcCdrqrGYcJDUBICriwVcKY03tmjq7ljjymDVkQwLIaXPdK272Oi/j9i
|
||||
tdjyvdu+d1r4H1IU0l6eXzKdLHLrKeemCT3L3AoVszbCPYGMZumKu+Cv7CY+yZuA
|
||||
THNSsQPZiwmmSh+fGVYG7E+enHtwnrMZ0NAtqBt9nmiu0dFIUxxhUwikYmv14aN/
|
||||
u7iwT39RXHiCn9+nqNAqU4bYXGNAvK+Oy27sGwIDAQABAoIBAQCeQ832JnB5WoWM
|
||||
7C+Pa9g+ImKgMQwUbtdaufjWgR8G6U7GPi9VMUXTUgsuWkQ1mB8p2Htsr9RwcWSb
|
||||
CV+jQ7V4ZPixNvEQiuVXklRab7FC2W+tQO6FAPY3jZMkfe5dNAHxnVEXayV66i1x
|
||||
vQ7tusQL+1y1p8m8Eu0Ljl7pBLiAjjgNJKDCalgo9EeYlWB4DOKLsiF24E5GKUqB
|
||||
X3zXAKvi5zzYMejhkZFLQE2dekshRP88O35+bw3ozw238HAKyoMAYeVf2jVwktUW
|
||||
30jHW4yru5Af2W2030EWoh4nUDfZUk7jvw8zquhltMm/Ca/qSvKjq6kOTXu+7U6U
|
||||
sIJHBqxhAoGBAPNHE1uKUzu0KV1yVXkc3jTYnknoCCE6iu/0dC6L9PcR4td7wTmq
|
||||
WAqfUUv8dfwR2mAmyvULIWwaiWv7IcPnt4amXe+biukE4vzOoa74i9cgxXu5A8od
|
||||
zUwBq07mk01UABQy63LJHB9kDeo6XeTNZjM7a3vFJgDKc3pc78JvGnkxAoGBANOa
|
||||
BoXIWYu5RKIFhyBRLNDSCdZPKi5AMh3Er2oi5QJztf87sFm2EK6vuCnLc+Qhcj8f
|
||||
MgZiXwlJCOKgRKyGKGaIl/zIwKxEhHKsN8slHQuVvhp+9qz/CFQYcyM9ye4GdHTq
|
||||
pfNVrIMZdu83aIRcmi04F+obsu+ZZVZoQCDk2WcLAoGBAKqIRDWC/V14qRZsMyY2
|
||||
6jy5LBw6nphMZWBXR6npScp3qz/J7GTz18t6ao6NZldQXHfSOasUJlWVNIeQ/tZI
|
||||
9AlbTbXMns9BMaxtXEE+0Sf4PPbBdrqTsXl6Ig+o6dDm9TczioBoIWKPzIFIcNEW
|
||||
enGnUWztgfpD8DbyNs9g+nnBAoGBAKDOo/hVit+pe2QaCVfg+Mr1ZC5u2SJu/Ocs
|
||||
ixaA0EMtxnjiVqHGwCTRO4bfrAIJ/PXFclHxvkGjNFJt8+KczeUmF0MvGWWRaIpx
|
||||
ILGMUed09BTUugg8hIrMTevRUD1IwIX9sQIc8M5ssrsXA6Hbcfu9bkcmp7R4gc/J
|
||||
yDp3UFSDAoGBAKPlusGAGwoM+Rk1fUiNHLF3uzi69OoeKFqeq9mUmGpkXs7fB1HJ
|
||||
b1/XaTQSMMt35JFlHbiQIG/iINNHL92IO1X2jUswB1P0gyPhv/KTcQ4VRXU+l846
|
||||
rq26BAfo/dxUd761PNj0XyIjYhddgbkbeF1lxnLqNZJ80rW0JXPa76qz
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAy5B16SjDuKFCNEuuEeA9jCBbUvcV1+ASu4w1v1XnyofO5PZC
|
||||
wT6ij2+zSqnQhXCZPyQa374EMG+t1BR9k19zWEkP+IFxv1GaFDBvRCvCme4KSr62
|
||||
4AUmAMjoRPnS6xOx2AnrJkt2ODsIm9ECcfCKMw0JvyXp3CpO7MH0+rEgbz2/67wH
|
||||
oIjqMW+0thFtM1pSMOD/ZD5rvF+CFuru/YFtR8jgCItMChW6oF8Ex2s/lbao0YJW
|
||||
ItFOPB9sasOSKVYWYPQ4tVc3mREpA0VTzaBYYZV9MWH5d//maDUVSQ0BxOql0n5A
|
||||
y3j88PNQZfjsDtgmGdBF8FtG84JPbh17r7iq6QIDAQABAoIBAQCAQDGphl9ZUW/u
|
||||
lsfCx26/fBtNeBKxAaGLu9iZBbyVo168blK8gYPVruBc6ARSLhC+8TZlRMhK4/G2
|
||||
rno3gWmgc9e2D4fkq7rRgXp4jsF6Tbj6QpHhLh01XV7JJkS2ip//prAaXmzLHJZd
|
||||
5R8PPicz5sD/RxnB9n3nOIPp9fKjYjlikzESEn+BaimTFGTX2X2w/exrzDpT6jd5
|
||||
hTBg/v4UAs/+5v/M6646VPctz+Mc9Db1b2EH35Nv3kXHX2ts3ChRzjgKEDbEBT/q
|
||||
d6yb+3zd8sdZJqxWQtWMAN6BGwzSJZ3//zaqyY8K7YNEHwHJWAjjlRG1PcgQRgZc
|
||||
zcKVfKOpAoGBAPlu+strrwUBJD9AA1FgUQBMmCtvS1L5e4VQSqyR1g62ok3VBnJ/
|
||||
olUREbMVoSJK0Kjuz+Hzrs4t6md8i1AC4zwOly/JKqWsuPXb6sCNNEi6SB6zrg4p
|
||||
9CmUIp99QdpZV5Gqkk2kK/nyMHuwIbuZRLBoEpzAFmPghU+ajalKcemzAoGBANDs
|
||||
WiSZ6iRa9AHY69kC2V8eoRueZJTl1Kb7MsRo3vJ4GNHA5g/qbkSzDndPwpgfalvV
|
||||
nOZLYOCBw/HpNxAjjLMgELaVi6LsG9yA7BiXjpcUFykFsc1KdHhTOFoIS+E9mspq
|
||||
Otj26gwuPNJkzePJjPLAbD8KszCvoDFr8iI1EdLzAoGBAPcS5GAdcYdegx4X9XFl
|
||||
G7dVJ6JWouE0+RKr3twjtUprxEeejL1cCluDBepDsZH7U8cSj16899mJh9gseP6v
|
||||
bZEuzrlp5dGoTqpSxa0n8bNculWXHAExs4aAEu+yrklwGBrVQAiiZ2E1cqsCY9ek
|
||||
0XKAFHeqmkMiwkqAyHP5pu6bAoGAYe85PkkMEei00xzdScflH4qbGPhBy+6EpZXB
|
||||
MYK7Z8vWTpTvA2zwLbIFyPYRkP/A+rWCrA2Ppw4NTRv2nNEdRmZ0jzJA16l4Uf/5
|
||||
LHn29GkNhkROGZ6aREE2fDXBZB9drR7o4QW1puoRxspMHUhAkxaSZ2bboqnhHOmu
|
||||
Ak0AQvMCgYAEBbYfB6PmIvPL458OL3DSc+CGyp+SMep9d5WJrSjjersO55nn3/LL
|
||||
lxV+zdN6gR7jQn0xtn7rHp/IpPFBc7FUqcTPFnc9YrIrBaS5yvhmv94yOf+4MCq0
|
||||
7FYG2XRl9QRl+FSsxHFl8m/sl38GdIl7CQvafc2BXozdwTrzSjTSuA==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,129 +0,0 @@
|
||||
|
||||
===================================
|
||||
STEPS TO GENERATE TEST CERTIFICATES
|
||||
===================================
|
||||
|
||||
|
||||
1. CA key and certficate
|
||||
========================
|
||||
|
||||
(Generate the CA key)
|
||||
$ openssl genrsa -out ca-key.pem 2048
|
||||
|
||||
(Generate a self-signed certificate for the CA)
|
||||
$ openssl req -new -x509 -nodes -sha256 -days 3650 -key ca-key.pem -out ca-cert.pem
|
||||
(...)
|
||||
Country Name (2 letter code) []:US
|
||||
State or Province Name (full name) []:California
|
||||
Locality Name (eg, city) []:Redwood Shores
|
||||
Organization Name (eg, company) []:Oracle
|
||||
Organizational Unit Name (eg, section) []:MySQL
|
||||
Common Name (e.g. server FQDN or YOUR name) []:MySQL Connector/J CA
|
||||
Email Address []:mysql@oracle.com
|
||||
|
||||
|
||||
2. Server key and certificate
|
||||
=============================
|
||||
|
||||
(Generate the server key)
|
||||
$ openssl genrsa -out server-key.pem 2048
|
||||
|
||||
(Generate a certificate signing request for the server)
|
||||
$ openssl req -new -key server-key.pem -out server-csr.pem
|
||||
(Or, if the Subject Alternative Name field is required for testing - *used together with below sign command*)
|
||||
$ openssl req -new -key server-key.pem -out server-csr.pem \
|
||||
-reqexts SAN \
|
||||
-config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\n\nsubjectAltName=@alt_names\n\n[alt_names]\nDNS.1=bug99767.mysql.san1.tst\nDNS.2=*.mysql.san2.tst\nDNS.3=bug*.mysql.san3.tst\nDNS.4=*99767.mysql.san4.tst\nDNS.5=bug99767.*.san5.tst\nDNS.6=bug99767.*\nDNS.7=*\nIP.1=9.9.7.67\nIP.2=99.7.6.7"))
|
||||
(...)
|
||||
Country Name (2 letter code) []:US
|
||||
State or Province Name (full name) []:California
|
||||
Locality Name (eg, city) []:Redwood Shores
|
||||
Organization Name (eg, company) []:Oracle
|
||||
Organizational Unit Name (eg, section) []:MySQL
|
||||
Common Name (e.g. server FQDN or YOUR name) []:MySQL Connector/J Server
|
||||
Email Address []:mysql@oracle.com
|
||||
(...)
|
||||
A challenge password []:
|
||||
An optional company name []:
|
||||
|
||||
(Sign the server certificate signing request)
|
||||
$ openssl x509 -req -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -days 3650 -sha256 -out server-cert.pem
|
||||
(Or, if the Subject Alternative Name field is required for testing - *used together with above request command*)
|
||||
$ openssl x509 -req -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -days 3650 -sha256 -out server-cert.pem \
|
||||
-extfile <(printf "subjectAltName=@alt_names\n\n[alt_names]\nDNS.1=bug99767.mysql.san1.tst\nDNS.2=*.mysql.san2.tst\nDNS.3=bug*.mysql.san3.tst\nDNS.4=*99767.mysql.san4.tst\nDNS.5=bug99767.*.san5.tst\nDNS.6=bug99767.*\nDNS.7=*\nIP.1=9.9.7.67\nIP.2=99.7.6.7")
|
||||
|
||||
(OPTIONAL: Delete the certificate signing request file)
|
||||
$ rm server-csr.pem
|
||||
|
||||
(OPTIONAL: Verify the server certificate)
|
||||
$ openssl verify -CAfile ca-cert.pem server-cert.pem
|
||||
|
||||
|
||||
3. Client key and certificate
|
||||
=============================
|
||||
|
||||
(Generate the client key)
|
||||
$ openssl genrsa -out client-key.pem 2048
|
||||
|
||||
(Generate a certificate signing request for the client)
|
||||
$ openssl req -new -key client-key.pem -out client-csr.pem
|
||||
(...)
|
||||
Country Name (2 letter code) []:US
|
||||
State or Province Name (full name) []:California
|
||||
Locality Name (eg, city) []:Redwood Shores
|
||||
Organization Name (eg, company) []:Oracle
|
||||
Organizational Unit Name (eg, section) []:MySQL
|
||||
Common Name (e.g. server FQDN or YOUR name) []:MySQL Connector/J Client
|
||||
Email Address []:mysql@oracle.com
|
||||
(...)
|
||||
A challenge password []:
|
||||
An optional company name []:
|
||||
|
||||
(Sign the client certificate signing request)
|
||||
$ openssl x509 -req -in client-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -days 3650 -sha256 -out client-cert.pem
|
||||
|
||||
(OPTIONAL: Delete the certificate signing request file)
|
||||
$ rm client-csr.pem
|
||||
|
||||
(OPTIONAL: Verify the client certificate)
|
||||
$ openssl verify -CAfile ca-cert.pem client-cert.pem
|
||||
|
||||
|
||||
4. CA truststore
|
||||
================
|
||||
|
||||
(Create a truststore containing the CA certificate)
|
||||
$ keytool -importcert -alias mysqlcacert -file ca-cert.pem -keystore ca-truststore -storepass password
|
||||
Trust this certificate? [no]: yes
|
||||
|
||||
(OPTIONAL: List the contents of the truststore)
|
||||
$ keytool -list -keystore ca-truststore -storepass password
|
||||
|
||||
|
||||
5. Client key and certificate keystore
|
||||
======================================
|
||||
|
||||
(Convert client key to pkcs12 format)
|
||||
$ openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "mysqlclient" -passout pass:password -out client-keystore.p12
|
||||
|
||||
(Create a keystore containing the client key)
|
||||
$ keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass password -destkeystore client-keystore -deststoretype JKS -deststorepass password
|
||||
|
||||
(OPTIONAL: Delete the client key in pkcs12 format)
|
||||
$ rm client-keystore.p12
|
||||
|
||||
(OPTIONAL: List the contents of the client keystore)
|
||||
$ keytool -list -keystore client-keystore -storepass password
|
||||
|
||||
|
||||
|
||||
==========================
|
||||
RUN SERVER WITH TEST CERTS
|
||||
==========================
|
||||
Add to my.conf:
|
||||
|
||||
[mysqld]
|
||||
ssl-key = "/path/server-key.pem"
|
||||
ssl-cert = "/path/server-cert.pem"
|
||||
ssl-ca = "/path/ca-cert.pem"
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDsjCCApoCAQEwDQYJKoZIhvcNAQELBQAwgZwxCzAJBgNVBAYTAlVTMRMwEQYD
|
||||
VQQIDApDYWxpZm9ybmlhMRcwFQYDVQQHDA5SZWR3b29kIFNob3JlczEPMA0GA1UE
|
||||
CgwGT3JhY2xlMQ4wDAYDVQQLDAVNeVNRTDEdMBsGA1UEAwwUTXlTUUwgQ29ubmVj
|
||||
dG9yL0ogQ0ExHzAdBgkqhkiG9w0BCQEWEG15c3FsQG9yYWNsZS5jb20wHhcNMjAw
|
||||
NjAzMjMzMDE5WhcNMzAwNjAxMjMzMDE5WjCBoDELMAkGA1UEBhMCVVMxEzARBgNV
|
||||
BAgMCkNhbGlmb3JuaWExFzAVBgNVBAcMDlJlZHdvb2QgU2hvcmVzMQ8wDQYDVQQK
|
||||
DAZPcmFjbGUxDjAMBgNVBAsMBU15U1FMMSEwHwYDVQQDDBhNeVNRTCBDb25uZWN0
|
||||
b3IvSiBDbGllbnQxHzAdBgkqhkiG9w0BCQEWEG15c3FsQG9yYWNsZS5jb20wggEi
|
||||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcO3YhUeTcyj8F3R6OqRrcLLKx
|
||||
h3FW6bGZL5jSO+GkMLoSWasN8wlaUGz7TJ3bmYmr1XZ8aBWVKlZVzN3vdIaOMd0/
|
||||
ceoG1oiyLNHfsqo3bdA0RNMzEDj1sts8i8Ucs+sa5mI+vS7RY7gqYeybLRGYRGWu
|
||||
5CTIVbTsI5BS3RS3Ekb4WcdFTFfZvEvLWSNn7ssyDdCpE6vywIwwmymk8+5L7tye
|
||||
xGhHQYx3Dl65yZMdgXl0b78TrJia7TIospTHRLS2cZewQCdT4Wb694JHqp1esJWP
|
||||
ay/xe2IACQ7H8Uco1yU1yIx1mF6YaAoyk5LKkTD9sCZgxmSoD6EhpcnhwgSbAgMB
|
||||
AAEwDQYJKoZIhvcNAQELBQADggEBABZNcp/PAWOQPHMjSErsqTVUpI6O2VYX8EYZ
|
||||
lLFb5cy7oDaTlH4vo1Fn/jCDZ7bcWuGIYVzu0xurXtowSq5xvcaxtVVzPWZobTth
|
||||
USrInathbupk6h2zkOjMzwS6nd86+VwI6rr6RflR5nS/T85+r19/68OtHLIcJTkP
|
||||
x8A03X1PzoIZh57cKcRLNabtOstk7ErnC9rXJaO8dbq9WDWkrWpQGekz4pJB2oh0
|
||||
CZADcrIedPRaLJ8X3ghm6ucmmCCrhKUrYYPev2O9oq9lk9Pv8ryhTWnxWjB1Ckye
|
||||
/Puyla0a/YDYZffWBJsunUuw7P9rnnMtKyi3/SsBOpGsxhtmSYk=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,22 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDsjCCApoCAQEwDQYJKoZIhvcNAQELBQAwgZwxCzAJBgNVBAYTAlVTMRMwEQYD
|
||||
VQQIDApDYWxpZm9ybmlhMRcwFQYDVQQHDA5SZWR3b29kIFNob3JlczEPMA0GA1UE
|
||||
CgwGT3JhY2xlMQ4wDAYDVQQLDAVNeVNRTDEdMBsGA1UEAwwUTXlTUUwgQ29ubmVj
|
||||
dG9yL0ogQ0ExHzAdBgkqhkiG9w0BCQEWEG15c3FsQG9yYWNsZS5jb20wHhcNMTcw
|
||||
MzA0MDAwNzA3WhcNMjcwMzAyMDAwNzA3WjCBoDELMAkGA1UEBhMCVVMxEzARBgNV
|
||||
BAgMCkNhbGlmb3JuaWExFzAVBgNVBAcMDlJlZHdvb2QgU2hvcmVzMQ8wDQYDVQQK
|
||||
DAZPcmFjbGUxDjAMBgNVBAsMBU15U1FMMSEwHwYDVQQDDBhNeVNRTCBDb25uZWN0
|
||||
b3IvSiBDbGllbnQxHzAdBgkqhkiG9w0BCQEWEG15c3FsQG9yYWNsZS5jb20wggEi
|
||||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCluIoIzfZDPJYrHet8kbyeG+rp
|
||||
8GLVDcZ0n0EOHqkviSSpi2iEkxolpWXVBN6DddP0jE9Pitpf8dyfEnRUeEYQrU21
|
||||
da788gaA17mZZsfP36QRW3Jz2tekodlYtKSeo4Gl+IPIyBjeQG9sqSpQe9oyruJV
|
||||
LUmz9euPtJj1UqhTBVDAW9NgCGgfqAEw0Hos+H8+/LRia/9O8VThVTzlPaiJylli
|
||||
xxin4/JkFiQj+R7CDyhNfnY/9kY0XoeVemjkOWCMAstSqjQzevRtVdXeduzsL6fq
|
||||
g4tKgqOXaWUT9g2XC1807qExmo4o13X9v9fXCNv4R+vwzofYp0DSmbHUrBPhAgMB
|
||||
AAEwDQYJKoZIhvcNAQELBQADggEBAJg0npMHVfOXDDGbqQzRaqNY51id6/0tagRa
|
||||
FQfVNjaLDWI5WDDw+LRGxgiBEthbWP/dPWjiZrEr0LQFIvDcAqEtZNNcoAQEMr28
|
||||
tuOmVad0Es/lMf1xxghBkn8XjVwUUmLpW+WEfI1NvSdrsn70e04A0LXj88zxa2eJ
|
||||
smUU2ML7dAfvb+EYhLB5jnlO/ARQ8eMwHiN/lsEntX8iEDwhID+7gFubgmIkxyjM
|
||||
LsqgqayvTvQ/WvWSCk73oVqSRhlN30N/ses7TUDWyUvZTJorrekIiMCwNFJ6gPCU
|
||||
OlWO3mCFgt47XlCzLMfqfOKxDxGkcxW+S4nU0m7FbRPf7rMmBxk=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEA3Dt2IVHk3Mo/Bd0ejqka3CyysYdxVumxmS+Y0jvhpDC6Elmr
|
||||
DfMJWlBs+0yd25mJq9V2fGgVlSpWVczd73SGjjHdP3HqBtaIsizR37KqN23QNETT
|
||||
MxA49bLbPIvFHLPrGuZiPr0u0WO4KmHsmy0RmERlruQkyFW07COQUt0UtxJG+FnH
|
||||
RUxX2bxLy1kjZ+7LMg3QqROr8sCMMJsppPPuS+7cnsRoR0GMdw5eucmTHYF5dG+/
|
||||
E6yYmu0yKLKUx0S0tnGXsEAnU+Fm+veCR6qdXrCVj2sv8XtiAAkOx/FHKNclNciM
|
||||
dZhemGgKMpOSypEw/bAmYMZkqA+hIaXJ4cIEmwIDAQABAoIBAQDUZHQUxkoVtOb6
|
||||
3LlvlB7XYDQlih4AV/hzZ7fWaPG/y05oDBovpcfLVe0EnmtPMc/X7FIMwMSvytjg
|
||||
fmc7XAG4eNaLLW0pkxTZ4Oe2+TO3qSw2fHnCsU59hjRxO8qpV8rRcoYlQ4Y3Yhhm
|
||||
p3HsZZamZrA57sSagC2v3sx9XcFwm2HaGE5iKQSst883GV/IZWPdfT9WohbwxZe5
|
||||
TuMDvA9bj7u1WXxzw1xcs4pv1u3UqZMY29tEmnkiz2125Ju8ADMYjgsJS1TDcwn4
|
||||
xHrKVItQrXmfOh8EvXneo0ROlBwSVIHNA7CPoZJKtmOjZ1VOwV2Q//OzhO6wysFx
|
||||
xJhMIC9hAoGBAPAWNY9Cnx2YlJbhATChixpNBtQXiiufPE3sG+U9ZGxC06b5yoeW
|
||||
V5q0d9ejy/B5y1UhlqQEIoYm47Rf0n4gJxymWnoq3C279x6mXxBR+KwATufDcxvm
|
||||
HTRyAFqjNOZSlknM5v4n6hmAQWhLIv/vRLzNulZ4maCQ6pp72AJN/KAVAoGBAOrU
|
||||
XIiFnqJ866XihA2pi8XAIcfRH0tFWrNYFyOJifRa3N59/YxTI+mxBqVFldNToT4w
|
||||
BOG0nAQsrvCk2dtBb2pOhrqpgqLW29uBdrclHp2qr/zXT6eQUMCl2HngGsYR/Ge5
|
||||
itbKrtREEgfioc6huU97OeuhPfquuFZTFj2WCY3vAoGBALytt4nOoZ1wu9WXHohJ
|
||||
bDhPMH6dwUhm682RMJsHlFRAcHVY+YF09YPvL/+YCj4CeXl93BUp6rfi+DBY3eOh
|
||||
ARvS4GgCJucKQTslJLB+ux7xXxFk2KGkRm9g6EZS3M/lN5boIOC8HY3M7Zo48liQ
|
||||
gUSfqUErphA50yV1Dl1BTLfBAoGBAKZE9LvJeFfugV90MjIGQSwkbQaxICpIkf74
|
||||
OXH1GZPFnit/I75uw7fcmyr8SShXR4zjrSEuo2UlSjyjTIm9HCk2LpkOGqw323Xh
|
||||
hfAJPVM/nto0jXbEbRjqlIs+zVY/N+staYvJ+N3c0LN6mTzYL4CCbLFU+rB7c5PT
|
||||
wqSajmtLAoGAJ84BpcZUYul9A7uDfQluVqQsp1fRS92FP4Yq7qVVccz9es2NosN9
|
||||
b8ZVpRdqxEvx8RvKPjXrl9VBqW7YuUvRrH7DRw+vmixeqnsLmCq6fGUeP75rTFPH
|
||||
EcUdNhwYMjpZWxNxOLcA34QLYZopkNVp/loQ8Dy5wntWfPZzKVwVHNI=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEApbiKCM32QzyWKx3rfJG8nhvq6fBi1Q3GdJ9BDh6pL4kkqYto
|
||||
hJMaJaVl1QTeg3XT9IxPT4raX/HcnxJ0VHhGEK1NtXWu/PIGgNe5mWbHz9+kEVty
|
||||
c9rXpKHZWLSknqOBpfiDyMgY3kBvbKkqUHvaMq7iVS1Js/Xrj7SY9VKoUwVQwFvT
|
||||
YAhoH6gBMNB6LPh/Pvy0Ymv/TvFU4VU85T2oicpZYscYp+PyZBYkI/kewg8oTX52
|
||||
P/ZGNF6HlXpo5DlgjALLUqo0M3r0bVXV3nbs7C+n6oOLSoKjl2llE/YNlwtfNO6h
|
||||
MZqOKNd1/b/X1wjb+Efr8M6H2KdA0pmx1KwT4QIDAQABAoIBADV0tXHpngpKPNZj
|
||||
rFZeXE1UDA6yL+8xplZwGHgJg+GFh4H5Khm5qbGDDLoN/AjDtT8pE1xBGffg+J2H
|
||||
QmcM9OzkOjDSaUPGfjqJW6ET+lgfd7jxmpWsferpGkb23jMd4vA6nafig8MNXePb
|
||||
HX8gtF2s8+0t0pxuMzIDu2NG6mz8wQ3/V4vrbOM/AV5oXysfWei1NyU8z0DDHBd6
|
||||
GrriUvKUPmSXWR1uO6LKMO0+TxCZlAFHN0K7Ej1LU5nw3nzGaHkggvmch7od1qXr
|
||||
7C6Hlf1I2iX2x7l14P99rQrj0JLZtm0aB3HHAymfNk0yrzkEraaUgkTccSfknfaq
|
||||
iD4ZBwECgYEA0SMQXt4ZyOVGYFPxegQF8BW/7S/FRdoQS94t5NJ04uZgWo0VMYII
|
||||
Pl05r3QLn4+86ZB5Pzg6lsC0d/GpsHxPoHXl9+LTlXkGWoorLGbMA1L+P7ZrUwP0
|
||||
tx/tDioc6mwautExV/VcIJm5j1c6PbpsEBCRBDCu9meVcKl18UAl2qkCgYEAytrz
|
||||
6Dy5qxyXui3jcBvKPtk6ETs5uxWekQvMNB6jmN6qKlKle1yaJwIwWwV671iUjPst
|
||||
UN+AJGELdgZJOzg9AHeoIpvgGQ2bMp5NwTimvY6M6kbH4za+bgZAXZdYoqB5ReZG
|
||||
5QR1+eEL+r9oVvqcCaAYc3r30uDxMPNRZR6oKnkCgYEAkvyO6+4ztyOVU+yLolMj
|
||||
jTrsGprhjpeVrozoOpPD/RknjVztEU+v1Y0WFv97j9ipUIru/ITbgMrNzCM4PUcR
|
||||
e9iBGbj9NmfKFGZZs6pIJun0sfjW85CrNO2mYbctfYEfRD/06zoSVwNUDK+kym+0
|
||||
tZG/Km/A+IOS34zqzPVl5YkCgYEAiDLOBKWQ+6Qs8yIQTJs8BUqQRDWBo2z2k+hZ
|
||||
6LyRlvgZRGVNGjCoh3xevx5E1iKhSq7yVBRb0xEdQtchoBM4UfIE/4esxOVvyGKl
|
||||
ThAdU7Q8RKfVWWbOIM0ttikBp98azaW4/9co5ucExgxxn8SPs568C/0KG5pQFk+n
|
||||
3L7ipfECgYBAoVUMbq8WbT9GQr2lIs4P3/tDX7PZ3YgoN2+txoVi16Xzxcy1YUBE
|
||||
gd9prvNpOULwlXd7/Ip3riXkypU7tKXmsu8WloucOO+cHSpGXKzt0I8bbHYYx46N
|
||||
2GZb7oVya/0nv9vWuPF94eKAd//qA/FyCgQexDG/F7fT44uf5Vw0Vw==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,15 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXQIBAAKBgQDBzoqQuwZ9/eKMOU0OXWJ4ISj+2YEk8l4OmBoC9Y2wNEe4Pcjz
|
||||
mCF/f9aZDyH6znh0G6gmb/yrTvuNLYkTUgiFNm0yJ2rSzlgmJZHkWykRkjKr4V04
|
||||
iAaHdU4ORre7Ms9eln7k8CeVQFpCjM51HOLkp8IhnAVrkOhSbHI4vxprbQIDAQAB
|
||||
AoGBAJbMD3L3ouCLmCfFOhiwPrr8CjrpoBvQXbD7VlnxGDL/KsLHiEFJoN7k6GQl
|
||||
qynMV1r4XgiyYCYnCYHa6WpYDPnHI59pq4P7UUkO8hC54FVSbnZvNLnveRa4hmYv
|
||||
d/7uRGEygJ0ifrHaaAztLHx5MgpMveJ4FTeQK0bjnOvTk0FBAkEA4v2QFc6em3bF
|
||||
5CIvtmo44dpeX/89dzShGLheIAMlgrq2a7ZYi5L7G4NQH+nUKErObtqjGnhtZNjp
|
||||
6El2B+LVfQJBANqTTz9bAIVJhnLpJz39YNXgtHQFuSNeqwI1b3XW5X037+2G1Fu5
|
||||
vEqc4rSn+auzqnPhvWaHL6e9s+BgxRUxELECQQCFLGLGiIzBhTOhHvWDPlrVFzrb
|
||||
c3JqZ7REPpbqjS4KvuSb2UWlzbwJbkcqEhPo98qZeyjKNPFpg2HoaIEZK1o5AkA6
|
||||
fDA4Q6FgCMxw8vINJD9E+1tNsDpZvHsFnEa2wUmmt9D7PZiU8p3vWQtQS6ICz5BM
|
||||
cZq8VG/r8lavMzWI9hgBAkBz92TmpDXjqsa9pJ2reqjc9EwvBwH0d4Up8jKrUotc
|
||||
qFNXFtt+UCBRM358LYNHJlEmorc/EM9Tx89YeNGwSgXU
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,6 +0,0 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBzoqQuwZ9/eKMOU0OXWJ4ISj+
|
||||
2YEk8l4OmBoC9Y2wNEe4PcjzmCF/f9aZDyH6znh0G6gmb/yrTvuNLYkTUgiFNm0y
|
||||
J2rSzlgmJZHkWykRkjKr4V04iAaHdU4ORre7Ms9eln7k8CeVQFpCjM51HOLkp8Ih
|
||||
nAVrkOhSbHI4vxprbQIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -1,22 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDsjCCApoCAQEwDQYJKoZIhvcNAQELBQAwgZwxCzAJBgNVBAYTAlVTMRMwEQYD
|
||||
VQQIDApDYWxpZm9ybmlhMRcwFQYDVQQHDA5SZWR3b29kIFNob3JlczEPMA0GA1UE
|
||||
CgwGT3JhY2xlMQ4wDAYDVQQLDAVNeVNRTDEdMBsGA1UEAwwUTXlTUUwgQ29ubmVj
|
||||
dG9yL0ogQ0ExHzAdBgkqhkiG9w0BCQEWEG15c3FsQG9yYWNsZS5jb20wHhcNMjAw
|
||||
NjAzMjMyNzUxWhcNMzAwNjAxMjMyNzUxWjCBoDELMAkGA1UEBhMCVVMxEzARBgNV
|
||||
BAgMCkNhbGlmb3JuaWExFzAVBgNVBAcMDlJlZHdvb2QgU2hvcmVzMQ8wDQYDVQQK
|
||||
DAZPcmFjbGUxDjAMBgNVBAsMBU15U1FMMSEwHwYDVQQDDBhNeVNRTCBDb25uZWN0
|
||||
b3IvSiBTZXJ2ZXIxHzAdBgkqhkiG9w0BCQEWEG15c3FsQG9yYWNsZS5jb20wggEi
|
||||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCTHer68cds/M3Q7Z5VTn3cgDc2
|
||||
XKUZV4u7nXQF/lT/W7HPtpP+cJpRRbWXpwbO4whjY6vaXYvwSh9vrrfOYp7eqg9W
|
||||
yGQjVV3GoCJdIp+JJVG9wdYbWcWlFDNdHPOrtbkDRq9DjDlqDA9P7CM5BwykSoG1
|
||||
YakxjeMJWYiHLWCTJRhzE4YZ7+H/2yDwwpcgES9JwEjrEnevjR9ygCJlC05ofkwL
|
||||
CG6PDYdOagxcY70fW5q6U2fpBfS1WqkUZtxs5cPf7F+kdRUXPfLi2c6eAjTZVJEl
|
||||
JCajrGH6+f/d4pP/4ial0+nBhpZbxwccjHnhFb3YZLJprz0g3q9cBU1xMkuvAgMB
|
||||
AAEwDQYJKoZIhvcNAQELBQADggEBAEcoIY6hiQ9Pw3axZIY1k70Hj2EFrjtrCZNz
|
||||
IaOTuosQvZXAhyLU1YViU//KdR6JwI4orLZJWrSQkoAJrp38nlaiQIjqOCz2kEkE
|
||||
70Cs1KWSJ9PSmQG5+JfpK+q7rFLu62MwsswRdWxXImnXrp0+pAKjGffBtuM0r51s
|
||||
z2nyZEpJM82h4JoFbfYm7G/7LGSiZYFEYMuVuR1N/IkAkLa6pYJuzP8CQX9BV0sb
|
||||
hhVCyG2xaRRk7l3OrGGUGLpGaGZAUoQtsmTrL0v533qCl0FpKAe8oL3TGP5qGgJY
|
||||
1nZOplN4foXOvjKEBm+cf0gI2vQ7FzSROZ0GsY3WCLZwnwLGZkU=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,26 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEUjCCAzqgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBnDELMAkGA1UEBhMCVVMx
|
||||
EzARBgNVBAgMCkNhbGlmb3JuaWExFzAVBgNVBAcMDlJlZHdvb2QgU2hvcmVzMQ8w
|
||||
DQYDVQQKDAZPcmFjbGUxDjAMBgNVBAsMBU15U1FMMR0wGwYDVQQDDBRNeVNRTCBD
|
||||
b25uZWN0b3IvSiBDQTEfMB0GCSqGSIb3DQEJARYQbXlzcWxAb3JhY2xlLmNvbTAe
|
||||
Fw0yMDA3MDgxMDUxNTNaFw0zMDA3MDYxMDUxNTNaMIGgMQswCQYDVQQGEwJVUzET
|
||||
MBEGA1UECAwKQ2FsaWZvcm5pYTEXMBUGA1UEBwwOUmVkd29vayBTaG9yZXMxDzAN
|
||||
BgNVBAoMBk9yYWNsZTEOMAwGA1UECwwFTXlTUUwxITAfBgNVBAMMGE15U1FMIENv
|
||||
bm5lY3Rvci9KIFNlcnZlcjEfMB0GCSqGSIb3DQEJARYQbXlzcWxAb3JhY2xlLmNv
|
||||
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJw8ZFOmkBrUmAwPtmWS
|
||||
tdfWR6GTw1mfzWEDKwz3wHiyqkZ2tBLxVSs+bou7d9ig+v+t7d2zsc2I4IArK5rv
|
||||
sbheZ/qhjxrFekGAgfJHuY2J9sdhP208Lv3DSf+9GYyCMbccSNbFEWNkE4TvwHs/
|
||||
cekr0+UjH1eJ476WLjiuDTZwUlR5X/uVPKWDr2lGzMt+CCIOTygMqj6pi11Cr0Pj
|
||||
+IUK96NwBg+tOknD8Z7bl979Fl8WNPl6SGhhQ6FLtfZCz7U5FKEybYrRYgVfd5DG
|
||||
ke6y76VOaN9YFpS7VvSB5b+OkZ1WtNgo7Iao5PqT7Nks5T9gr2jNZVJjWz1+hIvp
|
||||
EM8CAwEAAaOBmDCBlTCBkgYDVR0RBIGKMIGHghdidWc5OTc2Ny5teXNxbC5zYW4x
|
||||
LnRzdIIQKi5teXNxbC5zYW4yLnRzdIITYnVnKi5teXNxbC5zYW4zLnRzdIIVKjk5
|
||||
NzY3Lm15c3FsLnNhbjQudHN0ghNidWc5OTc2Ny4qLnNhbjUudHN0ggpidWc5OTc2
|
||||
Ny4qggEqhwQJCQdDhwRjBwYHMA0GCSqGSIb3DQEBCwUAA4IBAQAHjmQ6bUvc2gLp
|
||||
0OnGTTx22yfTK5xfClKQod5qCow20TZZJKmRa8vbXzPnXYi2eyn+NFqXtzI1BSc1
|
||||
3DN+A3l/yyfvm3nnbRVqTdHTNNKWFuXdrdSaKY3pVUbTT+ZV4rx/dDBI94lQQ7lV
|
||||
SvEITgzda3JmloICZiIFuKgZ3pnJwGh7yakqKTZOC9w2G7zQjwC129L8gczimd9C
|
||||
0NB7Ux5Lxz8KG5ggk6EgXtSjrw5kz9bLKbrBxqeTbt6hIijzdg/DN9ARswFxmEW5
|
||||
gRE9efLrjyuO7ceZ9Qdw7PEsbClf5Hq5FeOrlNeew3AnKMUPFRddVJF+cOemhZvE
|
||||
6ancGoGh
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAkx3q+vHHbPzN0O2eVU593IA3NlylGVeLu510Bf5U/1uxz7aT
|
||||
/nCaUUW1l6cGzuMIY2Or2l2L8Eofb663zmKe3qoPVshkI1VdxqAiXSKfiSVRvcHW
|
||||
G1nFpRQzXRzzq7W5A0avQ4w5agwPT+wjOQcMpEqBtWGpMY3jCVmIhy1gkyUYcxOG
|
||||
Ge/h/9sg8MKXIBEvScBI6xJ3r40fcoAiZQtOaH5MCwhujw2HTmoMXGO9H1uaulNn
|
||||
6QX0tVqpFGbcbOXD3+xfpHUVFz3y4tnOngI02VSRJSQmo6xh+vn/3eKT/+ImpdPp
|
||||
wYaWW8cHHIx54RW92GSyaa89IN6vXAVNcTJLrwIDAQABAoIBAHoBH7RI+ogKB22z
|
||||
AdHhLEPHGQK+RjUEA1/uLiAiUb8L/iQyV/10yKWJ2BUScXT1lylFqWmIltsJvZRT
|
||||
Ix/HbdVe1yWzPkiHLSPh/V2brw5/opBpxfQcuOo0HHyl2/aU2AA9iG/ORHcL1U8E
|
||||
mBldHUDKgVM40KXF83j3hWAFY8fig8dsq8cCEGHZjSVFk4NqCk2kYvgq/yZD+CZe
|
||||
K+drgTSvTymLY1RRz3VPQlPVP1aJjimjUIXIQHsVH+eYq0mt3fpDDiq2hpjctJr/
|
||||
kct9gASxtzkIwX1h6UJY6OI6Uc9PUEQDn+s1YYp3Me8imsG2QHFchQV4z0oUy/kc
|
||||
g0PI7fECgYEAwobACHdRbmDzP9ePJn7giMT9YwS8UuMuJUfXjNeuH7rDxjMnRlYB
|
||||
2O4NdVNbgheiE15tQRdSRse1ND3D8+oLIy9I0ruMQwqqnMZqAD1lOnrMRC0jblpy
|
||||
nUX+OVF7YILHHUEa0hv5wGJwW/0hEqqN/rduxL8kl8f9yMeQhdqpXsMCgYEAwZu5
|
||||
DlzaH5wbtK1he7jk2Hxrxmxq5AbnfJJsSGQ1fbvilEV290tmkgjVSUFPz5TzlWFf
|
||||
8CgcnL06KZzqK2nRieHuWyIlCgJiy6HbfL6TaL9Y7P1t1/T0EEuT3M21kceKXodr
|
||||
QHFOyhYMbJkLSX/feAZ023wb7vkXXCNG5BfDaKUCgYAkTc+zBMmuxus+4/T0Y0N2
|
||||
YwVDIJQhCAMJtCG3SF1X0JxO9icDSnPnz221kswGOHDoGnxbZIXXbdgUmt5iPDC9
|
||||
7UozAguIS4pR3fnUd6DXzCkpJB9zre+sCG8MtXdIKMAOZqMhyVTQIc8Ea/ZrLGd5
|
||||
vTQwBdhHd2yWtx/yyz9GzwKBgQC4xzqzLoMvL/pxUhh70Fb5FqZ11fuebch45/ZY
|
||||
kOtMeQkiobmNA3V9YtjM9XyKjYp8w1ahCmdkYGUmWhBUJsZJZkvqxoe7KdPIrU2h
|
||||
nPFrQ1RHuwge2DYnZzpTvjDQVTUGSxBdjMa5sJli/B39pAFPuDnHUIgIZ8uXsEN0
|
||||
Zgml0QKBgGCkWamKqDlFlPbVN+wJRIuMwAB6mNLYqL+loRd4VnYMK7crEZdbdOTK
|
||||
gZFUwfhvDm+6bHbza8dqSImeOUkFAi9vetycb9sXvNVtmmXNyGIGezPkL4bApJ80
|
||||
cKK7k/MU71+t+e9/r3s+o4PGJ8joaTFZgqzId3nuQ7iy8PIPJRlv
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAnDxkU6aQGtSYDA+2ZZK119ZHoZPDWZ/NYQMrDPfAeLKqRna0
|
||||
EvFVKz5ui7t32KD6/63t3bOxzYjggCsrmu+xuF5n+qGPGsV6QYCB8ke5jYn2x2E/
|
||||
bTwu/cNJ/70ZjIIxtxxI1sURY2QThO/Aez9x6SvT5SMfV4njvpYuOK4NNnBSVHlf
|
||||
+5U8pYOvaUbMy34IIg5PKAyqPqmLXUKvQ+P4hQr3o3AGD606ScPxntuX3v0WXxY0
|
||||
+XpIaGFDoUu19kLPtTkUoTJtitFiBV93kMaR7rLvpU5o31gWlLtW9IHlv46RnVa0
|
||||
2Cjshqjk+pPs2SzlP2CvaM1lUmNbPX6Ei+kQzwIDAQABAoIBAGGepn1SBJaPIVXf
|
||||
93Kt4asz+1vtDNGSNOyZ4yteHkgMMrKGduujGTlE8COlBjQ4Gbzp+0dcgQtQrB3J
|
||||
W5yaiiwN6OBEVDtBCquk1Q0CXeEfRC++BriFM0Nh43nEuRL/QnsMVELFraCxpjSY
|
||||
7WbU9KLhvKteb7XttXyfL9BAiIbrW5TrHQ9FPfADg6pmckHoQnNkE4S1CQq1z/4w
|
||||
erlyeTNFa/ExAsrPsmjMp/6bur4zdW4t+5GpB2DZf+4P4pEIHJGRwNzU/Eq0TlNs
|
||||
TTmhlba6X/gSMNm0vYEXnNItb+ItiOsGqoLCzUzaAN7jvdsqAiVaiRvObtBLj76/
|
||||
17INnOECgYEA0E2ZHzVg9MaMUhC9dwHawGbbqeZfnAC89J9Hapt0WDtMuulsA+V8
|
||||
C2Ek4Rxpe62DuXdcvYSSuL3VJ4oWffkKngll5m+SiCSuuaDT9KAJ01sklIsGDAWE
|
||||
E0gYWg1sqsj5UE2r7O5TzfRnitglDwyNY87KYvxX7jI6mpHCPSHbblECgYEAwAKy
|
||||
DaIS6gtOfXLhXfzV+Qslsulcf4FRdI06XFVhmXziW6spdl2qVuKTWAiKK69zTRQD
|
||||
2cXVxMf+VEvF7btyllNBYEdU1NcX3gCqCmb1LRqngIQkL0oPlXVaZnN5q17tXAPO
|
||||
Oxd3waefIqBjWJ03qc37oQzuCAXBiYKlUFLVJR8CgYAmgNF29VTwqeqyGKoM32jh
|
||||
+6FK7Gxr168VwINg7084J+3s9syig77EE7bPbYMJ+27Hz4py9ZhxUZWe82Vo76nI
|
||||
wI/3YlRBmhY59cJ4C0UFrmk6k+AQRMy/C6qEqsqVXwTGlTTcXMlc3nptLbrb50QT
|
||||
WNwMI/zU6K/wdlTjG+kFoQKBgG79X+UHib1mOcHENUe6Dgm+itUnlcNSgj5IILMc
|
||||
26T4jnQEtZvpOrysjhV2IkBsU877QdqRRCdSn84kWs43612/1GuN8Bh0GSTH54LJ
|
||||
zvF6ldZxC+WV/voa8t2D5JHN9pCY1o5L23rCpPdEFQk1H+b03X5T1ggnI5+UOHD8
|
||||
4J5rAoGBAJ2x4bRSj/vBgiNUvyvTv6JQoH1hCvDNEYT4TUr8XzMjVcS5voqokAQc
|
||||
mGseepXn6OU+JDW7N/DvgNStkgN6Gj1J/aTwPerC7exkMr4c6YOudjZUZJnOjUj4
|
||||
qHfAGQ5Vwo7fc9S6ymaxzAw5bFNHhZd4P3D1qzpU4804r8CMExUM
|
||||
-----END RSA PRIVATE KEY-----
|
||||
49
src/controleur/Article.java
Normal file
@@ -0,0 +1,49 @@
|
||||
package controleur;
|
||||
|
||||
public class Article {
|
||||
private int id, prix, qtestock;
|
||||
private String reference, categorie, description, libelle, imagearticle;
|
||||
public Article() {//ALL
|
||||
this.id=this.prix=this.qtestock=0;
|
||||
this.reference=this.categorie=this.description=this.libelle="";
|
||||
}
|
||||
public Article (int id, String reference, String categorie, String description, String libelle, int prix, int qtestock, String imagearticle)
|
||||
{//ALL
|
||||
this.id= id;
|
||||
this.reference= reference;
|
||||
this.categorie= categorie;
|
||||
this.description = description;
|
||||
this.libelle = libelle;
|
||||
this.prix = prix;
|
||||
this.qtestock = qtestock;
|
||||
this.imagearticle = imagearticle;
|
||||
}
|
||||
public Article (String reference, String categorie, String description, String libelle, int prix, int qtestock)
|
||||
{//ADD & Modify
|
||||
this.reference = reference;
|
||||
this.categorie= categorie;
|
||||
this.description = description;
|
||||
this.libelle = libelle;
|
||||
this.prix = prix;
|
||||
this.qtestock = qtestock;
|
||||
}
|
||||
public Article (String reference) {//DELETE
|
||||
this.reference = reference;
|
||||
}
|
||||
public int getId() { return id; }
|
||||
public String getReference() { return reference; }
|
||||
public String getCategorie() { return categorie; }
|
||||
public int getPrix() { return prix; }
|
||||
public String getDescription() { return description; }
|
||||
public String getLibelle() { return libelle; }
|
||||
public int getQtestock() { return qtestock; }
|
||||
public String getImageArticle() { return imagearticle; }
|
||||
public void setid(int id) { this.id = id; }
|
||||
public void setReference(String reference) { this.reference = reference; }
|
||||
public void setCategorie(String categorie) { this.categorie = categorie; }
|
||||
public void setPrix(int prix) { this.prix = prix; }
|
||||
public void setDescription(String description) { this.description = description; }
|
||||
public void setLibelle(String libelle) { this.libelle = libelle; }
|
||||
public void setQtestock(int qtestock) { this.qtestock = qtestock; }
|
||||
public void setImageArticle(String imagearticle) { this.imagearticle = imagearticle; }
|
||||
}
|
||||
53
src/controleur/Event.java
Normal file
@@ -0,0 +1,53 @@
|
||||
package controleur;
|
||||
|
||||
public class Event {
|
||||
private int id, prix;
|
||||
private String reference, categorie, description, libelle, imageevent, lieu, date;
|
||||
public Event() {//ALL
|
||||
this.id=this.prix=0;
|
||||
this.reference=this.categorie=this.description=this.libelle=this.lieu=this.date="";
|
||||
}
|
||||
public Event (int id, String reference, String categorie, String description, String libelle, int prix, String lieu, String date, String imageevent)
|
||||
{//ALL
|
||||
this.id= id;
|
||||
this.reference= reference;
|
||||
this.categorie= categorie;
|
||||
this.description = description;
|
||||
this.libelle = libelle;
|
||||
this.prix = prix;
|
||||
this.lieu = lieu;
|
||||
this.date = date;
|
||||
this.imageevent = imageevent;
|
||||
}
|
||||
public Event (String reference, String categorie, String description, String libelle, int prix, String lieu, String date)
|
||||
{//ADD & Modify
|
||||
this.reference = reference;
|
||||
this.categorie= categorie;
|
||||
this.description = description;
|
||||
this.libelle = libelle;
|
||||
this.prix = prix;
|
||||
this.lieu = lieu;
|
||||
this.date = date;
|
||||
}
|
||||
public Event (String reference) {//DELETE
|
||||
this.reference = reference;
|
||||
}
|
||||
public int getId() { return id; }
|
||||
public String getReference() { return reference; }
|
||||
public String getCategorie() { return categorie; }
|
||||
public int getPrix() { return prix; }
|
||||
public String getDescription() { return description; }
|
||||
public String getLibelle() { return libelle; }
|
||||
public String getLieu() { return lieu; }
|
||||
public String getDate() { return date; }
|
||||
public String getImageEvent() { return imageevent; }
|
||||
public void setid(int id) { this.id = id; }
|
||||
public void setReference(String reference) { this.reference = reference; }
|
||||
public void setCategorie(String categorie) { this.categorie = categorie; }
|
||||
public void setPrix(int prix) { this.prix = prix; }
|
||||
public void setDescription(String description) { this.description = description; }
|
||||
public void setLibelle(String libelle) { this.libelle = libelle; }
|
||||
public void setLieu(String lieu) { this.lieu = lieu; }
|
||||
public void setDate(String date) { this.date = date; }
|
||||
public void setImageEvent(String imageevent) { this.imageevent = imageevent; }
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package controleur;
|
||||
import vue.Connexion;
|
||||
|
||||
public class Gestion
|
||||
{
|
||||
{/*GESTION N EST PAS UTILISER CAR INCOMPREHENSIBLE POUR CCB - ALL IS IN Connexion*/
|
||||
private static Connexion uneConnexion;
|
||||
public Gestion()
|
||||
{
|
||||
@@ -20,4 +20,5 @@ public class Gestion
|
||||
{
|
||||
new Gestion();
|
||||
}
|
||||
|
||||
}
|
||||
BIN
src/images/Thumbs.db
Normal file
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 43 KiB |
BIN
src/images/favicon2.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 6.6 KiB |
@@ -9,10 +9,10 @@ public class BDD {
|
||||
private Connection maConnexion;
|
||||
|
||||
public BDD() {
|
||||
this.serveur = "localhost";
|
||||
this.serveur = "nasccb:3307";
|
||||
this.nombdd = "Ecurie";
|
||||
this.user = "USER";
|
||||
this.mdp = "MDP";
|
||||
this.user = "christian";
|
||||
this.mdp = "F8orP#NRqd#oKLQ#";
|
||||
this.maConnexion = null;
|
||||
}
|
||||
public void chargerPilote() {
|
||||
|
||||
133
src/modele/ModeleArticle.java
Normal file
@@ -0,0 +1,133 @@
|
||||
package modele;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import controleur.Article;
|
||||
|
||||
public class ModeleArticle {
|
||||
public static ArrayList<Article> selectAll() {
|
||||
ArrayList<Article> lesArticles = new ArrayList<Article>();
|
||||
String requete = "select * from Article;";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
ResultSet unRes = unStat.executeQuery(requete);
|
||||
while(unRes.next()) {
|
||||
int id = unRes.getInt("idarticle");
|
||||
String reference = unRes.getString("reference");
|
||||
String categorie = unRes.getString("idcategorie");
|
||||
String description = unRes.getString("description");
|
||||
String libelle = unRes.getString("libelle");
|
||||
int prix = unRes.getInt("prix");
|
||||
int qtestock = unRes.getInt("qtestock");
|
||||
String image = unRes.getString("imagearticle");
|
||||
Article unArticle = new Article(id, reference, categorie, description, libelle, prix, qtestock, image);
|
||||
lesArticles.add(unArticle);
|
||||
}
|
||||
unStat.close();
|
||||
unRes.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
return lesArticles;
|
||||
}
|
||||
public static Article selectWhere(String reference) {
|
||||
String requete = "select * from Article where reference='" + reference + "';";
|
||||
Article unArticle = null;
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
ResultSet unRes = unStat.executeQuery(requete);
|
||||
if(unRes.next()) {
|
||||
int id = unRes.getInt("idarticle");
|
||||
String categorie = unRes.getString("idcategorie");
|
||||
String description = unRes.getString("description");
|
||||
String libelle = unRes.getString("libelle");
|
||||
int prix = unRes.getInt("prix");
|
||||
int qtestock = unRes.getInt("qtestock");
|
||||
String image = unRes.getString("imagearticle");
|
||||
unArticle = new Article(id, reference, categorie, description, libelle, prix, qtestock, image);
|
||||
}
|
||||
unStat.close();
|
||||
unRes.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
return unArticle;
|
||||
}
|
||||
public static void insert(Article unArticle) {
|
||||
String requete = "insert into Article (reference, idcategorie, description, libelle, prix, qtestock, imagearticle) values ('"
|
||||
+ unArticle.getReference() + "', '"
|
||||
+ unArticle.getCategorie() + "', '"
|
||||
+ unArticle.getDescription() + "', '"
|
||||
+ unArticle.getLibelle() + "', "
|
||||
+ unArticle.getPrix() + ", "
|
||||
+ unArticle.getQtestock() + ", '"
|
||||
+ "/images/articles/img_shop.jpg');";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
unStat.execute(requete);
|
||||
unStat.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
}
|
||||
public static void update(Article unArticle, String reference) {
|
||||
String valueCategorie = unArticle.getCategorie();
|
||||
String valueDescription = unArticle.getDescription();
|
||||
String valueLibelle = unArticle.getLibelle();
|
||||
String valuePrix = String.valueOf(unArticle.getPrix());
|
||||
String valueQtestock = String.valueOf(unArticle.getQtestock());
|
||||
if (unArticle.getCategorie().equals("")) { valueCategorie = ""; }
|
||||
else { valueCategorie = " idcategorie = '"+ unArticle.getCategorie() +"'"; }
|
||||
if (unArticle.getDescription().equals("")) { valueDescription = ""; }
|
||||
else { valueDescription = ", description = '"+ unArticle.getDescription() +"'"; }
|
||||
if (unArticle.getLibelle().equals("")) { valueLibelle = ""; }
|
||||
else { valueLibelle = ", libelle = '"+ unArticle.getLibelle() +"'"; }
|
||||
if (String.valueOf(unArticle.getPrix()).equals("")) { valuePrix = ""; }
|
||||
else { valuePrix = ", prix = "+ unArticle.getPrix(); }
|
||||
if (String.valueOf(unArticle.getQtestock()).equals("")) { valueQtestock = ""; }
|
||||
else { valueQtestock = ", qtestock = "+ unArticle.getQtestock(); }
|
||||
String requete = "update Article set " + valueCategorie + valueDescription + valueLibelle + valuePrix + valueQtestock + " where reference='"+ reference +"';";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
unStat.execute(requete);
|
||||
unStat.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
}
|
||||
public static void delete(String reference) {
|
||||
String requete = "delete from Article where reference='" + reference + "';";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
unStat.execute(requete);
|
||||
unStat.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -68,15 +68,15 @@ public class ModeleCheval {
|
||||
return unCheval;
|
||||
}
|
||||
public static void insert(Cheval unCheval) {
|
||||
String requete = "insert into Cheval (nom, sexe, robe, type, race, proprietaire, age) values ('"
|
||||
String requete = "insert into Cheval (nom, sexe, robe, type, race, proprietaire, age, imagecheval) values ('"
|
||||
+ unCheval.getNom() + "', '"
|
||||
+ unCheval.getSexe() + "', '"
|
||||
+ unCheval.getRobe() + "', '"
|
||||
+ unCheval.getType() + "', '"
|
||||
+ unCheval.getRace() + "', '"
|
||||
+ unCheval.getProprietaire() + "', '"
|
||||
+ unCheval.getAge() + "');";
|
||||
/*+ unCheval.getImage()+ "');";*/
|
||||
+ unCheval.getAge() + "', '"
|
||||
+ "/images/chevaux/img_cheval.jpg');";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
|
||||
@@ -83,10 +83,10 @@ public class ModeleEleve
|
||||
+ unEleve.getSexe() + "', "
|
||||
+ unEleve.getAge() + ", '"
|
||||
+ unEleve.getAdresse() + "', '"
|
||||
+ "CCB', '"
|
||||
+ unEleve.getMdp() + "', '"
|
||||
+ unEleve.getMail() + "', "
|
||||
+ unEleve.getGalop() + ", '"
|
||||
+ "./images/avatars/img_user.jpg');";
|
||||
+ "/images/avatars/img_user.jpg');";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
|
||||
139
src/modele/ModeleEvent.java
Normal file
@@ -0,0 +1,139 @@
|
||||
package modele;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import controleur.Event;
|
||||
|
||||
public class ModeleEvent {
|
||||
public static ArrayList<Event> selectAll() {
|
||||
ArrayList<Event> lesEvents = new ArrayList<Event>();
|
||||
String requete = "select * from Event;";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
ResultSet unRes = unStat.executeQuery(requete);
|
||||
while(unRes.next()) {
|
||||
int id = unRes.getInt("idevent");
|
||||
String reference = unRes.getString("reference");
|
||||
String categorie = unRes.getString("idtype");
|
||||
String description = unRes.getString("description");
|
||||
String libelle = unRes.getString("nom");
|
||||
int prix = unRes.getInt("prix");
|
||||
String lieu = unRes.getString("lieu");
|
||||
String date = unRes.getString("dateevent");
|
||||
String image = unRes.getString("imageevent");
|
||||
Event unEvent = new Event(id, reference, categorie, description, libelle, prix, lieu, date, image);
|
||||
lesEvents.add(unEvent);
|
||||
}
|
||||
unStat.close();
|
||||
unRes.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
return lesEvents;
|
||||
}
|
||||
public static Event selectWhere(String reference) {
|
||||
String requete = "select * from Event where reference='" + reference + "';";
|
||||
Event unEvent = null;
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
ResultSet unRes = unStat.executeQuery(requete);
|
||||
if(unRes.next()) {
|
||||
int id = unRes.getInt("idevent");
|
||||
String categorie = unRes.getString("idtype");
|
||||
String description = unRes.getString("description");
|
||||
String libelle = unRes.getString("nom");
|
||||
int prix = unRes.getInt("prix");
|
||||
String lieu = unRes.getString("lieu");
|
||||
String date = unRes.getString("dateevent");
|
||||
String image = unRes.getString("imageevent");
|
||||
unEvent = new Event(id, reference, categorie, description, libelle, prix, lieu, date, image);
|
||||
}
|
||||
unStat.close();
|
||||
unRes.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
return unEvent;
|
||||
}
|
||||
public static void insert(Event unEvent) {
|
||||
String requete = "insert into Event (dateevent, reference, idtype, description, nom, lieu, prix, imageevent) values ("
|
||||
+ "NOW(), '"
|
||||
+ unEvent.getReference() + "', '"
|
||||
+ unEvent.getCategorie() + "', '"
|
||||
+ unEvent.getDescription() + "', '"
|
||||
+ unEvent.getLibelle() + "', '"
|
||||
+ unEvent.getLieu() + "', "
|
||||
+ unEvent.getPrix() + ", '"
|
||||
+ "/images/evenements/img_event.jpg');";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
unStat.execute(requete);
|
||||
unStat.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
}
|
||||
public static void update(Event unEvent, String reference) {
|
||||
String valueCategorie = unEvent.getCategorie();
|
||||
String valueDescription = unEvent.getDescription();
|
||||
String valueLibelle = unEvent.getLibelle();
|
||||
String valuePrix = String.valueOf(unEvent.getPrix());
|
||||
String valueLieu = unEvent.getLieu();
|
||||
String valueDate = unEvent.getDate();
|
||||
if (unEvent.getCategorie().equals("")) { valueCategorie = ""; }
|
||||
else { valueCategorie = " idtype = '"+ unEvent.getCategorie() +"'"; }
|
||||
if (unEvent.getDescription().equals("")) { valueDescription = ""; }
|
||||
else { valueDescription = ", description = '"+ unEvent.getDescription() +"'"; }
|
||||
if (unEvent.getLibelle().equals("")) { valueLibelle = ""; }
|
||||
else { valueLibelle = ", nom = '"+ unEvent.getLibelle() +"'"; }
|
||||
if (String.valueOf(unEvent.getPrix()).equals("")) { valuePrix = ""; }
|
||||
else { valuePrix = ", prix = "+ unEvent.getPrix(); }
|
||||
if (String.valueOf(unEvent.getLieu()).equals("")) { valueLieu = ""; }
|
||||
else { valueLieu = ", lieu = '"+ unEvent.getLieu() + "'";}
|
||||
if (String.valueOf(unEvent.getDate()).equals("")) { valueDate = ""; }
|
||||
else { valueDate = ", dateevent = Now()"; }
|
||||
String requete = "update Event set " + valueCategorie + valueDescription + valueLibelle + valuePrix + valueLieu + valueDate + " where reference='"+ reference +"';";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
unStat.execute(requete);
|
||||
unStat.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
}
|
||||
public static void delete(String reference) {
|
||||
String requete = "delete from Event where reference='" + reference + "';";
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
unStat.execute(requete);
|
||||
unStat.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,38 @@ public class ModeleFormateur
|
||||
}
|
||||
return lesFormateurs;
|
||||
}
|
||||
public static Formateur selectWhere(String mail, String mdp) {
|
||||
public static Formateur selectWhere(String mail) {
|
||||
String requete = "select * from Formateur where adressemail='" + mail + "';";
|
||||
Formateur unFormateur = null;
|
||||
try {
|
||||
BDD uneBDD = new BDD();
|
||||
uneBDD.seConnecter();
|
||||
Statement unStat = uneBDD.getMaConnexion().createStatement();
|
||||
ResultSet unRes = unStat.executeQuery(requete);
|
||||
if(unRes.next())
|
||||
{
|
||||
int idformateur = unRes.getInt("idformateur");
|
||||
String login = unRes.getString("login");
|
||||
int privilege = unRes.getInt("privilege");
|
||||
String prenom = unRes.getString("prenom");
|
||||
String nom = unRes.getString("nom");
|
||||
int age = unRes.getInt("age");
|
||||
int galop = unRes.getInt("galop");
|
||||
String sexe = unRes.getString("sexe");
|
||||
String mdp = unRes.getString("mdp");
|
||||
// adressemail
|
||||
unFormateur = new Formateur(idformateur, login, privilege, prenom, nom, age, galop, sexe, mail, mdp);
|
||||
}
|
||||
unStat.close();
|
||||
unRes.close();
|
||||
uneBDD.seDeconnecter();
|
||||
}
|
||||
catch(SQLException exp) {
|
||||
System.out.println("Erreur d'execution de la requete " + requete);
|
||||
}
|
||||
return unFormateur;
|
||||
}
|
||||
public static Formateur selectCompte(String mail, String mdp) {
|
||||
String requete = "select * from Formateur where adressemail='" + mail + "' and mdp='" + mdp + "';";
|
||||
Formateur unFormateur = null;
|
||||
try {
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
build-date: 2021-06-08 16:39:29 +0000
|
||||
os-info: Linux i386 4.1.12-124.48.6.el6uek.x86_64
|
||||
compiler: javac 1.8.0_241
|
||||
build-tool: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
|
||||
@@ -1,5 +0,0 @@
|
||||
version: 8.0.26
|
||||
branch: release/8.0.26
|
||||
date: 2021-06-08 14:49:03 +0100
|
||||
commit: 9aae1e450989d62c06616c1dcda3e404ef84df70
|
||||
short: 9aae1e45
|
||||
@@ -1,28 +0,0 @@
|
||||
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This is a release of MySQL Connector/J, a JDBC Type 4 driver for MySQL that
|
||||
also supports the new X DevAPI.
|
||||
|
||||
License information can be found in the LICENSE file.
|
||||
|
||||
This distribution may include materials developed by third parties.
|
||||
For license and attribution notices for these materials, please refer to the
|
||||
LICENSE file.
|
||||
|
||||
For more information on MySQL Connector/J, visit
|
||||
https://dev.mysql.com/doc/connector-j/8.0/en/
|
||||
|
||||
For additional downloads and the source of MySQL Connector/J, visit
|
||||
https://dev.mysql.com/downloads/
|
||||
|
||||
MySQL Connector/J is brought to you by the MySQL team at Oracle.
|
||||
|
||||
Notice:
|
||||
- In order to use the logging capabilities provided by the default
|
||||
implementation com.mysql.cj.log.Slf4JLogger, it is required to add one or
|
||||
more jars for Simple Logging Facade for Java (SLF4J) to your CLASSPATH.
|
||||
- To use the X DevAPI features in Connector/J, you also need the external
|
||||
library protobuf-java, which you can download manually from the official
|
||||
Maven repository and add it to the CLASSPATH, or use Maven's automatic
|
||||
dependency resolution features by adding a dependency to "GroupId: mysql"
|
||||
and "ArtifactId: mysql-connector-java" to your project's pom.xml file.
|
||||
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2020, Oracle and/or its affiliates.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 2.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is also distributed with certain software (including but not
|
||||
* limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
* particular file or component or in included license documentation. The
|
||||
* authors of MySQL hereby grant you an additional permission to link the
|
||||
* program and your derivative works with the separately licensed software that
|
||||
* they have included with MySQL.
|
||||
*
|
||||
* Without limiting anything contained in the foregoing, this file, which is
|
||||
* part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
* version 1.0, a copy of which can be found at
|
||||
* http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
*
|
||||
* 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, version 2.0,
|
||||
* 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.,
|
||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package documentation;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import com.mysql.cj.exceptions.MysqlErrorNumbers;
|
||||
|
||||
/**
|
||||
* Creates XML file describing mapping of MySQL error #'s to SQL92 and X/Open states.
|
||||
*/
|
||||
public class ErrorMappingsDocGenerator {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
dumpSqlStatesMappingsAsXml();
|
||||
}
|
||||
|
||||
public static void dumpSqlStatesMappingsAsXml() throws Exception {
|
||||
TreeMap<Integer, Integer> allErrorNumbers = new TreeMap<>();
|
||||
Map<Object, String> mysqlErrorNumbersToNames = new HashMap<>();
|
||||
|
||||
// Integer errorNumber = null;
|
||||
|
||||
//
|
||||
// First create a list of all 'known' error numbers that are mapped.
|
||||
//
|
||||
for (Integer errorNumber : MysqlErrorNumbers.mysqlToSql99State.keySet()) {
|
||||
allErrorNumbers.put(errorNumber, errorNumber);
|
||||
}
|
||||
|
||||
//
|
||||
// Now create a list of the actual MySQL error numbers we know about
|
||||
//
|
||||
java.lang.reflect.Field[] possibleFields = MysqlErrorNumbers.class.getDeclaredFields();
|
||||
|
||||
for (int i = 0; i < possibleFields.length; i++) {
|
||||
String fieldName = possibleFields[i].getName();
|
||||
|
||||
if (fieldName.startsWith("ER_")) {
|
||||
mysqlErrorNumbersToNames.put(possibleFields[i].get(null), fieldName);
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("<ErrorMappings>");
|
||||
|
||||
for (Integer errorNumber : allErrorNumbers.keySet()) {
|
||||
String sql92State = MysqlErrorNumbers.mysqlToSql99(errorNumber.intValue());
|
||||
|
||||
System.out.println(" <ErrorMapping mysqlErrorNumber=\"" + errorNumber + "\" mysqlErrorName=\"" + mysqlErrorNumbersToNames.get(errorNumber)
|
||||
+ "\" legacySqlState=\"" + "" + "\" sql92SqlState=\"" + ((sql92State == null) ? "" : sql92State) + "\"/>");
|
||||
}
|
||||
|
||||
System.out.println("</ErrorMappings>");
|
||||
}
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2020, Oracle and/or its affiliates.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 2.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is also distributed with certain software (including but not
|
||||
* limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
* particular file or component or in included license documentation. The
|
||||
* authors of MySQL hereby grant you an additional permission to link the
|
||||
* program and your derivative works with the separately licensed software that
|
||||
* they have included with MySQL.
|
||||
*
|
||||
* Without limiting anything contained in the foregoing, this file, which is
|
||||
* part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
* version 1.0, a copy of which can be found at
|
||||
* http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
*
|
||||
* 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, version 2.0,
|
||||
* 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.,
|
||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package documentation;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import com.mysql.cj.conf.PropertyDefinition;
|
||||
import com.mysql.cj.conf.PropertyDefinitions;
|
||||
|
||||
/**
|
||||
* Creates docbook table of connection properties from ConnectionProperties class.
|
||||
*/
|
||||
public class PropertiesDocGenerator {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(exposeAsXml());
|
||||
}
|
||||
|
||||
static class XmlMap {
|
||||
protected Map<Integer, Map<String, PropertyDefinition<?>>> ordered = new TreeMap<>();
|
||||
protected Map<String, PropertyDefinition<?>> alpha = new TreeMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a description of the connection properties as an XML document.
|
||||
*
|
||||
* @return the connection properties as an XML document.
|
||||
*/
|
||||
public static String exposeAsXml() {
|
||||
StringBuilder xmlBuf = new StringBuilder();
|
||||
xmlBuf.append("<ConnectionProperties>");
|
||||
|
||||
int numCategories = PropertyDefinitions.PROPERTY_CATEGORIES.length;
|
||||
|
||||
Map<String, XmlMap> propertyListByCategory = new HashMap<>();
|
||||
|
||||
for (int i = 0; i < numCategories; i++) {
|
||||
propertyListByCategory.put(PropertyDefinitions.PROPERTY_CATEGORIES[i], new XmlMap());
|
||||
}
|
||||
|
||||
for (PropertyDefinition<?> pdef : PropertyDefinitions.PROPERTY_KEY_TO_PROPERTY_DEFINITION.values()) {
|
||||
XmlMap sortMaps = propertyListByCategory.get(pdef.getCategory());
|
||||
int orderInCategory = pdef.getOrder();
|
||||
|
||||
if (orderInCategory == Integer.MIN_VALUE) {
|
||||
sortMaps.alpha.put(pdef.getName(), pdef);
|
||||
} else {
|
||||
Integer order = Integer.valueOf(orderInCategory);
|
||||
Map<String, PropertyDefinition<?>> orderMap = sortMaps.ordered.get(order);
|
||||
|
||||
if (orderMap == null) {
|
||||
orderMap = new TreeMap<>();
|
||||
sortMaps.ordered.put(order, orderMap);
|
||||
}
|
||||
|
||||
orderMap.put(pdef.getName(), pdef);
|
||||
}
|
||||
}
|
||||
|
||||
for (int j = 0; j < numCategories; j++) {
|
||||
XmlMap sortMaps = propertyListByCategory.get(PropertyDefinitions.PROPERTY_CATEGORIES[j]);
|
||||
|
||||
xmlBuf.append("\n <PropertyCategory name=\"");
|
||||
xmlBuf.append(PropertyDefinitions.PROPERTY_CATEGORIES[j]);
|
||||
xmlBuf.append("\">");
|
||||
|
||||
for (Map<String, PropertyDefinition<?>> orderedEl : sortMaps.ordered.values()) {
|
||||
for (PropertyDefinition<?> pdef : orderedEl.values()) {
|
||||
xmlBuf.append("\n <Property name=\"");
|
||||
xmlBuf.append(pdef.getName());
|
||||
|
||||
xmlBuf.append("\" default=\"");
|
||||
if (pdef.getDefaultValue() != null) {
|
||||
xmlBuf.append(pdef.getDefaultValue());
|
||||
}
|
||||
xmlBuf.append("\" sortOrder=\"");
|
||||
xmlBuf.append(pdef.getOrder());
|
||||
xmlBuf.append("\" since=\"");
|
||||
xmlBuf.append(pdef.getSinceVersion());
|
||||
xmlBuf.append("\">\n");
|
||||
xmlBuf.append(" ");
|
||||
String escapedDescription = pdef.getDescription();
|
||||
escapedDescription = escapedDescription.replace("&", "&").replace("<", "<").replace(">", ">");
|
||||
|
||||
xmlBuf.append(escapedDescription);
|
||||
xmlBuf.append("\n </Property>");
|
||||
}
|
||||
}
|
||||
|
||||
for (PropertyDefinition<?> pdef : sortMaps.alpha.values()) {
|
||||
xmlBuf.append("\n <Property name=\"");
|
||||
xmlBuf.append(pdef.getName());
|
||||
|
||||
xmlBuf.append("\" default=\"");
|
||||
if (pdef.getDefaultValue() != null) {
|
||||
xmlBuf.append(pdef.getDefaultValue());
|
||||
}
|
||||
|
||||
xmlBuf.append("\" sortOrder=\"alpha\" since=\"");
|
||||
xmlBuf.append(pdef.getSinceVersion());
|
||||
xmlBuf.append("\">\n");
|
||||
xmlBuf.append(" ");
|
||||
xmlBuf.append(pdef.getDescription());
|
||||
xmlBuf.append("\n </Property>");
|
||||
}
|
||||
|
||||
xmlBuf.append("\n </PropertyCategory>");
|
||||
}
|
||||
|
||||
xmlBuf.append("\n</ConnectionProperties>");
|
||||
|
||||
return xmlBuf.toString();
|
||||
}
|
||||
}
|
||||
@@ -1,139 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2020, Oracle and/or its affiliates.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 2.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is also distributed with certain software (including but not
|
||||
* limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
* particular file or component or in included license documentation. The
|
||||
* authors of MySQL hereby grant you an additional permission to link the
|
||||
* program and your derivative works with the separately licensed software that
|
||||
* they have included with MySQL.
|
||||
*
|
||||
* Without limiting anything contained in the foregoing, this file, which is
|
||||
* part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
* version 1.0, a copy of which can be found at
|
||||
* http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
*
|
||||
* 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, version 2.0,
|
||||
* 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.,
|
||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package instrumentation;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.mysql.cj.conf.BooleanPropertyDefinition;
|
||||
import com.mysql.cj.conf.EnumPropertyDefinition;
|
||||
import com.mysql.cj.conf.IntegerPropertyDefinition;
|
||||
import com.mysql.cj.conf.LongPropertyDefinition;
|
||||
import com.mysql.cj.conf.MemorySizePropertyDefinition;
|
||||
import com.mysql.cj.conf.PropertyDefinition;
|
||||
import com.mysql.cj.conf.PropertyDefinitions;
|
||||
import com.mysql.cj.conf.StringPropertyDefinition;
|
||||
import com.mysql.cj.jdbc.MysqlDataSource;
|
||||
|
||||
import javassist.ClassPool;
|
||||
import javassist.CtClass;
|
||||
import javassist.CtMethod;
|
||||
import javassist.CtNewMethod;
|
||||
import javassist.bytecode.DuplicateMemberException;
|
||||
|
||||
public class AddMethods {
|
||||
private static boolean verbose = false;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
System.out.println("Applying AddMethods.");
|
||||
|
||||
verbose = "true".equalsIgnoreCase(args[1]);
|
||||
|
||||
ClassPool pool = ClassPool.getDefault();
|
||||
pool.insertClassPath(args[0]);
|
||||
|
||||
sysOut("---");
|
||||
CtClass clazz = pool.get(MysqlDataSource.class.getName());
|
||||
sysOut("Add properties setters/getters to " + clazz.getName());
|
||||
addPropertiesGettersSetters(clazz, PropertyDefinitions.PROPERTY_KEY_TO_PROPERTY_DEFINITION.values());
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
}
|
||||
|
||||
private static void sysOut(String s) {
|
||||
if (verbose) {
|
||||
System.out.println(s);
|
||||
}
|
||||
}
|
||||
|
||||
private static void addPropertiesGettersSetters(CtClass clazz, Collection<PropertyDefinition<?>> propertyDefinitions) throws Exception {
|
||||
for (PropertyDefinition<?> def : propertyDefinitions) {
|
||||
if (def.getCategory().equals(PropertyDefinitions.CATEGORY_XDEVAPI)) {
|
||||
continue;
|
||||
}
|
||||
String pname = def.hasCcAlias() ? def.getCcAlias() : def.getName();
|
||||
|
||||
if (def instanceof StringPropertyDefinition) {
|
||||
addGetter(clazz, pname, String.class.getName(), "getStringRuntimeProperty");
|
||||
addSetter(clazz, pname, String.class.getName(), "setStringRuntimeProperty");
|
||||
|
||||
} else if (def instanceof BooleanPropertyDefinition) {
|
||||
addGetter(clazz, pname, Boolean.TYPE.getName(), "getBooleanRuntimeProperty");
|
||||
addSetter(clazz, pname, Boolean.TYPE.getName(), "setBooleanRuntimeProperty");
|
||||
|
||||
} else if (def instanceof IntegerPropertyDefinition) {
|
||||
addGetter(clazz, pname, Integer.TYPE.getName(), "getIntegerRuntimeProperty");
|
||||
addSetter(clazz, pname, Integer.TYPE.getName(), "setIntegerRuntimeProperty");
|
||||
|
||||
} else if (def instanceof LongPropertyDefinition) {
|
||||
addGetter(clazz, pname, Long.TYPE.getName(), "getLongRuntimeProperty");
|
||||
addSetter(clazz, pname, Long.TYPE.getName(), "setLongRuntimeProperty");
|
||||
|
||||
} else if (def instanceof MemorySizePropertyDefinition) {
|
||||
addGetter(clazz, pname, Integer.TYPE.getName(), "getMemorySizeRuntimeProperty");
|
||||
addSetter(clazz, pname, Integer.TYPE.getName(), "setMemorySizeRuntimeProperty");
|
||||
|
||||
} else if (def instanceof EnumPropertyDefinition<?>) {
|
||||
addGetter(clazz, pname, String.class.getName(), "getEnumRuntimeProperty");
|
||||
addSetter(clazz, pname, "java.lang.String", "setEnumRuntimeProperty");
|
||||
|
||||
} else {
|
||||
throw new Exception("Unknown " + def.getName() + " property type.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void addGetter(CtClass clazz, String pname, String paramType, String getPropertyMethod) throws Exception {
|
||||
String mname = "get" + pname.substring(0, 1).toUpperCase() + pname.substring(1);
|
||||
String mbody = "public " + paramType + " " + mname + "() throws java.sql.SQLException { return " + getPropertyMethod + "(\"" + pname + "\");}";
|
||||
sysOut(mbody);
|
||||
try {
|
||||
CtMethod m = CtNewMethod.make(mbody, clazz);
|
||||
clazz.addMethod(m);
|
||||
sysOut(m.toString());
|
||||
} catch (DuplicateMemberException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
private static void addSetter(CtClass clazz, String pname, String paramType, String setPropertyMethod) throws Exception {
|
||||
String mname = "set" + pname.substring(0, 1).toUpperCase() + pname.substring(1);
|
||||
String mbody = "public void " + mname + "(" + paramType + " value) throws java.sql.SQLException { " + setPropertyMethod + "(\"" + pname
|
||||
+ "\", value);}";
|
||||
sysOut(mbody);
|
||||
try {
|
||||
CtMethod m = CtNewMethod.make(mbody, clazz);
|
||||
clazz.addMethod(m);
|
||||
sysOut(m.toString());
|
||||
} catch (DuplicateMemberException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,193 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2020, Oracle and/or its affiliates.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 2.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is also distributed with certain software (including but not
|
||||
* limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
* particular file or component or in included license documentation. The
|
||||
* authors of MySQL hereby grant you an additional permission to link the
|
||||
* program and your derivative works with the separately licensed software that
|
||||
* they have included with MySQL.
|
||||
*
|
||||
* Without limiting anything contained in the foregoing, this file, which is
|
||||
* part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
* version 1.0, a copy of which can be found at
|
||||
* http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
*
|
||||
* 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, version 2.0,
|
||||
* 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.,
|
||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package instrumentation;
|
||||
|
||||
import java.sql.Savepoint;
|
||||
import java.util.Map;
|
||||
|
||||
import com.mysql.cj.jdbc.ConnectionImpl;
|
||||
import com.mysql.cj.jdbc.ConnectionWrapper;
|
||||
|
||||
import javassist.ClassPool;
|
||||
import javassist.CtClass;
|
||||
import javassist.CtMethod;
|
||||
|
||||
public class CommonChecks {
|
||||
private static boolean verbose = false;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
System.out.println("Applying CommonChecks.");
|
||||
|
||||
verbose = "true".equalsIgnoreCase(args[1]);
|
||||
|
||||
ClassPool pool = ClassPool.getDefault();
|
||||
pool.insertClassPath(args[0]);
|
||||
|
||||
// params classes
|
||||
CtClass ctClazz = pool.get(Class.class.getName());
|
||||
//CtClass ctClob = pool.get(java.sql.Clob.class.getName());
|
||||
//CtClass ctBindValue = pool.get(BindValue.class.getName());
|
||||
CtClass ctBool = pool.get(boolean.class.getName());
|
||||
//CtClass ctBoolArray = pool.get(boolean[].class.getName());
|
||||
//CtClass ctByteArray2 = pool.get(byte[][].class.getName());
|
||||
//CtClass ctBuffer = pool.get(Buffer.class.getName());
|
||||
//CtClass ctExecutor = pool.get(Executor.class.getName());
|
||||
//CtClass ctFieldArray = pool.get(Field[].class.getName());
|
||||
CtClass ctInt = pool.get(int.class.getName());
|
||||
CtClass ctIntArray = pool.get(int[].class.getName());
|
||||
//CtClass ctInputStreamArray = pool.get(InputStream[].class.getName());
|
||||
//CtClass ctLong = pool.get(long.class.getName());
|
||||
CtClass ctMap = pool.get(Map.class.getName());
|
||||
//CtClass ctMysqlSavepoint = pool.get(MysqlSavepoint.class.getName());
|
||||
CtClass ctObjectArray = pool.get(Object[].class.getName());
|
||||
//CtClass ctProperties = pool.get(Properties.class.getName());
|
||||
//CtClass ctReader = pool.get(Reader.class.getName());
|
||||
CtClass ctSavepoint = pool.get(Savepoint.class.getName());
|
||||
//CtClass ctStatement = pool.get(Statement.class.getName());
|
||||
CtClass ctString = pool.get(String.class.getName());
|
||||
CtClass ctStringArray = pool.get(String[].class.getName());
|
||||
|
||||
CtClass clazz = pool.get(ConnectionImpl.class.getName());
|
||||
// addClosedCheck(clazz.getDeclaredMethod("changeUser", new CtClass[] { ctString, ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepareStatement", new CtClass[] { ctString, ctInt, ctInt, ctBool }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("commit", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createStatement", new CtClass[] { ctInt, ctInt }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("getMetaData", new CtClass[] { ctBool, ctBool }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("getNetworkTimeout", new CtClass[] {}));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("getSchema", new CtClass[] {}));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("isAutoCommitNonDefaultOnServer", new CtClass[] {}));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("isServerLocal", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("isWrapperFor", new CtClass[] { ctClazz }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("prepareStatement", new CtClass[] { ctString, ctInt, ctInt }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("rollback", new CtClass[] {}));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("rollback", new CtClass[] { ctSavepoint }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setAutoCommit", new CtClass[] { ctBool }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setCatalog", new CtClass[] { ctString }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setNetworkTimeout", new CtClass[] { ctExecutor, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setReadOnly", new CtClass[] { ctBool }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setSavepoint", new CtClass[] { ctMysqlSavepoint }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setSchema", new CtClass[] { ctString }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setTransactionIsolation", new CtClass[] { ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("versionMeetsMinimum", new CtClass[] { ctInt, ctInt, ctInt }));
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
clazz = pool.get(ConnectionWrapper.class.getName());
|
||||
addClosedCheck(clazz.getDeclaredMethod("changeUser", new CtClass[] { ctString, ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepare", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepare", new CtClass[] { ctString, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepareStatement", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepareStatement", new CtClass[] { ctString, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepareStatement", new CtClass[] { ctString, ctIntArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepareStatement", new CtClass[] { ctString, ctStringArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepareStatement", new CtClass[] { ctString, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clientPrepareStatement", new CtClass[] { ctString, ctInt, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("commit", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("clearWarnings", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createArrayOf", new CtClass[] { ctString, ctObjectArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createBlob", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createClob", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createNClob", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createStatement", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createStatement", new CtClass[] { ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createStatement", new CtClass[] { ctInt, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createSQLXML", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("createStruct", new CtClass[] { ctString, ctObjectArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getAutoCommit", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getCatalog", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getClientInfo", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getClientInfo", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getDatabase", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getHoldability", new CtClass[] {}));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("getProcessHost", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getMetaData", new CtClass[] {}));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("getNetworkTimeout", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getTransactionIsolation", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getTypeMap", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("getWarnings", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("isReadOnly", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("isReadOnly", new CtClass[] { ctBool }));
|
||||
//addClosedCheck(clazz.getDeclaredMethod("isWrapperFor", new CtClass[] { ctClazz }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("nativeSQL", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareCall", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareCall", new CtClass[] { ctString, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareCall", new CtClass[] { ctString, ctInt, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareStatement", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareStatement", new CtClass[] { ctString, ctInt }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("prepareStatement", new CtClass[] { ctString, ctStringArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareStatement", new CtClass[] { ctString, ctIntArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareStatement", new CtClass[] { ctString, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareStatement", new CtClass[] { ctString, ctInt, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("prepareStatement", new CtClass[] { ctString, ctStringArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("releaseSavepoint", new CtClass[] { ctSavepoint }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("resetServerState", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("rollback", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("rollback", new CtClass[] { ctSavepoint }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("serverPrepareStatement", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("serverPrepareStatement", new CtClass[] { ctString, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("serverPrepareStatement", new CtClass[] { ctString, ctIntArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("serverPrepareStatement", new CtClass[] { ctString, ctStringArray }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("serverPrepareStatement", new CtClass[] { ctString, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("serverPrepareStatement", new CtClass[] { ctString, ctInt, ctInt, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setAutoCommit", new CtClass[] { ctBool }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setCatalog", new CtClass[] { ctString }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setClientInfo", new CtClass[] { ctString, ctString }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setClientInfo", new CtClass[] { ctProperties }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setDatabase", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setHoldability", new CtClass[] { ctInt }));
|
||||
// addClosedCheck(clazz.getDeclaredMethod("setNetworkTimeout", new CtClass[] { ctExecutor, ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setReadOnly", new CtClass[] { ctBool }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setSavepoint", new CtClass[] {}));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setSavepoint", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setSchema", new CtClass[] { ctString }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setTransactionIsolation", new CtClass[] { ctInt }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("setTypeMap", new CtClass[] { ctMap }));
|
||||
addClosedCheck(clazz.getDeclaredMethod("shutdownServer", new CtClass[] {}));
|
||||
//addClosedCheck(clazz.getDeclaredMethod("versionMeetsMinimum", new CtClass[] { ctInt, ctInt, ctInt }));
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
//clazz = pool.get(MultiHostMySQLConnection.class.getName());
|
||||
//addClosedCheck(clazz.getDeclaredMethod("isWrapperFor", new CtClass[] { ctClazz }));
|
||||
//clazz.writeFile(args[0]);
|
||||
|
||||
}
|
||||
|
||||
private static void addClosedCheck(CtMethod m) throws Exception {
|
||||
sysOut(m.toString());
|
||||
m.insertBefore("checkClosed();");
|
||||
}
|
||||
|
||||
private static void sysOut(String s) {
|
||||
if (verbose) {
|
||||
System.out.println(s);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,734 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2020, Oracle and/or its affiliates.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 2.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is also distributed with certain software (including but not
|
||||
* limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
* particular file or component or in included license documentation. The
|
||||
* authors of MySQL hereby grant you an additional permission to link the
|
||||
* program and your derivative works with the separately licensed software that
|
||||
* they have included with MySQL.
|
||||
*
|
||||
* Without limiting anything contained in the foregoing, this file, which is
|
||||
* part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
* version 1.0, a copy of which can be found at
|
||||
* http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
*
|
||||
* 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, version 2.0,
|
||||
* 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.,
|
||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package instrumentation;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Savepoint;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import com.mysql.cj.QueryBindings;
|
||||
import com.mysql.cj.exceptions.CJException;
|
||||
import com.mysql.cj.jdbc.Blob;
|
||||
import com.mysql.cj.jdbc.BlobFromLocator;
|
||||
import com.mysql.cj.jdbc.CallableStatement;
|
||||
import com.mysql.cj.jdbc.CallableStatement.CallableStatementParamInfo;
|
||||
import com.mysql.cj.jdbc.ClientPreparedStatement;
|
||||
import com.mysql.cj.jdbc.Clob;
|
||||
import com.mysql.cj.jdbc.ConnectionImpl;
|
||||
import com.mysql.cj.jdbc.ConnectionWrapper;
|
||||
import com.mysql.cj.jdbc.DatabaseMetaData;
|
||||
import com.mysql.cj.jdbc.DatabaseMetaDataUsingInfoSchema;
|
||||
import com.mysql.cj.jdbc.JdbcConnection;
|
||||
import com.mysql.cj.jdbc.JdbcStatement;
|
||||
import com.mysql.cj.jdbc.MysqlConnectionPoolDataSource;
|
||||
import com.mysql.cj.jdbc.MysqlDataSource;
|
||||
import com.mysql.cj.jdbc.MysqlParameterMetadata;
|
||||
import com.mysql.cj.jdbc.MysqlPooledConnection;
|
||||
import com.mysql.cj.jdbc.MysqlSQLXML;
|
||||
import com.mysql.cj.jdbc.MysqlSavepoint;
|
||||
import com.mysql.cj.jdbc.MysqlXAConnection;
|
||||
import com.mysql.cj.jdbc.MysqlXADataSource;
|
||||
import com.mysql.cj.jdbc.MysqlXid;
|
||||
import com.mysql.cj.jdbc.NClob;
|
||||
import com.mysql.cj.jdbc.NonRegisteringDriver;
|
||||
import com.mysql.cj.jdbc.ServerPreparedStatement;
|
||||
import com.mysql.cj.jdbc.StatementImpl;
|
||||
import com.mysql.cj.jdbc.SuspendableXAConnection;
|
||||
import com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping;
|
||||
import com.mysql.cj.jdbc.ha.LoadBalancedConnection;
|
||||
import com.mysql.cj.jdbc.ha.LoadBalancedMySQLConnection;
|
||||
import com.mysql.cj.jdbc.ha.MultiHostMySQLConnection;
|
||||
import com.mysql.cj.jdbc.ha.ReplicationConnection;
|
||||
import com.mysql.cj.jdbc.ha.ReplicationMySQLConnection;
|
||||
import com.mysql.cj.jdbc.result.ResultSetImpl;
|
||||
import com.mysql.cj.jdbc.result.ResultSetInternalMethods;
|
||||
import com.mysql.cj.jdbc.result.ResultSetMetaData;
|
||||
import com.mysql.cj.jdbc.result.UpdatableResultSet;
|
||||
import com.mysql.cj.protocol.ColumnDefinition;
|
||||
import com.mysql.cj.protocol.Message;
|
||||
|
||||
import javassist.ClassPool;
|
||||
import javassist.CtClass;
|
||||
import javassist.CtMethod;
|
||||
import javassist.NotFoundException;
|
||||
|
||||
public class TranslateExceptions {
|
||||
|
||||
private static CtClass runTimeException = null;
|
||||
private static ClassPool pool = ClassPool.getDefault();
|
||||
private static Map<String, List<CtMethod>> processed = new TreeMap<>();
|
||||
|
||||
private static String EXCEPTION_INTERCEPTOR_GETTER = "getExceptionInterceptor()";
|
||||
private static String EXCEPTION_INTERCEPTOR_MEMBER = "this.exceptionInterceptor";
|
||||
private static boolean verbose = false;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
System.out.println("Applying TranslateExceptions.");
|
||||
|
||||
verbose = "true".equalsIgnoreCase(args[1]);
|
||||
|
||||
pool.insertClassPath(args[0]);
|
||||
processed.clear();
|
||||
|
||||
runTimeException = pool.get(CJException.class.getName());
|
||||
|
||||
// params classes
|
||||
//CtClass ctServerPreparedQueryBindValue = pool.get(ServerPreparedQueryBindValue.class.getName());
|
||||
CtClass ctQueryBindings = pool.get(QueryBindings.class.getName());
|
||||
CtClass ctByteArray = pool.get(byte[].class.getName());
|
||||
CtClass ctColumnDefinition = pool.get(ColumnDefinition.class.getName());
|
||||
|
||||
CtClass ctLongArray = pool.get(long[].class.getName());
|
||||
//CtClass ctInputStream = pool.get(InputStream.class.getName());
|
||||
CtClass ctJdbcConnection = pool.get(JdbcConnection.class.getName());
|
||||
CtClass ctMysqlSavepoint = pool.get(MysqlSavepoint.class.getName());
|
||||
//CtClass ctPacketPayload = pool.get(PacketPayload.class.getName());
|
||||
CtClass ctProperties = pool.get(Properties.class.getName());
|
||||
CtClass ctResultSet = pool.get(ResultSet.class.getName());
|
||||
CtClass ctResultSetInternalMethods = pool.get(ResultSetInternalMethods.class.getName());
|
||||
CtClass ctStatement = pool.get(java.sql.Statement.class.getName());
|
||||
CtClass ctStatementImpl = pool.get(StatementImpl.class.getName());
|
||||
CtClass ctString = pool.get(String.class.getName());
|
||||
|
||||
CtClass ctMessageBody = pool.get(Message.class.getName());
|
||||
|
||||
// class we want to instrument
|
||||
CtClass clazz;
|
||||
|
||||
/*
|
||||
* java.sql.Blob
|
||||
*/
|
||||
// com.mysql.cj.jdbc.Blob implements java.sql.Blob, OutputStreamWatcher
|
||||
clazz = pool.get(Blob.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.Blob.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// com.mysql.cj.jdbc.BlobFromLocator implements java.sql.Blob
|
||||
clazz = pool.get(BlobFromLocator.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.Blob.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.CallableStatement
|
||||
*/
|
||||
// com.mysql.cj.jdbc.CallableStatement extends PreparedStatement implements java.sql.CallableStatement
|
||||
clazz = pool.get(CallableStatement.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.CallableStatement.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
instrumentJdbcMethods(clazz, JdbcStatement.class, true, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
// non-JDBC
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("checkIsOutputParam", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("checkParameterIndexBounds", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("checkReadOnlyProcedure", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("convertGetProcedureColumnsToInternalDescriptors", new CtClass[] { ctResultSet }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("determineParameterTypes", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("fakeParameterTypes", new CtClass[] { CtClass.booleanType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("fixParameterName", new CtClass[] { ctString }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("generateParameterMap", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getNamedParamIndex", new CtClass[] { ctString, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getOutputParameters", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("mapOutputParameterIndexToRsIndex", new CtClass[] { CtClass.intType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("retrieveOutParams", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setInOutParamsOnServer", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setOutParams", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* com.mysql.cj.jdbc.StatementWrapper extends WrapperBase implements Statement
|
||||
*/
|
||||
// TODO: Does it's own typical exception wrapping, could be instrumented with different catch method
|
||||
|
||||
/*
|
||||
* com.mysql.cj.jdbc.PreparedStatementWrapper extends StatementWrapper implements PreparedStatement
|
||||
*/
|
||||
// TODO: Does it's own typical exception wrapping, could be instrumented with different catch method
|
||||
|
||||
/*
|
||||
* com.mysql.cj.jdbc.CallableStatementWrapper extends PreparedStatementWrapper implements CallableStatement
|
||||
*/
|
||||
// TODO: Does it's own typical exception wrapping, could be instrumented with different catch method
|
||||
|
||||
/*
|
||||
* java.sql.Clob
|
||||
*/
|
||||
// com.mysql.cj.jdbc.Clob implements java.sql.Clob, OutputStreamWatcher, WriterWatcher
|
||||
clazz = pool.get(Clob.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.Clob.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
*
|
||||
* java.sql.Connection extends java.sql.Wrapper
|
||||
* ----> com.mysql.cj.jdbc.JdbcConnection extends java.sql.Connection, MysqlConnection
|
||||
* ----------> com.mysql.cj.jdbc.ConnectionImpl
|
||||
* ----------> com.mysql.cj.jdbc.LoadBalancedConnection extends JdbcConnection
|
||||
* -------------> com.mysql.cj.jdbc.LoadBalancedMySQLConnection extends MultiHostMySQLConnection implements LoadBalancedConnection
|
||||
* ----------> com.mysql.cj.jdbc.MultiHostMySQLConnection
|
||||
* -------> com.mysql.cj.jdbc.ReplicationConnection implements JdbcConnection, PingTarget
|
||||
* -------> com.mysql.cj.jdbc.ConnectionWrapper
|
||||
*/
|
||||
// ConnectionImpl extends AbstractJdbcConnection implements JdbcConnection
|
||||
clazz = pool.get(ConnectionImpl.class.getName());
|
||||
instrumentJdbcMethods(clazz, JdbcConnection.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
// non-JDBC
|
||||
catchRuntimeException(clazz,
|
||||
clazz.getDeclaredMethod("clientPrepareStatement", new CtClass[] { ctString, CtClass.intType, CtClass.intType, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("createNewIO", new CtClass[] { CtClass.booleanType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getMetaData", new CtClass[] { CtClass.booleanType, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("handleAutoCommitDefaults", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setSavepoint", new CtClass[] { ctMysqlSavepoint }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("versionMeetsMinimum", new CtClass[] { CtClass.intType, CtClass.intType, CtClass.intType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("rollbackNoChecks", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setupServerForTruncationChecks", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// com.mysql.cj.jdbc.LoadBalancedMySQLConnection extends MultiHostMySQLConnection implements LoadBalancedConnection
|
||||
clazz = pool.get(LoadBalancedMySQLConnection.class.getName());
|
||||
instrumentJdbcMethods(clazz, LoadBalancedConnection.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// MultiHostMySQLConnection implements JdbcConnection
|
||||
clazz = pool.get(MultiHostMySQLConnection.class.getName());
|
||||
instrumentJdbcMethods(clazz, JdbcConnection.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// com.mysql.cj.jdbc.ReplicationConnection implements JdbcConnection, PingTarget
|
||||
clazz = pool.get(ReplicationMySQLConnection.class.getName());
|
||||
instrumentJdbcMethods(clazz, ReplicationConnection.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// ConnectionWrapper extends WrapperBase implements JdbcConnection
|
||||
clazz = pool.get(ConnectionWrapper.class.getName());
|
||||
instrumentJdbcMethods(clazz, JdbcConnection.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
// non-JDBC
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("clientPrepare", new CtClass[] { ctString }), EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("clientPrepare", new CtClass[] { ctString, CtClass.intType, CtClass.intType }),
|
||||
EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setClientInfo", new CtClass[] { ctString, ctString }), EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setClientInfo", new CtClass[] { ctProperties }), EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.DatabaseMetaData extends java.sql.Wrapper
|
||||
*/
|
||||
// com.mysql.cj.jdbc.DatabaseMetaData implements java.sql.DatabaseMetaData
|
||||
clazz = pool.get(DatabaseMetaData.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.DatabaseMetaData.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// com.mysql.cj.jdbc.DatabaseMetaDataUsingInfoSchema extends DatabaseMetaData
|
||||
clazz = pool.get(DatabaseMetaDataUsingInfoSchema.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.DatabaseMetaData.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.Driver
|
||||
*/
|
||||
// com.mysql.cj.jdbc.Driver extends NonRegisteringDriver implements java.sql.Driver
|
||||
clazz = pool.get(NonRegisteringDriver.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.Driver.class);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.NClob
|
||||
*/
|
||||
// com.mysql.cj.jdbc.NClob extends Clob implements java.sql.NClob
|
||||
clazz = pool.get(NClob.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.NClob.class);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.ParameterMetaData extends java.sql.Wrapper
|
||||
*/
|
||||
// com.mysql.cj.jdbc.CallableStatement.CallableStatementParamInfo implements ParameterMetaData
|
||||
clazz = pool.get(CallableStatementParamInfo.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.ParameterMetaData.class);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// com.mysql.cj.jdbc.MysqlParameterMetadata implements ParameterMetaData
|
||||
clazz = pool.get(MysqlParameterMetadata.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.ParameterMetaData.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.PreparedStatement extends java.sql.Statement (java.sql.Statement extends java.sql.Wrapper)
|
||||
*/
|
||||
// com.mysql.cj.jdbc.PreparedStatement extends com.mysql.cj.jdbc.StatementImpl implements java.sql.PreparedStatement
|
||||
clazz = pool.get(ClientPreparedStatement.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.PreparedStatement.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
instrumentJdbcMethods(clazz, JdbcStatement.class, true, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
// non-JDBC
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("asSql", new CtClass[] { CtClass.booleanType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("checkBounds", new CtClass[] { CtClass.intType, CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("checkReadOnlySafeStatement", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("executeBatchedInserts", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("executeBatchSerially", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz,
|
||||
clazz.getDeclaredMethod("executeInternal",
|
||||
new CtClass[] { CtClass.intType, ctMessageBody, CtClass.booleanType, CtClass.booleanType, ctColumnDefinition, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("executePreparedBatchAsMultiStatement", new CtClass[] { CtClass.intType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("executeUpdateInternal", new CtClass[] { CtClass.booleanType, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("executeUpdateInternal", new CtClass[] { ctQueryBindings, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("generateMultiStatementForBatch", new CtClass[] { CtClass.intType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getBytesRepresentation", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getParameterBindings", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("initializeFromParseInfo", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("isNull", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("isSelectQuery", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("prepareBatchedInsertSQL", new CtClass[] { ctJdbcConnection, CtClass.intType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz,
|
||||
clazz.getDeclaredMethod("setBytes", new CtClass[] { CtClass.intType, ctByteArray, CtClass.booleanType, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setRetrieveGeneratedKeys", new CtClass[] { CtClass.booleanType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* com.mysql.cj.jdbc.ServerPreparedStatement extends PreparedStatement
|
||||
*/
|
||||
clazz = pool.get(ServerPreparedStatement.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.PreparedStatement.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
instrumentJdbcMethods(clazz, JdbcStatement.class, true, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
// non-JDBC
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getBinding", new CtClass[] { CtClass.intType, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz,
|
||||
clazz.getDeclaredMethod("executeInternal",
|
||||
new CtClass[] { CtClass.intType, ctMessageBody, CtClass.booleanType, CtClass.booleanType, ctColumnDefinition, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
//catchRuntimeException(clazz, clazz.getDeclaredMethod("canRewriteAsMultiValueInsertAtSqlLevel", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("realClose", new CtClass[] { CtClass.booleanType, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("serverExecute", new CtClass[] { CtClass.intType, CtClass.booleanType, ctColumnDefinition }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
//catchRuntimeException(clazz, clazz.getDeclaredMethod("serverLongData", new CtClass[] { CtClass.intType, ctServerPreparedQueryBindValue }),
|
||||
// EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("serverPrepare", new CtClass[] { ctString }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.ResultSet extends java.sql.Wrapper
|
||||
*/
|
||||
// com.mysql.cj.jdbc.ResultSetImpl implements com.mysql.cj.jdbc.ResultSetInternalMethods (extends java.sql.ResultSet)
|
||||
clazz = pool.get(ResultSetImpl.class.getName());
|
||||
instrumentJdbcMethods(clazz, ResultSetInternalMethods.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// com.mysql.cj.jdbc.UpdatableResultSet extends ResultSetImpl
|
||||
clazz = pool.get(UpdatableResultSet.class.getName());
|
||||
instrumentJdbcMethods(clazz, ResultSetInternalMethods.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("generateStatements", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.ResultSetMetaData extends java.sql.Wrapper
|
||||
*/
|
||||
// com.mysql.cj.jdbc.ResultSetMetaData implements java.sql.ResultSetMetaData
|
||||
clazz = pool.get(ResultSetMetaData.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.ResultSetMetaData.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.Savepoint
|
||||
*/
|
||||
// com.mysql.cj.jdbc.MysqlSavepoint implements java.sql.Savepoint
|
||||
clazz = pool.get(MysqlSavepoint.class.getName());
|
||||
instrumentJdbcMethods(clazz, Savepoint.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.Statement extends java.sql.Wrapper
|
||||
*/
|
||||
// com.mysql.cj.jdbc.StatementImpl implements com.mysql.cj.jdbc.Statement (extends java.sql.Statement)
|
||||
clazz = pool.get(StatementImpl.class.getName());
|
||||
instrumentJdbcMethods(clazz, JdbcStatement.class, false, EXCEPTION_INTERCEPTOR_GETTER);
|
||||
// non-JDBC
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("createResultSetUsingServerFetch", new CtClass[] { ctString }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("doPingInstead", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("executeInternal", new CtClass[] { ctString, CtClass.booleanType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz,
|
||||
clazz.getDeclaredMethod("executeBatchUsingMultiQueries", new CtClass[] { CtClass.booleanType, CtClass.intType, CtClass.intType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("executeUpdateInternal", new CtClass[] { ctString, CtClass.booleanType, CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("executeSimpleNonQuery", new CtClass[] { ctJdbcConnection, ctString }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("generatePingResultSet", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getBatchedGeneratedKeys", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getBatchedGeneratedKeys", new CtClass[] { ctStatement }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getGeneratedKeysInternal", new CtClass[] { CtClass.longType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getLastInsertID", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getLongUpdateCount", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getOpenResultSetCount", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getResultSetInternal", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("processMultiCountsAndKeys", new CtClass[] { ctStatementImpl, CtClass.intType, ctLongArray }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("removeOpenResultSet", new CtClass[] { ctResultSetInternalMethods }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("resetCancelledState", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setHoldResultsOpenOverClose", new CtClass[] { CtClass.booleanType }),
|
||||
EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setResultSetConcurrency", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("useServerFetch", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("checkCancelTimeout", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* java.sql.SQLXML
|
||||
*/
|
||||
// com.mysql.cj.jdbc.MysqlSQLXML implements SQLXML
|
||||
clazz = pool.get(MysqlSQLXML.class.getName());
|
||||
instrumentJdbcMethods(clazz, java.sql.SQLXML.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* javax.sql.ConnectionPoolDataSource
|
||||
*/
|
||||
// MysqlConnectionPoolDataSource extends MysqlDataSource implements ConnectionPoolDataSource
|
||||
clazz = pool.get(MysqlConnectionPoolDataSource.class.getName());
|
||||
instrumentJdbcMethods(clazz, javax.sql.ConnectionPoolDataSource.class);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* javax.sql.DataSource
|
||||
*/
|
||||
// MysqlDataSource extends JdbcPropertySetImpl implements DataSource, Referenceable, Serializable, JdbcPropertySet
|
||||
clazz = pool.get(MysqlDataSource.class.getName());
|
||||
instrumentJdbcMethods(clazz, javax.sql.DataSource.class);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getStringRuntimeProperty", new CtClass[] { ctString }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setStringRuntimeProperty", new CtClass[] { ctString, ctString }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getBooleanRuntimeProperty", new CtClass[] { ctString }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setBooleanRuntimeProperty", new CtClass[] { ctString, CtClass.booleanType }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getIntegerRuntimeProperty", new CtClass[] { ctString }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setIntegerRuntimeProperty", new CtClass[] { ctString, CtClass.intType }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getLongRuntimeProperty", new CtClass[] { ctString }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setLongRuntimeProperty", new CtClass[] { ctString, CtClass.longType }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getMemorySizeRuntimeProperty", new CtClass[] { ctString }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setMemorySizeRuntimeProperty", new CtClass[] { ctString, CtClass.intType }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("getEnumRuntimeProperty", new CtClass[] { ctString }), null);
|
||||
catchRuntimeException(clazz, clazz.getDeclaredMethod("setEnumRuntimeProperty", new CtClass[] { ctString, ctString }), null);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* javax.sql.PooledConnection
|
||||
*/
|
||||
// com.mysql.cj.jdbc.MysqlPooledConnection
|
||||
clazz = pool.get(MysqlPooledConnection.class.getName());
|
||||
instrumentJdbcMethods(clazz, javax.sql.PooledConnection.class, false, EXCEPTION_INTERCEPTOR_MEMBER);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* javax.sql.XAConnection
|
||||
* javax.transaction.xa.XAResource
|
||||
*/
|
||||
// com.mysql.cj.jdbc.MysqlXAConnection extends MysqlPooledConnection implements XAConnection, XAResource
|
||||
clazz = pool.get(MysqlXAConnection.class.getName());
|
||||
instrumentJdbcMethods(clazz, javax.sql.XAConnection.class);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
// com.mysql.cj.jdbc.SuspendableXAConnection extends MysqlPooledConnection implements XAConnection, XAResource
|
||||
clazz = pool.get(SuspendableXAConnection.class.getName());
|
||||
instrumentJdbcMethods(clazz, javax.sql.XAConnection.class);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* javax.sql.XADataSource
|
||||
*/
|
||||
// com.mysql.cj.jdbc.MysqlXADataSource extends MysqlDataSource implements javax.sql.XADataSource
|
||||
clazz = pool.get(MysqlXADataSource.class.getName());
|
||||
instrumentJdbcMethods(clazz, javax.sql.DataSource.class);
|
||||
instrumentJdbcMethods(clazz, javax.sql.XADataSource.class);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* javax.transaction.xa.Xid
|
||||
*/
|
||||
// com.mysql.cj.jdbc.MysqlXid implements Xid
|
||||
clazz = pool.get(MysqlXid.class.getName());
|
||||
instrumentJdbcMethods(clazz, javax.transaction.xa.Xid.class);
|
||||
clazz.writeFile(args[0]);
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* java.sql.DataTruncation
|
||||
*/
|
||||
// com.mysql.cj.jdbc.exceptions.MysqlDataTruncation extends DataTruncation
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* java.sql.SQLException
|
||||
*/
|
||||
// com.mysql.cj.jdbc.exceptions.NotUpdatable extends SQLException
|
||||
// com.mysql.cj.jdbc.exceptions.OperationNotSupportedException extends SQLException
|
||||
// com.mysql.cj.jdbc.exceptions.PacketTooBigException extends SQLException
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* java.sql.SQLNonTransientException
|
||||
*/
|
||||
// com.mysql.cj.jdbc.exceptions.MySQLQueryInterruptedException extends SQLNonTransientException
|
||||
// com.mysql.cj.jdbc.exceptions.MySQLStatementCancelledException extends SQLNonTransientException
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* java.sql.SQLRecoverableException
|
||||
*/
|
||||
// com.mysql.cj.jdbc.exceptions.CommunicationsException extends SQLRecoverableException implements StreamingNotifiable
|
||||
// ---> com.mysql.cj.jdbc.exceptions.ConnectionFeatureNotAvailableException extends CommunicationsException
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* java.sql.SQLTransientException
|
||||
* ---> java.sql.SQLTimeoutException
|
||||
*/
|
||||
// com.mysql.cj.jdbc.exceptions.MySQLTimeoutException extends SQLTimeoutException
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* java.sql.SQLTransientException
|
||||
* ---> java.sql.SQLTransactionRollbackException
|
||||
*/
|
||||
// com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException extends SQLTransactionRollbackException implements DeadlockTimeoutRollbackMarker
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* com.mysql.cj.jdbc.MysqlXAException extends javax.transaction.xa.XAException
|
||||
*/
|
||||
|
||||
/*
|
||||
* These classes have no implementations in c/J:
|
||||
*
|
||||
* java.sql.Array
|
||||
* java.sql.BatchUpdateException
|
||||
* java.sql.ClientInfoStatus
|
||||
* java.sql.Date
|
||||
* java.sql.DriverManager
|
||||
* java.sql.DriverPropertyInfo
|
||||
* java.sql.PseudoColumnUsage
|
||||
* java.sql.Ref
|
||||
* java.sql.RowId
|
||||
* java.sql.RowIdLifetime
|
||||
* java.sql.SQLClientInfoException
|
||||
* java.sql.SQLData
|
||||
* java.sql.SQLDataException
|
||||
* java.sql.SQLFeatureNotSupportedException
|
||||
* java.sql.SQLInput
|
||||
* java.sql.SQLIntegrityConstraintViolationException
|
||||
* java.sql.SQLInvalidAuthorizationSpecException
|
||||
* java.sql.SQLNonTransientConnectionException
|
||||
* java.sql.SQLOutput
|
||||
* java.sql.SQLPermission
|
||||
* java.sql.SQLSyntaxErrorException
|
||||
* java.sql.SQLTransientConnectionException
|
||||
* java.sql.SQLWarning
|
||||
* java.sql.Struct
|
||||
* java.sql.Time
|
||||
* java.sql.Timestamp
|
||||
* java.sql.Types
|
||||
*
|
||||
* javax.sql.CommonDataSource
|
||||
* javax.sql.ConnectionEvent
|
||||
* javax.sql.ConnectionEventListener
|
||||
* javax.sql.RowSet
|
||||
* javax.sql.RowSetEvent
|
||||
* javax.sql.RowSetInternal
|
||||
* javax.sql.RowSetListener
|
||||
* javax.sql.RowSetMetaData
|
||||
* javax.sql.RowSetReader
|
||||
* javax.sql.RowSetWriter
|
||||
* javax.sql.StatementEvent
|
||||
* javax.sql.StatementEventListener
|
||||
*
|
||||
* javax.sql.rowset.BaseRowSet
|
||||
* javax.sql.rowset.CachedRowSet
|
||||
* javax.sql.rowset.FilteredRowSet
|
||||
* javax.sql.rowset.JdbcRowSet
|
||||
* javax.sql.rowset.Joinable
|
||||
* javax.sql.rowset.JoinRowSet
|
||||
* javax.sql.rowset.Predicate
|
||||
* javax.sql.rowset.RowSetFactory
|
||||
* javax.sql.rowset.RowSetMetaDataImpl
|
||||
* javax.sql.rowset.RowSetProvider
|
||||
* javax.sql.rowset.RowSetWarning
|
||||
* javax.sql.rowset.WebRowSet
|
||||
*
|
||||
* javax.sql.rowset.serial.SerialArray
|
||||
* javax.sql.rowset.serial.SerialBlob
|
||||
* javax.sql.rowset.serial.SerialClob
|
||||
* javax.sql.rowset.serial.SerialDatalink
|
||||
* javax.sql.rowset.serial.SerialException
|
||||
* javax.sql.rowset.serial.SerialJavaObject
|
||||
* javax.sql.rowset.serial.SerialRef
|
||||
* javax.sql.rowset.serial.SerialStruct
|
||||
* javax.sql.rowset.serial.SQLInputImpl
|
||||
* javax.sql.rowset.serial.SQLOutputImpl
|
||||
*
|
||||
* javax.sql.rowset.spi.SyncFactory
|
||||
* javax.sql.rowset.spi.SyncFactoryException
|
||||
* javax.sql.rowset.spi.SyncProvider
|
||||
* javax.sql.rowset.spi.SyncProviderException
|
||||
* javax.sql.rowset.spi.SyncResolver
|
||||
* javax.sql.rowset.spi.TransactionalWriter
|
||||
* javax.sql.rowset.spi.XmlReader
|
||||
* javax.sql.rowset.spi.XmlWriter
|
||||
*/
|
||||
}
|
||||
|
||||
private static void instrumentJdbcMethods(CtClass cjClazz, Class<?> jdbcClass) throws Exception {
|
||||
instrumentJdbcMethods(cjClazz, jdbcClass, false, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Instruments methods of cjClazz defined in jdbcClass.
|
||||
*
|
||||
* @param cjClazz
|
||||
* CtClass to be instrumented.
|
||||
* @param jdbcClass
|
||||
* Class from JDBC specification where methods descriptors to be get.
|
||||
* @param declaredMethodsOnly
|
||||
* true - instrument methods declared in this class, false - also instrument inherited methods
|
||||
* @param exceptionInterceptorStr
|
||||
* exception interceptor reference as a string
|
||||
* @throws Exception
|
||||
* if an error occurs
|
||||
*/
|
||||
private static void instrumentJdbcMethods(CtClass cjClazz, Class<?> jdbcClass, boolean declaredMethodsOnly, String exceptionInterceptorStr)
|
||||
throws Exception {
|
||||
sysOutPrintln("---");
|
||||
sysOutPrintln(cjClazz.getName());
|
||||
|
||||
Method[] methods;
|
||||
if (declaredMethodsOnly) {
|
||||
// instrument methods declared in this class which throws SQLException
|
||||
methods = jdbcClass.getDeclaredMethods();
|
||||
} else {
|
||||
// instrument all methods, declared in this class and it's superclasses, which throws SQLException
|
||||
methods = jdbcClass.getMethods();
|
||||
}
|
||||
|
||||
for (Method method : methods) {
|
||||
CtMethod ctm = null;
|
||||
String prefix = "SKIPPED: ";
|
||||
for (Class<?> exc : method.getExceptionTypes()) {
|
||||
if (exc.equals(SQLException.class)) {
|
||||
prefix = "INSTRUMENTING... ";
|
||||
String jdbcClassName = method.getName();
|
||||
List<CtClass> params = new LinkedList<>();
|
||||
for (Class<?> param : method.getParameterTypes()) {
|
||||
params.add(pool.get(param.getName()));
|
||||
}
|
||||
try {
|
||||
ctm = cjClazz.getDeclaredMethod(jdbcClassName, params.toArray(new CtClass[0]));
|
||||
} catch (NotFoundException ex) {
|
||||
// Just ignoring because the only reason is that the method is implemented in superclass
|
||||
prefix = "NOT FOUND: ";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
sysOutPrint(prefix);
|
||||
sysOutPrint(method.toGenericString());
|
||||
if (ctm != null) {
|
||||
if (catchRuntimeException(cjClazz, ctm, exceptionInterceptorStr, false)) {
|
||||
sysOutPrint(" ... DONE.");
|
||||
} else {
|
||||
sysOutPrint(" ... ALREADY PROCESSED!!!");
|
||||
}
|
||||
}
|
||||
sysOutPrintln("");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void catchRuntimeException(CtClass clazz, CtMethod m, String exceptionInterceptorStr) throws Exception {
|
||||
catchRuntimeException(clazz, m, exceptionInterceptorStr, true);
|
||||
}
|
||||
|
||||
private static boolean catchRuntimeException(CtClass clazz, CtMethod m, String exceptionInterceptorStr, boolean log) throws Exception {
|
||||
if (isProcessed(clazz.getClassFile().getName(), m)) {
|
||||
if (log) {
|
||||
sysOutPrintln("ALREADY PROCESSED!!! " + m);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (log) {
|
||||
sysOutPrintln(m + ", " + exceptionInterceptorStr);
|
||||
}
|
||||
if (exceptionInterceptorStr == null) {
|
||||
m.addCatch("{throw " + SQLExceptionsMapping.class.getName() + ".translateException(ex);}", runTimeException, "ex");
|
||||
} else {
|
||||
m.addCatch("{throw " + SQLExceptionsMapping.class.getName() + ".translateException(ex, " + exceptionInterceptorStr + ");}", runTimeException, "ex");
|
||||
}
|
||||
processed.get(clazz.getClassFile().getName()).add(m);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean isProcessed(String fileName, CtMethod m) throws Exception {
|
||||
List<CtMethod> methods = processed.get(fileName);
|
||||
if (methods != null) {
|
||||
if (methods.contains(m)) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
processed.put(fileName, new LinkedList<CtMethod>());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void sysOutPrint(String s) {
|
||||
if (verbose) {
|
||||
System.out.print(s);
|
||||
}
|
||||
}
|
||||
|
||||
private static void sysOutPrintln(String s) {
|
||||
if (verbose) {
|
||||
System.out.println(s);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>misc</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -1,66 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (c) 2019, 2020, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License, version 2.0, as published by the
|
||||
Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including but not
|
||||
limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
particular file or component or in included license documentation. The
|
||||
authors of MySQL hereby grant you an additional permission to link the
|
||||
program and your derivative works with the separately licensed software that
|
||||
they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file, which is
|
||||
part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
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, version 2.0,
|
||||
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.,
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
-->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Product Id="*" Name="MySQL Connector J" Language="1033" Version="$(var.ProductVersion)" Manufacturer="Oracle Corporation" UpgradeCode="a887f346-5f02-4cf1-bb85-bf34b4c5f248">
|
||||
<Package InstallerVersion="200" Compressed="yes" />
|
||||
<Upgrade Id="574f7b74-d753-4965-995d-2de6a79afd01">
|
||||
<UpgradeVersion OnlyDetect="no"
|
||||
Minimum="6.0.0"
|
||||
IncludeMinimum="yes"
|
||||
Maximum="8.0.12"
|
||||
IncludeMaximum="yes"
|
||||
Property="OLDERVERSIONBEINGUPGRADED_OLD"/>
|
||||
</Upgrade>
|
||||
<Upgrade Id="a887f346-5f02-4cf1-bb85-bf34b4c5f248">
|
||||
<UpgradeVersion OnlyDetect="no"
|
||||
Minimum="8.0.13"
|
||||
IncludeMinimum="yes"
|
||||
Maximum="$(var.ProductVersion)"
|
||||
Property="OLDERVERSIONBEINGUPGRADED"
|
||||
IncludeMaximum="yes" />
|
||||
</Upgrade>
|
||||
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="ProgramFilesFolder">
|
||||
<Directory Id="MySQL" Name="MySQL">
|
||||
<Directory Id="INSTALLLOCATION" Name="MySQL Connector J 8.0">
|
||||
<!-- Components Autogenerated using the WiX tool named Heat. See the Project properties for cmd line. -->
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Feature Id="ProductFeature" Title="wix_solution" Level="1">
|
||||
<ComponentGroupRef Id="ConnJZipContents"/>
|
||||
</Feature>
|
||||
<InstallExecuteSequence>
|
||||
<RemoveExistingProducts After="InstallInitialize" />
|
||||
</InstallExecuteSequence>
|
||||
</Product>
|
||||
</Wix>
|
||||
@@ -1,5 +0,0 @@
|
||||
@PRODUCT_NAME@@PRODUCT_SUFFIX@ (@MYSQL_CJ_VERSION@@MYSQL_CJ_VERSION_SNAPSHOT@@DEB_VERSION_SUFFIX@@ID_RELEASE@) @CODENAME@; urgency=low
|
||||
|
||||
* For release notes, please refer to https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/
|
||||
|
||||
-- @MAINTAINER_EMAIL@ @PACKAGE_TIMESTAMP@
|
||||
@@ -1 +0,0 @@
|
||||
9
|
||||
@@ -1,14 +0,0 @@
|
||||
Source: @PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
Section: database
|
||||
Priority: optional
|
||||
Maintainer: Oracle MySQL Product Engineering Team <mysql-build@oss.oracle.com>
|
||||
Standards-Version: 3.9.2
|
||||
Build-Depends: debhelper (>= 8.9.4)
|
||||
Homepage: http://dev.mysql.com/downloads/connector/j/
|
||||
|
||||
Package: @PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
Section: database
|
||||
Architecture: all
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: MySQL Connector/J
|
||||
Standardized MySQL database driver for Java
|
||||
@@ -1,9 +0,0 @@
|
||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: @PRODUCT@
|
||||
Upstream-Contact: MySQL Release Engineering <mysql-build@oss.oracle.com>
|
||||
Source: http://dev.mysql.com/
|
||||
|
||||
Files: *
|
||||
Copyright: 2002, 2021, Oracle and/or its affiliates.
|
||||
License:
|
||||
For licensing information see the LICENSE file in this distribution.
|
||||
@@ -1,8 +0,0 @@
|
||||
dist/toArchive/@PACKAGE_NAME@/@PRODUCT_NAME@@PRODUCT_SUFFIX@-@VERSION_FULL@.jar usr/share/java
|
||||
|
||||
#legal
|
||||
dist/toArchive/@PACKAGE_NAME@/@LIC_FILE@ usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
dist/toArchive/@PACKAGE_NAME@/README usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
dist/toArchive/@PACKAGE_NAME@/CHANGES usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
dist/toArchive/@PACKAGE_NAME@/INFO_SRC usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
dist/toArchive/@PACKAGE_NAME@/INFO_BIN usr/share/doc/@PRODUCT_NAME@@PRODUCT_SUFFIX@
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
# Copyright (c) 2016, 2020, Oracle and/or its affiliates.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License, version 2.0, as published by the
|
||||
# Free Software Foundation.
|
||||
#
|
||||
# This program is also distributed with certain software (including but not
|
||||
# limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
# particular file or component or in included license documentation. The
|
||||
# authors of MySQL hereby grant you an additional permission to link the
|
||||
# program and your derivative works with the separately licensed software that
|
||||
# they have included with MySQL.
|
||||
#
|
||||
# Without limiting anything contained in the foregoing, this file, which is
|
||||
# part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
# version 1.0, a copy of which can be found at
|
||||
# http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
#
|
||||
# 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, version 2.0,
|
||||
# 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.,
|
||||
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
upstream_version := $(shell dpkg-parsechangelog | sed -n -e'/^Version: / { s/Version: //; s/-[^-]\+$$//; p }')
|
||||
base_version = $(shell echo $(upstream_version) | sed -e's/r[0-9]\+$$//')
|
||||
|
||||
ANT_COMMON_OPTIONS=\
|
||||
-Dcom.mysql.cj.build.dir.driver=build/driver \
|
||||
-Dcom.mysql.cj.extra.libs=@WITH_JARDEPS@ \
|
||||
-Dcom.mysql.cj.build.driver.version.status=@MYSQL_CJ_VERSION_STATUS@ \
|
||||
-Dcom.mysql.cj.build.driver.version.extra=@MYSQL_CJ_VERSION_EXTRA@ \
|
||||
-Dcom.mysql.cj.build.driver.version.snapshot=@MYSQL_CJ_VERSION_SNAPSHOT@ \
|
||||
-Dcom.mysql.cj.build.driver.extraName=@PRODUCT_SUFFIX@ \
|
||||
-Dcom.mysql.cj.dist.licenseUrl=@MYSQL_CJ_LICENSEURL@ \
|
||||
-Djava.awt.headless=true
|
||||
|
||||
ifeq ($(ANT_HOME),)
|
||||
ANT_CMD=ant
|
||||
else
|
||||
ANT_CMD=$(ANT_HOME)/bin/ant
|
||||
endif
|
||||
|
||||
ANT_OPTS=-Xmx512M
|
||||
|
||||
ifneq ($(JAVA_HOME),)
|
||||
ANT_JAVA_OPT=-Dcom.mysql.cj.build.jdk=$(JAVA_HOME)
|
||||
endif
|
||||
|
||||
ifneq ($(COMMERCIAL),)
|
||||
ANT_COM_OPT=-Dcom.mysql.cj.build.commercial=true
|
||||
endif
|
||||
|
||||
%:
|
||||
#dh $@ --with autoreconf
|
||||
dh $@
|
||||
|
||||
override_dh_auto_configure:
|
||||
|
||||
override_dh_auto_build:
|
||||
echo $(PATH)
|
||||
echo $(JAVA_HOME)
|
||||
$(ANT_CMD) \
|
||||
$(ANT_COMMON_OPTIONS) \
|
||||
$(ANT_JAVA_OPT) \
|
||||
$(ANT_COM_OPT) \
|
||||
full-package-no-sources
|
||||
|
||||
override_dh_auto_clean:
|
||||
$(ANT_CMD) $(ANT_COMMON_OPTIONS) clean
|
||||
|
||||
override_dh_installchangelogs:
|
||||
dh_installchangelogs -XCHANGES
|
||||
@@ -1 +0,0 @@
|
||||
3.0 (quilt)
|
||||
@@ -1,2 +0,0 @@
|
||||
version=3
|
||||
http://mysql.osuosl.org/Downloads/@PRODUCT_NAME@-(.+)\.tar\.gz
|
||||
@@ -1,67 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
Copyright (c) 2006, 2020, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License, version 2.0, as published by the
|
||||
Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including but not
|
||||
limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
particular file or component or in included license documentation. The
|
||||
authors of MySQL hereby grant you an additional permission to link the
|
||||
program and your derivative works with the separately licensed software that
|
||||
they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file, which is
|
||||
part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
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, version 2.0,
|
||||
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.,
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
-->
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>@MYSQL_CJ_VERSION@</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>MySQL Connector/J</name>
|
||||
<description>JDBC Type 4 driver for MySQL</description>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The GNU General Public License, v2 with FOSS exception</name>
|
||||
<distribution>repo</distribution>
|
||||
<comments>For detailed license information see the LICENSE file in this distribution.</comments>
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
<url>http://dev.mysql.com/doc/connector-j/en/</url>
|
||||
|
||||
<scm>
|
||||
<connection>scm:git:git@github.com:mysql/mysql-connector-j.git</connection>
|
||||
<url>https://github.com/mysql/mysql-connector-j</url>
|
||||
</scm>
|
||||
|
||||
<organization>
|
||||
<name>Oracle Corporation</name>
|
||||
<url>http://www.oracle.com</url>
|
||||
</organization>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
<version>3.11.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -1,197 +0,0 @@
|
||||
# Copyright (c) 2017, 2020, Oracle and/or its affiliates.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License, version 2.0, as published by the
|
||||
# Free Software Foundation.
|
||||
#
|
||||
# This program is also distributed with certain software (including but not
|
||||
# limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
# particular file or component or in included license documentation. The
|
||||
# authors of MySQL hereby grant you an additional permission to link the
|
||||
# program and your derivative works with the separately licensed software that
|
||||
# they have included with MySQL.
|
||||
#
|
||||
# Without limiting anything contained in the foregoing, this file, which is
|
||||
# part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
# version 1.0, a copy of which can be found at
|
||||
# http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
#
|
||||
# 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, version 2.0,
|
||||
# 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.,
|
||||
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# You can pass these options to "rpmbuild"
|
||||
#
|
||||
# --define="commercial <nonempty>"
|
||||
# --define="with_ant <path>"
|
||||
# --define="with_java <path>"
|
||||
# --define="with_jardeps <path>"
|
||||
# --define="with_docs <path>"
|
||||
#
|
||||
# The 'with_docs' option should have a path that points out
|
||||
#
|
||||
# <docs-base>/en/html/connector-j.html
|
||||
# <docs-base>/en/html/mvl.css (not really used)
|
||||
# <docs-base>/en/pdf/connector-j.pdf
|
||||
# <docs-base>/en/txt/connector-j.txt
|
||||
|
||||
# Some linux distributions doesn't set the "dist" macro. There is a
|
||||
# list how to identify dists here
|
||||
# https://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto
|
||||
|
||||
# SuSE will not set "dist", others do
|
||||
%if 0%{?suse_version} == 1315
|
||||
%global dist .sles12
|
||||
%global sles12 1
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} == 1500
|
||||
%global dist .sl15
|
||||
%global sles15 1
|
||||
%endif
|
||||
|
||||
%if 0%{?commercial:1}
|
||||
%global lic_tag Commercial
|
||||
%else
|
||||
%global lic_tag GPLv2
|
||||
%endif
|
||||
|
||||
Summary: Standardized MySQL database driver for Java
|
||||
Name: @MYSQL_CJ_EXTENDED_PROD_NAME@
|
||||
Version: @MYSQL_CJ_VERSION_NUMERIC@
|
||||
Release: @MYSQL_CJ_RPM_RELEASE_FULL@%{?dist}
|
||||
Epoch: 1
|
||||
License: %{lic_tag}
|
||||
Group: Development/Libraries
|
||||
URL: http://dev.mysql.com/downloads/connector/j/
|
||||
Source0: https://cdn.mysql.com/Downloads/Connector-J/@MYSQL_CJ_FULL_PROD_NAME@.tar.gz
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildArch: noarch
|
||||
|
||||
%if 0%{?commercial:1}
|
||||
Obsoletes: mysql-connector-java < %{version}-%{release}
|
||||
Provides: mysql-connector-java = %{version}-%{release}
|
||||
%endif
|
||||
|
||||
%if 0%{!?with_ant:1}
|
||||
BuildRequires: ant
|
||||
%endif
|
||||
|
||||
%if 0%{!?with_java:1}
|
||||
BuildRequires: java-devel >= 1:1.8.0
|
||||
%endif
|
||||
|
||||
%if 0%{?sles12:1} || 0%{?sles15:1}
|
||||
Requires: java-headless >= 1.8.0
|
||||
%else
|
||||
Requires: java-headless >= 1:1.8.0
|
||||
%endif
|
||||
|
||||
%description
|
||||
MySQL provides connectivity for client applications developed in the
|
||||
Java programming language with @MYSQL_CJ_DISPLAY_PROD_NAME@, a driver that
|
||||
implements the [Java Database Connectivity (JDBC) API]
|
||||
(http://www.oracle.com/technetwork/java/javase/jdbc/).
|
||||
|
||||
@MYSQL_CJ_DISPLAY_PROD_NAME@ @MYSQL_CJ_VERSION_SERIES@ is a JDBC Type 4 driver that is compatible with
|
||||
the [JDBC 4.2](http://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/)
|
||||
specification. The Type 4 designation means that the driver is a pure
|
||||
Java implementation of the MySQL protocol and does not rely on the
|
||||
MySQL client libraries.
|
||||
|
||||
For detailed information please visit the official
|
||||
[@MYSQL_CJ_DISPLAY_PROD_NAME@ documentation]
|
||||
(http://dev.mysql.com/doc/connector-j/en/).
|
||||
|
||||
%prep
|
||||
%setup -q -n @MYSQL_CJ_FULL_PROD_NAME@
|
||||
|
||||
%build
|
||||
COMMON_OPTIONS="\
|
||||
-Dcom.mysql.cj.build.dir.driver=build/driver
|
||||
-Dcom.mysql.cj.extra.libs=%{with_jardeps} \
|
||||
-Dcom.mysql.cj.build.driver.version.status=@MYSQL_CJ_VERSION_STATUS@ \
|
||||
-Dcom.mysql.cj.build.driver.version.extra=@MYSQL_CJ_VERSION_EXTRA@ \
|
||||
-Dcom.mysql.cj.build.driver.version.snapshot=@MYSQL_CJ_VERSION_SNAPSHOT@ \
|
||||
-Dcom.mysql.cj.build.driver.extraName=@MYSQL_CJ_EXTRA_NAME@ \
|
||||
-Dcom.mysql.cj.dist.licenseUrl=@MYSQL_CJ_LICENSEURL@ \
|
||||
-Djava.awt.headless=true"
|
||||
|
||||
%if 0%{?with_ant:1}
|
||||
export ANT_HOME=%{with_ant}
|
||||
export ANT_CMD="${ANT_HOME}/bin/ant"
|
||||
%else
|
||||
export ANT_CMD="ant"
|
||||
%endif
|
||||
|
||||
export ANT_OPTS=-Xmx512M
|
||||
|
||||
%if 0%{?with_java:1}
|
||||
export JAVA_HOME=%{with_java}
|
||||
export PATH=${JAVA_HOME}/bin:$PATH
|
||||
COMMON_OPTIONS="${COMMON_OPTIONS} -Dcom.mysql.cj.build.jdk=${JAVA_HOME}"
|
||||
%endif
|
||||
|
||||
%if 0%{?commercial:1}
|
||||
COMMON_OPTIONS="${COMMON_OPTIONS} -Dcom.mysql.cj.build.commercial=true"
|
||||
%endif
|
||||
|
||||
# Get the file revision-info.properties again because it was excluded
|
||||
# from SOURCES
|
||||
cp %{_tmppath}/@MYSQL_CJ_FULL_PROD_NAME@/revision-info.properties .
|
||||
|
||||
${ANT_CMD} \
|
||||
${COMMON_OPTIONS} \
|
||||
full-package-no-sources
|
||||
|
||||
# We use the 'full-package-no-sources' as there are changes done only
|
||||
# when creating a package, 'dist' is not enough. To make it a bit easier
|
||||
# in the install step, we rename the directory with the content
|
||||
mv dist/toArchive/@PACKAGE_NAME@ package-content
|
||||
|
||||
# The 'package' target doesn't copy the HTML or PDF doc like 'dist',
|
||||
# we copy it here
|
||||
%if 0%{?with_docs:1}
|
||||
mkdir -p package-content/docs
|
||||
cp %{with_docs}/en/html/connector-j.html package-content/docs/
|
||||
cp %{with_docs}/en/html/mvl.css package-content/docs/
|
||||
cp %{with_docs}/en/pdf/connector-j.pdf package-content/docs/
|
||||
cp %{with_docs}/en/txt/connector-j.txt package-content/docs/
|
||||
%endif
|
||||
|
||||
%install
|
||||
install -d -m 0755 %{buildroot}%{_javadir}
|
||||
install -p -m 0644 package-content/@MYSQL_CJ_FULL_PROD_NAME@.jar %{buildroot}%{_javadir}/%{name}.jar
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%files
|
||||
%doc package-content/CHANGES
|
||||
# EL6 doesn't like 'license' macro here, so we use 'doc'
|
||||
%doc package-content/LICENSE
|
||||
%doc package-content/README
|
||||
%doc package-content/INFO_BIN
|
||||
%doc package-content/INFO_SRC
|
||||
|
||||
%if 0%{?with_docs:1}
|
||||
# README.txt is a rename of "connector-j.txt"
|
||||
%doc package-content/docs/connector-j.txt
|
||||
%doc package-content/docs/connector-j.pdf
|
||||
%doc package-content/docs/connector-j.html
|
||||
%doc package-content/docs/mvl.css
|
||||
%endif
|
||||
|
||||
%{_javadir}/%{name}.jar
|
||||
|
||||
%changelog
|
||||
* Mon Nov 27 2017 MySQL Release Engineering <mysql-build@oss.oracle.com> - 8.0.9-1
|
||||
- Set more in "build.xml"
|
||||
* Tue Mar 14 2017 MySQL Release Engineering <mysql-build@oss.oracle.com> - 6.0.7-1
|
||||
- initial package
|
||||
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2020, Oracle and/or its affiliates.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 2.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is also distributed with certain software (including but not
|
||||
* limited to OpenSSL) that is licensed under separate terms, as designated in a
|
||||
* particular file or component or in included license documentation. The
|
||||
* authors of MySQL hereby grant you an additional permission to link the
|
||||
* program and your derivative works with the separately licensed software that
|
||||
* they have included with MySQL.
|
||||
*
|
||||
* Without limiting anything contained in the foregoing, this file, which is
|
||||
* part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
|
||||
* version 1.0, a copy of which can be found at
|
||||
* http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
*
|
||||
* 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, version 2.0,
|
||||
* 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.,
|
||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package demo.x.devapi;
|
||||
|
||||
import com.mysql.cj.xdevapi.Collection;
|
||||
import com.mysql.cj.xdevapi.DbDoc;
|
||||
import com.mysql.cj.xdevapi.DbDocImpl;
|
||||
import com.mysql.cj.xdevapi.DocResult;
|
||||
import com.mysql.cj.xdevapi.JsonNumber;
|
||||
import com.mysql.cj.xdevapi.JsonString;
|
||||
import com.mysql.cj.xdevapi.Schema;
|
||||
import com.mysql.cj.xdevapi.Session;
|
||||
import com.mysql.cj.xdevapi.SessionFactory;
|
||||
|
||||
/*
|
||||
* Sample program showing how to use Connector/J's Dev API support.
|
||||
*/
|
||||
public class DevApiSample {
|
||||
public static void main(String[] args) {
|
||||
Session session = new SessionFactory().getSession("mysqlx://localhost:33060/test?user=user&password=password1234");
|
||||
System.err.println("Connected!");
|
||||
Schema schema = session.getDefaultSchema();
|
||||
System.err.println("Default schema is: " + schema);
|
||||
|
||||
documentWalkthrough(schema);
|
||||
}
|
||||
|
||||
public static void documentWalkthrough(Schema schema) {
|
||||
// document walthrough
|
||||
Collection coll = schema.createCollection("myBooks", /* reuseExisting? */ true);
|
||||
DbDoc newDoc = new DbDocImpl().add("isbn", new JsonString().setValue("12345"));
|
||||
newDoc.add("title", new JsonString().setValue("Effi Briest"));
|
||||
newDoc.add("author", new JsonString().setValue("Theodor Fontane"));
|
||||
newDoc.add("currentlyReadingPage", new JsonNumber().setValue(String.valueOf(42)));
|
||||
coll.add(newDoc).execute();
|
||||
|
||||
// note: "$" prefix for document paths is optional. "$.title.somethingElse[0]" is the same as "title.somethingElse[0]" in document expressions
|
||||
DocResult docs = coll.find("$.title = 'Effi Briest' and $.currentlyReadingPage > 10").execute();
|
||||
DbDoc book = docs.next();
|
||||
System.err.println("Currently reading " + ((JsonString) book.get("title")).getString() + " on page "
|
||||
+ ((JsonNumber) book.get("currentlyReadingPage")).getInteger());
|
||||
|
||||
// increment the page number and fetch it again
|
||||
coll.modify("$.isbn = 12345").set("$.currentlyReadingPage", ((JsonNumber) book.get("currentlyReadingPage")).getInteger() + 1).execute();
|
||||
|
||||
docs = coll.find("$.title = 'Effi Briest' and $.currentlyReadingPage > 10").execute();
|
||||
book = docs.next();
|
||||
System.err.println("Currently reading " + ((JsonString) book.get("title")).getString() + " on page "
|
||||
+ ((JsonNumber) book.get("currentlyReadingPage")).getInteger());
|
||||
|
||||
// remove the doc
|
||||
coll.remove("true").execute();
|
||||
System.err.println("Number of books in collection: " + coll.count());
|
||||
|
||||
schema.dropCollection(coll.getName());
|
||||
}
|
||||
}
|
||||