Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,10 @@ task codeCoverageReport(type: JacocoReport) {
,project('grpc-client-spring-boot-starter').sourceSets.main)

reports {
xml.enabled true
xml.required.set(true)
xml.destination = new File(buildDir,"reports/jacoco/report.xml")
html.enabled true
csv.enabled false
html.required.set(true)
csv.required.set(true)
}
}

Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
grpcVersion=1.58.0


springBootVersion=3.1.1
springCloudVersion=2022.0.3
springBootVersion=3.4.4
springCloudVersion=2024.0.1

gradleErrorPronePluginVersion=3.0.1
errorProneVersion=2.16
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
10 changes: 5 additions & 5 deletions gradlew
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh

#
# Copyright © 2015-2021 the original authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -32,10 +32,10 @@
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
Expand Down
4 changes: 2 additions & 2 deletions grpc-client-spring-boot-starter/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ task delombok(type: io.franzbecker.gradle.lombok.task.DelombokTask) {
}

task sourceJar(type: Jar) {
classifier "sources"
archiveClassifier.set("sources")
from delombok
}

task javadocJar(type: Jar, dependsOn: javadoc) {
classifier "javadoc"
archiveClassifier.set("javadoc")
from javadoc.destinationDir
}

Expand Down
13 changes: 8 additions & 5 deletions grpc-spring-boot-starter-demo/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import org.lognet.springboot.grpc.gradle.ReactiveFeature

buildscript {
ext.kotlin_version = '1.9.0'
ext.kotlin_version = '1.9.10'
repositories {
mavenCentral()
}
Expand Down Expand Up @@ -98,8 +98,8 @@ dependencies {
testImplementation "org.springframework.cloud:spring-cloud-config-client"
testImplementation "org.springframework.cloud:spring-cloud-starter-bootstrap"

testImplementation "com.playtika.testcontainers:embedded-keycloak:2.2.14"
testImplementation "com.playtika.testcontainers:embedded-consul:2.2.14"
testImplementation "com.playtika.testcontainers:embedded-keycloak:3.1.11"
testImplementation "com.playtika.testcontainers:embedded-consul:3.1.11"


testImplementation 'org.hamcrest:hamcrest:2.2'
Expand All @@ -111,13 +111,13 @@ dependencies {

bothPureAndShadedNettyTestImplementation "io.grpc:grpc-netty:${grpcVersion}"

kafkaStreamTestImplementation "com.playtika.testcontainers:embedded-kafka:2.2.14"
kafkaStreamTestImplementation "com.playtika.testcontainers:embedded-kafka:3.1.11"
kafkaStreamTestImplementation "org.springframework.cloud:spring-cloud-starter-stream-kafka"

reactiveTestImplementation 'org.springframework.boot:spring-boot-starter-data-r2dbc'
reactiveTestImplementation 'org.postgresql:r2dbc-postgresql'
reactiveTestImplementation 'org.postgresql:postgresql'
reactiveTestImplementation "com.playtika.testcontainers:embedded-postgresql:2.2.14"
reactiveTestImplementation "com.playtika.testcontainers:embedded-postgresql:3.1.11"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"


Expand All @@ -131,6 +131,9 @@ configurations.all {
}
}

test {
jvmArgs('--add-opens=java.base/java.util=ALL-UNNAMED')
}
bootJar{
enabled false
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,41 +1,19 @@
package org.lognet.springboot.grpc.simple;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.TypeRef;
import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
import io.micrometer.prometheus.PrometheusConfig;
import org.awaitility.Awaitility;
import org.hamcrest.Matchers;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.lognet.springboot.grpc.GrpcServerTestBase;
import org.lognet.springboot.grpc.TestConfig;
import org.lognet.springboot.grpc.demo.DemoApp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.health.Status;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;

import java.time.Duration;
import java.util.Optional;
import java.util.Set;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,8 @@
import org.springframework.context.annotation.Import;
import org.springframework.context.event.EventListener;
import org.springframework.core.io.Resource;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;

import javax.validation.Valid;
import java.io.IOException;
import java.net.SocketAddress;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import io.micrometer.core.instrument.Tags;
import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.search.MeterNotFoundException;
import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheusmetrics.PrometheusConfig;
import org.awaitility.Awaitility;
import org.junit.Before;
import org.junit.Test;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@
import io.grpc.examples.GreeterOuterClass;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheusmetrics.PrometheusConfig;
import org.awaitility.Awaitility;
import org.hamcrest.Matchers;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.lognet.springboot.grpc.auth.FailedAuthGrpcSecurityConfig;
import org.lognet.springboot.grpc.demo.DemoApp;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.jayway.jsonpath.TypeRef;
import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheusmetrics.PrometheusConfig;
import org.awaitility.Awaitility;
import org.hamcrest.Matchers;
import org.junit.Test;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ spring:
oauth2:
resourceserver:
jwt:
issuer-uri: ${embedded.keycloak.auth-server-url}/realms/test-realm
issuer-uri: ${embedded.keycloak.auth-server-url}realms/test-realm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
spring.test.context.failure.threshold=10
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@
{
"id": "835a36c5-d647-49a2-b794-2f128ebed7c0",
"username": "keycloak-test",
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"enabled": true,
"credentials": [
{
Expand All @@ -57,5 +60,5 @@
}
}
],
"keycloakVersion": "8.0.1"
"keycloakVersion": "9.0.0"
}
4 changes: 2 additions & 2 deletions grpc-spring-boot-starter/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -96,15 +96,15 @@ tasks.googleJavaFormat {
}
task sourceJar(type: Jar) {
dependsOn(tasks.googleJavaFormat)
classifier "sources"
archiveClassifier.set("sources")
from delombokOutputDir
}
javadoc {
dependsOn tasks.googleJavaFormat
source = delombokOutputDir
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier "javadoc"
archiveClassifier.set("javadoc")
from javadoc.destinationDir
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
import org.springframework.security.access.vote.AffirmativeBased;
import org.springframework.security.access.vote.RoleVoter;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.ObjectPostProcessor;
import org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder;
import org.springframework.security.config.annotation.ObjectPostProcessor;
import org.springframework.security.config.annotation.SecurityBuilder;
import org.springframework.security.config.annotation.SecurityConfigurerAdapter;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,20 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor;
import org.springframework.security.config.annotation.ObjectPostProcessor;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationManagerResolver;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.ObjectPostProcessor;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.Collection;
import java.util.Optional;
Expand Down Expand Up @@ -130,6 +136,13 @@ public BearerTokenAuthSchemeSelector bearerTokenAuthSchemeSelector() {
return new BearerTokenAuthSchemeSelector();
}

@Configuration
@ConditionalOnClass(AuthenticationManager.class)
@ConditionalOnBean(ObjectPostProcessor.class)
@ConditionalOnMissingBean(value = { AuthenticationManager.class, AuthenticationProvider.class, UserDetailsService.class,
AuthenticationManagerResolver.class }, type = "org.springframework.security.oauth2.jwt.JwtDecoder")
static class DefaultUserDetailsServiceAutoConfiguration extends UserDetailsServiceAutoConfiguration {}

@Autowired(required = false)
@SuppressWarnings({ "rawtypes", "unchecked" })
public void setFilterChainProxySecurityConfigurer(ObjectPostProcessor<Object> objectPostProcessor) throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import org.lognet.springboot.grpc.security.jwt.JwtAuthProviderFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.security.config.annotation.ObjectPostProcessor;
import org.springframework.security.config.ObjectPostProcessor;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.oauth2.jwt.JwtDecoder;
Expand All @@ -26,7 +26,7 @@ protected GrpcSecurityConfigurerAdapter() {
public void setApplicationContext(ApplicationContext context) throws Exception {


ObjectPostProcessor<Object> objectPostProcessor = context.getBean(ObjectPostProcessor.class);
ObjectPostProcessor<Object> objectPostProcessor = context.getBean("objectPostProcessor", ObjectPostProcessor.class);
this.authenticationConfiguration = context.getBean(AuthenticationConfiguration.class);

authenticationManagerBuilder = authenticationConfiguration
Expand Down