Skip to content

Commit

Permalink
Merge branch 'main' into QDOCS-114-Annotations-for-Quarkus-endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
MichalMaler authored Jan 20, 2023
2 parents d989635 + 2369fb1 commit 57b31a6
Show file tree
Hide file tree
Showing 65 changed files with 1,581 additions and 70 deletions.
2 changes: 1 addition & 1 deletion .github/native-tests.json
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
{
"category": "Misc4",
"timeout": 75,
"test-modules": "picocli-native, gradle, micrometer-mp-metrics, micrometer-prometheus, logging-json, jaxp, jaxb, opentelemetry, webjars-locator",
"test-modules": "picocli-native, gradle, micrometer-mp-metrics, micrometer-prometheus, logging-json, jaxp, jaxb, opentelemetry, opentelemetry-jdbc-instrumentation, webjars-locator",
"os-name": "ubuntu-latest"
},
{
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-istio.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
minikube version: v1.16.0
kubernetes version: ${{ matrix.kubernetes }}
github token: ${{ secrets.GITHUB_TOKEN }}
start args: '--addons=metrics-server --force'
start args: '--embed-certs --addons=metrics-server --force'
- name: Quay login
uses: docker/login-action@v2
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,5 @@ public interface Capability {
String REDIS_CLIENT = QUARKUS_PREFIX + "redis";

String CACHE = QUARKUS_PREFIX + "cache";
String JDBC_ORACLE = QUARKUS_PREFIX + "jdbc.oracle";
}
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,6 @@ public enum MonitoringOption {
HEAPDUMP,
JVMSTAT,
JFR,
ALL,
TRUE // only needed to support -Dquarkus.native.monitoring
ALL
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import java.util.stream.Stream;

import org.apache.commons.lang3.SystemUtils;
import org.eclipse.microprofile.config.ConfigProvider;
import org.jboss.logging.Logger;

import io.quarkus.bootstrap.util.IoUtils;
Expand Down Expand Up @@ -830,17 +829,10 @@ public NativeImageInvokerInfo build() {

if (nativeConfig.monitoring.isPresent()) {
List<NativeConfig.MonitoringOption> monitoringOptions = nativeConfig.monitoring.get();
if (monitoringOptions.stream().anyMatch(o -> o == NativeConfig.MonitoringOption.TRUE
|| o == NativeConfig.MonitoringOption.ALL)) {
nativeImageArgs.add("--enable-monitoring");
if (!monitoringOptions.isEmpty()) {
nativeImageArgs.add("--enable-monitoring=" + monitoringOptions.stream()
.map(o -> o.name().toLowerCase(Locale.ROOT)).collect(Collectors.joining(",")));
}
nativeImageArgs
.add("--enable-monitoring=" + monitoringOptions.stream().map(o -> o.name().toLowerCase(
Locale.ROOT)).collect(Collectors.joining(",")));
} else if (ConfigProvider.getConfig().getConfigValue("quarkus.native.monitoring").getValue() != null) {
// this only happens when a user has configured 'quarkus.native.monitoring='
// we want to support this use case as GraalVM allows the use of '--enable-monitoring' without an argument
nativeImageArgs.add("--enable-monitoring");
}
if (nativeConfig.autoServiceLoaderRegistration) {
nativeImageArgs.add("-H:+UseServiceLoaderFeature");
Expand Down
22 changes: 0 additions & 22 deletions devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@
import io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext;
import io.quarkus.bootstrap.resolver.maven.BootstrapMavenContextConfig;
import io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver;
import io.quarkus.bootstrap.resolver.maven.options.BootstrapMavenOptions;
import io.quarkus.bootstrap.util.BootstrapUtils;
import io.quarkus.bootstrap.workspace.ArtifactSources;
import io.quarkus.bootstrap.workspace.SourceDir;
Expand Down Expand Up @@ -1184,7 +1183,6 @@ private QuarkusDevModeLauncher newLauncher(Boolean debugPortOk) throws Exception
if (argsString != null) {
builder.applicationArgs(argsString);
}
propagateUserProperties(builder);

return builder.build();
}
Expand All @@ -1207,26 +1205,6 @@ private void setJvmArgs(Builder builder) throws Exception {

}

private void propagateUserProperties(MavenDevModeLauncher.Builder builder) {
Properties userProps = BootstrapMavenOptions.newInstance().getSystemProperties();
if (userProps == null) {
return;
}
final StringBuilder buf = new StringBuilder();
buf.append("-D");
for (Object o : userProps.keySet()) {
String name = o.toString();
final String value = userProps.getProperty(name);
buf.setLength(2);
buf.append(name);
if (value != null && !value.isEmpty()) {
buf.append('=');
buf.append(value);
}
builder.jvmArgs(buf.toString());
}
}

private void applyCompilerFlag(Optional<Xpp3Dom> compilerPluginConfiguration, String flagName,
Consumer<String> builderCall) {
compilerPluginConfiguration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ private String createContainerImage(ContainerImageConfig containerImageConfig, D
}
}

if (pushContainerImage) {
if (!useBuildx && pushContainerImage) {
// If not using buildx, push the images
loginToRegistryIfNeeded(containerImageConfig, containerImageInfo, dockerConfig);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class DevServicesDatasourceContainerConfig {
private final Optional<String> dbName;
private final Optional<String> username;
private final Optional<String> password;
private final Optional<String> initScriptPath;

public DevServicesDatasourceContainerConfig(Optional<String> imageName,
Map<String, String> containerProperties,
Expand All @@ -22,7 +23,8 @@ public DevServicesDatasourceContainerConfig(Optional<String> imageName,
Optional<String> command,
Optional<String> dbName,
Optional<String> username,
Optional<String> password) {
Optional<String> password,
Optional<String> initScriptPath) {
this.imageName = imageName;
this.containerProperties = containerProperties;
this.additionalJdbcUrlProperties = additionalJdbcUrlProperties;
Expand All @@ -31,6 +33,7 @@ public DevServicesDatasourceContainerConfig(Optional<String> imageName,
this.dbName = dbName;
this.username = username;
this.password = password;
this.initScriptPath = initScriptPath;
}

public Optional<String> getImageName() {
Expand Down Expand Up @@ -64,4 +67,8 @@ public Optional<String> getUsername() {
public Optional<String> getPassword() {
return password;
}

public Optional<String> getInitScriptPath() {
return initScriptPath;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,8 @@ private RunningDevService startDevDb(String dbName,
dataSourceBuildTimeConfig.devservices.command,
dataSourceBuildTimeConfig.devservices.dbName,
dataSourceBuildTimeConfig.devservices.username,
dataSourceBuildTimeConfig.devservices.password);
dataSourceBuildTimeConfig.devservices.password,
dataSourceBuildTimeConfig.devservices.initScriptPath);

DevServicesDatasourceProvider.RunningDevServicesDatasource datasource = devDbProvider
.startDatabase(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,12 @@ public class DevServicesBuildTimeConfig {
*/
@ConfigItem
public Optional<String> password;

/**
* Path to a SQL script that will be loaded from the classpath and applied to the Dev Service database
*
* If the provider is not container based (e.g. a H2 or Derby Database) then this has no effect.
*/
@ConfigItem
public Optional<String> initScriptPath;
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt

containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
containerConfig.getCommand().ifPresent(container::setCommand);
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);
container.start();

LOG.info("Dev Services for IBM Db2 started.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt

containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
containerConfig.getCommand().ifPresent(container::setCommand);
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);

container.start();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt

containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
containerConfig.getCommand().ifPresent(container::setCommand);
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);

container.start();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt

containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
containerConfig.getCommand().ifPresent(container::setCommand);
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);

container.start();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt

containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
containerConfig.getCommand().ifPresent(container::setCommand);
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);

container.start();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt

containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
containerConfig.getCommand().ifPresent(container::setCommand);
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);

container.start();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@
import io.quarkus.deployment.builditem.SslNativeConfigBuildItem;
import io.quarkus.deployment.builditem.nativeimage.JPMSExportBuildItem;
import io.quarkus.deployment.builditem.nativeimage.NativeImageConfigBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem;
import io.quarkus.jdbc.db2.runtime.DB2AgroalConnectionConfigurer;
import io.quarkus.jdbc.db2.runtime.DB2ServiceBindingConverter;

public class JDBCDB2Processor {

private static final String DB2_DRIVER_CLASS = "com.ibm.db2.jcc.DB2Driver";

@BuildStep
FeatureBuildItem feature() {
return new FeatureBuildItem(Feature.JDBC_DB2);
Expand All @@ -30,7 +33,7 @@ FeatureBuildItem feature() {
@BuildStep
void registerDriver(BuildProducer<JdbcDriverBuildItem> jdbcDriver,
SslNativeConfigBuildItem sslNativeConfigBuildItem) {
jdbcDriver.produce(new JdbcDriverBuildItem(DatabaseKind.DB2, "com.ibm.db2.jcc.DB2Driver",
jdbcDriver.produce(new JdbcDriverBuildItem(DatabaseKind.DB2, DB2_DRIVER_CLASS,
"com.ibm.db2.jcc.DB2XADataSource"));
}

Expand All @@ -51,6 +54,15 @@ void configureAgroalConnection(BuildProducer<AdditionalBeanBuildItem> additional
}
}

@BuildStep
void registerDriverForReflection(BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
//Not strictly necessary when using Agroal, as it also registers
//any JDBC driver being configured explicitly through its configuration.
//We register it for the sake of people not using Agroal,
//for example when the driver is used with OpenTelemetry JDBC instrumentation.
reflectiveClass.produce(new ReflectiveClassBuildItem(false, false, DB2_DRIVER_CLASS));
}

@BuildStep
NativeImageConfigBuildItem build() {
// The DB2 JDBC driver has been updated with conditional checks for the
Expand Down
5 changes: 5 additions & 0 deletions extensions/jdbc/jdbc-oracle/runtime/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extension-maven-plugin</artifactId>
<configuration>
<capabilities>
<provides>io.quarkus.jdbc.oracle</provides>
</capabilities>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package io.quarkus.jdbc.oracle.runtime.graal;

import java.security.SecureRandom;

import com.oracle.svm.core.annotate.Alias;
import com.oracle.svm.core.annotate.InjectAccessors;
import com.oracle.svm.core.annotate.TargetClass;

/**
* Substitutions required when `jdbc-oracle` is combined with `jdbc-db2`.
*/
@TargetClass(className = "java.rmi.server.ObjID")
public final class ObjIdSubstitutions {

@Alias
@InjectAccessors(SecureRandomAccessor.class)
private static SecureRandom secureRandom;

}

class SecureRandomAccessor {
private static volatile SecureRandom RANDOM;

static SecureRandom get() {
SecureRandom result = RANDOM;
if (result == null) {
/* Lazy initialization on first access. */
result = initializeOnce();
}
return result;
}

private static synchronized SecureRandom initializeOnce() {
SecureRandom result = RANDOM;
if (result != null) {
/* Double-checked locking is OK because INSTANCE is volatile. */
return result;
}

result = new SecureRandom();
RANDOM = result;
return result;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package io.quarkus.jdbc.postgresql.deployment;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;

import javax.inject.Inject;
import javax.sql.DataSource;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.test.QuarkusUnitTest;

public class DevServicesPostgresqlDatasourceWithInitScriptTestCase {

@RegisterExtension
static QuarkusUnitTest test = new QuarkusUnitTest()
.withApplicationRoot(javaArchive -> javaArchive.addAsResource("init-db.sql"))
.overrideConfigKey("quarkus.datasource.db-kind", "postgresql")
.overrideConfigKey("quarkus.datasource.devservices.init-script-path", "init-db.sql");

@Inject
DataSource ds;

@Test
@DisplayName("Test if init-script-path executed successfully")
public void testDatasource() throws Exception {
int result = 0;
try (Connection con = ds.getConnection();
CallableStatement cs = con.prepareCall("SELECT my_func()");
ResultSet rs = cs.executeQuery()) {
if (rs.next()) {
result = rs.getInt(1);
}
}
assertEquals(100, result, "The init script should have been executed");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CREATE OR REPLACE FUNCTION my_func() RETURNS integer LANGUAGE plpgsql as $func$ BEGIN return 100; END $func$;
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package io.quarkus.opentelemetry.deployment;

import java.util.List;

import io.quarkus.agroal.spi.JdbcDataSourceBuildItem;
import io.quarkus.builder.item.SimpleBuildItem;

/**
* Contains list of all {@link io.quarkus.agroal.spi.JdbcDataSourceBuildItem} using OpenTelemetryDriver.
*/
public final class OpenTelemetryDriverJdbcDataSourcesBuildItem extends SimpleBuildItem {

public final List<JdbcDataSourceBuildItem> jdbcDataSources;

OpenTelemetryDriverJdbcDataSourcesBuildItem(List<JdbcDataSourceBuildItem> jdbcDataSources) {
this.jdbcDataSources = List.copyOf(jdbcDataSources);
}
}
Loading

0 comments on commit 57b31a6

Please sign in to comment.