You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2022/10/21 13:40:58 UTC

[syncope] branch master updated: Upgrading Spring Boot

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/master by this push:
     new 2502355999 Upgrading Spring Boot
2502355999 is described below

commit 2502355999da7292f15327ef568978123a9c5189
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu Oct 20 16:29:11 2022 +0200

    Upgrading Spring Boot
---
 .../client/console/panels/DomainWizardBuilder.java    |  6 ++++--
 core/persistence-jpa-json/pom.xml                     |  4 ++--
 .../src/main/resources/audit/audit_ojson.sql          |  4 ++++
 .../src/main/resources/core-myjson.properties         |  2 +-
 .../jpa/validation/entity/JPAPlainAttrValidator.java  |  4 ++--
 docker/core/pom.xml                                   |  6 +++---
 docker/core/src/main/resources/core-myjson.properties |  2 +-
 docker/core/src/main/resources/core-mysql.properties  |  2 +-
 fit/core-reference/pom.xml                            | 16 ++++++++--------
 .../src/main/resources/core-myjson.properties         |  2 +-
 .../src/main/resources/core-mysql.properties          |  2 +-
 pom.xml                                               |  4 ++--
 .../asciidoc/reference-guide/configuration/dbms.adoc  |  6 +++---
 src/main/asciidoc/reference-guide/howto/upgrade.adoc  | 19 +++++++++++++++++--
 14 files changed, 50 insertions(+), 29 deletions(-)

diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainWizardBuilder.java
index 5fb42f66a8..afb235e854 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainWizardBuilder.java
@@ -55,8 +55,10 @@ public class DomainWizardBuilder extends BaseAjaxWizardBuilder<Domain> {
 
     private static final List<String> DATABASE_PLATFORMS = List.of(
             "org.apache.openjpa.jdbc.sql.PostgresDictionary",
-            "org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)",
-            "org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)",
+            "org.apache.openjpa.jdbc.sql.MySQLDictionary"
+            + "(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)",
+            "org.apache.openjpa.jdbc.sql.MariaDBDictionary"
+            + "(blobTypeName=LONGBLOB,dateFractionDigits=3)",
             "org.apache.openjpa.jdbc.sql.SQLServerDictionary",
             "org.apache.openjpa.jdbc.sql.OracleDictionary",
             "org.apache.openjpa.jdbc.sql.H2Dictionary");
diff --git a/core/persistence-jpa-json/pom.xml b/core/persistence-jpa-json/pom.xml
index 71350950c1..ef63d64992 100644
--- a/core/persistence-jpa-json/pom.xml
+++ b/core/persistence-jpa-json/pom.xml
@@ -340,8 +340,8 @@ under the License.
       
       <dependencies>
         <dependency>
-          <groupId>mysql</groupId>
-          <artifactId>mysql-connector-java</artifactId>
+          <groupId>com.mysql</groupId>
+          <artifactId>mysql-connector-j</artifactId>
           <version>${jdbc.mysql.version}</version>
           <scope>test</scope>
         </dependency>
diff --git a/core/persistence-jpa-json/src/main/resources/audit/audit_ojson.sql b/core/persistence-jpa-json/src/main/resources/audit/audit_ojson.sql
index d4e39395f5..7e3c953d7d 100644
--- a/core/persistence-jpa-json/src/main/resources/audit/audit_ojson.sql
+++ b/core/persistence-jpa-json/src/main/resources/audit/audit_ojson.sql
@@ -22,3 +22,7 @@ CREATE TABLE AuditEntry (
   MESSAGE CLOB CHECK (MESSAGE IS JSON) NOT NULL,
   THROWABLE CLOB
 );
+
+-- The following index require Oracle TEXT to be installed on the given Oracle database:
+-- http://dbaflavours.blogspot.com/2012/09/ora-29833-indextype-does-not-exist_18.html
+CREATE SEARCH INDEX AuditEntry_MESSAGE_Index ON AuditEntry(MESSAGE) FOR JSON;
diff --git a/core/persistence-jpa-json/src/main/resources/core-myjson.properties b/core/persistence-jpa-json/src/main/resources/core-myjson.properties
index 997eaedb16..2d526fdab6 100644
--- a/core/persistence-jpa-json/src/main/resources/core-myjson.properties
+++ b/core/persistence-jpa-json/src/main/resources/core-myjson.properties
@@ -23,7 +23,7 @@ persistence.domain[0].jdbcDriver=com.mysql.cj.jdbc.Driver
 persistence.domain[0].jdbcURL=jdbc:mysql://localhost:3306/syncope?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8
 persistence.domain[0].dbUsername=syncope
 persistence.domain[0].dbPassword=syncope
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
+persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
 persistence.domain[0].orm=META-INF/spring-orm-myjson.xml
 persistence.domain[0].auditSql=audit_myjson.sql
 persistence.domain[0].poolMaxActive=10
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAPlainAttrValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAPlainAttrValidator.java
index 1a66833a0f..066b31fcfb 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAPlainAttrValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAPlainAttrValidator.java
@@ -43,8 +43,8 @@ public class JPAPlainAttrValidator extends AbstractValidator<PlainAttrCheck, Pla
             }
 
             if (!isValid) {
-                LOG.error("Invalid values for attribute " + attr + ": "
-                        + "schema=" + attr.getSchema().getKey() + ", values={}", attr.getValuesAsStrings());
+                LOG.error("Invalid values for attribute schema={}, values={}",
+                        attr.getSchema().getKey(), attr.getValuesAsStrings());
 
                 context.buildConstraintViolationWithTemplate(
                         getTemplate(EntityViolationType.InvalidValueList,
diff --git a/docker/core/pom.xml b/docker/core/pom.xml
index 3801c7418f..becb132879 100644
--- a/docker/core/pom.xml
+++ b/docker/core/pom.xml
@@ -124,8 +124,8 @@ under the License.
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>mysql</groupId>
-      <artifactId>mysql-connector-java</artifactId>
+      <groupId>com.mysql</groupId>
+      <artifactId>mysql-connector-j</artifactId>
       <version>${jdbc.mysql.version}</version>
       <scope>test</scope>
     </dependency>
@@ -180,7 +180,7 @@ under the License.
             <configuration>
               <target>
                 <copy file="${settings.localRepository}/org/postgresql/postgresql/${jdbc.postgresql.version}/postgresql-${jdbc.postgresql.version}.jar" todir="${project.build.outputDirectory}/lib" overwrite="true"/>
-                <copy file="${settings.localRepository}/mysql/mysql-connector-java/${jdbc.mysql.version}/mysql-connector-java-${jdbc.mysql.version}.jar" todir="${project.build.outputDirectory}/lib" overwrite="true"/>
+                <copy file="${settings.localRepository}/com/mysql/mysql-connector-j/${jdbc.mysql.version}/mysql-connector-j-${jdbc.mysql.version}.jar" todir="${project.build.outputDirectory}/lib" overwrite="true"/>
                 <copy file="${settings.localRepository}/org/mariadb/jdbc/mariadb-java-client/${jdbc.mariadb.version}/mariadb-java-client-${jdbc.mariadb.version}.jar" todir="${project.build.outputDirectory}/lib" overwrite="true"/>
                 <copy file="${settings.localRepository}/com/microsoft/sqlserver/mssql-jdbc/${jdbc.mssql.version}11/mssql-jdbc-${jdbc.mssql.version}11.jar" todir="${project.build.outputDirectory}/lib" overwrite="true"/>
                 <copy file="${settings.localRepository}/com/oracle/database/jdbc/ojdbc11/${jdbc.oracle.version}/ojdbc11-${jdbc.oracle.version}.jar" todir="${project.build.outputDirectory}/lib" overwrite="true"/>
diff --git a/docker/core/src/main/resources/core-myjson.properties b/docker/core/src/main/resources/core-myjson.properties
index d0e470f4d2..a8bbea0634 100644
--- a/docker/core/src/main/resources/core-myjson.properties
+++ b/docker/core/src/main/resources/core-myjson.properties
@@ -24,7 +24,7 @@ persistence.domain[0].jdbcDriver=com.mysql.cj.jdbc.Driver
 persistence.domain[0].jdbcURL=${DB_URL}
 persistence.domain[0].dbUsername=${DB_USER}
 persistence.domain[0].dbPassword=${DB_PASSWORD}
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
+persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
 persistence.domain[0].orm=META-INF/spring-orm-myjson.xml
 persistence.domain[0].auditSql=audit_myjson.sql
 persistence.domain[0].poolMaxActive=${DB_POOL_MAX}
diff --git a/docker/core/src/main/resources/core-mysql.properties b/docker/core/src/main/resources/core-mysql.properties
index 12b2f297b4..f268bc84c5 100644
--- a/docker/core/src/main/resources/core-mysql.properties
+++ b/docker/core/src/main/resources/core-mysql.properties
@@ -19,7 +19,7 @@ persistence.domain[0].jdbcDriver=com.mysql.cj.jdbc.Driver
 persistence.domain[0].jdbcURL=${DB_URL}
 persistence.domain[0].dbUsername=${DB_USER}
 persistence.domain[0].dbPassword=${DB_PASSWORD}
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
+persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
 persistence.domain[0].auditSql=audit_mysql_innodb.sql
 persistence.domain[0].poolMaxActive=${DB_POOL_MAX}
 persistence.domain[0].poolMinIdle=${DB_POOL_MIN}
diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml
index 571a6f2f93..336c390c2d 100644
--- a/fit/core-reference/pom.xml
+++ b/fit/core-reference/pom.xml
@@ -817,8 +817,8 @@ under the License.
       <id>myjson-it</id>
 
       <properties>
-        <jdbcdriver.groupId>mysql</jdbcdriver.groupId>
-        <jdbcdriver.artifactId>mysql-connector-java</jdbcdriver.artifactId>
+        <jdbcdriver.groupId>com.mysql</jdbcdriver.groupId>
+        <jdbcdriver.artifactId>mysql-connector-j</jdbcdriver.artifactId>
 
         <spring.profiles.active>embedded,myjson</spring.profiles.active>
       </properties>
@@ -831,8 +831,8 @@ under the License.
         </dependency>
     
         <dependency>
-          <groupId>mysql</groupId>
-          <artifactId>mysql-connector-java</artifactId>
+          <groupId>com.mysql</groupId>
+          <artifactId>mysql-connector-j</artifactId>
           <version>${jdbc.mysql.version}</version>
           <scope>test</scope>
         </dependency>
@@ -935,16 +935,16 @@ under the License.
       <id>mysql-it</id>
 
       <properties>
-        <jdbcdriver.groupId>mysql</jdbcdriver.groupId>
-        <jdbcdriver.artifactId>mysql-connector-java</jdbcdriver.artifactId>
+        <jdbcdriver.groupId>com.mysql</jdbcdriver.groupId>
+        <jdbcdriver.artifactId>mysql-connector-j</jdbcdriver.artifactId>
 
         <spring.profiles.active>embedded,mysql</spring.profiles.active>
       </properties>
 
       <dependencies>
         <dependency>
-          <groupId>mysql</groupId>
-          <artifactId>mysql-connector-java</artifactId>
+          <groupId>com.mysql</groupId>
+          <artifactId>mysql-connector-j</artifactId>
           <version>${jdbc.mysql.version}</version>
           <scope>test</scope>
         </dependency>
diff --git a/fit/core-reference/src/main/resources/core-myjson.properties b/fit/core-reference/src/main/resources/core-myjson.properties
index 0feee5f156..9d3fd6e381 100644
--- a/fit/core-reference/src/main/resources/core-myjson.properties
+++ b/fit/core-reference/src/main/resources/core-myjson.properties
@@ -23,7 +23,7 @@ persistence.domain[0].jdbcDriver=com.mysql.cj.jdbc.Driver
 persistence.domain[0].jdbcURL=jdbc:mysql://${DB_CONTAINER_IP}:3306/syncope?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8
 persistence.domain[0].dbUsername=syncope
 persistence.domain[0].dbPassword=syncope
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
+persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
 persistence.domain[0].orm=META-INF/spring-orm-myjson.xml
 persistence.domain[0].auditSql=audit_myjson.sql
 persistence.domain[0].poolMaxActive=10
diff --git a/fit/core-reference/src/main/resources/core-mysql.properties b/fit/core-reference/src/main/resources/core-mysql.properties
index 404b457b5b..218f52efa4 100644
--- a/fit/core-reference/src/main/resources/core-mysql.properties
+++ b/fit/core-reference/src/main/resources/core-mysql.properties
@@ -20,7 +20,7 @@ persistence.domain[0].jdbcDriver=com.mysql.cj.jdbc.Driver
 persistence.domain[0].jdbcURL=jdbc:mysql://${DB_CONTAINER_IP}:3306/syncope?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8
 persistence.domain[0].dbUsername=syncope
 persistence.domain[0].dbPassword=syncope
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
+persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
 persistence.domain[0].auditSql=audit_mysql_innodb.sql
 persistence.domain[0].poolMaxActive=10
 persistence.domain[0].poolMinIdle=2
diff --git a/pom.xml b/pom.xml
index 93081efb1f..150998db5e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -417,7 +417,7 @@ under the License.
 
     <jackson.version>2.14.0-rc2</jackson.version>
 
-    <spring-boot.version>2.7.4</spring-boot.version>
+    <spring-boot.version>2.7.5</spring-boot.version>
     <spring-cloud-gateway.version>3.1.4</spring-cloud-gateway.version>
 
     <openjpa.version>3.2.2</openjpa.version>
@@ -513,7 +513,7 @@ under the License.
     <docker.mariadb.version>10</docker.mariadb.version>
 
     <jdbc.postgresql.version>42.5.0</jdbc.postgresql.version>
-    <jdbc.mysql.version>8.0.28</jdbc.mysql.version>
+    <jdbc.mysql.version>8.0.31</jdbc.mysql.version>
     <jdbc.mariadb.version>3.0.8</jdbc.mariadb.version>
     <jdbc.mssql.version>11.2.1.jre</jdbc.mssql.version>
     <jdbc.oracle.version>21.7.0.0</jdbc.oracle.version>
diff --git a/src/main/asciidoc/reference-guide/configuration/dbms.adoc b/src/main/asciidoc/reference-guide/configuration/dbms.adoc
index 0f91d2ffc3..490003257b 100644
--- a/src/main/asciidoc/reference-guide/configuration/dbms.adoc
+++ b/src/main/asciidoc/reference-guide/configuration/dbms.adoc
@@ -117,7 +117,7 @@ persistence.domain[0].jdbcDriver=com.mysql.cj.jdbc.Driver
 persistence.domain[0].jdbcURL=jdbc:mysql://localhost:3306/syncope?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8
 persistence.domain[0].dbUsername=syncope
 persistence.domain[0].dbPassword=syncope
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
+persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
 persistence.domain[0].auditSql=audit_mysql_innodb.sql
 persistence.domain[0].poolMaxActive=10
 persistence.domain[0].poolMinIdle=2
@@ -175,7 +175,7 @@ persistence.domain[0].jdbcDriver=com.mysql.cj.jdbc.Driver
 persistence.domain[0].jdbcURL=jdbc:mysql://localhost:3306/syncope?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8
 persistence.domain[0].dbUsername=syncope
 persistence.domain[0].dbPassword=syncope
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
+persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
 persistence.domain[0].orm=META-INF/spring-orm-myjson.xml
 persistence.domain[0].auditSql=audit_myjson.sql
 persistence.domain[0].poolMaxActive=10
@@ -215,7 +215,7 @@ persistence.domain[0].jdbcDriver=org.mariadb.jdbc.Driver
 persistence.domain[0].jdbcURL=jdbc:mariadb://localhost:3306/syncope?characterEncoding=UTF-8
 persistence.domain[0].dbUsername=syncope
 persistence.domain[0].dbPassword=syncope
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
+persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
 persistence.domain[0].auditSql=audit_mariadb.sql
 persistence.domain[0].poolMaxActive=10
 persistence.domain[0].poolMinIdle=2
diff --git a/src/main/asciidoc/reference-guide/howto/upgrade.adoc b/src/main/asciidoc/reference-guide/howto/upgrade.adoc
index 48de4bcb58..9ae8633620 100644
--- a/src/main/asciidoc/reference-guide/howto/upgrade.adoc
+++ b/src/main/asciidoc/reference-guide/howto/upgrade.adoc
@@ -18,5 +18,20 @@
 //
 === Upgrade from 2.1
 
-[WARNING]
-TODO
+The distance between earlier releases and Syncope 3.0 Maggiore is relevant under different aspects: architecture,
+technology, project organization and naturally internal data representation.
+
+For this reason [.underline]#there is no practical way to migrate an old project# to Syncope 3.0.
+
+It is possible, however, to setup a new Syncope 3.0 project, replicate configurations and finally migrate the existing
+data. Here is the outlined approach:
+
+. create a new Maven project based on Syncope 3.0
+. update code customization and extensions made from your previous Syncope project to the new classes and interfaces
+provided by Syncope 3.0
+. with both projects up and running:
+    .. download relevant configurations - especially connectors and resources - via REST from your previous Syncope
+project
+    .. upload via REST to the new Syncope 3.0 project
+    .. configure a new REST resource in the new Syncope 3.0 project to pull users, groups and any objects from your
+previous Syncope project