diff --git a/graalvm-nativeimage/helidon/pom.xml b/graalvm-nativeimage/helidon/pom.xml index 695c5f0..ab457dc 100644 --- a/graalvm-nativeimage/helidon/pom.xml +++ b/graalvm-nativeimage/helidon/pom.xml @@ -43,6 +43,20 @@ helidon-integrations-cdi-datasource-ucp runtime + + + + + + + + + + + + + + io.smallrye jandex diff --git a/graalvm-nativeimage/helidon/src/main/resources/META-INF/microprofile-config.properties b/graalvm-nativeimage/helidon/src/main/resources/META-INF/microprofile-config.properties index 99e5e21..4727ad2 100644 --- a/graalvm-nativeimage/helidon/src/main/resources/META-INF/microprofile-config.properties +++ b/graalvm-nativeimage/helidon/src/main/resources/META-INF/microprofile-config.properties @@ -7,3 +7,4 @@ javax.sql.DataSource.example.connectionFactoryClassName=oracle.jdbc.pool.OracleD javax.sql.DataSource.example.URL=jdbc:oracle:thin:@_high?TNS_ADMIN=/home//myatpwallet javax.sql.DataSource.example.user=ADMIN javax.sql.DataSource.example.password= + diff --git a/graalvm-nativeimage/helidon/src/main/resources/META-INF/native-image/com.oracle.helidon.datasource/com-oracle-helidon-datasource/native-image.properties b/graalvm-nativeimage/helidon/src/main/resources/META-INF/native-image/com.oracle.helidon.datasource/com-oracle-helidon-datasource/native-image.properties index 911d0c9..54e2ed8 100644 --- a/graalvm-nativeimage/helidon/src/main/resources/META-INF/native-image/com.oracle.helidon.datasource/com-oracle-helidon-datasource/native-image.properties +++ b/graalvm-nativeimage/helidon/src/main/resources/META-INF/native-image/com.oracle.helidon.datasource/com-oracle-helidon-datasource/native-image.properties @@ -1,4 +1,3 @@ Args=-H:+RemoveSaturatedTypeFlows --initialize-at-build-time=com.oracle.helidon.datasource \ - --initialize-at-run-time=io.helidon.integrations.datasource.ucp.cdi.UniversalConnectionPool$_$$_WeldClientProxy \ --initialize-at-run-time=oracle.jdbc.driver.NTFListener \ --initialize-at-run-time=oracle.ucp.common.Service \ No newline at end of file diff --git a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/DataPopulator.java b/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/DataPopulator.java deleted file mode 100644 index e7cc045..0000000 --- a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/DataPopulator.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.oracle.dev.jdbc.micronaut; - -import io.micronaut.context.annotation.Property; -import io.micronaut.context.annotation.Requires; -import io.micronaut.context.event.StartupEvent; -import io.micronaut.runtime.event.annotation.EventListener; -import jakarta.inject.Inject; -import jakarta.inject.Singleton; - -import jakarta.transaction.Transactional; - -import java.sql.*; -import java.util.Arrays; - -import javax.sql.DataSource; - -import org.flywaydb.core.Flyway; - -import com.oracle.dev.jdbc.micronaut.domain.Thing; -import com.oracle.dev.jdbc.micronaut.repository.ThingRepository; - -@Singleton -@Requires(notEnv = "test") -@Requires(property = "flyway.datasources.default.enabled", value = "true") -public class DataPopulator { - - private final ThingRepository thingRepository; - private final String QUERY = "SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'ADMIN' AND TABLE_NAME = 'THING'"; - private DataSource dataSource; - private boolean baselineOnMigrate; - private String baselineVersion; - - @Inject - public DataPopulator(ThingRepository thingRepository, DataSource dataSource, - @Property(name = "flyway.datasources.default.baseline-on-migrate") boolean baselineOnMigrate, - @Property(name = "flyway.datasources.default.baseline-version") String baselineVersion) - throws SQLException { - this.thingRepository = thingRepository; - this.dataSource = dataSource; - this.baselineOnMigrate = baselineOnMigrate; - this.baselineVersion = baselineVersion; - } - - @EventListener - @Transactional - void init(StartupEvent event) throws SQLException { - - // flyway migration - migrateDatabase(); - - // clear out any existing data - // thingRepository.deleteAll(); - - // add sample data - // populateTable(); - - } - - public void migrateDatabase() throws SQLException { - - // Configure Flyway - Flyway flyway = Flyway.configure().dataSource(dataSource) - .baselineOnMigrate(baselineOnMigrate).baselineVersion(baselineVersion) - .load(); - - // Check if the table exists - boolean tableExists = checkTableExists(dataSource.getConnection()); - // Migrate if the table does not exist - if (!tableExists) { - flyway.migrate(); - } - } - - private boolean checkTableExists(Connection connection) { - try { - System.out.println("Connection is : " + connection); - PreparedStatement stmt = connection.prepareStatement("SELECT 'Hello World!' FROM dual"); - ResultSet resultSet = stmt.executeQuery(); - while (resultSet.next()) { - System.out.println(resultSet.getString(1)); - } return true; - } catch (SQLException e) { - throw new RuntimeException("TABLE DOES NOT EXIST", e); - } -// try (Statement statement = connection.createStatement(); -// ResultSet resultSet = statement.executeQuery(QUERY)) { -// return resultSet.next(); -// } catch (SQLException e) { -// throw new RuntimeException("TABLE DOES NOT EXIST", e); -// } - } - - public void populateTable() { - Thing juarez = new Thing("Juarez"); - Thing kuassi = new Thing("Kuassi"); - Thing paul = new Thing("Paul"); - thingRepository.saveAll(Arrays.asList(juarez, kuassi, paul)); - } - -} diff --git a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/controller/TestController.java b/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/controller/TestController.java new file mode 100644 index 0000000..82036ca --- /dev/null +++ b/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/controller/TestController.java @@ -0,0 +1,18 @@ +package com.oracle.dev.jdbc.micronaut.controller; + +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import io.micronaut.scheduling.TaskExecutors; +import io.micronaut.scheduling.annotation.ExecuteOn; + +import jakarta.validation.constraints.NotBlank; +import java.util.List; +import java.util.Optional; + + +@Controller("/test") +@ExecuteOn(TaskExecutors.IO) +class TestController { + + +} \ No newline at end of file diff --git a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/controller/ThingController.java b/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/controller/ThingController.java deleted file mode 100644 index 345fbfa..0000000 --- a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/controller/ThingController.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.oracle.dev.jdbc.micronaut.controller; - -import io.micronaut.http.annotation.Controller; -import io.micronaut.http.annotation.Get; -import io.micronaut.scheduling.TaskExecutors; -import io.micronaut.scheduling.annotation.ExecuteOn; - -import jakarta.validation.constraints.NotBlank; -import java.util.List; -import java.util.Optional; - -import com.oracle.dev.jdbc.micronaut.domain.Thing; -import com.oracle.dev.jdbc.micronaut.repository.ThingRepository; - -@Controller("/things") -@ExecuteOn(TaskExecutors.IO) -class ThingController { - - private final ThingRepository thingRepository; - - ThingController(ThingRepository thingRepository) { - this.thingRepository = thingRepository; - } - - @Get - List all() { - return thingRepository.findAll(); - } - - @Get("/{name}") - Optional byName(@NotBlank String name) { - return thingRepository.findByName(name); - } -} \ No newline at end of file diff --git a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/domain/Thing.java b/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/domain/Thing.java deleted file mode 100644 index efa10e9..0000000 --- a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/domain/Thing.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.oracle.dev.jdbc.micronaut.domain; - -import io.micronaut.core.annotation.Creator; -import io.micronaut.data.annotation.GeneratedValue; -import io.micronaut.data.annotation.Id; -import io.micronaut.data.annotation.MappedEntity; -import io.micronaut.serde.annotation.Serdeable; - -@MappedEntity -@Serdeable -public class Thing { - - @Id - @GeneratedValue - private Long id; - - private final String name; - - @Creator - public Thing(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } -} \ No newline at end of file diff --git a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/repository/ThingRepository.java b/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/repository/ThingRepository.java deleted file mode 100644 index ac77feb..0000000 --- a/graalvm-nativeimage/micronaut/src/main/java/com/oracle/dev/jdbc/micronaut/repository/ThingRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.oracle.dev.jdbc.micronaut.repository; - -import io.micronaut.core.annotation.NonNull; -import io.micronaut.data.jdbc.annotation.JdbcRepository; -import io.micronaut.data.model.query.builder.sql.Dialect; -import io.micronaut.data.repository.CrudRepository; - -import java.util.List; -import java.util.Optional; - -import com.oracle.dev.jdbc.micronaut.domain.Thing; - -@JdbcRepository(dialect = Dialect.ORACLE) -public interface ThingRepository extends CrudRepository { - - @Override - @NonNull - List findAll(); - - Optional findByName(String name); -} diff --git a/graalvm-nativeimage/micronaut/src/main/resources/application.properties b/graalvm-nativeimage/micronaut/src/main/resources/application.properties index df50882..0e05646 100644 --- a/graalvm-nativeimage/micronaut/src/main/resources/application.properties +++ b/graalvm-nativeimage/micronaut/src/main/resources/application.properties @@ -1,11 +1,6 @@ micronaut.application.name=micronautguide -flyway.datasources.default.enabled=true -flyway.datasources.default.baseline-on-migrate=true -flyway.datasources.default.baseline-version=1.0.0 - datasources.default.dialect=ORACLE -datasources.default.url=jdbc:oracle:thin:@_tp?TNS_ADMIN=/home//myatpwallet +datasources.default.url=jdbc:oracle:thin:@_high?TNS_ADMIN=/home//myatpwallet datasources.default.username=ADMIN -datasources.default.password= - +datasources.default.password= \ No newline at end of file diff --git a/graalvm-nativeimage/micronaut/src/terraform/adb-standard/adb.tf b/graalvm-nativeimage/micronaut/src/terraform/adb-standard/adb.tf deleted file mode 100644 index 4df25b3..0000000 --- a/graalvm-nativeimage/micronaut/src/terraform/adb-standard/adb.tf +++ /dev/null @@ -1,19 +0,0 @@ -resource "oci_database_autonomous_database" "autonomous_database" { - compartment_id = var.compartment_ocid - db_name = upper(replace(var.name, "-", "")) - display_name = format("%s%s", "adb-", var.name) - db_workload = "OLTP" - is_dedicated = false - is_free_tier = false - # db_version = "19c" - cpu_core_count = 1 - data_storage_size_in_tbs = 1 - admin_password = var.adb_admin_password - # are_primary_whitelisted_ips_used = true - is_mtls_connection_required = true - # whitelisted_ips = ["192.168.0.234"] - customer_contacts { - email = var.adb_customer_contacts_email - } - -} diff --git a/graalvm-nativeimage/micronaut/src/terraform/adb-standard/config.tf b/graalvm-nativeimage/micronaut/src/terraform/adb-standard/config.tf deleted file mode 100644 index e52742e..0000000 --- a/graalvm-nativeimage/micronaut/src/terraform/adb-standard/config.tf +++ /dev/null @@ -1,7 +0,0 @@ -terraform { - required_providers { - oci = { - source = "oracle/oci" - } - } -} \ No newline at end of file diff --git a/graalvm-nativeimage/micronaut/src/terraform/adb-standard/outputs.tf b/graalvm-nativeimage/micronaut/src/terraform/adb-standard/outputs.tf deleted file mode 100644 index f3344af..0000000 --- a/graalvm-nativeimage/micronaut/src/terraform/adb-standard/outputs.tf +++ /dev/null @@ -1,3 +0,0 @@ -output "adb_connection_strings" { - value = oci_database_autonomous_database.autonomous_database.connection_strings -} \ No newline at end of file diff --git a/graalvm-nativeimage/micronaut/src/terraform/adb-standard/variables.tf b/graalvm-nativeimage/micronaut/src/terraform/adb-standard/variables.tf deleted file mode 100644 index 4028cde..0000000 --- a/graalvm-nativeimage/micronaut/src/terraform/adb-standard/variables.tf +++ /dev/null @@ -1,25 +0,0 @@ -# general -variable "compartment_ocid" { - type = string - default = "" - description = "OCID for your compartment" -} - -# naming -variable "name" { - type = string - default = "MicronautDemo" - description = "MicronautDemo" -} - -# adb -variable "adb_admin_password" { - type = string - default = "" - description = "ADB pw" -} -variable "adb_customer_contacts_email" { - type = string - default = "" - description = "email address" -} diff --git a/graalvm-nativeimage/micronaut/src/test/java/example/micronaut/MicronautguideTest.java b/graalvm-nativeimage/micronaut/src/test/java/example/micronaut/MicronautguideTest.java deleted file mode 100644 index 945255f..0000000 --- a/graalvm-nativeimage/micronaut/src/test/java/example/micronaut/MicronautguideTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package example.micronaut; - -import io.micronaut.runtime.EmbeddedApplication; -import io.micronaut.test.extensions.junit5.annotation.MicronautTest; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Assertions; - -import jakarta.inject.Inject; - -@MicronautTest -class MicronautguideTest { - - @Inject - EmbeddedApplication application; - - @Test - void testItWorks() { - Assertions.assertTrue(application.isRunning()); - } - -} diff --git a/graalvm-nativeimage/micronaut/src/test/java/example/micronaut/repository/ThingRepositoryTest.java b/graalvm-nativeimage/micronaut/src/test/java/example/micronaut/repository/ThingRepositoryTest.java deleted file mode 100644 index 9dadd8d..0000000 --- a/graalvm-nativeimage/micronaut/src/test/java/example/micronaut/repository/ThingRepositoryTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package example.micronaut.repository; - -import io.micronaut.test.extensions.junit5.annotation.MicronautTest; -import org.junit.jupiter.api.Test; - -import com.oracle.dev.jdbc.micronaut.domain.Thing; -import com.oracle.dev.jdbc.micronaut.repository.ThingRepository; - -import jakarta.inject.Inject; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; - -@MicronautTest -class ThingRepositoryTest { - - @Inject - ThingRepository thingRepository; - - @Test - void testFindAll() { - - // clear out existing data; safe because each - // test runs in a transaction that's rolled back - thingRepository.deleteAll(); - assertEquals(0, thingRepository.count()); - - thingRepository.saveAll(Arrays.asList( - new Thing("t1"), - new Thing("t2"), - new Thing("t3"))); - - List things = thingRepository.findAll(); - assertEquals(3, things.size()); - assertEquals( - Arrays.asList("t1", "t2", "t3"), - things.stream() - .map(Thing::getName) - .sorted() - .collect(Collectors.toList())); - } - - @Test - void testFindByName() { - String name = UUID.randomUUID().toString(); - - Thing thing = thingRepository.findByName(name).orElse(null); - assertNull(thing); - - thingRepository.save(new Thing(name)); - thing = thingRepository.findByName(name).orElse(null); - assertNotNull(thing); - assertEquals(name, thing.getName()); - } -} \ No newline at end of file