Skip to content

Commit

Permalink
Make SCDF and Skipper compilable for boot 3.x
Browse files Browse the repository at this point in the history
* Replaced SocketUtils with TestSocketUtils
** It was moved to the test package.
* Migrated httpclient to httpclient5
** Removed use of httpclient 4.x dependencies added yesterday
* Updated Types in AuditRecord Entity to use JdbcTypeCode
* Security Modules need to be compiled with Boot3 and securty 6
* Update SCDF to use deployer 3.0.x
* Update SCDF pom files to create Java 17 jars
* Exclude javax.annotation from deployer artifacts.
* Add jakarta annotation dependencies
* Update code from javax to jakarta
* Replaced Entity  @type with  @JavaTypeCode
* Update JobParam to batch 5.
* Update httpclient package to httpclient5 package
  • Loading branch information
cppwfs committed Jan 30, 2024
1 parent 2003077 commit 15712ec
Show file tree
Hide file tree
Showing 76 changed files with 406 additions and 326 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void init(WebSecurity builder) {

@Override
public void configure(WebSecurity builder) {
builder.ignoring().antMatchers("/**");
builder.ignoring().requestMatchers("/**");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,9 @@
import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.configurers.ExceptionHandlingConfigurer;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.security.config.annotation.web.configurers.HttpBasicConfigurer;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
Expand Down Expand Up @@ -104,8 +105,9 @@
* @author Corneil du Plessis
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(WebSecurityConfigurerAdapter.class)
@ConditionalOnMissingBean(WebSecurityConfigurerAdapter.class)
// SCDF 3.0 Migration - Need to re add this later with a different class or bean.
// @ConditionalOnClass(WebSecurityConfigurerAdapter.class)
// @ConditionalOnMissingBean(WebSecurityConfigurerAdapter.class)
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.ANY)
@EnableWebSecurity
@Conditional(OnOAuth2SecurityEnabled.class)
Expand All @@ -122,7 +124,7 @@
OAuthSecurityConfiguration.ProviderManagerConfig.class,
OAuthSecurityConfiguration.AuthenticationProviderConfig.class
})
public class OAuthSecurityConfiguration extends WebSecurityConfigurerAdapter {
public class OAuthSecurityConfiguration {

private static final Logger logger = LoggerFactory.getLogger(OAuthSecurityConfiguration.class);

Expand Down Expand Up @@ -199,8 +201,7 @@ public void setSecurityStateBean(SecurityStateBean securityStateBean) {
this.securityStateBean = securityStateBean;
}

@Override
protected void configure(HttpSecurity http) throws Exception {
protected HttpBasicConfigurer configure(HttpSecurity http) throws Exception {

final RequestMatcher textHtmlMatcher = new MediaTypeRequestMatcher(
new BrowserDetectingContentNegotiationStrategy(),
Expand Down Expand Up @@ -238,7 +239,7 @@ protected void configure(HttpSecurity http) throws Exception {
security.anyRequest().denyAll();


http.httpBasic().and()
ExceptionHandlingConfigurer configurer = http.httpBasic().and()
.logout()
.logoutSuccessHandler(logoutSuccessHandler)
.and().csrf().disable()
Expand Down Expand Up @@ -268,6 +269,7 @@ else if (oAuth2ResourceServerProperties.getJwt().getJwkSetUri() != null) {
}

this.securityStateBean.setAuthenticationEnabled(true);
return http.getConfigurer(HttpBasicConfigurer.class);
}

protected static String dashboard(AuthorizationProperties authorizationProperties, String path) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public static ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInter
String attribute = matcher.group(3).trim();

logger.info("Authorization '{}' | '{}' | '{}'", method, attribute, urlPattern);
security = security.antMatchers(method, urlPattern).access(attribute);
security = security.requestMatchers(method, urlPattern).access(attribute);
}
return security;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
*/
package org.springframework.cloud.dataflow.aggregate.task;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;

import org.slf4j.Logger;
Expand Down Expand Up @@ -91,8 +90,4 @@ public AggregateTaskExplorer aggregateTaskExplorer(
taskDeploymentReader);
}

@PostConstruct
public void setup() {
logger.info("created: org.springframework.cloud.dataflow.aggregate.task.AggregateTaskConfiguration");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package org.springframework.cloud.dataflow.aggregate.task.impl;

import java.time.ZoneId;
import java.util.List;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -148,8 +149,8 @@ public AggregateTaskExecution from(TaskExecution execution, String schemaTarget,
execution.getExecutionId(),
execution.getExitCode(),
execution.getTaskName(),
execution.getStartTime(),
execution.getEndTime(),
java.util.Date.from(execution.getStartTime().toInstant(ZoneId.systemDefault().getRules().getOffset(execution.getStartTime()))),
java.util.Date.from(execution.getEndTime().toInstant(ZoneId.systemDefault().getRules().getOffset(execution.getEndTime()))),
execution.getExitMessage(),
execution.getArguments(),
execution.getErrorMessage(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
*/
package org.springframework.cloud.dataflow.aggregate.task.impl;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -278,8 +277,4 @@ public AggregateTaskExecution getLatestTaskExecutionForTaskName(String taskName)
return aggregateExecutionSupport.from(taskExplorer.getLatestTaskExecutionForTaskName(taskName), target.getName(), getPlatformName(taskName));
}

@PostConstruct
public void setup() {
logger.info("created: org.springframework.cloud.dataflow.aggregate.task.impl.DefaultAggregateTaskExplorer");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package org.springframework.cloud.dataflow.aggregate.task.impl;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
Expand Down Expand Up @@ -65,8 +64,4 @@ public TaskRepository get(String schemaTarget) {
return repository;
}

@PostConstruct
public void setup() {
logger.info("created: org.springframework.cloud.dataflow.aggregate.task.impl.DefaultTaskRepositoryContainer");
}
}
4 changes: 2 additions & 2 deletions spring-cloud-dataflow-audit/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
Expand Down
2 changes: 1 addition & 1 deletion spring-cloud-dataflow-build/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
</modules>
<url>https://spring.io/projects/spring-cloud-dataflow</url>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<resource.delimiter>@</resource.delimiter>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Keep spring boot version in sync between spring-cloud-dataflow-build and spring-boot-dependencies (parent and properties) -->
<spring-boot.version>3.2.2</spring-boot.version>
<spring-cloud.version>2021.0.9</spring-cloud.version>
<spring-cloud.version>2023.0.0</spring-cloud.version>
<spring-shell.version>2.1.13</spring-shell.version>
<commons-io.version>2.15.1</commons-io.version>
<commons-text.version>1.11.0</commons-text.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
Expand Down
4 changes: 2 additions & 2 deletions spring-cloud-dataflow-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
Expand Down
2 changes: 1 addition & 1 deletion spring-cloud-dataflow-composed-task-runner/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

<packaging>jar</packaging>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<plexus.utils.version>3.3.0</plexus.utils.version>
<failIfNoTests>true</failIfNoTests>
<maven-javadoc-plugin.version>3.4.1</maven-javadoc-plugin.version>
Expand Down
6 changes: 3 additions & 3 deletions spring-cloud-dataflow-configuration-metadata/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-loader</artifactId>
<artifactId>spring-boot-loader-classic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand All @@ -73,8 +73,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.dataflow.container.registry.authorization.support.S3SignedRedirectRequestServerApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.util.SocketUtils;
import org.springframework.test.util.TestSocketUtils;

/**
* @author Adam J. Weigold
Expand All @@ -43,7 +43,7 @@ public S3SignedRedirectRequestServerResource() {
@Override
protected void before() throws Throwable {

this.s3SignedRedirectServerPort = SocketUtils.findAvailableTcpPort();
this.s3SignedRedirectServerPort = TestSocketUtils.findAvailableTcpPort();

logger.info("Setting S3 Signed Redirect Server port to " + this.s3SignedRedirectServerPort);

Expand Down
8 changes: 6 additions & 2 deletions spring-cloud-dataflow-container-registry/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-ecr</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5-fluent</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-resource-docker</artifactId>
Expand Down Expand Up @@ -76,8 +80,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@

package org.springframework.cloud.dataflow.container.registry;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
Expand All @@ -25,16 +28,19 @@
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.HttpHost;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.hc.client5.http.config.RequestConfig;
import org.apache.hc.client5.http.cookie.StandardCookieSpec;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager;
import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory;
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
import org.apache.hc.core5.http.HttpHost;
import org.apache.hc.core5.http.config.Lookup;
import org.apache.hc.core5.http.config.Registry;
import org.apache.hc.core5.http.config.RegistryBuilder;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;

import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.dataflow.container.registry.authorization.DropAuthorizationHeaderRequestRedirectStrategy;
Expand All @@ -43,6 +49,7 @@
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;


/**
* On demand creates a cacheable {@link RestTemplate} instances for the purpose of the Container Registry access.
* Created RestTemplates can be configured to use Http Proxy and/or bypassing the SSL verification.
Expand Down Expand Up @@ -174,16 +181,22 @@ public void checkServerTrusted(java.security.cert.X509Certificate[] certs, Strin

// Create a RestTemplate that uses custom request factory
return initRestTemplate(
HttpClients.custom()
.setSSLContext(sslContext)
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE),
httpClientBuilder(sslContext),
withHttpProxy,
extra);
}

private HttpClientBuilder httpClientBuilder(SSLContext sslContext) {
// Register http/s connection factories
Lookup<ConnectionSocketFactory> connSocketFactoryLookup = RegistryBuilder.<ConnectionSocketFactory> create()
.register("https", new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE))
.register("http", new PlainConnectionSocketFactory())
.build();
return HttpClients.custom()
.setConnectionManager(new BasicHttpClientConnectionManager(connSocketFactoryLookup));
}
private RestTemplate initRestTemplate(HttpClientBuilder clientBuilder, boolean withHttpProxy, Map<String, String> extra) {

clientBuilder.setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build());
clientBuilder.setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(StandardCookieSpec.RELAXED).build());

// Set the HTTP proxy if configured.
if (withHttpProxy) {
Expand All @@ -199,7 +212,7 @@ private RestTemplate initRestTemplate(HttpClientBuilder clientBuilder, boolean w
clientBuilder
.setRedirectStrategy(new DropAuthorizationHeaderRequestRedirectStrategy(extra))
// Azure redirects may contain double slashes and on default those are normilised
.setDefaultRequestConfig(RequestConfig.custom().setNormalizeUri(false).build())
.setDefaultRequestConfig(RequestConfig.custom().build())
.build());

// DockerHub response's media-type is application/octet-stream although the content is in JSON.
Expand Down
Loading

0 comments on commit 15712ec

Please sign in to comment.