This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch 4_1_X in repository https://gitbox.apache.org/repos/asf/syncope.git
commit 3996dcefe8e0e71d27d95af4304410aeef41f0c3 Author: Francesco Chicchiriccò <[email protected]> AuthorDate: Fri Apr 17 08:36:27 2026 +0200 Adding neo4j experimental option to the docs --- .../src/test/resources/domains/TwoSecurity.json | 4 -- .../src/test/resources/domains/TwoSecurity.json | 4 -- pom.xml | 1 + .../getting-started/systemRequirements.adoc | 5 ++ .../reference-guide/architecture/core.adoc | 9 ++- .../configuration/configuration.adoc | 2 +- .../reference-guide/configuration/deployment.adoc | 18 +++--- .../configuration/domainsmanagement.adoc | 3 +- .../configuration/{dbms.adoc => storage.adoc} | 64 +++++++++++++++++++++- .../asciidoc/reference-guide/howto/upgrade.adoc | 2 +- 10 files changed, 85 insertions(+), 27 deletions(-) diff --git a/core/persistence-jpa/src/test/resources/domains/TwoSecurity.json b/core/persistence-jpa/src/test/resources/domains/TwoSecurity.json deleted file mode 100644 index 53e0269b71..0000000000 --- a/core/persistence-jpa/src/test/resources/domains/TwoSecurity.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "password": "2AA60A8FF7FCD473D321E0146AFD9E26DF395147", - "cipherAlgorithm": "SHA" -} diff --git a/core/persistence-neo4j/src/test/resources/domains/TwoSecurity.json b/core/persistence-neo4j/src/test/resources/domains/TwoSecurity.json deleted file mode 100644 index 53e0269b71..0000000000 --- a/core/persistence-neo4j/src/test/resources/domains/TwoSecurity.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "password": "2AA60A8FF7FCD473D321E0146AFD9E26DF395147", - "cipherAlgorithm": "SHA" -} diff --git a/pom.xml b/pom.xml index 1ecfebc91f..f4d95cdffe 100644 --- a/pom.xml +++ b/pom.xml @@ -2324,6 +2324,7 @@ under the License. <mysql>${docker.mysql.version}</mysql> <mariadb>${docker.mariadb.version}</mariadb> <oracle>${docker.oracle.version}</oracle> + <neo4j>${docker.neo4j.version}</neo4j> <postgresqlJDBC>${jdbc.postgresql.version}</postgresqlJDBC> <mysqlJDBC>${jdbc.mysql.version}</mysqlJDBC> <mariadbJDBC>${jdbc.mariadb.version}</mariadbJDBC> diff --git a/src/main/asciidoc/getting-started/systemRequirements.adoc b/src/main/asciidoc/getting-started/systemRequirements.adoc index b99e5c9150..7532d978fa 100644 --- a/src/main/asciidoc/getting-started/systemRequirements.adoc +++ b/src/main/asciidoc/getting-started/systemRequirements.adoc @@ -48,3 +48,8 @@ Apache Syncope {docVersion} is verified with the recent versions of the followin . https://mariadb.org/[MariaDB^] (>= {mariadb}, JDBC driver >= {mariadbJDBC}) . https://www.mysql.com/[MySQL^] (>= {mysql}, JDBC driver >= {mysqlJDBC}) . https://www.oracle.com/database/index.html[Oracle Database^] (>= {oracle}, JDBC driver >= ojdbc11 {oracleJDBC}) + +[WARNING] +Persistence support for https://neo4j.com/product/neo4j-graph-database/[Neo4j Graph Database^] (>= {neo4j}) is also +available. + +While completely functional, the code is not considered stable for production environments. diff --git a/src/main/asciidoc/reference-guide/architecture/core.adoc b/src/main/asciidoc/reference-guide/architecture/core.adoc index e428b53f1a..e3a2b2090c 100644 --- a/src/main/asciidoc/reference-guide/architecture/core.adoc +++ b/src/main/asciidoc/reference-guide/architecture/core.adoc @@ -80,16 +80,15 @@ https://camunda.org/[Camunda^] or http://jbpm.jboss.org/[jBPM^], can be written ==== Persistence All data (users, groups, attributes, resources, ...) is internally managed at a high level using a standard -https://en.wikipedia.org/wiki/Jakarta_Persistence[Jakarta Persistence 3.1] approach based on -https://hibernate.org/orm/[Hibernate ORM^]. -The data is persisted into an underlying database, referred to as *_Internal Storage_*. Consistency is ensured via the -comprehensive +https://en.wikipedia.org/wiki/Jakarta_Persistence[Jakarta Persistence 3.1] approach based on https://openjpa.apache.org[Apache OpenJPA^]. +The data is persisted into an underlying +database, referred to as *_Internal Storage_*. Consistency is ensured via the comprehensive https://docs.spring.io/spring-framework/reference/6.2/data-access/transaction.html[transaction management^] provided by the Spring Framework. Globally, this offers the ability to easily scale up to a million entities and at the same time allows great portability with no code changes: PostgreSQL, MySQL, MariaDB and Oracle are fully supported -<<dbms,deployment options>>. +<<internal-storage,deployment options>>. <<domains>> allow to manage data belonging to different https://en.wikipedia.org/wiki/Multitenancy[tenants^] into separate database instances. diff --git a/src/main/asciidoc/reference-guide/configuration/configuration.adoc b/src/main/asciidoc/reference-guide/configuration/configuration.adoc index 39352cce7f..cdeab1759d 100644 --- a/src/main/asciidoc/reference-guide/configuration/configuration.adoc +++ b/src/main/asciidoc/reference-guide/configuration/configuration.adoc @@ -46,7 +46,7 @@ was generated, the configuration files will be first searched in include::deployment.adoc[] -include::dbms.adoc[] +include::storage.adoc[] include::highavailability.adoc[] diff --git a/src/main/asciidoc/reference-guide/configuration/deployment.adoc b/src/main/asciidoc/reference-guide/configuration/deployment.adoc index 17cd77298c..61e796caf4 100644 --- a/src/main/asciidoc/reference-guide/configuration/deployment.adoc +++ b/src/main/asciidoc/reference-guide/configuration/deployment.adoc @@ -58,7 +58,7 @@ https://docs.spring.io/spring-boot/3.5/reference/features/spring-application.htm .Run Core application as standalone under GNU / Linux ==== -Assuming that the JDBC driver JAR file for the configured <<dbms>> is available under `/opt/syncope/lib`, +Assuming that the JDBC driver JAR file for the configured <<internal-storage>> is available under `/opt/syncope/lib`, the Core application can be built and run as follows: [source,bash] @@ -93,8 +93,8 @@ settings. **** The <<persistence,internal storage>> is the central place where all data of a given <<Core>> deployment are located. -After choosing the appropriate <<DBMS>>, it is of fundamental importance to provide an adequate configuration for the -related database https://en.wikipedia.org/wiki/Connection_pool[connection pool^]. +After choosing the appropriate technology for <<internal-storage>>, it is of fundamental importance to provide an +adequate configuration for the related database https://en.wikipedia.org/wiki/Connection_pool[connection pool^]. The database connection pool can be: @@ -169,11 +169,11 @@ with <dependency> <groupId>org.apache.syncope.core</groupId> <artifactId>syncope-core-starter</artifactId> - <exclusions> - <exclusion> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-el</artifactId> - </exclusion> + <exclusions> + <exclusion> + <groupId>org.apache.tomcat.embed</groupId> + <artifactId>tomcat-embed-el</artifactId> + </exclusion> <exclusion> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>jcache</artifactId> @@ -217,7 +217,7 @@ For better performance under GNU / Linux, do not forget to include the system pr .... ==== -==== Wildfly 38 +==== Wildfly 39 Add diff --git a/src/main/asciidoc/reference-guide/configuration/domainsmanagement.adoc b/src/main/asciidoc/reference-guide/configuration/domainsmanagement.adoc index 28363caf4a..2437504aa1 100644 --- a/src/main/asciidoc/reference-guide/configuration/domainsmanagement.adoc +++ b/src/main/asciidoc/reference-guide/configuration/domainsmanagement.adoc @@ -18,10 +18,9 @@ // === Domains Management -Besides the pre-defined `Master` domain, other <<domains>> are bootstrapped during <<core>> startup from three files +Besides the pre-defined `Master` domain, other <<domains>> are bootstrapped during <<core>> startup from two files in the <<properties-files-location,configuration directory>>; assuming that the domain name is `Two`, such files are: -* `domains/TwoSecurity.json` - admin credentials; * `domains/TwoKeymasterConfParams.json` - for <<keymaster>> initialization; * `domains/TwoContent.xml` - for <<import,content>> initialization. diff --git a/src/main/asciidoc/reference-guide/configuration/dbms.adoc b/src/main/asciidoc/reference-guide/configuration/storage.adoc similarity index 79% rename from src/main/asciidoc/reference-guide/configuration/dbms.adoc rename to src/main/asciidoc/reference-guide/configuration/storage.adoc index f9a1ad7c00..b02160c162 100644 --- a/src/main/asciidoc/reference-guide/configuration/dbms.adoc +++ b/src/main/asciidoc/reference-guide/configuration/storage.adoc @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -=== DBMS +=== Internal Storage ==== PostgreSQL @@ -163,3 +163,65 @@ 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`. + +==== Neo4j + +[NOTE] +Apache Syncope {docVersion} is verified with Neo4j Graph Database >= {neo4j}). + +[WARNING] +While completely functional, the code is not considered stable for production environments. + +Replace + +[source,xml] +.... + <dependency> + <groupId>org.apache.syncope.core</groupId> + <artifactId>syncope-core-starter</artifactId> + </dependency> +.... + +with + +[source,xml] +.... + <dependency> + <groupId>org.apache.syncope.core</groupId> + <artifactId>syncope-core-starter</artifactId> + <exclusions> + <exclusion> + <groupId>org.apache.syncope.core</groupId> + <artifactId>syncope-core-persistence-jpa</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.syncope.core</groupId> + <artifactId>syncope-core-persistence-neo4j</artifactId> + <version>${syncope.version}</version> + </dependency> +.... + +in `core/pom.xml`. + +Create + +[source] +.... +persistence.domain[0].key=Master +persistence.domain[0].uri=bolt://localhost:7687/ +persistence.domain[0].username=neo4j +persistence.domain[0].password=null +persistence.domain[0].maxConnectionPoolSize=100 +.... + +as `core/src/main/resources/core-neo4j.properties`. + +Do not forget to include `neo4j` as +https://docs.spring.io/spring-boot/3.5/reference/features/profiles.html#features.profiles.adding-active-profiles[Spring Boot profile^] +for the Core application. + +[WARNING] +This assumes that you have a Neo4j instance running on localhost, listening on its default port 7687, +fully accessible by user `neo4j` with no password set. diff --git a/src/main/asciidoc/reference-guide/howto/upgrade.adoc b/src/main/asciidoc/reference-guide/howto/upgrade.adoc index d7c2b8e4c3..b5a380e1b5 100644 --- a/src/main/asciidoc/reference-guide/howto/upgrade.adoc +++ b/src/main/asciidoc/reference-guide/howto/upgrade.adoc @@ -31,7 +31,7 @@ Also, ensure to have a full backup of the existing database used as <<persistenc ==== Persistence Storage upgrade [CAUTION] -Ensure to <<dbms,check the compatibility>> of the existing DBMS and upgrade, if needed. +Ensure to <<internal-storage,check the compatibility>> of the existing DBMS and upgrade, if needed. Download https://syncope.apache.org/downloads[`syncope-core-persistence-jpa-upgrader-{docVersion}.jar`^]: this tool will generate the full set of SQL statements required to upgrade the internal storage to Syncope 4.1.
