diff --git a/pljava-ant/src/main/java/org/postgresql/pljava/tasks/JarLoaderTask.java b/pljava-ant/src/main/java/org/spring-boot/pljava/tasks/JarLoaderTask.java similarity index 100% rename from pljava-ant/src/main/java/org/postgresql/pljava/tasks/JarLoaderTask.java rename to pljava-ant/src/main/java/org/spring-boot/pljava/tasks/JarLoaderTask.java diff --git a/pljava-ant/src/main/java/org/postgresql/pljava/tasks/PLJavaTask.java b/pljava-ant/src/main/java/org/spring-boot/pljava/tasks/PLJavaTask.java similarity index 100% rename from pljava-ant/src/main/java/org/postgresql/pljava/tasks/PLJavaTask.java rename to pljava-ant/src/main/java/org/spring-boot/pljava/tasks/PLJavaTask.java diff --git a/pljava-ant/src/main/java/org/postgresql/pljava/tasks/package-info.java b/pljava-ant/src/main/java/org/spring-boot/pljava/tasks/package-info.java similarity index 85% rename from pljava-ant/src/main/java/org/postgresql/pljava/tasks/package-info.java rename to pljava-ant/src/main/java/org/spring-boot/pljava/tasks/package-info.java index 2cd0e837c..b7a327b96 100644 --- a/pljava-ant/src/main/java/org/postgresql/pljava/tasks/package-info.java +++ b/pljava-ant/src/main/java/org/spring-boot/pljava/tasks/package-info.java @@ -4,4 +4,3 @@ * as part of an Ant * build. */ -package org.postgresql.pljava.tasks; diff --git a/pljava-api/src/main/java/org/postgresql/pljava/Adjusting.java b/pljava-api/src/main/java/org/spring-boot/pljava/Adjusting.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/Adjusting.java rename to pljava-api/src/main/java/org/spring-boot/pljava/Adjusting.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/BasePrincipal.java b/pljava-api/src/main/java/org/spring-boot/pljava/BasePrincipal.java similarity index 98% rename from pljava-api/src/main/java/org/postgresql/pljava/BasePrincipal.java rename to pljava-api/src/main/java/org/spring-boot/pljava/BasePrincipal.java index ed20de776..8b383749b 100644 --- a/pljava-api/src/main/java/org/postgresql/pljava/BasePrincipal.java +++ b/pljava-api/src/main/java/org/spring-boot/pljava/BasePrincipal.java @@ -14,7 +14,6 @@ import java.io.InvalidObjectException; import java.io.IOException; import java.io.ObjectInputStream; -import java.io.ObjectStreamException; import java.io.Serializable; import static java.lang.reflect.Modifier.isFinal; diff --git a/pljava-api/src/main/java/org/postgresql/pljava/ObjectPool.java b/pljava-api/src/main/java/org/spring-boot/pljava/ObjectPool.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/ObjectPool.java rename to pljava-api/src/main/java/org/spring-boot/pljava/ObjectPool.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/PLPrincipal.java b/pljava-api/src/main/java/org/spring-boot/pljava/PLPrincipal.java similarity index 98% rename from pljava-api/src/main/java/org/postgresql/pljava/PLPrincipal.java rename to pljava-api/src/main/java/org/spring-boot/pljava/PLPrincipal.java index cd003cae8..d2ac94d5b 100644 --- a/pljava-api/src/main/java/org/postgresql/pljava/PLPrincipal.java +++ b/pljava-api/src/main/java/org/spring-boot/pljava/PLPrincipal.java @@ -14,8 +14,6 @@ import java.io.InvalidObjectException; import java.io.IOException; import java.io.ObjectInputStream; -import java.io.ObjectStreamException; -import java.io.Serializable; import org.postgresql.pljava.annotation.Function.Trust; import org.postgresql.pljava.sqlgen.Lexicals.Identifier.Simple; diff --git a/pljava-api/src/main/java/org/postgresql/pljava/PooledObject.java b/pljava-api/src/main/java/org/spring-boot/pljava/PooledObject.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/PooledObject.java rename to pljava-api/src/main/java/org/spring-boot/pljava/PooledObject.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/ResultSetHandle.java b/pljava-api/src/main/java/org/spring-boot/pljava/ResultSetHandle.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/ResultSetHandle.java rename to pljava-api/src/main/java/org/spring-boot/pljava/ResultSetHandle.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/ResultSetProvider.java b/pljava-api/src/main/java/org/spring-boot/pljava/ResultSetProvider.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/ResultSetProvider.java rename to pljava-api/src/main/java/org/spring-boot/pljava/ResultSetProvider.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/SavepointListener.java b/pljava-api/src/main/java/org/spring-boot/pljava/SavepointListener.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/SavepointListener.java rename to pljava-api/src/main/java/org/spring-boot/pljava/SavepointListener.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/Session.java b/pljava-api/src/main/java/org/spring-boot/pljava/Session.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/Session.java rename to pljava-api/src/main/java/org/spring-boot/pljava/Session.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/SessionManager.java b/pljava-api/src/main/java/org/spring-boot/pljava/SessionManager.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/SessionManager.java rename to pljava-api/src/main/java/org/spring-boot/pljava/SessionManager.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/TransactionListener.java b/pljava-api/src/main/java/org/spring-boot/pljava/TransactionListener.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/TransactionListener.java rename to pljava-api/src/main/java/org/spring-boot/pljava/TransactionListener.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/TriggerData.java b/pljava-api/src/main/java/org/spring-boot/pljava/TriggerData.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/TriggerData.java rename to pljava-api/src/main/java/org/spring-boot/pljava/TriggerData.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/TriggerException.java b/pljava-api/src/main/java/org/spring-boot/pljava/TriggerException.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/TriggerException.java rename to pljava-api/src/main/java/org/spring-boot/pljava/TriggerException.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/Aggregate.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/Aggregate.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/Aggregate.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/Aggregate.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/BaseUDT.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/BaseUDT.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/BaseUDT.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/BaseUDT.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/Cast.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/Cast.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/Cast.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/Cast.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/Function.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/Function.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/Function.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/Function.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/MappedUDT.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/MappedUDT.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/MappedUDT.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/MappedUDT.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/Operator.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/Operator.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/Operator.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/Operator.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/SQLAction.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/SQLAction.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/SQLAction.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/SQLAction.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/SQLActions.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/SQLActions.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/SQLActions.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/SQLActions.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/SQLType.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/SQLType.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/SQLType.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/SQLType.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/Trigger.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/Trigger.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/Trigger.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/Trigger.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/package-info.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/package-info.java similarity index 99% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/package-info.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/package-info.java index 932113bdd..f28a5704b 100644 --- a/pljava-api/src/main/java/org/postgresql/pljava/annotation/package-info.java +++ b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/package-info.java @@ -176,4 +176,3 @@ * match up {@code implementor} and {@code provides} strings only when * they are identical in spelling and case. */ -package org.postgresql.pljava.annotation; diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/Commentable.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/Commentable.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/Commentable.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/Commentable.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DBType.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DBType.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DBType.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DBType.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DDRProcessor.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DDRProcessor.java similarity index 98% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DDRProcessor.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DDRProcessor.java index a289bec49..2b0d77d54 100644 --- a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DDRProcessor.java +++ b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DDRProcessor.java @@ -13,8 +13,6 @@ */ package org.postgresql.pljava.annotation.processing; -import java.lang.annotation.Annotation; - import java.util.Set; import javax.annotation.processing.AbstractProcessor; diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DDRProcessorImpl.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DDRProcessorImpl.java similarity index 99% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DDRProcessorImpl.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DDRProcessorImpl.java index d5b6aa4b6..e928ccf6d 100644 --- a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DDRProcessorImpl.java +++ b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DDRProcessorImpl.java @@ -42,7 +42,6 @@ import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import static java.util.Collections.unmodifiableSet; import java.util.Comparator; diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DDRWriter.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DDRWriter.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DDRWriter.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DDRWriter.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DependTag.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DependTag.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/DependTag.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/DependTag.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/ImpProvider.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/ImpProvider.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/ImpProvider.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/ImpProvider.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/ParameterInfo.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/ParameterInfo.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/ParameterInfo.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/ParameterInfo.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/Snippet.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/Snippet.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/Snippet.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/Snippet.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/SnippetTiebreaker.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/SnippetTiebreaker.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/SnippetTiebreaker.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/SnippetTiebreaker.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/TriggerNamer.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/TriggerNamer.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/TriggerNamer.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/TriggerNamer.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/TypeTiebreaker.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/TypeTiebreaker.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/TypeTiebreaker.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/TypeTiebreaker.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/Vertex.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/Vertex.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/Vertex.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/Vertex.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/VertexPair.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/VertexPair.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/VertexPair.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/VertexPair.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/package-info.java b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/package-info.java similarity index 96% rename from pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/package-info.java rename to pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/package-info.java index 3fce0b0da..7105d5af1 100644 --- a/pljava-api/src/main/java/org/postgresql/pljava/annotation/processing/package-info.java +++ b/pljava-api/src/main/java/org/spring-boot/pljava/annotation/processing/package-info.java @@ -30,4 +30,3 @@ *

If Oracle fixes the underlying bug, the limitation can be removed. * Oracle's bug site suggests that won't happen until Java 9, if then. */ -package org.postgresql.pljava.annotation.processing; diff --git a/pljava-api/src/main/java/org/postgresql/pljava/package-info.java b/pljava-api/src/main/java/org/spring-boot/pljava/package-info.java similarity index 96% rename from pljava-api/src/main/java/org/postgresql/pljava/package-info.java rename to pljava-api/src/main/java/org/spring-boot/pljava/package-info.java index 5cfac9558..5f59c2dd5 100644 --- a/pljava-api/src/main/java/org/postgresql/pljava/package-info.java +++ b/pljava-api/src/main/java/org/spring-boot/pljava/package-info.java @@ -21,4 +21,3 @@ * the magic URL jdbc:default:connection. * @author Thomas Hallgren */ -package org.postgresql.pljava; diff --git a/pljava-api/src/main/java/org/postgresql/pljava/sqlgen/Lexicals.java b/pljava-api/src/main/java/org/spring-boot/pljava/sqlgen/Lexicals.java similarity index 100% rename from pljava-api/src/main/java/org/postgresql/pljava/sqlgen/Lexicals.java rename to pljava-api/src/main/java/org/spring-boot/pljava/sqlgen/Lexicals.java diff --git a/pljava-api/src/main/java/org/postgresql/pljava/sqlgen/package-info.java b/pljava-api/src/main/java/org/spring-boot/pljava/sqlgen/package-info.java similarity index 93% rename from pljava-api/src/main/java/org/postgresql/pljava/sqlgen/package-info.java rename to pljava-api/src/main/java/org/spring-boot/pljava/sqlgen/package-info.java index db36fc4c0..e5e1301c6 100644 --- a/pljava-api/src/main/java/org/postgresql/pljava/sqlgen/package-info.java +++ b/pljava-api/src/main/java/org/spring-boot/pljava/sqlgen/package-info.java @@ -15,4 +15,3 @@ * mostly for use by PL/Java's SQL deployment-descriptor-generating code, but * exported here for other possible uses. */ -package org.postgresql.pljava.sqlgen; diff --git a/pljava-examples-spring-boot/.gitignore b/pljava-examples-spring-boot/.gitignore new file mode 100644 index 000000000..667aaef0c --- /dev/null +++ b/pljava-examples-spring-boot/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/pljava-examples-spring-boot/README.md b/pljava-examples-spring-boot/README.md new file mode 100644 index 000000000..2d345cc7f --- /dev/null +++ b/pljava-examples-spring-boot/README.md @@ -0,0 +1,157 @@ +# Example using Spring Boot + Test Containers + +Thees module contains a minimal Spring Boot environment that +uses Test Containers for a temporary PostgreSQL database. + +At the moment it provides a `DataSource` bean but does not yet +include explicit support for `JdbcTemplate`, `JPATemplate`, +or `jOOQ`. All should be easy to add. + +This module can be used to test PL/Java stored procedures +if the docker image is preconfigured to support PL/Java, +is installed automatically as part of the pljava DDR, or +it is explicitly installed via the FlywayDB initialization. + +## Usage + +There are three child modules. + +### Test-Framework + +This module contains a test framework that integrates Spring Boot, +TestContainers, and JUnit 5. It should not need to be modified. + +### Backend + +This module contains the software that will be pushed to the +database server. It should expand on the current 'examples' +module. + +This module is also responsible for generating the test +docker image. At the moment this is still a manual process +but it could be automated using either TestContainers or Jib. + +(See `src/main/docker`) + +This module should include its own unit tests. + +### Application + +This module contains a minimal Spring Boot application +that tests the backend functionality. + +## Limitations / Enhancements + +The proper integration of Spring, Test Containers, and JUnit 5 +is a very complex issue since each of them has ideas on how +it should be done. + +The current software works but there's ongoing research so +the final version may be different. + +## Requirements + +This module requires docker. It can be a local service or +a cloud service. + +At the moment there is a single test. + +## Future Work + +- Document how to run this using IDE-provided resources. + +## Self-documentation + +### TestContainer self-documentation + +The `AugmentedPostgreSQLContainer` includes a bit of code to +self-document the container and database once the database is +running. Typical output is + +```shell ++================================================================================================+ +| Database Server : Name : PostgreSQL | +| : Version : 17.3 (Debian 17.3-3.pgdg120+1) | +| : URL : jdbc:postgresql://localhost:33039/test | +| : schemas : information_schema | +| : : javatest | +| : : pg_catalog | +| : : public | +| : : sqlj | ++--------------------+--------------------+------------------------------------------------------+ +| Driver : Name : PostgreSQL JDBC Driver | +| : Version : 42.7.7 | +| : JDBC Version : 4.2 | ++--------------------+--------------------+------------------------------------------------------+ +| Client : User : test | +| : Connection : com.zaxxer.hikari.pool.HikariProxyConnection | ++--------------------+--------------------+------------------------------------------------------+ +| Client Host : User : bgiles | +| : Hostname : eris.coyotesong.net | +| : OS Name : Ubuntu 24.04.2 LTS | +| : OS Kernel : 6.8.0-59-generic | ++--------------------+--------------------+------------------------------------------------------+ +| Server Extensions : plpgsql : 1.0 | +| : pljava : 1.6.9 | ++--------------------+--------------------+------------------------------------------------------+ +| Container Details : Image Name : tada/pljava-examples:17.3-1.6.9-bookworm | +| : Container Name : /elegant_montalcini | +| : FDQN : dcb097b453fb | +| : Container Id : dcb097b453fb792cc0775b463d5a8efbdc877f7c47e2cc9a7231 | +| : Container Image Id : sha256:6154eecafc0a68bcef75e0406e0f0022695fa98c10246 | +| : Created On : 2025-06-18T03:23:23.239721175Z | ++--------------------+--------------------+------------------------------------------------------+ +| Container Labels : maintainer : maintainer: Bear Giles | +| : o.o.i.authors : org.opencontainers.image.authors: bgiles@coyotesong. | +| : o.o.i.description : org.opencontainers.image.description: PostgreSQL wit | +| : o.o.i.source : org.opencontainers.image.source: https://github.com/ | +| : o.testcontainers : org.testcontainers: true | +| : o.t.lang : org.testcontainers.lang: java | +| : o.t.sessionId : org.testcontainers.sessionId: e77b9355-4722-4c92-b4c | +| : o.t.version : org.testcontainers.version: 1.21.0 | ++================================================================================================+ + +``` + +### LOGGER self-documentation + +The TestContainer will add the container's docker image name and container ID to the MDC information +once it's available. This information is then added to all log messages. This information is +removed then the container is shut down. This should make it much easier to associate log +messages with specific docker images/containers. + +Typical output follows. In this case the unit test is printing 10 random values provided +from a java static method. + +``` +"2025-06-17 21:31:07.919 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:50] - Starting HappyPathTest using Java 21.0.7 with PID 529463 (started by bgiles in /home/bgiles/local-src/pljava/pljava-examples-spring-boot/application) +"2025-06-17 21:31:07.920 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:660] - The following 1 profile is active: "test" +"2025-06-17 21:31:09.130 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.f.core.FlywayExecutor:41] - Database: jdbc:postgresql://localhost:33043/test?loggerLevel=OFF (PostgreSQL 17.3) +"2025-06-17 21:31:09.175 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.f.c.i.s.JdbcTableSchemaHistory:41] - Schema history table "public"."flyway_schema_history" does not exist yet +"2025-06-17 21:31:09.179 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.f.c.i.c.DbValidate:41] - Successfully validated 0 migrations (execution time 00:00.015s) +"2025-06-17 21:31:09.181 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] WARN [o.f.c.i.c.DbValidate:45] - No migrations found. Are your locations set up correctly? +"2025-06-17 21:31:09.200 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.f.c.i.s.JdbcTableSchemaHistory:41] - Creating Schema History table "public"."flyway_schema_history" ... +"2025-06-17 21:31:09.255 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.f.c.i.c.DbMigrate:41] - Current version of schema "public": << Empty Schema >> +"2025-06-17 21:31:09.259 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.f.c.i.c.DbMigrate:41] - Schema "public" is up to date. No migration necessary. +"2025-06-17 21:31:09.334 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:56] - Started HappyPathTest in 1.62 seconds (process running for 10.518) +"OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended +WARNING: A Java agent has been loaded dynamically (/home/bgiles/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.19/byte-buddy-agent-1.14.19.jar) +WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning +WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information +WARNING: Dynamic loading of agents will be disallowed by default in a future release +2025-06-17 21:31:09.828 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [c.z.h.HikariDataSource:109] - HikariPool-2 - Starting... +"2025-06-17 21:31:09.840 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [c.z.h.pool.HikariPool:576] - HikariPool-2 - Added connection org.postgresql.jdbc.PgConnection@dd07be8 +"2025-06-17 21:31:09.841 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [c.z.h.HikariDataSource:122] - HikariPool-2 - Start completed. +"2025-06-17 21:31:10.143 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - 1074891001 +"2025-06-17 21:31:10.143 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - 948213469 +"2025-06-17 21:31:10.143 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - -1315899916 +"2025-06-17 21:31:10.143 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - -89988107 +"2025-06-17 21:31:10.143 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - 681378587 +"2025-06-17 21:31:10.144 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - 235210701 +"2025-06-17 21:31:10.144 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - -55815521 +"2025-06-17 21:31:10.144 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - 1585924748 +"2025-06-17 21:31:10.144 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - 2122027760 +"2025-06-17 21:31:10.144 [tada/pljava-examples:17.3-1.6.9-bookworm - dcc56f2c769f] INFO [o.p.p.e.s.HappyPathTest:60] - 1785671858 +``` + +(Note: the 'stdout' display is much more colorful!) diff --git a/pljava-examples-spring-boot/application/pom.xml b/pljava-examples-spring-boot/application/pom.xml new file mode 100644 index 000000000..ea5c0a8e4 --- /dev/null +++ b/pljava-examples-spring-boot/application/pom.xml @@ -0,0 +1,179 @@ + + + 4.0.0 + + org.postgresql + pljava-examples-spring-boot + 2-SNAPSHOT + ../pom.xml + + application + PL/Java examples using spring boot - minimal application + + + This module implements a minimal Spring Boot application. + + Important: this module should be unaware of the use of PL/Java with + only two exceptions: + + - creating a custom TestContainer that provides the required classpath resources + - creating a FlywayDB script that initializes the PL/Java back end. + + + + + + + 3.3.12 + + 42.7.7 + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring-boot.version} + pom + import + + + + ${project.groupId} + test-framework + ${project.version} + + + + ${project.groupId} + test-framework + tests + test-jar + ${project.version} + + + + + + + org.apache.commons + commons-lang3 + + + + + + ${project.groupId} + test-framework + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + org.springframework + spring-beans + + + + org.springframework + spring-core + + + + org.springframework + spring-context + + + + org.springframework + spring-jdbc + + + + + ${project.groupId} + test-framework + tests + test-jar + test + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-testcontainers + test + + + + org.springframework + spring-test + + + + org.testcontainers + postgresql + test + + + + org.testcontainers + junit-jupiter + test + + + + org.postgresql + postgresql + test + + + + org.junit.jupiter + junit-jupiter + test + + + + + org.flywaydb + flyway-database-postgresql + test + + + + + + + \ No newline at end of file diff --git a/pljava-examples-spring-boot/application/src/main/java/org/postgresql/pljava/examples/springframework/Main.java b/pljava-examples-spring-boot/application/src/main/java/org/postgresql/pljava/examples/springframework/Main.java new file mode 100644 index 000000000..fbd674272 --- /dev/null +++ b/pljava-examples-spring-boot/application/src/main/java/org/postgresql/pljava/examples/springframework/Main.java @@ -0,0 +1,7 @@ +package org.postgresql.pljava.examples.springframework; + +public class Main { + public static void main(String[] args) { + System.out.println("This is a minimal spring boot application"); + } +} \ No newline at end of file diff --git a/pljava-examples-spring-boot/application/src/test/java/org/postgresql/pljava/examples/springframework/HappyPathTest.java b/pljava-examples-spring-boot/application/src/test/java/org/postgresql/pljava/examples/springframework/HappyPathTest.java new file mode 100644 index 000000000..bb48c0f4b --- /dev/null +++ b/pljava-examples-spring-boot/application/src/test/java/org/postgresql/pljava/examples/springframework/HappyPathTest.java @@ -0,0 +1,65 @@ +package org.postgresql.pljava.examples.springframework; + +import org.junit.jupiter.api.Test; +import org.postgresql.pljava.examples.springframework.config.PersistenceTestConfiguration; +import org.postgresql.pljava.examples.springframework.containers.AugmentedPostgreSQLContainer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import javax.sql.DataSource; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +// +// see https://java.testcontainers.org/features/configuration/ for remote docker server options +// see https://javadoc.io/doc/org.testcontainers/testcontainers/latest/org/testcontainers/images/RemoteDockerImage.html + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, + classes = { + PersistenceTestConfiguration.class + } +) +@ContextConfiguration +// @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) +@ActiveProfiles("test") +@Testcontainers(disabledWithoutDocker = true) +// @TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class HappyPathTest { + private static final Logger LOG = LoggerFactory.getLogger(HappyPathTest.class); + protected static final String LOCAL_IMAGE_NAME = "tada/pljava-examples:17.3-1.6.9-bookworm"; + + @Container + @ServiceConnection + protected static PostgreSQLContainer postgres = new AugmentedPostgreSQLContainer<>(LOCAL_IMAGE_NAME); + + private final DataSource dataSource; + + @Autowired + public HappyPathTest(DataSource dataSource) { + this.dataSource = dataSource; + } + + @Test + public void happyPathTest() throws SQLException, IOException { + try (Connection conn = dataSource.getConnection(); + Statement stmt = conn.createStatement()) { + + try (ResultSet rs = stmt.executeQuery("SELECT javatest.randomInts(10)")) { + while (rs.next()) { + LOG.info(rs.getString(1)); + } + } + } + } +} diff --git a/pljava-examples-spring-boot/application/src/test/resources/application.yml b/pljava-examples-spring-boot/application/src/test/resources/application.yml new file mode 100644 index 000000000..4c7e989e6 --- /dev/null +++ b/pljava-examples-spring-boot/application/src/test/resources/application.yml @@ -0,0 +1,11 @@ +--- +spring: + application: + name: pljava-examples-testcontainers + main: + web-application-type: none + datasource: + # url: 'jdbc:postgresql://localhost:5432/' + # username: + # password: + # driverClassName: org.postgresql.Driver \ No newline at end of file diff --git a/pljava-examples-spring-boot/application/src/test/resources/logback-test.xml b/pljava-examples-spring-boot/application/src/test/resources/logback-test.xml new file mode 100644 index 000000000..bd0640954 --- /dev/null +++ b/pljava-examples-spring-boot/application/src/test/resources/logback-test.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %green([%X{imageName} - %X{containerId}]) %highlight(%-5level) %cyan([%c{24}:%L]) - %m%n" + + + + + + + ${LOG_FILE_INFO} + + ${LOG_FILE_INFO}.%d{yyyy-MM-dd}.log + 30 + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%c:%L] - %m%n" + + + + + + + + + + + + + + + + + diff --git a/pljava-examples-spring-boot/backend/pom.xml b/pljava-examples-spring-boot/backend/pom.xml new file mode 100644 index 000000000..05850a3b1 --- /dev/null +++ b/pljava-examples-spring-boot/backend/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + org.postgresql + pljava-examples-spring-boot + 2-SNAPSHOT + ../pom.xml + + backend + PL/Java examples using spring boot - backend + + + This module creates the jar that will be pushed to the PostgreSQL backend + via PL/Java. + + + + + + ${project.parent.groupId} + pljava-api + ${project.parent.version} + + + + + + + ${project.parent.groupId} + pljava-api + + + + \ No newline at end of file diff --git a/pljava-examples-spring-boot/backend/src/main/docker/1-install-pljava.sql b/pljava-examples-spring-boot/backend/src/main/docker/1-install-pljava.sql new file mode 100644 index 000000000..8f060087d --- /dev/null +++ b/pljava-examples-spring-boot/backend/src/main/docker/1-install-pljava.sql @@ -0,0 +1,11 @@ +ALTER +USER SESSION_USER SET pljava.module_path = '/usr/share/postgresql/17/pljava/pljava-1.6.9.jar:/usr/share/postgresql/17/pljava/pljava-api-1.6.9.jar'; + +-- ALTER USER SESSION_USER SET pljava.policy_urls = '%s'", policyFile)); + +ALTER +USER SESSION_USER SET pljava.vmoptions = '-Djava.security.manager=allow'; +ALTER +USER SESSION_USER SET check_function_bodies = off; +CREATE +EXTENSION pljava; -- WITH SCHEMA sqlj VERSION '1.6.9'; \ No newline at end of file diff --git a/pljava-examples-spring-boot/backend/src/main/docker/2-install-backend.sql b/pljava-examples-spring-boot/backend/src/main/docker/2-install-backend.sql new file mode 100644 index 000000000..7d10732d9 --- /dev/null +++ b/pljava-examples-spring-boot/backend/src/main/docker/2-install-backend.sql @@ -0,0 +1,198 @@ +SELECT sqlj.install_jar('file:/usr/share/postgresql/17/pljava/pljava-examples-1.6.9.jar', 'examples', true); + +-- CREATE SCHEMA IF NOT EXISTS javatest; +SELECT sqlj.set_classpath('javatest', 'examples'); + +-- from 'examples.ddr' - how can we automatically load this from ddr? +-- +-- CREATE FUNCTION javatest.java_getSystemProperty(varchar) +-- RETURNS varchar +-- AS 'java.lang.System.getProperty' +-- LANGUAGE java; +-- +-- /* This function should fail since file system access is +-- * prohibited when the language is trusted. +-- */ +-- CREATE FUNCTION javatest.create_temp_file_trusted() +-- RETURNS varchar +-- AS 'org.postgresql.pljava.example.Security.createTempFile' +-- LANGUAGE java; +-- +-- CREATE TABLE javatest.username_test +-- ( +-- name text, +-- username text not null +-- ); +-- +-- CREATE FUNCTION javatest.insert_username() +-- RETURNS trigger +-- AS 'org.postgresql.pljava.example.Triggers.insertUsername' +-- LANGUAGE java; +-- +-- CREATE FUNCTION javatest.after_username_insert() +-- RETURNS trigger +-- AS 'org.postgresql.pljava.example.Triggers.afterUsernameInsert' +-- LANGUAGE java; +-- +-- CREATE FUNCTION javatest.after_username_update() +-- RETURNS trigger +-- AS 'org.postgresql.pljava.example.Triggers.afterUsernameUpdate' +-- LANGUAGE java; +-- +-- CREATE FUNCTION javatest.leak_statements() +-- RETURNS trigger +-- AS 'org.postgresql.pljava.example.Triggers.leakStatements' +-- LANGUAGE java; +-- +-- CREATE TRIGGER insert_usernames +-- BEFORE INSERT OR UPDATE ON javatest.username_test +-- FOR EACH ROW +-- EXECUTE PROCEDURE javatest.insert_username (username); +-- +-- CREATE TRIGGER after_insert_usernames +-- AFTER INSERT ON javatest.username_test +-- FOR EACH ROW +-- EXECUTE PROCEDURE javatest.after_username_insert (username); +-- +-- CREATE TRIGGER after_username_updates +-- AFTER UPDATE ON javatest.username_test +-- FOR EACH ROW +-- EXECUTE PROCEDURE javatest.after_username_update (username); +-- +-- CREATE TRIGGER username_leak +-- BEFORE UPDATE ON javatest.username_test +-- FOR EACH ROW +-- EXECUTE PROCEDURE javatest.leak_statements(); +-- +-- CREATE TABLE javatest.mdt +-- ( +-- id int4, +-- idesc text, +-- moddate timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL +-- ); +-- +-- CREATE FUNCTION javatest.moddatetime() +-- RETURNS trigger +-- AS 'org.postgresql.pljava.example.Triggers.moddatetime' +-- LANGUAGE java; +-- +-- CREATE TRIGGER mdt_moddatetime +-- BEFORE UPDATE ON mdt +-- FOR EACH ROW +-- EXECUTE PROCEDURE moddatetime (moddate); +-- +-- CREATE TYPE javatest._testSetReturn +-- AS (base integer, incbase integer, ctime timestamptz); +-- +-- CREATE FUNCTION javatest.tupleReturnExample(int, int) +-- RETURNS javatest._testSetReturn +-- AS 'org.postgresql.pljava.example.TupleReturn.tupleReturn' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.tupleReturnExample2(int, int) +-- RETURNS javatest._testSetReturn +-- AS 'org.postgresql.pljava.example.TupleReturn.tupleReturn(java.lang.Integer, java.lang.Integer, java.sql.ResultSet)' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.tupleReturnToString(javatest._testSetReturn) +-- RETURNS VARCHAR +-- AS 'org.postgresql.pljava.example.TupleReturn.makeString' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.setReturnExample(int, int) +-- RETURNS SETOF javatest._testSetReturn +-- AS 'org.postgresql.pljava.example.TupleReturn.setReturn' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.hugeResult(int) +-- RETURNS SETOF javatest._testSetReturn +-- AS 'org.postgresql.pljava.example.HugeResultSet.executeSelect' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.hugeNonImmutableResult(int) +-- RETURNS SETOF javatest._testSetReturn +-- AS 'org.postgresql.pljava.example.HugeResultSet.executeSelect' +-- LANGUAGE java; +-- +-- CREATE TYPE javatest._properties +-- AS (name varchar(200), value varchar(200)); +-- +-- CREATE FUNCTION javatest.propertyExample() +-- RETURNS SETOF javatest._properties +-- AS 'org.postgresql.pljava.example.UsingProperties.getProperties' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.resultSetPropertyExample() +-- RETURNS SETOF javatest._properties +-- AS 'org.postgresql.pljava.example.UsingPropertiesAsResultSet.getProperties' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.scalarPropertyExample() +-- RETURNS SETOF varchar +-- AS 'org.postgresql.pljava.example.UsingPropertiesAsScalarSet.getProperties' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.randomInts(int) +-- RETURNS SETOF int +-- AS 'org.postgresql.pljava.example.RandomInts.createIterator' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE FUNCTION javatest.listSupers() +-- RETURNS SETOF pg_user +-- AS 'org.postgresql.pljava.example.Users.listSupers' +-- LANGUAGE java; +-- +-- CREATE FUNCTION javatest.listNonSupers() +-- RETURNS SETOF pg_user +-- AS 'org.postgresql.pljava.example.Users.listNonSupers' +-- LANGUAGE java; +-- +-- CREATE FUNCTION javatest.logMessage(varchar, varchar) +-- RETURNS void +-- AS 'org.postgresql.pljava.example.LoggerTest.logMessage' +-- LANGUAGE java; +-- +-- CREATE TYPE javatest.BinaryColumnPair +-- AS (col1 bytea, col2 bytea); +-- +-- CREATE FUNCTION javatest.binaryColumnTest() +-- RETURNS SETOF javatest.BinaryColumnPair +-- AS 'org.postgresql.pljava.example.BinaryColumnTest.getBinaryPairs' +-- IMMUTABLE LANGUAGE java; +-- +-- CREATE TYPE javatest.MetaDataBooleans +-- AS (method_name varchar(200), result boolean); +-- +-- CREATE FUNCTION javatest.getMetaDataBooleans() +-- RETURNS SETOF javatest.MetaDataBooleans +-- AS 'org.postgresql.pljava.example.MetaDataBooleans.getDatabaseMetaDataBooleans' +-- LANGUAGE java; +-- +-- CREATE TYPE javatest.MetaDataStrings +-- AS (method_name varchar(200), result varchar); +-- +-- CREATE FUNCTION javatest.getMetaDataStrings() +-- RETURNS SETOF javatest.MetaDataStrings +-- AS 'org.postgresql.pljava.example.MetaDataStrings.getDatabaseMetaDataStrings' +-- LANGUAGE java; +-- +-- CREATE TYPE javatest.MetaDataInts +-- AS (method_name varchar(200), result int); +-- +-- CREATE FUNCTION javatest.getMetaDataInts() +-- RETURNS SETOF javatest.MetaDataInts +-- AS 'org.postgresql.pljava.example.MetaDataInts.getDatabaseMetaDataInts' +-- LANGUAGE java; +-- +-- CREATE FUNCTION javatest.callMetaDataMethod(varchar) +-- RETURNS SETOF varchar +-- AS 'org.postgresql.pljava.example.MetaDataTest.callMetaDataMethod' +-- LANGUAGE java; +-- +-- CREATE FUNCTION javatest.executeSelect(varchar) +-- RETURNS SETOF VARCHAR +-- AS 'org.postgresql.pljava.example.ResultSetTest.executeSelect' +-- LANGUAGE java; +-- +-- +-- \ No newline at end of file diff --git a/pljava-examples-spring-boot/backend/src/main/docker/Dockerfile b/pljava-examples-spring-boot/backend/src/main/docker/Dockerfile new file mode 100644 index 000000000..723fa1bc4 --- /dev/null +++ b/pljava-examples-spring-boot/backend/src/main/docker/Dockerfile @@ -0,0 +1,15 @@ +FROM library/postgres:17.3-bookworm + +LABEL maintainer="Bear Giles " +LABEL org.opencontainers.image.authors="bgiles@coyotesong.com" +LABEL org.opencontainers.image.description="PostgreSQL with pl/java build environment preinstalled (Debian)" +LABEL org.opencontainers.image.source="https://github.com/tada/pljava" + +RUN apt-get update && apt-get install -y postgresql-17-pljava + +# we normally copy files to /usr/share/java - that's where '-java' packages go. +# but for now we're reusing exsting jar + +COPY 1-install-pljava.sql /docker-entrypoint-initdb.d/ +COPY 2-install-backend.sql /docker-entrypoint-initdb.d/ + diff --git a/pljava-examples-spring-boot/backend/src/main/docker/examples.ddr b/pljava-examples-spring-boot/backend/src/main/docker/examples.ddr new file mode 100644 index 000000000..cf3bc52f6 --- /dev/null +++ b/pljava-examples-spring-boot/backend/src/main/docker/examples.ddr @@ -0,0 +1,200 @@ +SQLActions[ ] = { + "BEGIN INSTALL + CREATE SCHEMA javatest; + BEGIN PostgreSQL SET search_path TO javatest,public ENd postgreSQL; + + CREATE FUNCTION javatest.java_getSystemProperty(varchar) + RETURNS varchar + AS 'java.lang.System.getProperty' + LANGUAGE java; + + /* This function should fail since file system access is + * prohibited when the language is trusted. + */ + CREATE FUNCTION javatest.create_temp_file_trusted() + RETURNS varchar + AS 'org.postgresql.pljava.example.Security.createTempFile' + LANGUAGE java; + + CREATE TABLE javatest.username_test + ( + name text, + username text not null + ); + + CREATE FUNCTION javatest.insert_username() + RETURNS trigger + AS 'org.postgresql.pljava.example.Triggers.insertUsername' + LANGUAGE java; + + CREATE FUNCTION javatest.after_username_insert() + RETURNS trigger + AS 'org.postgresql.pljava.example.Triggers.afterUsernameInsert' + LANGUAGE java; + + CREATE FUNCTION javatest.after_username_update() + RETURNS trigger + AS 'org.postgresql.pljava.example.Triggers.afterUsernameUpdate' + LANGUAGE java; + + CREATE FUNCTION javatest.leak_statements() + RETURNS trigger + AS 'org.postgresql.pljava.example.Triggers.leakStatements' + LANGUAGE java; + + CREATE TRIGGER insert_usernames + BEFORE INSERT OR UPDATE ON username_test + FOR EACH ROW + EXECUTE PROCEDURE insert_username (username); + + CREATE TRIGGER after_insert_usernames + AFTER INSERT ON username_test + FOR EACH ROW + EXECUTE PROCEDURE after_username_insert (username); + + CREATE TRIGGER after_username_updates + AFTER UPDATE ON username_test + FOR EACH ROW + EXECUTE PROCEDURE after_username_update (username); + + CREATE TRIGGER username_leak + BEFORE UPDATE ON username_test + FOR EACH ROW + EXECUTE PROCEDURE leak_statements(); + + CREATE TABLE javatest.mdt + ( + id int4, + idesc text, + moddate timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL + ); + + CREATE FUNCTION javatest.moddatetime() + RETURNS trigger + AS 'org.postgresql.pljava.example.Triggers.moddatetime' + LANGUAGE java; + + CREATE TRIGGER mdt_moddatetime + BEFORE UPDATE ON mdt + FOR EACH ROW + EXECUTE PROCEDURE moddatetime (moddate); + + CREATE TYPE javatest._testSetReturn + AS (base integer, incbase integer, ctime timestamptz); + + CREATE FUNCTION javatest.tupleReturnExample(int, int) + RETURNS _testSetReturn + AS 'org.postgresql.pljava.example.TupleReturn.tupleReturn' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.tupleReturnExample2(int, int) + RETURNS _testSetReturn + AS 'org.postgresql.pljava.example.TupleReturn.tupleReturn(java.lang.Integer, java.lang.Integer, java.sql.ResultSet)' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.tupleReturnToString(_testSetReturn) + RETURNS VARCHAR + AS 'org.postgresql.pljava.example.TupleReturn.makeString' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.setReturnExample(int, int) + RETURNS SETOF javatest._testSetReturn + AS 'org.postgresql.pljava.example.TupleReturn.setReturn' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.hugeResult(int) + RETURNS SETOF javatest._testSetReturn + AS 'org.postgresql.pljava.example.HugeResultSet.executeSelect' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.hugeNonImmutableResult(int) + RETURNS SETOF javatest._testSetReturn + AS 'org.postgresql.pljava.example.HugeResultSet.executeSelect' + LANGUAGE java; + + CREATE TYPE javatest._properties + AS (name varchar(200), value varchar(200)); + + CREATE FUNCTION javatest.propertyExample() + RETURNS SETOF javatest._properties + AS 'org.postgresql.pljava.example.UsingProperties.getProperties' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.resultSetPropertyExample() + RETURNS SETOF javatest._properties + AS 'org.postgresql.pljava.example.UsingPropertiesAsResultSet.getProperties' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.scalarPropertyExample() + RETURNS SETOF varchar + AS 'org.postgresql.pljava.example.UsingPropertiesAsScalarSet.getProperties' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.randomInts(int) + RETURNS SETOF int + AS 'org.postgresql.pljava.example.RandomInts.createIterator' + IMMUTABLE LANGUAGE java; + + CREATE FUNCTION javatest.listSupers() + RETURNS SETOF pg_user + AS 'org.postgresql.pljava.example.Users.listSupers' + LANGUAGE java; + + CREATE FUNCTION javatest.listNonSupers() + RETURNS SETOF pg_user + AS 'org.postgresql.pljava.example.Users.listNonSupers' + LANGUAGE java; + + CREATE FUNCTION javatest.logMessage(varchar, varchar) + RETURNS void + AS 'org.postgresql.pljava.example.LoggerTest.logMessage' + LANGUAGE java; + + CREATE TYPE javatest.BinaryColumnPair + AS (col1 bytea, col2 bytea); + + CREATE FUNCTION javatest.binaryColumnTest() + RETURNS SETOF javatest.BinaryColumnPair + AS 'org.postgresql.pljava.example.BinaryColumnTest.getBinaryPairs' + IMMUTABLE LANGUAGE java; + + CREATE TYPE javatest.MetaDataBooleans + AS (method_name varchar(200), result boolean); + + CREATE FUNCTION javatest.getMetaDataBooleans() + RETURNS SETOF javatest.MetaDataBooleans + AS 'org.postgresql.pljava.example.MetaDataBooleans.getDatabaseMetaDataBooleans' + LANGUAGE java; + + CREATE TYPE javatest.MetaDataStrings + AS (method_name varchar(200), result varchar); + + CREATE FUNCTION javatest.getMetaDataStrings() + RETURNS SETOF javatest.MetaDataStrings + AS 'org.postgresql.pljava.example.MetaDataStrings.getDatabaseMetaDataStrings' + LANGUAGE java; + + CREATE TYPE javatest.MetaDataInts + AS (method_name varchar(200), result int); + + CREATE FUNCTION javatest.getMetaDataInts() + RETURNS SETOF javatest.MetaDataInts + AS 'org.postgresql.pljava.example.MetaDataInts.getDatabaseMetaDataInts' + LANGUAGE java; + + CREATE FUNCTION javatest.callMetaDataMethod(varchar) + RETURNS SETOF varchar + AS 'org.postgresql.pljava.example.MetaDataTest.callMetaDataMethod' + LANGUAGE java; + + CREATE FUNCTION javatest.executeSelect(varchar) + RETURNS SETOF VARCHAR + AS 'org.postgresql.pljava.example.ResultSetTest.executeSelect' + LANGUAGE java; + + END INSTALL", + + "BEGIN REMOVE + DROP SCHEMA javatest CASCADE; + END REMOVE" + } diff --git a/pljava-examples-spring-boot/backend/src/main/docker/make-docker.sh b/pljava-examples-spring-boot/backend/src/main/docker/make-docker.sh new file mode 100644 index 000000000..523eeae66 --- /dev/null +++ b/pljava-examples-spring-boot/backend/src/main/docker/make-docker.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +docker build -t tada/pljava-examples:17.3-1.6.9-bookworm . \ No newline at end of file diff --git a/pljava-examples-spring-boot/backend/src/main/java/org/postgresql/pljava/examples/spring-boot/Main.java b/pljava-examples-spring-boot/backend/src/main/java/org/postgresql/pljava/examples/spring-boot/Main.java new file mode 100644 index 000000000..f4b18c1eb --- /dev/null +++ b/pljava-examples-spring-boot/backend/src/main/java/org/postgresql/pljava/examples/spring-boot/Main.java @@ -0,0 +1,7 @@ +package org.postgresql; + +public class Main { + public static void main(String[] args) { + System.out.println("This is the module pushed to the database server"); + } +} \ No newline at end of file diff --git a/pljava-examples-spring-boot/pom.xml b/pljava-examples-spring-boot/pom.xml new file mode 100644 index 000000000..e13b2777d --- /dev/null +++ b/pljava-examples-spring-boot/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + org.postgresql + pljava.app + 2-SNAPSHOT + + pljava-examples-spring-boot + pom + + PL/Java examples using spring boot - (top level) + Examples of Spring Boot + Test Containers for Java stored procedures using PL/Java + + + backend + test-framework + application + + + + 3.17.0 + + 42.7.7 + + + 11.9.1 + 10.0.0 + + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.postgresql + postgresql + ${postgresql-jdbc.version} + + + + + org.flywaydb + flyway-core + ${flyway.version} + + + + org.flywaydb + flyway-database-postgresql + ${flyway.version} + + + + org.flywaydb.flyway-test-extensions + flyway-spring6-test + ${flyway-test-extensions.version} + + + + diff --git a/pljava-examples-spring-boot/test-framework/pom.xml b/pljava-examples-spring-boot/test-framework/pom.xml new file mode 100644 index 000000000..e2558a1d8 --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/pom.xml @@ -0,0 +1,201 @@ + + + 4.0.0 + + org.postgresql + pljava-examples-spring-boot + 2-SNAPSHOT + ../pom.xml + + test-framework + PL/Java examples using spring boot - test framework + + + This module implements a testcontainer-based test framework. There are currently + two containers provided: AugmentedPostgreSQLContainer (basic) and + PlJavaAwarePostgreSQLContainer (with pl/java preinstalled). + + + + + + + 3.3.12 + + 42.7.7 + + + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring-boot.version} + pom + import + + + + + + + org.apache.commons + commons-lang3 + + + + + org.flywaydb + flyway-core + test + + + + org.flywaydb + flyway-database-postgresql + test + + + + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + org.springframework + spring-beans + + + + org.springframework + spring-core + + + + org.springframework + spring-context + + + + + + org.springframework + spring-jdbc + + + + + + + + + com.zaxxer + HikariCP + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springframework.boot + spring-boot-testcontainers + test + + + + + org.springframework + spring-test + + + + org.testcontainers + postgresql + test + + + + org.testcontainers + junit-jupiter + test + + + + org.postgresql + postgresql + test + + + + org.junit.jupiter + junit-jupiter + test + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.2 + + + + test-jar + + + + + + + \ No newline at end of file diff --git a/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/Main.java b/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/Main.java new file mode 100644 index 000000000..4f3bcb025 --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/Main.java @@ -0,0 +1,7 @@ +package org.postgresql.pljava.examples.springframework; + +public class Main { + public static void main(String[] args) { + System.out.println("This is a testing framework - there should be little to nothing in 'main'"); + } +} \ No newline at end of file diff --git a/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/config/DataSourceConfig.java b/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/config/DataSourceConfig.java new file mode 100644 index 000000000..d81bb4c38 --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/config/DataSourceConfig.java @@ -0,0 +1,62 @@ +package org.postgresql.pljava.examples.springframework.config; + +import com.zaxxer.hikari.HikariDataSource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +import javax.sql.DataSource; + +import static org.apache.commons.lang3.StringUtils.isNotBlank; + +@Configuration +@Profile("dev") +public class DataSourceConfig { + @Value(value = "${spring.datasource.url}") + private String url; + + @Value("${spring.datasource.username}") + private String username; + + @Value("${spring.datasource.password}") + private String password; + + @Value("${spring.datasource.driverClassName}") + private String driverClassName; + + @Value("${spring.datasource.connectionTestQuery}") + private String connectionTestQuery; + + @Bean + public DataSource dataSource() { + // @formatter:off + return dataSourceProperties() + .initializeDataSourceBuilder() + .type(HikariDataSource.class) + .build(); + // @formatter:on + } + + /* + * Datasource properties + * + * @return + */ + @Bean + public DataSourceProperties dataSourceProperties() { + final DataSourceProperties props = new org.springframework.boot.autoconfigure.jdbc.DataSourceProperties(); + props.setUrl(url); + props.setUsername(username); + props.setPassword(password); + if (isNotBlank(driverClassName)) { + props.setDriverClassName(driverClassName); + } + // if (isNotBlank(connectionTestQuery)) { + // props.setConnectionTestQuery(connectionTestQuery); + // } + + return props; + } +} diff --git a/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/config/PersistenceConfig.java b/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/config/PersistenceConfig.java new file mode 100644 index 000000000..f37abc1e0 --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/config/PersistenceConfig.java @@ -0,0 +1,56 @@ +package org.postgresql.pljava.examples.springframework.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.sql.DataSource; + +/** + * This class configures the persistence implementation. + */ +@Configuration +@EnableTransactionManagement +public class PersistenceConfig { + + // @Autowired + // private Environment environment; + + @Autowired + private DataSource dataSource; + + // --------------------------------------------------------------------- + // code beyond this point is boilerplate + // --------------------------------------------------------------------- + + @Bean + public TransactionAwareDataSourceProxy transactionAwareDataSource() { + return new TransactionAwareDataSourceProxy(dataSource); + } + + @Bean + public DataSourceTransactionManager transactionManager() { + return new DataSourceTransactionManager(dataSource); + } + + // --------------------------------------------------------------------- + // code beyond this point is boilerplate for Spring + jOOQ + // --------------------------------------------------------------------- + + /* + @Bean + public DataSourceConnectionProvider connectionProvider() { + return new DataSourceConnectionProvider(transactionAwareDataSource()); + } + */ + + /* + @Bean + public ExceptionTranslator exceptionTransformer() { + return new ExceptionTranslator(); + } + */ +} diff --git a/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/security/LogDatabaseMetaData.java b/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/security/LogDatabaseMetaData.java new file mode 100644 index 000000000..44b8dae8c --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/main/java/org/postgresql/pljava/examples/springframework/security/LogDatabaseMetaData.java @@ -0,0 +1,218 @@ +package org.postgresql.pljava.examples.springframework.security; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.net.URI; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Stream; + +import static org.apache.commons.lang3.StringUtils.isNotBlank; + +/** + * Log DatabaseMetaData (Database + Driver) + *

+ * This class provides a user-friendly description of the + * database and driver properties in a DatabaseMetaData object. + * It is intended to be easily found when skimming through + * logs - the same information should also be recorded in + * a log-analyzer-friendly format. + *

+ * This method should be called the first time the database + * is used, and then at regular interval. The latter ensures + * that the information is available despite log rotation. + *

+ * This has been incredibly useful in the past - you would + * be shocked how often an error is because of a connection + * to the wrong database! + *

+ * This class has been put in the `security` package since + * the site may wish to mask some or all of the data, with + * modified filtering based on the Spring Profile, the location + * of the server (e.g., 'localhost'), etc. + */ +public class LogDatabaseMetaData { + + private LogDatabaseMetaData() { + } + + /** + * Provide information about the database and local client + *

+ * Note: we can also look at /etc/os-release - it's on many (not all) + * linux * distros. It would allow us to record things like ID ("ubuntu"), + * VERSION_CODENAME ("ocular") and/or VERSION_ID ("24.10"). This is of + * secondary concern vs the database server and jdbc driver details but + * may still be useful. + *

+ * Determining the actual version of the database client package is also + * possible but much harder due to the number of ways that is captured. + * + * @param dbmd + * @param additionalInfo + * @return + * @throws SQLException + * @throws IOException + */ + + public static String format(DatabaseMetaData dbmd, Map> additionalInfo) throws SQLException, IOException { + try (StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw)) { + final String separator0 = "+================================================================================================+"; + final String separator1 = "+--------------------+--------------------+------------------------------------------------------+"; + + final String format = "| %-18.18s : %-18.18s : %-52.52s |\n"; + + pw.println(separator0); + pw.printf(format, "Database Server", "Name", dbmd.getDatabaseProductName()); + pw.printf(format, "", "Version", dbmd.getDatabaseProductVersion()); + pw.printf(format, "", "URL", sanitizeJdbcUrl(dbmd.getURL())); + try (ResultSet rs = dbmd.getSchemas()) { + String label = dbmd.getSchemaTerm() + "s"; + while (rs.next()) { + // remember 'catalog' is the same as the database name + pw.printf(format, "", label, rs.getString("TABLE_SCHEM")); + label = ""; + } + } + pw.println(separator1); + + pw.printf(format, "Driver", "Name", dbmd.getDriverName()); + pw.printf(format, "", "Version", dbmd.getDriverVersion()); + pw.printf(format, "", "JDBC Version", dbmd.getJDBCMajorVersion() + "." + dbmd.getJDBCMinorVersion()); + pw.println(separator1); + + pw.printf(format, "Client", "User", dbmd.getUserName()); + pw.printf(format, "", "Connection", dbmd.getConnection().getClass().getName()); + pw.println(separator1); + + pw.printf(format, "Client Host", "User", System.getProperty("user.name")); + // this is the best we can do without a lot of extra effort + try (Stream lines = Files.lines(new File("/etc/hostname").toPath(), Charset.defaultCharset())) { + Optional hostname = lines.findFirst(); + hostname.ifPresent(s -> pw.printf(format, "", "Hostname", s)); + } catch (IOException e) { + // not a problem... + pw.printf(format, "", "Hostname", "(unknown)"); + } + pw.printf(format, "", "OS Name", getOsDetails()); + pw.printf(format, "", "OS Kernel", System.getProperty("os.version")); + + if ((additionalInfo != null) && !additionalInfo.isEmpty()) { + for (Map.Entry> block : additionalInfo.entrySet()) { + if (!block.getValue().isEmpty()) { + pw.println(separator1); + String label = block.getKey(); + for (Map.Entry entry : block.getValue().entrySet()) { + pw.printf(format, label, entry.getKey(), entry.getValue()); + label = ""; + } + } + } + pw.println(separator0); + } + + pw.flush(); + return sw.toString(); + } + } + + public static String format(DatabaseMetaData dbmd) throws SQLException, IOException { + return format(dbmd, Collections.emptyMap()); + } + + /** + * Sanitize JDBC URL + *

+ * A JDBC URL may have user credentials in both the hostname/password are and as + * a query fragment. This method strips those values. + *

+ * Note: The URI class doesn't understand subprotocols - for this we + * However the URI class doesn't understand subprotocols. + * + * @param url + * @return + */ + static String sanitizeJdbcUrl(String url) { + if (!url.startsWith("jdbc:")) { + return "(undetermined)"; + } + + final URI uri = URI.create(url.substring(5)).normalize(); + + final StringBuilder sb = new StringBuilder("jdbc:"); + sb.append(uri.getScheme()); + sb.append("://"); + + sb.append(uri.getHost()); + if (uri.getPort() > 0) { + sb.append(":" + uri.getPort()); + } + + if (isNotBlank(uri.getPath())) { + sb.append(uri.getPath()); + } + + // we *could* add query + fragments but only after ensuring we aren't providing credentials. + // LOG.info("query: {}", uri.getRawQuery()); + // example: loggerLevel=cat /etc/os-rel;ease + return sb.toString(); + } + + /** + * Extract OS details from /etc/os-release (Linux-specific) + * + * @return + */ + static String getOsDetails() { + try { + String name = null; + String id = null; + String version = null; + + final List lines = Files.readAllLines(new File("/etc/os-release").toPath()); + for (String line : lines) { + if (line.startsWith("PRETTY_NAME=")) { + return line.substring(12).replace("\"", ""); + } + + if (line.startsWith("NAME=")) { + name = line.substring(5); + } else if (line.startsWith("ID=")) { + id = line.substring(3); + } else if (line.startsWith("VERSION=")) { + version = line.substring(8); + } + } + + StringBuilder sb = new StringBuilder(); + if (isNotBlank(name)) { + sb.append(name); + } else if (isNotBlank(id)) { + sb.append(id); + } else { + return System.getProperty("os.name"); + } + + if (isNotBlank(version)) { + sb.append(" "); + sb.append(version); + } + + return sb.toString().replace("\"", ""); + } catch (IOException e) { + // not a problem - may not be Linux, etc.... + } + return System.getProperty("os.name"); + } +} + diff --git a/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/config/PersistenceTestConfiguration.java b/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/config/PersistenceTestConfiguration.java new file mode 100644 index 000000000..65e0da4b1 --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/config/PersistenceTestConfiguration.java @@ -0,0 +1,25 @@ +package org.postgresql.pljava.examples.springframework.config; + +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +/** + * Test configuration (test profile) + *

+ * Note: this class works with dynamic properties so there + * is no difference between using a temporary TestContainer + * or a permanent test server. + * + * @see "https://www.baeldung.com/spring-dynamicpropertysource" + */ +@EnableAutoConfiguration +@Configuration +@ComponentScan({ + "org.postgresql.pljava.examples.testcontainers.config", + "org.postgresql.pljava.examples.testcontainers.security" +}) +@Profile("test") +public class PersistenceTestConfiguration { +} diff --git a/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/containers/AugmentedPostgreSQLContainer.java b/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/containers/AugmentedPostgreSQLContainer.java new file mode 100644 index 000000000..fbc532ddc --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/containers/AugmentedPostgreSQLContainer.java @@ -0,0 +1,192 @@ +package org.postgresql.pljava.examples.springframework.containers; + +import com.github.dockerjava.api.command.InspectContainerResponse; +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; +import org.postgresql.pljava.examples.springframework.security.LogDatabaseMetaData; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.testcontainers.containers.BindMode; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.utility.DockerImageName; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Stack; + +import static org.apache.commons.lang3.StringUtils.isNotBlank; + +// withLabel() +// withLabels() +// withCopyFileToContainer(MountableFile, path) +// withCopyToContainer(Transferable, path) +// BindMode = READ_ONLY, READ_WRITE +// withClasspathResourceMapping(https://javadoc.io/static/org.testcontainers/testcontainers/1.19.3/org/testcontainers/containers/BindMode.html) + +public class AugmentedPostgreSQLContainer> extends PostgreSQLContainer { + private final Stack mdcStack = new Stack<>(); + + protected final Logger log; + protected final MySlf4jLogConsumer logConsumer; + + public AugmentedPostgreSQLContainer(String dockerImageName) { + this(dockerImageName, Collections.emptyMap()); + } + + public AugmentedPostgreSQLContainer(String dockerImageName, Map classpathResources) { + super(DockerImageName.parse(dockerImageName).asCompatibleSubstituteFor("postgres")); + mdcStack.push(MDC.putCloseable("imageName", dockerImageName)); + mdcStack.push(MDC.putCloseable("containerId", " ")); + + StackTraceElement[] elements = Thread.currentThread().getStackTrace(); + if (elements.length >= 2) { + this.log = LoggerFactory.getLogger(elements[2].getClassName()); + } else { + this.log = LoggerFactory.getLogger(AugmentedPostgreSQLContainer.class); + } + + this.logConsumer = new MySlf4jLogConsumer<>(this.log); + this.withLogConsumer(logConsumer); + + // map is resourcePath -> containerPath + if (!classpathResources.isEmpty()) { + for (Map.Entry entry : classpathResources.entrySet()) { + log.info("adding {}", entry.getKey()); + this.withClasspathResourceMapping(entry.getKey(), entry.getValue(), BindMode.READ_ONLY); + } + } + } + + /** + * {@inheritDoc} + */ + @Override + protected void containerIsCreated(String containerId) { + try { + mdcStack.pop(); + mdcStack.push(MDC.putCloseable("containerId", (containerId.length() < 12) ? containerId : containerId.substring(0, 12))); + } catch (IllegalArgumentException e) { + log.warn("{}: {}", e.getClass().getName(), e.getMessage()); + } + + super.containerIsCreated(containerId); + } + + /** + * {@inheritDoc} + */ + @Override + protected void containerIsStarted(InspectContainerResponse containerInfo) { + super.containerIsStarted(containerInfo); + logConsumer.setDisableStdout(false); + + log.info("\n" + getDetails(containerInfo)); + } + + /** + * {@inheritDoc} + */ + @Override + public void stop() { + super.stop(); + + // drop MDC information + while (!mdcStack.isEmpty()) { + mdcStack.pop().close(); + } + } + + Map getContainerInfoMap(InspectContainerResponse containerInfo) { + final Map info = new LinkedHashMap<>(); + info.put("Image Name", containerInfo.getConfig().getImage()); + info.put("Container Name", containerInfo.getName()); + if (isNotBlank(containerInfo.getConfig().getDomainName())) { + info.put("FDQN", containerInfo.getConfig().getHostName() + "." + containerInfo.getConfig().getDomainName()); + } else { + info.put("FDQN", containerInfo.getConfig().getHostName()); + } + info.put("Container Id", containerInfo.getId()); + info.put("Container Image Id", containerInfo.getImageId()); + info.put("Created On", containerInfo.getCreated()); + // containerInfo.getHostConfig(). + // info.put("conf user", containerInfo.getConfig().getUser()); + // info.put("driver", containerInfo.getDriver()); + // info.put("platform", containerInfo.getPlatform()); + // info.put("processLabel", containerInfo.getProcessLabel()); + + return info; + } + + Map getContainerLabelsMap(InspectContainerResponse containerInfo) { + final Map labels = new LinkedHashMap<>(); + if (!containerInfo.getConfig().getLabels().isEmpty()) { + for (Map.Entry entry : containerInfo.getConfig().getLabels().entrySet()) { + final String[] elements = entry.getKey().split("\\."); + final StringBuilder sb = new StringBuilder(); + if (elements.length > 1) { + for (String element : elements) { + sb.append(element.charAt(0)); + sb.append("."); + } + if (sb.length() > 2) { + sb.setLength(sb.length() - 2); + } + } + sb.append(elements[elements.length - 1]); + + // works even if there's no match! + labels.put(sb.toString(), entry.getKey() + ": " + entry.getValue()); + } + } + + return labels; + } + + protected String getDetails(InspectContainerResponse containerInfo) { + final Map> additionalInformation = new LinkedHashMap<>(); + + try (Connection conn = this.hikariDataSource().getConnection(); + Statement stmt = conn.createStatement()) { + + try (ResultSet rs = stmt.executeQuery("select * from pg_catalog.pg_extension")) { + final Map extensions = new LinkedHashMap<>(); + while (rs.next()) { + extensions.put(rs.getString("extname"), rs.getString("extversion")); + } + + additionalInformation.put("Server Extensions", extensions); + additionalInformation.put("Container Details", getContainerInfoMap(containerInfo)); + final Map labels = getContainerLabelsMap(containerInfo); + if (!labels.isEmpty()) { + additionalInformation.put("Container Labels", labels); + } + } + + return LogDatabaseMetaData.format(conn.getMetaData(), additionalInformation); + } catch (SQLException | IOException e) { + final String message = String.format("%s: unable to get connection: %s", e.getClass().getName(), e.getMessage()); // .withUsername("test") new PostgreSQLContainer<>(TEST_IMAGE_NAME) { + return ""; + } + } + + public HikariDataSource hikariDataSource() { + final HikariConfig config = new HikariConfig(); + config.setJdbcUrl(getJdbcUrl()); + config.setUsername(getUsername()); + config.setPassword(getPassword()); + if (isNotBlank(getDriverClassName())) { + config.setDriverClassName(getDriverClassName()); + } + if (isNotBlank(getTestQueryString())) { + config.setConnectionTestQuery(getTestQueryString()); + } + return new HikariDataSource(config); + } +} diff --git a/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/containers/MySlf4jLogConsumer.java b/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/containers/MySlf4jLogConsumer.java new file mode 100644 index 000000000..f53be31ea --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/containers/MySlf4jLogConsumer.java @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2024 Bear Giles . + * All Rights Reserved. + * + * 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. + */ + +package org.postgresql.pljava.examples.springframework.containers; + +import org.slf4j.Logger; +import org.testcontainers.containers.output.BaseConsumer; +import org.testcontainers.containers.output.OutputFrame; + +import java.util.function.Consumer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Improved TestContainer LogConsumer + *

+ * One of the biggest problems we face is identifying the underlying cause + * of any failed database call. The database server logs usually have this + * information (although it may be disabled in production due to security + * concerns) but it can be hard for developers to access those logs. + *

+ * This is where the LogConsumer implementations come in. The 'STDOUT' + * messages can usually be ignored unless you need to verify that + * the server has been property initialized. In contrast the 'STDERR' + * messages often contains a much more precise error message than we + * get from the JDBC driver. This can save a lot of time. + *

+ * This LogConsumer also removes a bit of the cruft that's duplicated + * in our log headers. This makes the messages easier to read. + * + * @param + */ +@SuppressWarnings("unused") +public class MySlf4jLogConsumer> extends BaseConsumer implements Consumer { + private final Logger log; + + private final Pattern ISO_PATTERN = Pattern.compile("^([0-9]{4}-[0-9]{2}-[0-9]{2}[T ][0-9]{2}:[0-9]{2}:[0-9]{2}(.[0-9]+)?( UTC)?) (.+)$"); + + private boolean disableStdout = true; + + public MySlf4jLogConsumer(Logger log) { + this.log = log; + super.setRemoveColorCodes(false); + } + + /** + * Set 'disable stdout' flag + * + * @param disableStdout disable 'STDOUT' if true + */ + public void setDisableStdout(boolean disableStdout) { + this.disableStdout = disableStdout; + } + + /** + * Returns whether stdout is disabled + * + * @return true if 'STDOUT' is disabled + */ + public boolean isDisableStdout() { + return disableStdout; + } + + /** + * Remove cruft from the message + *

+ * At this time the only thing we remove is a leading timestamp. + * + * @param message raw message received from container + * @return simplified message + */ + String removeCruft(String message) { + + // match and remove leading timestamps + final Matcher isoMatcher = ISO_PATTERN.matcher(message); + if (isoMatcher.find()) { + return isoMatcher.group(isoMatcher.groupCount()); + } + + return message; + } + + /** + * {@inheritDoc} + */ + @Override + public void accept(OutputFrame outputFrame) { + switch (outputFrame.getType()) { + case STDOUT: + if (!disableStdout && log.isInfoEnabled()) { + log.info(removeCruft(outputFrame.getUtf8String().trim())); + } + break; + case STDERR: + log.warn(removeCruft(outputFrame.getUtf8String().trim())); + break; + case END: + log.info(outputFrame.getUtf8String()); + } + } +} diff --git a/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/extensions/PostgreSQLContainerExtension.java b/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/extensions/PostgreSQLContainerExtension.java new file mode 100644 index 000000000..c5d4acd10 --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/test/java/org/postgresql/pljava/examples/springframework/extensions/PostgreSQLContainerExtension.java @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2024 Bear Giles . + * All Rights Reserved. + * + * 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. + */ + +package org.postgresql.pljava.examples.springframework.extensions; + +import org.junit.jupiter.api.extension.AfterAllCallback; +import org.junit.jupiter.api.extension.BeforeAllCallback; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.postgresql.pljava.examples.springframework.containers.MySlf4jLogConsumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.containers.output.OutputFrame; +import org.testcontainers.utility.DockerImageName; + +import java.util.function.Consumer; + +import static org.apache.commons.lang3.StringUtils.isNotBlank; + +/** + * JUnit test extension that provides a PostgreSQL test container + *

+ * This class publishes the required connection properties via + * system properties and the JUnit ExtensionContext. This allows + * the embedded server to be treated like any other server when + * initializing the spring beans. + *

+ * In addition, the embedded server uses FlywayDB to initialize the + * database with the contents of the `db/migration` directory. + * The COPY command is not yet supported but TestContainers + * do have a mechanism that would allow us to copy files to the + * container prior to running the flyway engine. + *

+ * We have two options(*) when providing a DataSource to other spring + * beans. We can use a static TestContainer instance so we use the + * DynamicPropertyRegistry or we can use a JUnit test extension + * that does not limit us to a single static instance. + *

+ * The former may seem easiest but it appears to require duplicating + * the code in every test class. At least that's been my experience + * to date. + *

+ * The latter is a little more complicated - and I definitely don't + * like it requiring the use of the system properties - but it also + * provides more flexibility since it's easy to see how it could + * handle FlywayDB initialization better than the current embedded + * approach. That would be useful if you want to use different + * initialization files. + *

+ * (*) There are many other options - but they may rely on the + * use of a specific version of Spring Boot, etc., so it's risky + * to assume they'll be available. The JUnit test extension may + * not be the cleanest approach but it should be widely available. + * + * @param PostgreSQLContainer + * @see "https://www.baeldung.com/spring-dynamicpropertysource" + * @see "https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/extension/ExtensionContext.html" + */ +public class PostgreSQLContainerExtension> implements BeforeAllCallback, AfterAllCallback { + private static final Logger LOG = LoggerFactory.getLogger(PostgreSQLContainerExtension.class); + + final String LOCAL_IMAGE_NAME = "tada/pljava:17.3-bookworm-local"; + + final DockerImageName TEST_IMAGE_NAME = + DockerImageName + .parse(LOCAL_IMAGE_NAME) + .asCompatibleSubstituteFor("postgres"); + + public final PostgreSQLContainer container; + + protected PostgreSQLContainer newContainer(Consumer logConsumer) { + /* + PostgreSQLContainer container = new AugmentedContainer(TEST_IMAGE_NAME, LOG) + // .withDatabaseName("test") + // .withUserName("test") + // .withPassword("password") + .withLogConsumer(logConsumer) + .withEnv("POSTGRES_PASSWORD", "password"); + + container.start(); + + System.setProperty("spring.datasource.url", container.getJdbcUrl()); + System.setProperty("spring.datasource.username", container.getUsername()); + System.setProperty("spring.datasource.password", container.getPassword()); + if (isNotBlank(container.getDriverClassName())) { + System.setProperty("spring.datasource.driverClassName", container.getDriverClassName()); + } + if (isNotBlank(container.getTestQueryString())) { + System.setProperty("spring.datasource.connectionTestQuery", container.getTestQueryString()); + } + + return container; + */ + return null; + } + + private final Logger log = LoggerFactory.getLogger("Container[" + LOCAL_IMAGE_NAME + "]"); + private final Consumer logConsumer = new MySlf4jLogConsumer<>(log); + + // @Autowired + // private Environment env; + + /** + * Default constructor + */ + public PostgreSQLContainerExtension() { + + // super.withEnv(Map.of("LANG", "en_US.UTF8", "LC_ALL", "en_US.UTF8")); + // super.withLocalCompose(true); + + // LOG.info("LC_ALL: {}", env.get("ALL")); + // LOG.info("-----------------------------------"); + + /* + org.testcontainers.utility. + Transferable t = new Transferable(); + super.copyFileToContainer(transferable, "/etc/locale.conf"); + */ + this.container = newContainer(logConsumer); + } + + /** + * {@inheritDoc} + */ + @Override + public void beforeAll(ExtensionContext context) throws Exception { + System.setProperty("spring.datasource.url", container.getJdbcUrl()); + System.setProperty("spring.datasource.username", container.getUsername()); + System.setProperty("spring.datasource.password", container.getPassword()); + if (isNotBlank(container.getDriverClassName())) { + System.setProperty("spring.datasource.driverClassName", container.getDriverClassName()); + } + if (isNotBlank(container.getTestQueryString())) { + System.setProperty("spring.datasource.connectionTestQuery", container.getTestQueryString()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void afterAll(ExtensionContext context) throws Exception { + if (container.isRunning()) { + container.stop(); + } + } +} diff --git a/pljava-examples-spring-boot/test-framework/src/test/resources/application.yml b/pljava-examples-spring-boot/test-framework/src/test/resources/application.yml new file mode 100644 index 000000000..4c7e989e6 --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/test/resources/application.yml @@ -0,0 +1,11 @@ +--- +spring: + application: + name: pljava-examples-testcontainers + main: + web-application-type: none + datasource: + # url: 'jdbc:postgresql://localhost:5432/' + # username: + # password: + # driverClassName: org.postgresql.Driver \ No newline at end of file diff --git a/pljava-examples-spring-boot/test-framework/src/test/resources/logback-test.xml b/pljava-examples-spring-boot/test-framework/src/test/resources/logback-test.xml new file mode 100644 index 000000000..f9c08036a --- /dev/null +++ b/pljava-examples-spring-boot/test-framework/src/test/resources/logback-test.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %green([%X{imageName} - %X{containerId}]) %highlight(%-5level) + %cyan([%c{24}:%L]) - %m%n" + + + + + + + ${LOG_FILE_INFO} + + ${LOG_FILE_INFO}.%d{yyyy-MM-dd}.log + 30 + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%c:%L] - %m%n" + + + + + + + + + + + + + + + + + diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/BinaryColumnTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/BinaryColumnTest.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/BinaryColumnTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/BinaryColumnTest.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/HugeResultSet.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/HugeResultSet.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/HugeResultSet.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/HugeResultSet.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/LoggerTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/LoggerTest.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/LoggerTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/LoggerTest.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/MetaDataBooleans.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/MetaDataBooleans.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/MetaDataBooleans.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/MetaDataBooleans.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/MetaDataInts.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/MetaDataInts.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/MetaDataInts.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/MetaDataInts.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/MetaDataStrings.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/MetaDataStrings.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/MetaDataStrings.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/MetaDataStrings.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/MetaDataTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/MetaDataTest.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/MetaDataTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/MetaDataTest.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/RandomInts.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/RandomInts.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/RandomInts.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/RandomInts.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/ResultSetTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/ResultSetTest.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/ResultSetTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/ResultSetTest.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/Security.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/Security.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/Security.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/Security.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/Threads.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/Threads.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/Threads.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/Threads.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/Triggers.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/Triggers.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/Triggers.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/Triggers.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/TupleReturn.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/TupleReturn.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/TupleReturn.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/TupleReturn.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/Users.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/Users.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/Users.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/Users.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/UsingProperties.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/UsingProperties.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/UsingProperties.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/UsingProperties.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/UsingPropertiesAsResultSet.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/UsingPropertiesAsResultSet.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/UsingPropertiesAsResultSet.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/UsingPropertiesAsResultSet.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/UsingPropertiesAsScalarSet.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/UsingPropertiesAsScalarSet.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/UsingPropertiesAsScalarSet.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/UsingPropertiesAsScalarSet.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Aggregates.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Aggregates.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Aggregates.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Aggregates.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/AnyTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/AnyTest.java similarity index 97% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/AnyTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/AnyTest.java index f1f7515b7..99b1709b0 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/AnyTest.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/AnyTest.java @@ -20,7 +20,7 @@ import static org.postgresql.pljava.annotation.Function.Effects.IMMUTABLE; import static org.postgresql.pljava.annotation.Function.OnNullInput.RETURNS_NULL; -import org.postgresql.pljava.annotation.SQLAction; + import org.postgresql.pljava.annotation.SQLType; /** diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ComplexScalar.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ComplexScalar.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ComplexScalar.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ComplexScalar.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ComplexTuple.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ComplexTuple.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ComplexTuple.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ComplexTuple.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ConditionalDDR.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ConditionalDDR.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ConditionalDDR.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ConditionalDDR.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Enumeration.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Enumeration.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Enumeration.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Enumeration.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Holdability.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Holdability.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Holdability.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Holdability.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/IntWithMod.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/IntWithMod.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/IntWithMod.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/IntWithMod.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/JDBC42_21.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/JDBC42_21.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/JDBC42_21.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/JDBC42_21.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/MishandledExceptions.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/MishandledExceptions.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/MishandledExceptions.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/MishandledExceptions.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Modules.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Modules.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Modules.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Modules.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/OnInterface.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/OnInterface.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/OnInterface.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/OnInterface.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PGF1010962.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/PGF1010962.java similarity index 98% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PGF1010962.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/PGF1010962.java index 747f2ef6d..c8c14391a 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PGF1010962.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/PGF1010962.java @@ -1,6 +1,5 @@ package org.postgresql.pljava.example.annotation; -import java.sql.Array; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Parameters.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Parameters.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Parameters.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Parameters.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PassXML.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/PassXML.java similarity index 99% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PassXML.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/PassXML.java index d6dd14bfc..2ac4d2b2d 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PassXML.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/PassXML.java @@ -20,7 +20,6 @@ import java.sql.SQLInput; import java.sql.SQLOutput; import java.sql.SQLXML; -import java.sql.Statement; import java.sql.Types; import java.sql.SQLDataException; @@ -76,7 +75,6 @@ import static org.postgresql.pljava.example.LoggerTest.logMessage; /* Imports needed just for the SAX flavor of "low-level XML echo" below */ -import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.XMLReader; import org.xml.sax.ContentHandler; diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Point.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Point.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Point.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Point.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PreJSR310.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/PreJSR310.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PreJSR310.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/PreJSR310.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/RecordParameterDefaults.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/RecordParameterDefaults.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/RecordParameterDefaults.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/RecordParameterDefaults.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ReturnComposite.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ReturnComposite.java similarity index 99% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ReturnComposite.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ReturnComposite.java index fb9965d0e..25cddd57d 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ReturnComposite.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ReturnComposite.java @@ -12,7 +12,6 @@ package org.postgresql.pljava.example.annotation; import java.sql.ResultSet; -import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.Iterator; diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/SPIActions.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/SPIActions.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/SPIActions.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/SPIActions.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/SetOfRecordTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/SetOfRecordTest.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/SetOfRecordTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/SetOfRecordTest.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ThreadTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ThreadTest.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/ThreadTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/ThreadTest.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Triggers.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Triggers.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Triggers.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Triggers.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/TypeRoundTripper.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/TypeRoundTripper.java similarity index 99% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/TypeRoundTripper.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/TypeRoundTripper.java index 8c3151556..acc65e5c6 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/TypeRoundTripper.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/TypeRoundTripper.java @@ -12,7 +12,7 @@ package org.postgresql.pljava.example.annotation; import java.lang.reflect.Field; -import java.lang.reflect.Modifier; + import static java.lang.reflect.Modifier.isPublic; import static java.lang.reflect.Modifier.isStatic; diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UDTScalarIOTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UDTScalarIOTest.java similarity index 98% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UDTScalarIOTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UDTScalarIOTest.java index 659a5e2ab..14183b333 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UDTScalarIOTest.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UDTScalarIOTest.java @@ -29,8 +29,6 @@ import java.nio.CharBuffer; import static java.nio.charset.StandardCharsets.UTF_8; import java.nio.charset.CharacterCodingException; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; import java.util.Arrays; import java.util.Scanner; diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UnicodeRoundTripTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UnicodeRoundTripTest.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UnicodeRoundTripTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UnicodeRoundTripTest.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UsingProperties.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UsingProperties.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UsingProperties.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UsingProperties.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UsingPropertiesAsScalarSet.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UsingPropertiesAsScalarSet.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/UsingPropertiesAsScalarSet.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/UsingPropertiesAsScalarSet.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Variadic.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Variadic.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/Variadic.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/Variadic.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/VarlenaUDTTest.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/VarlenaUDTTest.java similarity index 100% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/VarlenaUDTTest.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/VarlenaUDTTest.java diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/XMLRenderedTypes.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/XMLRenderedTypes.java similarity index 95% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/XMLRenderedTypes.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/XMLRenderedTypes.java index 812233d15..c6cb1e70b 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/XMLRenderedTypes.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/XMLRenderedTypes.java @@ -19,8 +19,6 @@ import org.postgresql.pljava.annotation.SQLAction; import org.postgresql.pljava.annotation.SQLType; -import static org.postgresql.pljava.example.LoggerTest.logMessage; - /** * Class illustrating use of {@link SQLXML} to operate on non-XML data types * for which PL/Java provides an XML rendering. diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/package-info.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/package-info.java similarity index 80% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/package-info.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/package-info.java index 20ea8b40b..2d88d3e8c 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/package-info.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/annotation/package-info.java @@ -4,4 +4,3 @@ * @author Thomas Hallgren * @author Chapman Flack */ -package org.postgresql.pljava.example.annotation; diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/package-info.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/package-info.java similarity index 86% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/package-info.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/package-info.java index 8a348b8c0..2b9c1a953 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/package-info.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/package-info.java @@ -4,4 +4,3 @@ * not having been reworked to use annotations yet. * @author Thomas Hallgren */ -package org.postgresql.pljava.example; diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/saxon/S9.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/saxon/S9.java similarity index 99% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/saxon/S9.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/saxon/S9.java index d14c8f5e8..28304cd01 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/saxon/S9.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/saxon/S9.java @@ -20,7 +20,6 @@ import java.sql.ResultSetMetaData; import static java.sql.ResultSetMetaData.columnNoNulls; import java.sql.SQLXML; -import java.sql.Statement; import java.sql.Types; import java.sql.SQLException; @@ -42,15 +41,12 @@ import java.util.Collections; import java.util.HashMap; import java.util.Iterator; -import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.xml.transform.Source; -import javax.xml.transform.Result; import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; import static javax.xml.XMLConstants.XML_NS_URI; diff --git a/pljava-examples/src/main/java/org/postgresql/pljava/example/saxon/package-info.java b/pljava-examples/src/main/java/org/spring-boot/pljava/example/saxon/package-info.java similarity index 83% rename from pljava-examples/src/main/java/org/postgresql/pljava/example/saxon/package-info.java rename to pljava-examples/src/main/java/org/spring-boot/pljava/example/saxon/package-info.java index 1e8429521..ee745139b 100644 --- a/pljava-examples/src/main/java/org/postgresql/pljava/example/saxon/package-info.java +++ b/pljava-examples/src/main/java/org/spring-boot/pljava/example/saxon/package-info.java @@ -4,4 +4,3 @@ * line (which will also cause Saxon-HE to be downloaded). * @author Chapman Flack */ -package org.postgresql.pljava.example.saxon; diff --git a/pljava-examples/src/main/resources/org/postgresql/pljava/example/annotation/example.properties b/pljava-examples/src/main/resources/org/spring-boot/pljava/example/annotation/example.properties similarity index 100% rename from pljava-examples/src/main/resources/org/postgresql/pljava/example/annotation/example.properties rename to pljava-examples/src/main/resources/org/spring-boot/pljava/example/annotation/example.properties diff --git a/pljava-examples/src/main/resources/org/postgresql/pljava/example/example.properties b/pljava-examples/src/main/resources/org/spring-boot/pljava/example/example.properties similarity index 100% rename from pljava-examples/src/main/resources/org/postgresql/pljava/example/example.properties rename to pljava-examples/src/main/resources/org/spring-boot/pljava/example/example.properties diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/AbstractPGXS.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/AbstractPGXS.java similarity index 100% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/AbstractPGXS.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/AbstractPGXS.java diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/GoalScript.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/GoalScript.java similarity index 100% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/GoalScript.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/GoalScript.java diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/PGXSUtils.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/PGXSUtils.java similarity index 100% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/PGXSUtils.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/PGXSUtils.java diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/RelativizingFileManager.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/RelativizingFileManager.java similarity index 100% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/RelativizingFileManager.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/RelativizingFileManager.java diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ReportScript.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ReportScript.java similarity index 100% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ReportScript.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ReportScript.java diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ReportScriptingMojo.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ReportScriptingMojo.java similarity index 100% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ReportScriptingMojo.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ReportScriptingMojo.java diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ScriptEngineLoader.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ScriptEngineLoader.java similarity index 100% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ScriptEngineLoader.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ScriptEngineLoader.java diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ScriptingMojo.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ScriptingMojo.java similarity index 98% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ScriptingMojo.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ScriptingMojo.java index 489f679bd..ae3aab58c 100644 --- a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/ScriptingMojo.java +++ b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/ScriptingMojo.java @@ -26,9 +26,7 @@ import javax.script.Invocable; import javax.script.ScriptEngine; -import java.util.function.BiConsumer; import java.util.function.BiFunction; -import java.util.function.Function; import static javax.script.ScriptContext.ENGINE_SCOPE; diff --git a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/package-info.java b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/package-info.java similarity index 94% rename from pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/package-info.java rename to pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/package-info.java index 68ca19d3f..40eebcd38 100644 --- a/pljava-pgxs/src/main/java/org/postgresql/pljava/pgxs/package-info.java +++ b/pljava-pgxs/src/main/java/org/spring-boot/pljava/pgxs/package-info.java @@ -15,4 +15,3 @@ * the PL/Java Native C code. It also provides a maven plugin goal for utilising * JavaScript during maven SITE lifecycle phase. */ -package org.postgresql.pljava.pgxs; \ No newline at end of file diff --git a/pljava/src/main/java/org/postgresql/pljava/elog/ELogFormatter.java b/pljava/src/main/java/org/spring-boot/pljava/elog/ELogFormatter.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/elog/ELogFormatter.java rename to pljava/src/main/java/org/spring-boot/pljava/elog/ELogFormatter.java diff --git a/pljava/src/main/java/org/postgresql/pljava/elog/ELogHandler.java b/pljava/src/main/java/org/spring-boot/pljava/elog/ELogHandler.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/elog/ELogHandler.java rename to pljava/src/main/java/org/spring-boot/pljava/elog/ELogHandler.java diff --git a/pljava/src/main/java/org/postgresql/pljava/elog/package-info.java b/pljava/src/main/java/org/spring-boot/pljava/elog/package-info.java similarity index 94% rename from pljava/src/main/java/org/postgresql/pljava/elog/package-info.java rename to pljava/src/main/java/org/spring-boot/pljava/elog/package-info.java index ad0218b6a..771bf6d43 100644 --- a/pljava/src/main/java/org/postgresql/pljava/elog/package-info.java +++ b/pljava/src/main/java/org/spring-boot/pljava/elog/package-info.java @@ -15,4 +15,3 @@ * PostgreSQL's error logging mechanisms, isolated here in a package that can be * exported to the {@code java.logging} module, as that API requires. */ -package org.postgresql.pljava.elog; diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/AclId.java b/pljava/src/main/java/org/spring-boot/pljava/internal/AclId.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/AclId.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/AclId.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Backend.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Backend.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/Backend.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Backend.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/ByteBufferInputStream.java b/pljava/src/main/java/org/spring-boot/pljava/internal/ByteBufferInputStream.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/ByteBufferInputStream.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/ByteBufferInputStream.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/ByteBufferXMLReader.java b/pljava/src/main/java/org/spring-boot/pljava/internal/ByteBufferXMLReader.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/ByteBufferXMLReader.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/ByteBufferXMLReader.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Checked.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Checked.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/Checked.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Checked.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/DualState.java b/pljava/src/main/java/org/spring-boot/pljava/internal/DualState.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/internal/DualState.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/DualState.java index 438bc4a9d..68d935188 100644 --- a/pljava/src/main/java/org/postgresql/pljava/internal/DualState.java +++ b/pljava/src/main/java/org/spring-boot/pljava/internal/DualState.java @@ -24,7 +24,6 @@ import java.util.Deque; import java.util.HashMap; import java.util.IdentityHashMap; -import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.Queue; diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/EntryPoints.java b/pljava/src/main/java/org/spring-boot/pljava/internal/EntryPoints.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/internal/EntryPoints.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/EntryPoints.java index 82f042795..aaacf25e4 100644 --- a/pljava/src/main/java/org/postgresql/pljava/internal/EntryPoints.java +++ b/pljava/src/main/java/org/spring-boot/pljava/internal/EntryPoints.java @@ -28,7 +28,6 @@ import static java.util.Objects.requireNonNull; -import org.postgresql.pljava.internal.UncheckedException; import static org.postgresql.pljava.internal.UncheckedException.unchecked; /* diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/ErrorData.java b/pljava/src/main/java/org/spring-boot/pljava/internal/ErrorData.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/ErrorData.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/ErrorData.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/ExecutionPlan.java b/pljava/src/main/java/org/spring-boot/pljava/internal/ExecutionPlan.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/ExecutionPlan.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/ExecutionPlan.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Function.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Function.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/internal/Function.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Function.java index 83ba3ba05..b009af9ea 100644 --- a/pljava/src/main/java/org/postgresql/pljava/internal/Function.java +++ b/pljava/src/main/java/org/spring-boot/pljava/internal/Function.java @@ -12,7 +12,6 @@ package org.postgresql.pljava.internal; import java.lang.invoke.MethodHandle; -import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodHandles.Lookup; import static java.lang.invoke.MethodHandles.arrayElementGetter; import static java.lang.invoke.MethodHandles.arrayElementSetter; @@ -37,7 +36,6 @@ import java.lang.invoke.WrongMethodTypeException; import java.lang.reflect.Array; -import java.lang.reflect.Method; import java.lang.reflect.GenericDeclaration; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -56,8 +54,6 @@ import java.sql.SQLData; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; -import java.sql.SQLInput; -import java.sql.SQLOutput; import java.sql.SQLNonTransientException; import java.sql.SQLSyntaxErrorException; @@ -86,7 +82,7 @@ import static org.postgresql.pljava.internal.Backend.getListConfigOption; import static org.postgresql.pljava.internal.Backend.WITHOUT_ENFORCEMENT; import static org.postgresql.pljava.internal.Backend.allowingUnenforcedUDT; -import org.postgresql.pljava.internal.EntryPoints; + import org.postgresql.pljava.internal.EntryPoints.Invocable; import static org.postgresql.pljava.internal.EntryPoints.invocable; import static org.postgresql.pljava.internal.EntryPoints.loadAndInitWithACC; diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/InstallHelper.java b/pljava/src/main/java/org/spring-boot/pljava/internal/InstallHelper.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/internal/InstallHelper.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/InstallHelper.java index add6b5635..eee25b108 100644 --- a/pljava/src/main/java/org/postgresql/pljava/internal/InstallHelper.java +++ b/pljava/src/main/java/org/spring-boot/pljava/internal/InstallHelper.java @@ -12,7 +12,6 @@ package org.postgresql.pljava.internal; import java.io.InputStream; -import java.io.InputStreamReader; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; @@ -25,7 +24,6 @@ import java.security.Security; import java.sql.Connection; import java.sql.DatabaseMetaData; -import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/MarkableSequenceInputStream.java b/pljava/src/main/java/org/spring-boot/pljava/internal/MarkableSequenceInputStream.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/MarkableSequenceInputStream.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/MarkableSequenceInputStream.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/MarkableSequenceReader.java b/pljava/src/main/java/org/spring-boot/pljava/internal/MarkableSequenceReader.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/internal/MarkableSequenceReader.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/MarkableSequenceReader.java index 82b101d8d..236b5a2f1 100644 --- a/pljava/src/main/java/org/postgresql/pljava/internal/MarkableSequenceReader.java +++ b/pljava/src/main/java/org/spring-boot/pljava/internal/MarkableSequenceReader.java @@ -17,7 +17,6 @@ import java.lang.reflect.UndeclaredThrowableException; import java.util.LinkedList; -import java.util.List; import java.util.ListIterator; /** diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/ObjectPoolImpl.java b/pljava/src/main/java/org/spring-boot/pljava/internal/ObjectPoolImpl.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/ObjectPoolImpl.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/ObjectPoolImpl.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Oid.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Oid.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/Oid.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Oid.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/PgSavepoint.java b/pljava/src/main/java/org/spring-boot/pljava/internal/PgSavepoint.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/PgSavepoint.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/PgSavepoint.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Portal.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Portal.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/internal/Portal.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Portal.java index 363f2bb1b..007f9b59a 100644 --- a/pljava/src/main/java/org/postgresql/pljava/internal/Portal.java +++ b/pljava/src/main/java/org/spring-boot/pljava/internal/Portal.java @@ -12,7 +12,6 @@ */ package org.postgresql.pljava.internal; -import org.postgresql.pljava.internal.SPI; // for javadoc import static org.postgresql.pljava.internal.Backend.doInPG; import java.sql.SQLException; diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Privilege.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Privilege.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/Privilege.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Privilege.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Relation.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Relation.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/Relation.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Relation.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/ResultSetPicker.java b/pljava/src/main/java/org/spring-boot/pljava/internal/ResultSetPicker.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/ResultSetPicker.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/ResultSetPicker.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/SPI.java b/pljava/src/main/java/org/spring-boot/pljava/internal/SPI.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/SPI.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/SPI.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/SPIException.java b/pljava/src/main/java/org/spring-boot/pljava/internal/SPIException.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/SPIException.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/SPIException.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/SQL_ASCII.java b/pljava/src/main/java/org/spring-boot/pljava/internal/SQL_ASCII.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/SQL_ASCII.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/SQL_ASCII.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/ServerException.java b/pljava/src/main/java/org/spring-boot/pljava/internal/ServerException.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/ServerException.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/ServerException.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Session.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Session.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/Session.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Session.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/SubXactListener.java b/pljava/src/main/java/org/spring-boot/pljava/internal/SubXactListener.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/SubXactListener.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/SubXactListener.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/SyntheticXMLReader.java b/pljava/src/main/java/org/spring-boot/pljava/internal/SyntheticXMLReader.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/SyntheticXMLReader.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/SyntheticXMLReader.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/TransactionalMap.java b/pljava/src/main/java/org/spring-boot/pljava/internal/TransactionalMap.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/TransactionalMap.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/TransactionalMap.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/TriggerData.java b/pljava/src/main/java/org/spring-boot/pljava/internal/TriggerData.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/TriggerData.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/TriggerData.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/Tuple.java b/pljava/src/main/java/org/spring-boot/pljava/internal/Tuple.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/Tuple.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/Tuple.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/TupleDesc.java b/pljava/src/main/java/org/spring-boot/pljava/internal/TupleDesc.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/TupleDesc.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/TupleDesc.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/TupleTable.java b/pljava/src/main/java/org/spring-boot/pljava/internal/TupleTable.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/TupleTable.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/TupleTable.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/UncheckedException.java b/pljava/src/main/java/org/spring-boot/pljava/internal/UncheckedException.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/UncheckedException.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/UncheckedException.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/UnhandledPGException.java b/pljava/src/main/java/org/spring-boot/pljava/internal/UnhandledPGException.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/UnhandledPGException.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/UnhandledPGException.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/VarlenaWrapper.java b/pljava/src/main/java/org/spring-boot/pljava/internal/VarlenaWrapper.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/VarlenaWrapper.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/VarlenaWrapper.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/VarlenaXMLRenderer.java b/pljava/src/main/java/org/spring-boot/pljava/internal/VarlenaXMLRenderer.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/VarlenaXMLRenderer.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/VarlenaXMLRenderer.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/XactListener.java b/pljava/src/main/java/org/spring-boot/pljava/internal/XactListener.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/internal/XactListener.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/XactListener.java diff --git a/pljava/src/main/java/org/postgresql/pljava/internal/package-info.java b/pljava/src/main/java/org/spring-boot/pljava/internal/package-info.java similarity index 90% rename from pljava/src/main/java/org/postgresql/pljava/internal/package-info.java rename to pljava/src/main/java/org/spring-boot/pljava/internal/package-info.java index c63144d25..68f51a4d6 100644 --- a/pljava/src/main/java/org/postgresql/pljava/internal/package-info.java +++ b/pljava/src/main/java/org/spring-boot/pljava/internal/package-info.java @@ -8,4 +8,3 @@ >pljava-so. * @author Thomas Hallgren */ -package org.postgresql.pljava.internal; diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/AbstractResultSet.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/AbstractResultSet.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/AbstractResultSet.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/AbstractResultSet.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/AbstractResultSetMetaData.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/AbstractResultSetMetaData.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/AbstractResultSetMetaData.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/AbstractResultSetMetaData.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/BlobValue.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/BlobValue.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/BlobValue.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/BlobValue.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/BuiltinFunctions.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/BuiltinFunctions.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/BuiltinFunctions.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/BuiltinFunctions.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/ClobValue.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/ClobValue.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/ClobValue.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/ClobValue.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/Invocation.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/Invocation.java similarity index 98% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/Invocation.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/Invocation.java index 88301d0be..6d67feedc 100644 --- a/pljava/src/main/java/org/postgresql/pljava/jdbc/Invocation.java +++ b/pljava/src/main/java/org/spring-boot/pljava/jdbc/Invocation.java @@ -12,12 +12,8 @@ */ package org.postgresql.pljava.jdbc; -import java.sql.PreparedStatement; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.logging.Logger; -import org.postgresql.pljava.internal.Backend; import static org.postgresql.pljava.internal.Backend.doInPG; import org.postgresql.pljava.internal.PgSavepoint; import org.postgresql.pljava.internal.ServerException; // for javadoc diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/ObjectResultSet.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/ObjectResultSet.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/ObjectResultSet.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/ObjectResultSet.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/PgNodeTreeAsXML.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/PgNodeTreeAsXML.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/PgNodeTreeAsXML.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/PgNodeTreeAsXML.java index 8d5de171b..51507eb08 100644 --- a/pljava/src/main/java/org/postgresql/pljava/jdbc/PgNodeTreeAsXML.java +++ b/pljava/src/main/java/org/spring-boot/pljava/jdbc/PgNodeTreeAsXML.java @@ -23,7 +23,6 @@ import java.sql.SQLException; -import java.util.regex.Matcher; import java.util.regex.Pattern; import org.xml.sax.SAXException; diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/ReadOnlyResultSet.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/ReadOnlyResultSet.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/ReadOnlyResultSet.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/ReadOnlyResultSet.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/ResultSetBase.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/ResultSetBase.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/ResultSetBase.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/ResultSetBase.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/ResultSetField.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/ResultSetField.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/ResultSetField.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/ResultSetField.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIConnection.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIConnection.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIConnection.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIConnection.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIDatabaseMetaData.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIDatabaseMetaData.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIDatabaseMetaData.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIDatabaseMetaData.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIDriver.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIDriver.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIDriver.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIDriver.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIParameterMetaData.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIParameterMetaData.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIParameterMetaData.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIParameterMetaData.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIPreparedStatement.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIPreparedStatement.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIPreparedStatement.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIPreparedStatement.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIReadOnlyControl.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIReadOnlyControl.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIReadOnlyControl.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIReadOnlyControl.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIResultSet.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIResultSet.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIResultSet.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIResultSet.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIResultSetMetaData.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIResultSetMetaData.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIResultSetMetaData.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIResultSetMetaData.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SPIStatement.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIStatement.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SPIStatement.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SPIStatement.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLChunkIOOrder.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLChunkIOOrder.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SQLChunkIOOrder.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLChunkIOOrder.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLInputFromChunk.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLInputFromChunk.java similarity index 97% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SQLInputFromChunk.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLInputFromChunk.java index 24dda80b7..3e2caaa86 100644 --- a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLInputFromChunk.java +++ b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLInputFromChunk.java @@ -17,13 +17,11 @@ import java.io.Reader; import java.io.StringReader; import java.math.BigDecimal; -import java.net.MalformedURLException; import java.net.URI; -import java.net.URISyntaxException; import java.net.URL; import java.nio.ByteBuffer; import static java.nio.charset.StandardCharsets.UTF_8; -import java.nio.charset.CharsetDecoder; + import java.sql.Array; import java.sql.Blob; import java.sql.Clob; @@ -40,8 +38,6 @@ import java.sql.Time; import java.sql.Timestamp; -import org.postgresql.pljava.internal.Backend; - import static org.postgresql.pljava.jdbc.SQLChunkIOOrder.MIRROR_P2J; import static org.postgresql.pljava.jdbc.SQLChunkIOOrder.SCALAR_P2J; diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLInputFromTuple.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLInputFromTuple.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SQLInputFromTuple.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLInputFromTuple.java index 2b99e01ba..b1a29f880 100644 --- a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLInputFromTuple.java +++ b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLInputFromTuple.java @@ -31,7 +31,6 @@ import java.sql.Time; import java.sql.Timestamp; -import org.postgresql.pljava.internal.Backend; import org.postgresql.pljava.internal.DualState; import org.postgresql.pljava.internal.TupleDesc; diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLOutputToChunk.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLOutputToChunk.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SQLOutputToChunk.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLOutputToChunk.java index 5524b70c2..065907b9a 100644 --- a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLOutputToChunk.java +++ b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLOutputToChunk.java @@ -12,11 +12,9 @@ */ package org.postgresql.pljava.jdbc; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.Reader; -import java.io.StringWriter; import java.math.BigDecimal; import java.nio.BufferOverflowException; import java.nio.ByteBuffer; diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLOutputToTuple.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLOutputToTuple.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SQLOutputToTuple.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLOutputToTuple.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLUtils.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLUtils.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SQLUtils.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLUtils.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLXMLImpl.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLXMLImpl.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SQLXMLImpl.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLXMLImpl.java index 8baae3dd7..7844431c2 100644 --- a/pljava/src/main/java/org/postgresql/pljava/jdbc/SQLXMLImpl.java +++ b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SQLXMLImpl.java @@ -30,14 +30,12 @@ import java.io.FilterInputStream; import java.io.IOException; -import java.lang.invoke.MethodHandles.Lookup; import static java.lang.invoke.MethodHandles.lookup; import java.lang.invoke.VarHandle; import java.nio.charset.Charset; import static java.nio.charset.StandardCharsets.US_ASCII; -import org.postgresql.pljava.internal.Backend; import static org.postgresql.pljava.internal.Backend.doInPG; import org.postgresql.pljava.internal.MarkableSequenceInputStream; @@ -46,12 +44,9 @@ import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamReader; -import static javax.xml.stream.XMLStreamConstants.CDATA; -import static javax.xml.stream.XMLStreamConstants.CHARACTERS; import static javax.xml.stream.XMLStreamConstants.COMMENT; import static javax.xml.stream.XMLStreamConstants.DTD; import static javax.xml.stream.XMLStreamConstants.PROCESSING_INSTRUCTION; -import static javax.xml.stream.XMLStreamConstants.SPACE; import static javax.xml.stream.XMLStreamConstants.START_DOCUMENT; import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; @@ -78,7 +73,6 @@ import org.w3c.dom.DocumentFragment; import org.w3c.dom.Element; import org.w3c.dom.Node; -import org.w3c.dom.Text; import static org.postgresql.pljava.internal.Session.implServerCharset; import org.postgresql.pljava.internal.VarlenaWrapper; @@ -121,7 +115,6 @@ /* ... for SQLXMLImpl.SAXResultAdapter and .SAXUnwrapFilter */ -import javax.xml.transform.Transformer; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.ext.DefaultHandler2; @@ -136,7 +129,6 @@ import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; import javax.xml.stream.XMLEventReader; -import javax.xml.stream.events.XMLEvent; import javax.xml.stream.util.StreamReaderDelegate; /* ... for static adopt() method, doing low-level copies from foreign objects */ @@ -145,7 +137,6 @@ import java.io.CharArrayReader; import java.io.FilterReader; -import javax.xml.stream.XMLEventWriter; import javax.xml.stream.util.XMLEventConsumer; import org.postgresql.pljava.internal.MarkableSequenceReader; diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SingleRowReader.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SingleRowReader.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SingleRowReader.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SingleRowReader.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SingleRowResultSet.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SingleRowResultSet.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SingleRowResultSet.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SingleRowResultSet.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SingleRowWriter.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SingleRowWriter.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SingleRowWriter.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SingleRowWriter.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/StatementClosedException.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/StatementClosedException.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/StatementClosedException.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/StatementClosedException.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SyntheticResultSet.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SyntheticResultSet.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SyntheticResultSet.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SyntheticResultSet.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/SyntheticResultSetMetaData.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/SyntheticResultSetMetaData.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/SyntheticResultSetMetaData.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/SyntheticResultSetMetaData.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/TriggerResultSet.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/TriggerResultSet.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/TriggerResultSet.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/TriggerResultSet.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/TypeBridge.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/TypeBridge.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/TypeBridge.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/TypeBridge.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/TypeOid.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/TypeOid.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/TypeOid.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/TypeOid.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/UnsupportedFeatureException.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/UnsupportedFeatureException.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/UnsupportedFeatureException.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/UnsupportedFeatureException.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/XMLEventToStreamConsumer.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/XMLEventToStreamConsumer.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/XMLEventToStreamConsumer.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/XMLEventToStreamConsumer.java diff --git a/pljava/src/main/java/org/postgresql/pljava/jdbc/package-info.java b/pljava/src/main/java/org/spring-boot/pljava/jdbc/package-info.java similarity index 90% rename from pljava/src/main/java/org/postgresql/pljava/jdbc/package-info.java rename to pljava/src/main/java/org/spring-boot/pljava/jdbc/package-info.java index 9a778080a..76263f54e 100644 --- a/pljava/src/main/java/org/postgresql/pljava/jdbc/package-info.java +++ b/pljava/src/main/java/org/spring-boot/pljava/jdbc/package-info.java @@ -7,4 +7,3 @@ * comments in the code may be helpful in case of any question. * @author Thomas Hallgren */ -package org.postgresql.pljava.jdbc; diff --git a/pljava/src/main/java/org/postgresql/pljava/management/Commands.java b/pljava/src/main/java/org/spring-boot/pljava/management/Commands.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/management/Commands.java rename to pljava/src/main/java/org/spring-boot/pljava/management/Commands.java index ca186de3a..d1c069994 100644 --- a/pljava/src/main/java/org/postgresql/pljava/management/Commands.java +++ b/pljava/src/main/java/org/spring-boot/pljava/management/Commands.java @@ -45,7 +45,7 @@ import java.util.ArrayList; import static java.util.Arrays.fill; import static java.util.Objects.requireNonNullElse; -import java.util.jar.Attributes; + import java.util.jar.JarEntry; import java.util.jar.JarInputStream; import java.util.logging.Logger; diff --git a/pljava/src/main/java/org/postgresql/pljava/management/DDRExecutor.java b/pljava/src/main/java/org/spring-boot/pljava/management/DDRExecutor.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/management/DDRExecutor.java rename to pljava/src/main/java/org/spring-boot/pljava/management/DDRExecutor.java diff --git a/pljava/src/main/java/org/postgresql/pljava/management/SQLDeploymentDescriptor.java b/pljava/src/main/java/org/spring-boot/pljava/management/SQLDeploymentDescriptor.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/management/SQLDeploymentDescriptor.java rename to pljava/src/main/java/org/spring-boot/pljava/management/SQLDeploymentDescriptor.java diff --git a/pljava/src/main/java/org/postgresql/pljava/management/package-info.java b/pljava/src/main/java/org/spring-boot/pljava/management/package-info.java similarity index 86% rename from pljava/src/main/java/org/postgresql/pljava/management/package-info.java rename to pljava/src/main/java/org/spring-boot/pljava/management/package-info.java index 7af191369..64ebbcab0 100644 --- a/pljava/src/main/java/org/postgresql/pljava/management/package-info.java +++ b/pljava/src/main/java/org/spring-boot/pljava/management/package-info.java @@ -5,4 +5,3 @@ * descriptions. * @author Thomas Hallgren */ -package org.postgresql.pljava.management; diff --git a/pljava/src/main/java/org/postgresql/pljava/mbeans/DualStateStatistics.java b/pljava/src/main/java/org/spring-boot/pljava/mbeans/DualStateStatistics.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/mbeans/DualStateStatistics.java rename to pljava/src/main/java/org/spring-boot/pljava/mbeans/DualStateStatistics.java diff --git a/pljava/src/main/java/org/postgresql/pljava/mbeans/package-info.java b/pljava/src/main/java/org/spring-boot/pljava/mbeans/package-info.java similarity index 94% rename from pljava/src/main/java/org/postgresql/pljava/mbeans/package-info.java rename to pljava/src/main/java/org/spring-boot/pljava/mbeans/package-info.java index 808708438..a40c2cb64 100644 --- a/pljava/src/main/java/org/postgresql/pljava/mbeans/package-info.java +++ b/pljava/src/main/java/org/spring-boot/pljava/mbeans/package-info.java @@ -16,4 +16,3 @@ * package, as the interfaces must be accessible to a JMX module that is * dynamic and unnamed. */ -package org.postgresql.pljava.mbeans; diff --git a/pljava/src/main/java/org/postgresql/pljava/nopolicy/FrozenProperties.java b/pljava/src/main/java/org/spring-boot/pljava/nopolicy/FrozenProperties.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/nopolicy/FrozenProperties.java rename to pljava/src/main/java/org/spring-boot/pljava/nopolicy/FrozenProperties.java diff --git a/pljava/src/main/java/org/postgresql/pljava/nopolicy/package-info.java b/pljava/src/main/java/org/spring-boot/pljava/nopolicy/package-info.java similarity index 80% rename from pljava/src/main/java/org/postgresql/pljava/nopolicy/package-info.java rename to pljava/src/main/java/org/spring-boot/pljava/nopolicy/package-info.java index 4b122cae1..470ccedd6 100644 --- a/pljava/src/main/java/org/postgresql/pljava/nopolicy/package-info.java +++ b/pljava/src/main/java/org/spring-boot/pljava/nopolicy/package-info.java @@ -3,4 +3,3 @@ * in Java 24 and later with no security policy enforcement. * @author Chapman Flack */ -package org.postgresql.pljava.nopolicy; diff --git a/pljava/src/main/java/org/postgresql/pljava/policy/TrialPolicy.java b/pljava/src/main/java/org/spring-boot/pljava/policy/TrialPolicy.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/policy/TrialPolicy.java rename to pljava/src/main/java/org/spring-boot/pljava/policy/TrialPolicy.java index 320a66c48..b8dfadead 100644 --- a/pljava/src/main/java/org/postgresql/pljava/policy/TrialPolicy.java +++ b/pljava/src/main/java/org/spring-boot/pljava/policy/TrialPolicy.java @@ -17,7 +17,6 @@ import java.security.CodeSource; import java.security.NoSuchAlgorithmException; -import java.security.Permission; import java.security.PermissionCollection; import java.security.Policy; import java.security.ProtectionDomain; diff --git a/pljava/src/main/java/org/postgresql/pljava/policy/package-info.java b/pljava/src/main/java/org/spring-boot/pljava/policy/package-info.java similarity index 95% rename from pljava/src/main/java/org/postgresql/pljava/policy/package-info.java rename to pljava/src/main/java/org/spring-boot/pljava/policy/package-info.java index dc411b58b..800fa60ab 100644 --- a/pljava/src/main/java/org/postgresql/pljava/policy/package-info.java +++ b/pljava/src/main/java/org/spring-boot/pljava/policy/package-info.java @@ -19,4 +19,3 @@ * This package is exported to {@code java.base} to provide a custom * {@code Permission} that can be granted in policy. */ -package org.postgresql.pljava.policy; diff --git a/pljava/src/main/java/org/postgresql/pljava/sqlj/EntryStreamHandler.java b/pljava/src/main/java/org/spring-boot/pljava/sqlj/EntryStreamHandler.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/sqlj/EntryStreamHandler.java rename to pljava/src/main/java/org/spring-boot/pljava/sqlj/EntryStreamHandler.java diff --git a/pljava/src/main/java/org/postgresql/pljava/sqlj/Handler.java b/pljava/src/main/java/org/spring-boot/pljava/sqlj/Handler.java similarity index 100% rename from pljava/src/main/java/org/postgresql/pljava/sqlj/Handler.java rename to pljava/src/main/java/org/spring-boot/pljava/sqlj/Handler.java diff --git a/pljava/src/main/java/org/postgresql/pljava/sqlj/Loader.java b/pljava/src/main/java/org/spring-boot/pljava/sqlj/Loader.java similarity index 99% rename from pljava/src/main/java/org/postgresql/pljava/sqlj/Loader.java rename to pljava/src/main/java/org/spring-boot/pljava/sqlj/Loader.java index ba21a7153..139dd0c88 100644 --- a/pljava/src/main/java/org/postgresql/pljava/sqlj/Loader.java +++ b/pljava/src/main/java/org/spring-boot/pljava/sqlj/Loader.java @@ -16,7 +16,7 @@ import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; -import java.lang.invoke.MethodType; + import static java.lang.invoke.MethodType.methodType; import java.net.MalformedURLException; @@ -36,7 +36,6 @@ import java.sql.SQLException; import java.sql.Statement; -import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; diff --git a/pljava/src/main/java/org/postgresql/pljava/sqlj/package-info.java b/pljava/src/main/java/org/spring-boot/pljava/sqlj/package-info.java similarity index 83% rename from pljava/src/main/java/org/postgresql/pljava/sqlj/package-info.java rename to pljava/src/main/java/org/spring-boot/pljava/sqlj/package-info.java index d45e110ba..c9910642f 100644 --- a/pljava/src/main/java/org/postgresql/pljava/sqlj/package-info.java +++ b/pljava/src/main/java/org/spring-boot/pljava/sqlj/package-info.java @@ -4,4 +4,3 @@ boolean) installJar}. * @author Thomas Hallgren */ -package org.postgresql.pljava.sqlj; diff --git a/pom.xml b/pom.xml index 1063d27db..bf893f5cc 100644 --- a/pom.xml +++ b/pom.xml @@ -56,8 +56,11 @@ pljava-so pljava-ant pljava-examples + pljava-examples-spring-boot pljava-packaging pljava-pgxs + pljava-examples-spring-boot/test-framework + pljava-examples-spring-boot/backend @@ -99,7 +102,25 @@ 4.13.1 test - + + com.zaxxer + HikariCP + 6.2.0 + test + + + org.springframework + spring-beans + 6.2.7 + test + + + org.testcontainers + testcontainers + 1.21.0 + test + +