diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
index 360e3a94c37..ac1369061f3 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
@@ -288,7 +288,7 @@ public void fromCSV() throws Exception {
IOUtils.copy(src, dst);
}
} catch (IOException e) {
- fail(e::getMessage);
+ fail(e.getMessage(), e);
}
// -----------------------------
@@ -1445,7 +1445,7 @@ public void issueSYNCOPE313LDAP() throws Exception {
self = CLIENT_FACTORY.create(user.getUsername(), oldCleanPassword).self();
assertNotNull(self);
} catch (Exception e) {
- fail(e::getMessage);
+ fail(e.getMessage(), e);
} finally {
// Delete PullTask + user + reset the connector
if (pullTask != null && pullTask.getKey() != null) {
@@ -1556,7 +1556,7 @@ public void issueSYNCOPE1062() {
assertEquals(2, propagationTasks.getSize());
} catch (Exception e) {
LOG.error("Unexpected during issueSYNCOPE1062()", e);
- fail(e::getMessage);
+ fail(e.getMessage(), e);
} finally {
Optional.ofNullable(pullTask).ifPresent(t -> TASK_SERVICE.delete(TaskType.PULL, t.getKey()));
diff --git a/src/main/asciidoc/getting-started/obtain.adoc b/src/main/asciidoc/getting-started/obtain.adoc
index 463d82182ea..02db0248102 100644
--- a/src/main/asciidoc/getting-started/obtain.adoc
+++ b/src/main/asciidoc/getting-started/obtain.adoc
@@ -239,7 +239,7 @@ containers.
----
services:
keymaster: // <1>
- image: zookeeper:3.7.0
+ image: zookeeper:latest
restart: always
db: // <2>
@@ -638,6 +638,10 @@ Credentials: `admin` / `password`
| SRA
| http://localhost:8080/
+| Internal storage
+| `jdbc:postgresql://localhost:5432/syncope?stringtype=unspecified` +
+Credentials: `syncope` / `syncope`
+
| External resource: LDAP
| An embedded instance is available. +
You can configure any LDAP client (such as http://jxplorer.org/[JXplorer^], for example) with the following information: +
@@ -658,7 +662,7 @@ You can configure any LDAP client (such as http://jxplorer.org/[JXplorer^], for
+
Choose configuration 'Generic H2 (Server)' +
Insert `jdbc:h2:tcp://localhost:9092/mem:testdb` as JDBC URL +
- Set 'sa' as password +
+ Set `sa` as password +
Click 'Connect' button
|===
diff --git a/src/main/asciidoc/getting-started/systemRequirements.adoc b/src/main/asciidoc/getting-started/systemRequirements.adoc
index 88131f6c65a..fb65618e547 100644
--- a/src/main/asciidoc/getting-started/systemRequirements.adoc
+++ b/src/main/asciidoc/getting-started/systemRequirements.adoc
@@ -25,12 +25,12 @@ The hardware requirements depend greatly on the given deployment, in particular
managed entities (Users, Groups and Any Objects), their attributes and resources.
* CPU: dual core, 2 GHz (minimum)
- * RAM: 4 GB (minimum)
+ * RAM: 8 GB (minimum)
* Disk: 200 MB (minimum)
=== Java
-Apache Syncope {docVersion} requires the latest JDK 17 that is available. Works with JDK 20.
+Apache Syncope {docVersion} requires the latest JDK 21 that is available. Works with later versions.
=== Java EE Container
@@ -38,7 +38,7 @@ Apache Syncope {docVersion} is verified with the following Java EE containers:
. https://tomcat.apache.org/download-10.cgi[Apache Tomcat 10^]
. https://www.payara.fish/[Payara Server 6^]
- . https://www.wildfly.org/[Wildfly 32^]
+ . https://www.wildfly.org/[Wildfly 33^]
=== Internal Storage
diff --git a/src/main/asciidoc/reference-guide/concepts/externalresources.adoc b/src/main/asciidoc/reference-guide/concepts/externalresources.adoc
index 6482ddb24fa..952193fcb84 100644
--- a/src/main/asciidoc/reference-guide/concepts/externalresources.adoc
+++ b/src/main/asciidoc/reference-guide/concepts/externalresources.adoc
@@ -39,6 +39,7 @@ Several Connector Bundles come included with Apache Syncope:
* https://connid.atlassian.net/wiki/display/BASE/Database[Database^]
* https://connid.atlassian.net/wiki/display/BASE/Google+Apps[Google Apps^]
* https://connid.atlassian.net/wiki/display/BASE/LDAP[LDAP^]
+* https://connid.atlassian.net/wiki/display/BASE/Okta[Okta^]
* https://connid.atlassian.net/wiki/display/BASE/REST[Scripted REST^]
* https://connid.atlassian.net/wiki/display/BASE/ServiceNow[ServiceNow^]
* https://connid.atlassian.net/wiki/display/BASE/SCIM[SCIM^]
diff --git a/src/main/asciidoc/reference-guide/configuration/dbms.adoc b/src/main/asciidoc/reference-guide/configuration/dbms.adoc
index bc7aa5eaa1b..4e1099092f1 100644
--- a/src/main/asciidoc/reference-guide/configuration/dbms.adoc
+++ b/src/main/asciidoc/reference-guide/configuration/dbms.adoc
@@ -37,57 +37,9 @@ persistence.domain[0].poolMaxActive=20
persistence.domain[0].poolMinIdle=5
....
-as `core/src/main/resources/core-postgres.properties`.
+as `core/src/main/resources/core-postgresql.properties`.
-Do not forget to include `postgres` as
-https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.profiles.adding-active-profiles[Spring Boot profile^]
-for the Core application.
-
-[WARNING]
-This assumes that you have a PostgreSQL instance running on localhost, listening on its default port 5432 with a
-database `syncope` fully accessible by user `syncope` with password `syncope`.
-
-==== PostgreSQL (JSONB)
-
-[NOTE]
-With the configurations reported below, Apache Syncope will leverage the
-https://www.postgresql.org/docs/current/datatype-json.html[JSONB^] column type for attribute storage.
-
-[NOTE]
-Apache Syncope {docVersion} is verified with PostgreSQL server >= {postgresql} and JDBC driver >= {postgresqlJDBC}.
-
-Add the following dependency to `core/pom.xml`:
-
-[source,xml,subs="verbatim,attributes"]
-----
-
- org.apache.syncope.core
- syncope-core-persistence-jpa-json
- ${syncope.version}
-
-----
-
-Create
-
-[source]
-....
-persistence.indexesXML=classpath:pgjsonb/indexes.xml
-persistence.viewsXML=classpath:pgjsonb/views.xml
-
-persistence.domain[0].key=Master
-persistence.domain[0].jdbcDriver=org.postgresql.Driver
-persistence.domain[0].jdbcURL=jdbc:postgresql://${DB_CONTAINER_IP}:5432/syncope?stringtype=unspecified
-persistence.domain[0].dbUsername=syncope
-persistence.domain[0].dbPassword=syncope
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.PostgresDictionary
-persistence.domain[0].orm=META-INF/spring-orm-pgjsonb.xml
-persistence.domain[0].poolMaxActive=20
-persistence.domain[0].poolMinIdle=5
-....
-
-as `core/src/main/resources/core-pgjsonb.properties`.
-
-Do not forget to include `pgjsonb` as
+Do not forget to include `postgresql` as
https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.profiles.adding-active-profiles[Spring Boot profile^]
for the Core application.
@@ -104,12 +56,16 @@ Create
[source]
....
+persistence.indexesXML=classpath:META-INF/mysql/indexes.xml
+persistence.viewsXML=classpath:META-INF/mysql/views.xml
+
persistence.domain[0].key=Master
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,useSetStringForClobs=true)
+persistence.domain[0].orm=META-INF/mysql/spring-orm.xml
persistence.domain[0].poolMaxActive=20
persistence.domain[0].poolMinIdle=5
....
@@ -127,60 +83,6 @@ It is important to set the collation to `utf8_general_ci` after creation of `syn
This assumes that you have a MySQL instance running on localhost, listening on its default port 3306 with a database
`syncope` fully accessible by user `syncope` with password `syncope`.
-==== MySQL (JSON)
-
-[NOTE]
-With the configurations reported below, Apache Syncope will leverage the
-https://dev.mysql.com/doc/refman/9.0/en/json-table-functions.html[JSON_TABLE^] function.
-
-[NOTE]
-Apache Syncope {docVersion} is verified with MySQL server >= {mysql} and JDBC driver >= {mysqlJDBC}.
-
-Add the following dependency to `core/pom.xml`:
-
-[source,xml,subs="verbatim,attributes"]
-----
-
- org.apache.syncope.core
- syncope-core-persistence-jpa-json
- ${syncope.version}
-
-----
-
-Create
-
-[source]
-....
-persistence.indexesXML=classpath:myjson/indexes.xml
-persistence.viewsXML=classpath:myjson/views.xml
-
-persistence.domain[0].key=Master
-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,useSetStringForClobs=true)
-persistence.domain[0].orm=META-INF/spring-orm-myjson.xml
-persistence.domain[0].poolMaxActive=20
-persistence.domain[0].poolMinIdle=5
-....
-
-as `core/src/main/resources/core-myjson.properties`.
-
-Do not forget to include `myjson` as
-https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.profiles.adding-active-profiles[Spring Boot profile^]
-for the Core application.
-
-[WARNING]
-This assumes that the InnoDB engine is enabled in your MySQL instance.
-
-[CAUTION]
-It is important to set the collation to `utf8_general_ci` after creation of `syncope` database.
-
-[WARNING]
-This assumes that you have a MySQL instance running on localhost, listening on its default port 3306 with a database
-`syncope` fully accessible by user `syncope` with password `syncope`.
-
==== MariaDB
[NOTE]
@@ -190,12 +92,17 @@ Create
[source]
....
+persistence.indexesXML=classpath:META-INF/mariadb/indexes.xml
+persistence.viewsXML=classpath:META-INF/mariadb/views.xml
+
persistence.domain[0].key=Master
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
+# keep the next two lines until https://jira.mariadb.org/browse/MDEV-27898 is fixed
+persistence.domain[0].dbUsername=root
+persistence.domain[0].dbPassword=password
persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
+persistence.domain[0].orm=META-INF/mariadb/spring-orm.xml
persistence.domain[0].poolMaxActive=20
persistence.domain[0].poolMinIdle=5
....
@@ -222,70 +129,7 @@ https://mariadb.com/kb/en/configuring-mariadb-with-option-files/[option file^].
[WARNING]
This assumes that you have a MariaDB instance running on localhost, listening on its default port 3306 with a database
-`syncope` fully accessible by user `syncope` with password `syncope`.
-
-==== MariaDB (JSON)
-
-[NOTE]
-With the configurations reported below, Apache Syncope will leverage the
-https://mariadb.com/kb/en/json_table/[JSON_TABLE^] function.
-
-[NOTE]
-Apache Syncope {docVersion} is verified with MariaDB server >= {mariadb} and JDBC driver >= {mariadbJDBC}.
-
-Add the following dependency to `core/pom.xml`:
-
-[source,xml,subs="verbatim,attributes"]
-----
-
- org.apache.syncope.core
- syncope-core-persistence-jpa-json
- ${syncope.version}
-
-----
-
-Create
-
-[source]
-....
-persistence.indexesXML=classpath:majson/indexes.xml
-persistence.viewsXML=classpath:majson/views.xml
-persistence.domain[0].key=Master
-persistence.domain[0].jdbcDriver=org.mariadb.jdbc.Driver
-persistence.domain[0].jdbcURL=jdbc:mariadb://localhost:3306/syncope?characterEncoding=UTF-8
-persistence.domain[0].dbUsername=root
-persistence.domain[0].dbPassword=password
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
-persistence.domain[0].orm=META-INF/spring-orm-majson.xml
-persistence.domain[0].poolMaxActive=10
-persistence.domain[0].poolMinIdle=2
-provisioning.quartz.delegate=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
-provisioning.quartz.sql=tables_mariadb.sql
-....
-
-as `core/src/main/resources/core-majson.properties`.
-
-Do not forget to include `majson` as
-https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.profiles.adding-active-profiles[Spring Boot profile^]
-for the Core application.
-
-[CAUTION]
-It is important to set the collation to `utf8_general_ci` after creation of `syncope` database.
-
-[WARNING]
-====
-It is necessary to use `utf8mb4_unicode_ci` instead of `utf8mb4_general_ci` if case-sensitive queries are required.
-In this case, set
-....
-init_connect = "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
-....
-under either the `[mysqld]` section or the `[mariadb]` section of your
-https://mariadb.com/kb/en/configuring-mariadb-with-option-files/[option file^].
-====
-
-[WARNING]
-This assumes that you have a MariaDB instance running on localhost, listening on its default port 3306 with a database
-`syncope` and super-admin user `root` with password `password`.
+`syncope` and super-admin user `root` with password `password`. +
Super-admin user is required until https://jira.mariadb.org/browse/MDEV-27898[this bug^] is fixed.
==== Oracle Database
@@ -297,18 +141,19 @@ Create
[source]
....
+persistence.indexesXML=classpath:META-INF/oracle/indexes.xml
+persistence.viewsXML=classpath:META-INF/oracle/views.xml
+
persistence.domain[0].key=Master
persistence.domain[0].jdbcDriver=oracle.jdbc.OracleDriver
-persistence.domain[0].jdbcURL=jdbc:oracle:thin:@localhost:1521:XE
+persistence.domain[0].jdbcURL=jdbc:oracle:thin:@localhost}:1521/FREEPDB1
persistence.domain[0].dbSchema=SYNCOPE
persistence.domain[0].dbUsername=syncope
persistence.domain[0].dbPassword=syncope
persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.OracleDictionary
-persistence.domain[0].orm=META-INF/spring-orm-oracle.xml
+persistence.domain[0].orm=META-INF/oracle/spring-orm.xml
persistence.domain[0].poolMaxActive=20
persistence.domain[0].poolMinIdle=5
-
-persistence.indexesXML=classpath:oracle_indexes.xml
....
as `core/src/main/resources/core-oracle.properties`.
@@ -320,52 +165,3 @@ for the Core application.
[WARNING]
This assumes that you have an Oracle instance running on localhost, listening on its default port 1521 with a database
`syncope` under tablespace `SYNCOPE`, fully accessible by user `syncope` with password `syncope`.
-
-==== Oracle Database (JSON)
-
-[NOTE]
-With the configurations reported below, Apache Syncope will leverage the
-https://docs.oracle.com/en/database/oracle/oracle-database/19/adjsn/[JSON^] features.
-
-[NOTE]
-Apache Syncope {docVersion} is verified with Oracle database >= {oracle} and JDBC driver >= ojdbc11 {oracleJDBC}.
-
-Add the following dependency to `core/pom.xml`:
-
-[source,xml,subs="verbatim,attributes"]
-----
-
- org.apache.syncope.core
- syncope-core-persistence-jpa-json
- ${syncope.version}
-
-----
-
-Create
-
-[source]
-....
-persistence.indexesXML=classpath:ojson/indexes.xml
-persistence.viewsXML=classpath:ojson/views.xml
-
-persistence.domain[0].key=Master
-persistence.domain[0].jdbcDriver=oracle.jdbc.OracleDriver
-persistence.domain[0].jdbcURL=jdbc:postgresql://${DB_CONTAINER_IP}:5432/syncope?stringtype=unspecified
-persistence.domain[0].dbSchema=SYNCOPE
-persistence.domain[0].dbUsername=syncope
-persistence.domain[0].dbPassword=syncope
-persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.OracleDictionary
-persistence.domain[0].orm=META-INF/spring-orm-ojson.xml
-persistence.domain[0].poolMaxActive=20
-persistence.domain[0].poolMinIdle=5
-....
-
-as `core/src/main/resources/core-ojson.properties`.
-
-Do not forget to include `ojson` as
-https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.profiles.adding-active-profiles[Spring Boot profile^]
-for the Core application.
-
-[WARNING]
-This assumes that you have an Oracle instance running on localhost, listening on its default port 1521 with a database
-`syncope` under tablespace `SYNCOPE`, fully accessible by user `syncope` with password `syncope`.
diff --git a/src/main/asciidoc/reference-guide/configuration/deployment.adoc b/src/main/asciidoc/reference-guide/configuration/deployment.adoc
index 20937072af3..8a2bc6e41ce 100644
--- a/src/main/asciidoc/reference-guide/configuration/deployment.adoc
+++ b/src/main/asciidoc/reference-guide/configuration/deployment.adoc
@@ -103,7 +103,7 @@ for the Master domain.
Each JavaEE Container provides its own way to accomplish this task:
* https://tomcat.apache.org/tomcat-10.0-doc/jdbc-pool.html[Apache Tomcat 10^]
* https://docs.payara.fish/community/docs/Technical%20Documentation/Payara%20Server%20Documentation/Server%20Configuration%20And%20Management/JDBC%20Resource%20Management/JDBC.html[Payara Server 6^]
- * https://docs.wildfly.org/32/Admin_Guide.html#DataSource[Wildfly 32^]
+ * https://docs.wildfly.org/33/Admin_Guide.html#DataSource[Wildfly 33^]
****
==== Apache Tomcat 10
@@ -200,7 +200,7 @@ For better performance under GNU / Linux, do not forget to include the system pr
....
====
-==== Wildfly 32
+==== Wildfly 33
Add
diff --git a/src/main/asciidoc/reference-guide/usage/customization.adoc b/src/main/asciidoc/reference-guide/usage/customization.adoc
index 4cdabb379a3..0257dd29c01 100644
--- a/src/main/asciidoc/reference-guide/usage/customization.adoc
+++ b/src/main/asciidoc/reference-guide/usage/customization.adoc
@@ -292,12 +292,6 @@ endif::[]
ifeval::["{snapshotOrRelease}" == "snapshot"]
* https://github.com/apache/syncope/blob/master/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java[MasterDomain^]
endif::[]
-ifeval::["{snapshotOrRelease}" == "release"]
-* https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/DomainConfFactory.java[DomainConfFactory^]
-endif::[]
-ifeval::["{snapshotOrRelease}" == "snapshot"]
-* https://github.com/apache/syncope/blob/master/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/DomainConfFactory.java[DomainConfFactory^]
-endif::[]
The `@Bean` declarations from these classes can be customized as explained <>.