Skip to content

Commit

Permalink
Merge pull request #1 from kaneeldias/main
Browse files Browse the repository at this point in the history
Initialize OracleDB driver library
  • Loading branch information
kaneeldias authored Dec 9, 2021
2 parents 3525f9d + 9ea4796 commit 061a347
Show file tree
Hide file tree
Showing 14 changed files with 363 additions and 2 deletions.
7 changes: 7 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.

# See: https://help.github.com/articles/about-codeowners/

# These owners will be the default owners for everything in the repo.
* @daneshk @niveathika @kaneeldias
24 changes: 24 additions & 0 deletions .github/ISSUE_TEMPLATE/type_bug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
name: "Bug Report"
about: "Report a bug if something is not working as expected"
labels: 'Type/Bug'

---

**Description:**
<!-- Give a brief description of the bug -->

**Steps to reproduce:**

**Affected Versions:**

**OS, DB, other environment details and versions:**

**Related Issues (optional):**
<!-- Any related issues such as sub tasks, issues reported in other repositories (e.g component repositories), similar problems, etc. -->

**Suggested Labels (optional):**
<!-- Optional comma separated list of suggested labels. Non committers can’t assign labels to issues, so this will help issue creators who are not a committer to suggest possible labels-->

**Suggested Assignees (optional):**
<!--Optional comma separated list of suggested team members who should attend the issue. Non committers can’t assign issues to assignees, so this will help issue creators who are not a committer to suggest possible assignees-->
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/type_improvement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: "Improvement Request"
about: "Create an improvement request for an existing feature"
labels: 'Type/Improvement'

---

**Description:**
<!-- Give a brief description of the improvement -->

**Describe your problem(s)**

**Describe your solution(s)**

**Related Issues (optional):**
<!-- Any related issues such as sub tasks, issues reported in other repositories (e.g component repositories), similar problems, etc. -->

**Suggested Labels (optional):**
<!-- Optional comma separated list of suggested labels. Non committers can’t assign labels to issues, so this will help issue creators who are not a committer to suggest possible labels-->

**Suggested Assignees (optional):**
<!--Optional comma separated list of suggested team members who should attend the issue. Non committers can’t assign issues to assignees, so this will help issue creators who are not a committer to suggest possible assignees-->
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/type_new_feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: "New Feature Request"
about: "Create a new feature request"
labels: 'Type/NewFeature'

---

**Description:**
<!-- Give a brief description of the new feature -->

**Describe your problem(s)**

**Describe your solution(s)**

**Related Issues (optional):**
<!-- Any related issues such as sub tasks, issues reported in other repositories (e.g component repositories), similar problems, etc. -->

**Suggested Labels (optional):**
<!-- Optional comma separated list of suggested labels. Non committers can’t assign labels to issues, so this will help issue creators who are not a committer to suggest possible labels-->

**Suggested Assignees (optional):**
<!--Optional comma separated list of suggested team members who should attend the issue. Non committers can’t assign issues to assignees, so this will help issue creators who are not a committer to suggest possible assignees-->
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/type_task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: "Task"
about: "Create a task which you want to keep track"
labels: 'Type/Task'

---

**Description:**
<!-- Give a brief description of the task -->

**Describe your task(s)**

**Related Issues (optional):**
<!-- Any related issues such as sub tasks, issues reported in other repositories (e.g component repositories), similar problems, etc. -->

**Suggested Labels (optional):**
<!-- Optional comma separated list of suggested labels. Non committers can’t assign labels to issues, so this will help issue creators who are not a committer to suggest possible labels-->

**Suggested Assignees (optional):**
<!--Optional comma separated list of suggested team members who should attend the issue. Non committers can’t assign issues to assignees, so this will help issue creators who are not a committer to suggest possible assignees-->
23 changes: 23 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: CI

on:
push:
branches:
- main
workflow_dispatch:
pull_request:
branches:
- main

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Ballerina Build
uses: ballerina-platform/ballerina-action/@slbeta5
with:
args:
build
25 changes: 25 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Deployment

on:
release:
types: [published]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Ballerina Build
uses: ballerina-platform/ballerina-action/@slbeta5
with:
args:
build
- name: Ballerina Push
uses: ballerina-platform/ballerina-action/@slbeta5
with:
args:
push
env:
BALLERINA_CENTRAL_ACCESS_TOKEN: ${{ secrets.BALLERINA_CENTRAL_ACCESS_TOKEN }}
19 changes: 19 additions & 0 deletions .github/workflows/stale-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: 'Close stale pull requests'

on:
schedule:
- cron: '30 19 * * *'
workflow_dispatch:

jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
stale-pr-message: 'This PR has been open for more than 15 days with no activity. This will be closed in 3 days unless the `stale` label is removed or commented.'
close-pr-message: 'Closed PR due to inactivity for more than 18 days.'
days-before-pr-stale: 15
days-before-pr-close: 3
days-before-issue-stale: -1
days-before-issue-close: -1
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,25 @@

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# Target folder of ballerina project
/target/*

# resources folder
/resources/*

# idea files
*.idea
*.iml

# .ballerina files
*.ballerina

# Ignore Gradle project-specific cache directory
.gradle

# Ignore Gradle build output directory
build

#
*.log
24 changes: 24 additions & 0 deletions Ballerina.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
[package]
org="ballerinax"
name="oracledb.driver"
version="1.0.0"
authors=["Ballerina"]
keywords=["OracleDB"]
repository="https://github.com/ballerina-platform/module-ballerinax-oracledb.driver"
license=["Apache-2.0"]
distribution = "slbeta5"

[[platform.java11.dependency]]
groupId = "com.oracle.database.jdbc"
artifactId = "ojdbc8"
version = "21.3.0.0"

[[platform.java11.dependency]]
groupId = "com.oracle.database.xml"
artifactId = "xdb"
version = "21.3.0.0"

[[platform.java11.dependency]]
groupId = "com.oracle.database.xml"
artifactId = "xmlparserv2"
version = "12.2.0.1"
29 changes: 29 additions & 0 deletions Package.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
## Package overview

This Package bundles the latest OracleDB drivers so that the OracleDB connector can be used in ballerina projects easily.

## Compatibility

| | Version |
|:---|:---:|
|Ballerina Language | **Swan Lake Beta 5** |
|OracleDB Driver | **21.3.0.0** |
|XDB | **21.3.0.0** |
|Xmlparserv2 | **21.3.0.0** |


> The above OracleDB drivers are released under the [Oracle Free Use Terms and Conditions](https://www.oracle.com/downloads/licenses/oracle-free-license.html).
## Usage

To add the OracleDB driver dependency the project, simply import the module as below,

```ballerina
import ballerina/sql;
import ballerinax/oracledb;
import ballerinax/oracledb.driver as _;
```

# Useful Links
* Chat live with us via our [Slack channel](https://ballerina.io/community/slack/).
* Post all technical questions on Stack Overflow with the [#ballerina](https://stackoverflow.com/questions/tagged/ballerina) tag.
47 changes: 45 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,45 @@
# module-ballerinax-oracledb.driver
OracleDB driver package for Ballerina
Ballerina OracleDB Driver Library
===================

The OracleDB Driver library is one of the external library packages of the
<a target="_blank" href="https://ballerina.io/">Ballerina</a> language.

This Package bundles the latest OracleDB drivers so that the OracleDB connector can be used in ballerina projects easily.

# Building from the Source
## Setting Up the Prerequisites

1. Download and install Java SE Development Kit (JDK) version 11 (from one of the following locations).

* [Oracle](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)

* [OpenJDK](https://adoptopenjdk.net/)

> **Note:** Set the JAVA_HOME environment variable to the path name of the directory into which you installed JDK.

2. Download and install [Ballerina SL Beta 5](https://ballerina.io/).

## Building the Source

Execute the commands below to build from the source after installing Ballerina Swan Lake Beta 5 version.

1. To build the library:
```shell script
bal build
```

2. To build the module without the tests:
```shell script
bal build --skip-tests
```
# Contributing to Ballerina
As an open source project, Ballerina welcomes contributions from the community.

For more information, go to the [contribution guidelines](https://github.com/ballerina-platform/ballerina-lang/blob/main/CONTRIBUTING.md).

# Code of Conduct
All contributors are encouraged to read the [Ballerina Code of Conduct](https://ballerina.io/code-of-conduct).

# Useful Links
* Chat live with us via our [Slack channel](https://ballerina.io/community/slack/).
* Post all technical questions on Stack Overflow with the [#ballerina](https://stackoverflow.com/questions/tagged/ballerina) tag.
16 changes: 16 additions & 0 deletions client.bal
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) 2021 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
//
// WSO2 Inc. licenses this file to you under the Apache License,
// Version 2.0 (the "License"); you may not use this file except
// in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

65 changes: 65 additions & 0 deletions tests/connection-init.bal
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.

// WSO2 Inc. licenses this file to you under the Apache License,
// Version 2.0 (the "License"); you may not use this file except
// in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0

// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

import ballerina/sql;
import ballerinax/java.jdbc;
import ballerina/test;

string url = "jdbc:oracle:thin:@localhost:1521/ORCLCDB.localdomain";
string user = "balUser";
string password = "balpass";

@test:Config {
groups: ["connection", "connection-init"]
}
function testWithURLParams() returns error? {
jdbc:Client dbClient = check new (url, user, password);
sql:Error? closeResult = dbClient.close();
test:assertExactEquals(closeResult, (), "Initialising connection with params fails.");
}

@test:Config {
groups: ["connection", "connection-init"]
}
function testWithConnectionPool() returns error? {
sql:ConnectionPool connectionPool = {
maxOpenConnections: 25,
maxConnectionLifeTime : 45,
minIdleConnections : 15
};
jdbc:Client dbClient = check new (url = url, user = user, password = password, connectionPool = connectionPool);
sql:Error? closeResult = dbClient.close();
test:assertExactEquals(closeResult, (), "Initialising connection with option max connection pool fails.");
test:assertEquals(connectionPool.maxOpenConnections, 25, "Configured max connection config is wrong.");
test:assertEquals(connectionPool.maxConnectionLifeTime, <decimal>45, "Configured max connection life time second is wrong.");
test:assertEquals(connectionPool.minIdleConnections, 15, "Configured min idle connection is wrong.");
}

@test:Config {
groups: ["connection", "connection-init"]
}
function testWithClosedClient1() returns error? {
jdbc:Client dbClient = check new (url = url, user = user, password = password);
sql:Error? closeResult = dbClient.close();
test:assertExactEquals(closeResult, (), "Initialising connection with connection params fails.");
sql:ExecutionResult|sql:Error result = dbClient->execute(`CREATE TABLE test (id int)`);
if (result is sql:Error) {
string expectedErrorMessage = "SQL Client is already closed, hence further operations are not allowed";
test:assertTrue(result.message().startsWith(expectedErrorMessage),
"Error message does not match, actual :\n'" + result.message() + "'\nExpected : \n" + expectedErrorMessage);
} else {
test:assertFail("Error expected");
}
}

0 comments on commit 061a347

Please sign in to comment.