Skip to content

Commit

Permalink
Initial contribution of the Vert.x Oracle Client
Browse files Browse the repository at this point in the history
Signed-off-by: Clement Escoffier <clement.escoffier@gmail.com>
  • Loading branch information
cescoffier authored and vietj committed Aug 17, 2021
1 parent 4c7a056 commit ffedbce
Show file tree
Hide file tree
Showing 49 changed files with 5,027 additions and 2 deletions.
7 changes: 5 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest]
profile: [PostgreSQL-9,PostgreSQL-10,PostgreSQL-11,MySQL-8.0,MySQL-5.6,MySQL-5.7,MariaDB-10.4,MSSQL-2017-latest,MSSQL-2019-latest,DB2-11.5,SQL-templates]
jdk: [8]
profile: [PostgreSQL-9,PostgreSQL-10,PostgreSQL-11,MySQL-8.0,MySQL-5.6,MySQL-5.7,MariaDB-10.4,MSSQL-2017-latest,MSSQL-2019-latest,DB2-11.5,Oracle-18,SQL-templates]
jdk: [8, 11]
exclude:
- profile: Oracle-18
jdk: 8
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
Expand Down
11 changes: 11 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@
<module>vertx-mssql-client</module>
<module>vertx-db2-client</module>
<module>vertx-sql-client-templates</module>
<module>vertx-oracle-client</module>
</modules>
</profile>
<profile>
Expand Down Expand Up @@ -230,6 +231,16 @@
<module>vertx-sql-client-templates</module>
</modules>
</profile>
<profile>
<id>Oracle-18</id>
<properties>
<oracle-container.version>18-slim</oracle-container.version>
</properties>
<modules>
<module>vertx-sql-client</module>
<module>vertx-oracle-client</module>
</modules>
</profile>
</profiles>

</project>
161 changes: 161 additions & 0 deletions vertx-oracle-client/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
<?xml version="1.0"?>
<!--
~ Copyright (C) 2017 Julien Viet
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>io.vertx</groupId>
<artifactId>vertx-sql-client-parent</artifactId>
<version>4.2.0-SNAPSHOT</version>
</parent>

<artifactId>vertx-oracle-client</artifactId>

<name>Vertx Oracle Client</name>
<url>https://github.com/eclipse-vertx/vertx-sql-client</url>
<description>The Reactive Oracle Client</description>

<properties>
<doc.skip>false</doc.skip>
<docs.dir>${project.basedir}/src/main/docs</docs.dir>
<generated.dir>${project.basedir}/src/main/generated</generated.dir>

<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>

<ojdbc.version>21.1.0.0</ojdbc.version>
</properties>


<dependencies>

<!-- Oracle Driver -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc11</artifactId>
<version>${ojdbc.version}</version>
</dependency>

<!-- Vert.x dependencies -->
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-codegen</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-docgen</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-sql-client</artifactId>
</dependency>

<!-- Testing purposes -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>${testcontainers.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-sql-client</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>

</dependencies>

<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Xmx1024M</argLine>
<systemPropertyVariables>
<target.dir>${project.build.directory}</target.dir>
</systemPropertyVariables>
<excludes>
<exclude>io/vertx/pgclient/it/**</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!-- TODO Implement examples -->
<!-- <plugin>-->
<!-- <groupId>org.bsc.maven</groupId>-->
<!-- <artifactId>maven-processor-plugin</artifactId>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <id>generate-sources</id>-->
<!-- <configuration>-->
<!-- <optionMap>-->
<!-- <docgen.source>${project.basedir}/../vertx-sql-client/src/main/asciidoc/*.adoc,${asciidoc.dir}/*.adoc</docgen.source>-->
<!-- </optionMap>-->
<!-- </configuration>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<!-- Override sources to use custom descriptor to have all adoc files -->
<execution>
<id>package-sources</id>
<configuration>
<descriptors>
<descriptor>${project.basedir}/../assembly/sources.xml</descriptor>
</descriptors>
<descriptorRefs>
<descriptorRef>none</descriptorRef>
</descriptorRefs>
<ignoreMissingDescriptor>true</ignoreMissingDescriptor>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<release>11</release>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>

<profiles>

</profiles>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
package io.vertx.oracle;

import io.vertx.core.json.JsonObject;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.impl.JsonUtil;
import java.time.Instant;
import java.time.format.DateTimeFormatter;

/**
* Converter and mapper for {@link io.vertx.oracle.OracleConnectOptions}.
* NOTE: This class has been automatically generated from the {@link io.vertx.oracle.OracleConnectOptions} original class using Vert.x codegen.
*/
public class OracleConnectOptionsConverter {


public static void fromJson(Iterable<java.util.Map.Entry<String, Object>> json, OracleConnectOptions obj) {
for (java.util.Map.Entry<String, Object> member : json) {
switch (member.getKey()) {
case "authenticationServices":
if (member.getValue() instanceof String) {
obj.setAuthenticationServices((String)member.getValue());
}
break;
case "autoGeneratedKeys":
if (member.getValue() instanceof Boolean) {
obj.setAutoGeneratedKeys((Boolean)member.getValue());
}
break;
case "autoGeneratedKeysIndexes":
if (member.getValue() instanceof JsonArray) {
obj.setAutoGeneratedKeysIndexes(((JsonArray)member.getValue()).copy());
}
break;
case "catalog":
if (member.getValue() instanceof String) {
obj.setCatalog((String)member.getValue());
}
break;
case "fetchDirection":
if (member.getValue() instanceof String) {
obj.setFetchDirection(io.vertx.oracle.FetchDirection.valueOf((String)member.getValue()));
}
break;
case "fetchSize":
if (member.getValue() instanceof Number) {
obj.setFetchSize(((Number)member.getValue()).intValue());
}
break;
case "keyStore":
if (member.getValue() instanceof String) {
obj.setKeyStore((String)member.getValue());
}
break;
case "keyStorePassword":
if (member.getValue() instanceof String) {
obj.setKeyStorePassword((String)member.getValue());
}
break;
case "keyStoreType":
if (member.getValue() instanceof String) {
obj.setKeyStoreType((String)member.getValue());
}
break;
case "maxRows":
if (member.getValue() instanceof Number) {
obj.setMaxRows(((Number)member.getValue()).intValue());
}
break;
case "queryTimeout":
if (member.getValue() instanceof Number) {
obj.setQueryTimeout(((Number)member.getValue()).intValue());
}
break;
case "readOnly":
if (member.getValue() instanceof Boolean) {
obj.setReadOnly((Boolean)member.getValue());
}
break;
case "resultSetConcurrency":
if (member.getValue() instanceof String) {
obj.setResultSetConcurrency(io.vertx.oracle.ResultSetConcurrency.valueOf((String)member.getValue()));
}
break;
case "resultSetType":
if (member.getValue() instanceof String) {
obj.setResultSetType(io.vertx.oracle.ResultSetType.valueOf((String)member.getValue()));
}
break;
case "schema":
if (member.getValue() instanceof String) {
obj.setSchema((String)member.getValue());
}
break;
case "tnsAdmin":
if (member.getValue() instanceof String) {
obj.setTnsAdmin((String)member.getValue());
}
break;
case "transactionIsolation":
if (member.getValue() instanceof String) {
obj.setTransactionIsolation(io.vertx.oracle.TransactionIsolation.valueOf((String)member.getValue()));
}
break;
case "trustStore":
if (member.getValue() instanceof String) {
obj.setTrustStore((String)member.getValue());
}
break;
case "trustStorePassword":
if (member.getValue() instanceof String) {
obj.setTrustStorePassword((String)member.getValue());
}
break;
case "trustStoreType":
if (member.getValue() instanceof String) {
obj.setTrustStoreType((String)member.getValue());
}
break;
case "walletLocation":
if (member.getValue() instanceof String) {
obj.setWalletLocation((String)member.getValue());
}
break;
case "walletPassword":
if (member.getValue() instanceof String) {
obj.setWalletPassword((String)member.getValue());
}
break;
}
}
}

public static void toJson(OracleConnectOptions obj, JsonObject json) {
toJson(obj, json.getMap());
}

public static void toJson(OracleConnectOptions obj, java.util.Map<String, Object> json) {
if (obj.getAuthenticationServices() != null) {
json.put("authenticationServices", obj.getAuthenticationServices());
}
json.put("autoGeneratedKeys", obj.isAutoGeneratedKeys());
if (obj.getAutoGeneratedKeysIndexes() != null) {
json.put("autoGeneratedKeysIndexes", obj.getAutoGeneratedKeysIndexes());
}
if (obj.getCatalog() != null) {
json.put("catalog", obj.getCatalog());
}
if (obj.getFetchDirection() != null) {
json.put("fetchDirection", obj.getFetchDirection().name());
}
json.put("fetchSize", obj.getFetchSize());
if (obj.getKeyStore() != null) {
json.put("keyStore", obj.getKeyStore());
}
if (obj.getKeyStorePassword() != null) {
json.put("keyStorePassword", obj.getKeyStorePassword());
}
if (obj.getKeyStoreType() != null) {
json.put("keyStoreType", obj.getKeyStoreType());
}
json.put("maxRows", obj.getMaxRows());
json.put("queryTimeout", obj.getQueryTimeout());
json.put("readOnly", obj.isReadOnly());
if (obj.getResultSetConcurrency() != null) {
json.put("resultSetConcurrency", obj.getResultSetConcurrency().name());
}
if (obj.getResultSetType() != null) {
json.put("resultSetType", obj.getResultSetType().name());
}
if (obj.getSchema() != null) {
json.put("schema", obj.getSchema());
}
if (obj.getTnsAdmin() != null) {
json.put("tnsAdmin", obj.getTnsAdmin());
}
if (obj.getTransactionIsolation() != null) {
json.put("transactionIsolation", obj.getTransactionIsolation().name());
}
if (obj.getTrustStore() != null) {
json.put("trustStore", obj.getTrustStore());
}
if (obj.getTrustStorePassword() != null) {
json.put("trustStorePassword", obj.getTrustStorePassword());
}
if (obj.getTrustStoreType() != null) {
json.put("trustStoreType", obj.getTrustStoreType());
}
if (obj.getWalletLocation() != null) {
json.put("walletLocation", obj.getWalletLocation());
}
if (obj.getWalletPassword() != null) {
json.put("walletPassword", obj.getWalletPassword());
}
}
}
Loading

0 comments on commit ffedbce

Please sign in to comment.