Compare commits

..

18 Commits

Author SHA1 Message Date
Marcus Da Coregio
6f1c039665 Release 3.1.0-M1 2023-03-21 14:40:02 -03:00
Marcus Da Coregio
8015f19f5e Update to reactor-bom:2022.0.5
Closes gh-2272
2023-03-21 14:26:38 -03:00
Marcus Da Coregio
25055b05c9 Update to jackson-bom:2.14.2
Closes gh-2273
2023-03-21 14:26:22 -03:00
Marcus Da Coregio
08d11b7ba0 Update to org.springframework:spring-framework-bom:6.0.7
Closes gh-2274
2023-03-21 14:25:56 -03:00
Marcus Da Coregio
f1ea897e3d Update to spring-data-bom:2022.0.4
Closes gh-2275
2023-03-21 14:25:38 -03:00
Marcus Da Coregio
4cb2ff3ca4 Update to spring-security-bom:6.0.2
Closes gh-2276
2023-03-21 14:25:20 -03:00
Marcus Da Coregio
1b4d58711e Update to testcontainers-bom:1.17.6
Closes gh-2277
2023-03-21 14:25:01 -03:00
Marcus Da Coregio
f9dbd1a0ce Merge branch '3.0.x' 2023-03-21 14:18:48 -03:00
Marcus Da Coregio
6649205bb7 Merge branch '2.7.x' into 3.0.x 2023-03-21 14:18:02 -03:00
Marcus Da Coregio
220304faad Next Development Version 2023-03-21 11:02:13 -03:00
Marcus Da Coregio
bd81ee5a49 Next Development Version 2023-03-21 10:59:24 -03:00
Marcus Da Coregio
ec6fd8a902 Release 2.7.1 2023-03-21 09:58:55 -03:00
Marcus Da Coregio
0320e60cf0 Update spring-security-bom to 5.7.7
Closes gh-2264
2023-03-21 09:55:04 -03:00
Marcus Da Coregio
90d0c1d778 Update spring-data-bom to 2021.2.9
Closes gh-2263
2023-03-21 09:55:04 -03:00
Marcus Da Coregio
058ae80419 Update spring-framework-bom to 5.3.26
Closes gh-2262
2023-03-21 09:55:04 -03:00
Marcus Da Coregio
89fb210f18 Update reactor-bom to 2020.0.30
Closes gh-2260
2023-03-21 09:55:04 -03:00
Marcus Da Coregio
cf84ac7ec9 Introduce Utility Method to Replace Default Table Name
Closes gh-2256
2023-03-15 12:02:44 -03:00
Marcus Da Coregio
ae05044c46 Next Development Version 2023-03-08 15:53:40 -03:00
4 changed files with 130 additions and 6 deletions

View File

@@ -1,3 +1,3 @@
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
version=3.0.1
version=3.1.0-M1

View File

@@ -2,12 +2,12 @@ dependencyManagement {
imports {
mavenBom 'io.projectreactor:reactor-bom:2022.0.5'
mavenBom 'com.fasterxml.jackson:jackson-bom:2.14.2'
mavenBom 'org.junit:junit-bom:5.9.2'
mavenBom 'org.junit:junit-bom:5.9.1'
mavenBom 'org.mockito:mockito-bom:4.8.1'
mavenBom 'org.springframework:spring-framework-bom:6.0.6'
mavenBom 'org.springframework.data:spring-data-bom:2022.0.3'
mavenBom 'org.springframework:spring-framework-bom:6.0.7'
mavenBom 'org.springframework.data:spring-data-bom:2022.0.4'
mavenBom 'org.springframework.security:spring-security-bom:6.0.2'
mavenBom 'org.testcontainers:testcontainers-bom:1.17.3'
mavenBom 'org.testcontainers:testcontainers-bom:1.17.6'
}
dependencies {
@@ -34,7 +34,7 @@ dependencyManagement {
dependency 'org.hamcrest:hamcrest:2.2'
dependency 'org.hsqldb:hsqldb:2.7.0'
dependency 'org.mariadb.jdbc:mariadb-java-client:3.0.7'
dependencySet(group: 'org.mongodb', version: '4.8.2') {
dependencySet(group: 'org.mongodb', version: '4.8.0-beta0') {
entry 'mongodb-driver-core'
entry 'mongodb-driver-sync'
entry 'mongodb-driver-reactivestreams'

View File

@@ -0,0 +1,53 @@
/*
* Copyright 2014-2023 the original author or authors.
*
* 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
*
* https://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.springframework.session.jdbc.util;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.Resource;
import org.springframework.session.jdbc.JdbcIndexedSessionRepository;
/**
* Utility class for schema files.
*
* @author Marcus da Coregio
* @since 3.1
*/
public final class JdbcSchemaUtils {
private JdbcSchemaUtils() {
}
/**
* Loads the content of the provided schema resource and replaces the
* {@link JdbcIndexedSessionRepository#DEFAULT_TABLE_NAME} by the provided table name.
* @param schemaResource the schema resource
* @param tableName the table name to replace
* @return the schema resource with the table name replaced
*/
public static Resource replaceDefaultTableName(Resource schemaResource, String tableName) throws IOException {
try (InputStream inputStream = schemaResource.getInputStream()) {
String schemaScript = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);
String newSchema = schemaScript.replace(JdbcIndexedSessionRepository.DEFAULT_TABLE_NAME, tableName);
return new ByteArrayResource(newSchema.getBytes(StandardCharsets.UTF_8));
}
}
}

View File

@@ -0,0 +1,71 @@
/*
* Copyright 2014-2023 the original author or authors.
*
* 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
*
* https://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.springframework.session.jdbc.util;
import java.io.IOException;
import java.util.Arrays;
import java.util.stream.Stream;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for {@link JdbcSchemaUtils}.
*
* @author Marcus da Coregio
*/
class JdbcSchemaUtilsTests {
@ParameterizedTest
@MethodSource("getCreateSchemaFiles")
void replaceCreateSchemaTableName(Resource schema) throws IOException {
Resource newTableNameSchema = JdbcSchemaUtils.replaceDefaultTableName(schema, "NEW_TABLE_NAME");
String schemaScript = new String(newTableNameSchema.getInputStream().readAllBytes());
assertThat(schemaScript).doesNotContain("SPRING_SESSION", "SPRING_SESSION_ATTRIBUTES", "SPRING_SESSION_IX1",
"SPRING_SESSION_IX2", "SPRING_SESSION_IX3");
assertThat(schemaScript).contains("NEW_TABLE_NAME", "NEW_TABLE_NAME_ATTRIBUTES", "NEW_TABLE_NAME_IX1",
"NEW_TABLE_NAME_IX2", "NEW_TABLE_NAME_IX3");
}
@ParameterizedTest
@MethodSource("getDropSchemaFiles")
void replaceDropSchemaTableName(Resource schema) throws IOException {
Resource newTableNameSchema = JdbcSchemaUtils.replaceDefaultTableName(schema, "NEW_TABLE_NAME");
String schemaScript = new String(newTableNameSchema.getInputStream().readAllBytes());
assertThat(schemaScript).doesNotContain("SPRING_SESSION", "SPRING_SESSION_ATTRIBUTES");
assertThat(schemaScript).contains("NEW_TABLE_NAME", "NEW_TABLE_NAME_ATTRIBUTES");
}
private static Stream<Resource> getCreateSchemaFiles() throws IOException {
return getSchemaFiles().filter((resource) -> !resource.getFilename().contains("drop"));
}
private static Stream<Resource> getDropSchemaFiles() throws IOException {
return getSchemaFiles().filter((resource) -> resource.getFilename().contains("drop"));
}
private static Stream<Resource> getSchemaFiles() throws IOException {
return Arrays.stream(new PathMatchingResourcePatternResolver()
.getResources("classpath*:org/springframework/session/jdbc/schema-*.sql"));
}
}