diff --git a/amps/ags/rm-community/documentation/destruction/README.md b/amps/ags/rm-community/documentation/destruction/README.md
index 2a4bc21388..aa04185e5c 100644
--- a/amps/ags/rm-community/documentation/destruction/README.md
+++ b/amps/ags/rm-community/documentation/destruction/README.md
@@ -23,7 +23,7 @@ Recorded content can be explicitly destroyed whilst maintaining the original nod
* License: Alfresco Community
* Issue Tracker Link: [JIRA RM](https://issues.alfresco.com/jira/projects/RM/summary)
* Contribution Model: Alfresco Closed Source
-* Documentation: [docs.alfresco.com (Records Management)](https://support.hyland.com/r/Alfresco/Alfresco-Governance-Services-Community-Edition/23.4/Alfresco-Governance-Services-Community-Edition/Introduction)
+* Documentation: [docs.alfresco.com (Records Management)](https://support.hyland.com/access?dita:id=job1721300866386&vrm_version=25.1&component=Alfresco%20Governance%20Services%20Community%20Edition)
***
diff --git a/amps/ags/rm-community/documentation/overview.md b/amps/ags/rm-community/documentation/overview.md
index 50dfa8aa0a..8613d9220b 100644
--- a/amps/ags/rm-community/documentation/overview.md
+++ b/amps/ags/rm-community/documentation/overview.md
@@ -21,18 +21,18 @@ RM is split into two main parts - a repository integration and a Share integrati
* [Community License](../LICENSE.txt)
* [Enterprise License](../../rm-enterprise/LICENSE.txt) (this file will only be present in clones of the Enterprise repository)
* [Issue Tracker Link](https://issues.alfresco.com/jira/projects/RM)
-* [Community Documentation Link](https://support.hyland.com/r/Alfresco/Alfresco-Governance-Services-Community-Edition/23.4/Alfresco-Governance-Services-Community-Edition/Introduction)
-* [Enterprise Documentation Link](https://support.hyland.com/r/Alfresco/Alfresco-Governance-Services/23.4/Alfresco-Governance-Services/Introduction)
+* [Community Documentation Link](https://support.hyland.com/access?dita:id=job1721300866386&vrm_version=25.1&component=Alfresco%20Governance%20Services%20Community%20Edition)
+* [Enterprise Documentation Link](https://support.hyland.com/access?dita:id=job1721300866386&vrm_version=25.1)
* [Contribution Model](../../CONTRIBUTING.md)
***
### Prerequisite Knowledge
-An understanding of Alfresco Content Services is assumed. The following pages from the [developer documentation](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services-Community-Edition/23.4/Alfresco-Content-Services-Community-Edition/Develop) give useful background information:
+An understanding of Alfresco Content Services is assumed. The following pages from the [developer documentation](https://support.hyland.com/access?dita:id=lsl1724405261585&vrm_version=25.2&component=Alfresco%20Content%20Services%20Community%20Edition) give useful background information:
-* [ACS Architecture](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Software-Architecture)
-* [Platform Extensions](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Extension-Points-Overview)
-* [Share Extensions](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Share-UI-Extension-Points)
+* [ACS Architecture](https://support.hyland.com/access?dita:id=lfo1719554691023&vrm_version=25.2)
+* [Platform Extensions](https://support.hyland.com/access?dita:id=ifr1720080387005&vrm_version=25.2)
+* [Share Extensions](https://support.hyland.com/access?dita:id=wqu1720687386891&vrm_version=25.2)
***
@@ -44,12 +44,12 @@ The RM Share module communicates with the repository module via REST APIs. Inter
* A DAO layer responsible for CRUD operations against the database.
#### REST API
-The REST API endpoints fall into two main types - v0 (Webscripts) and v1. The [v0 API](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/In-Process-Platform-Extension-Points/Web-Scripts) is older and not recommended for integrations. The [v1 API](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/REST-API-Guide) is newer but isn't yet feature complete. If you are running RM locally then the GS API Explorer will be available at [this link](http://localhost:8080/gs-api-explorer/).
+The REST API endpoints fall into two main types - v0 (Webscripts) and v1. The [v0 API](https://support.hyland.com/access?dita:id=fga1720080409048&vrm_version=25.2) is older and not recommended for integrations. The [v1 API](https://support.hyland.com/access?dita:id=cmm1721136574006&vrm_version=25.2) is newer but isn't yet feature complete. If you are running RM locally then the GS API Explorer will be available at [this link](http://localhost:8080/gs-api-explorer/).
Internally the GS v1 REST API is built on the [Alfresco v1 REST API framework](https://community.alfresco.com/community/ecm/blog/2016/10/11/v1-rest-api-part-1-introduction). It aims to be consistent with this in terms of behaviour and naming.
#### Java Public API
-The Java service layer is fronted by a [Java Public API](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Reference/Java-Foundation-API), which we will ensure backward compatible with previous releases. Before we remove any methods there will first be a release containing that method deprecated to allow third party integrations to migrate to a new method. The Java Public API also includes a set of POJO objects which are needed to communicate with the services. It is easy to identify classes that are part of the Java Public API as they are annotated `@AlfrescoPublicApi`.
+The Java service layer is fronted by a [Java Public API](https://support.hyland.com/access?dita:id=lol1721390191517&vrm_version=25.2), which we will ensure backward compatible with previous releases. Before we remove any methods there will first be a release containing that method deprecated to allow third party integrations to migrate to a new method. The Java Public API also includes a set of POJO objects which are needed to communicate with the services. It is easy to identify classes that are part of the Java Public API as they are annotated `@AlfrescoPublicApi`.
Each Java service will have at least four beans defined for it:
@@ -61,7 +61,7 @@ Each Java service will have at least four beans defined for it:
#### DAOs
The DAOs are not part of the Java Public API, but handle CRUD operations against RM stored data. We have some custom queries to improve performance for particularly heavy operations.
-We use standard Alfresco [data modelling](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/In-Process-Platform-Extension-Points/Content-Model-Extension-Point) to store RM metadata. We extend the [Alfresco patching mechanism](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/In-Process-Platform-Extension-Points/Patches) to provide community and enterprise schema upgrades.
+We use standard Alfresco [data modelling](https://support.hyland.com/access?dita:id=ekx1720080373621&vrm_version=25.2) to store RM metadata. We extend the [Alfresco patching mechanism](https://support.hyland.com/access?dita:id=ato1720080396825&vrm_version=25.2) to provide community and enterprise schema upgrades.
***
diff --git a/packaging/tests/tas-cmis/README.md b/packaging/tests/tas-cmis/README.md
index 77c1d69235..3b3ce19025 100644
--- a/packaging/tests/tas-cmis/README.md
+++ b/packaging/tests/tas-cmis/README.md
@@ -27,7 +27,7 @@
## Synopsis
-**TAS**( **T**est **A**utomation **S**ystem)- **CMIS** is the project that handles the automated tests related only to CMIS API integrated with Alfresco One [Alfresco CMIS API](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Reference/CMIS-API).
+**TAS**( **T**est **A**utomation **S**ystem)- **CMIS** is the project that handles the automated tests related only to CMIS API integrated with Alfresco One [Alfresco CMIS API](https://support.hyland.com/access?dita:id=kvf1721390177551&vrm_version=25.2).
It is based on Apache Maven, compatible with major IDEs and is using also Spring capabilities for dependency injection.
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console.properties b/remote-api/src/main/resources/alfresco/messages/admin-console.properties
index 4bcdb57fba..c8d031aa65 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Admin Console
admin-console.help=Help
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Successfully saved values.
admin-console.host=Host
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_cs.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_cs.properties
index fa0544cba9..9ed7e810ec 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_cs.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_cs.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Konzole pro spr\u00e1vce
admin-console.help=N\u00e1pov\u011bda
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Hodnoty byly \u00fasp\u011b\u0161n\u011b ulo\u017eeny.
admin-console.host=Hostitel
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_da.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_da.properties
index 86246ace14..3d76eb63e3 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_da.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_da.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Administrationskonsol
admin-console.help=Hj\u00e6lp
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=V\u00e6rdierne blev gemt.
admin-console.host=V\u00e6rt
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_de.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_de.properties
index 455cc3c5b4..8e4606d80f 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_de.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_de.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Administratorkonsole
admin-console.help=Hilfe
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Erfolgreich gespeicherte Werte.
admin-console.host=Host
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_es.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_es.properties
index ec7c88df04..f89bc9acdb 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_es.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_es.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Consola de administraci\u00f3n
admin-console.help=Ayuda
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Valores guardados correctamente.
admin-console.host=Host
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_fi.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_fi.properties
index 48d475dc6e..b51d15db1d 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_fi.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_fi.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Hallintakonsoli
admin-console.help=Ohje
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Arvot tallennettiin.
admin-console.host=Is\u00e4nt\u00e4
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_fr.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_fr.properties
index ab6db0b49b..d7d315c288 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_fr.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_fr.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Console d'administration
admin-console.help=Aide
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Les valeurs ont bien \u00e9t\u00e9 enregistr\u00e9es.
admin-console.host=H\u00f4te
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_it.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_it.properties
index 2827b9f0c6..8a5c1a1eb1 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_it.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_it.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Console di amministrazione
admin-console.help=Aiuto
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=I valori sono stati salvati.
admin-console.host=Host
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_ja.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_ja.properties
index 066a151fbf..3fcc08d721 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_ja.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_ja.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb
admin-console.help=\u30d8\u30eb\u30d7
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=\u5024\u3092\u6b63\u5e38\u306b\u4fdd\u5b58\u3057\u307e\u3057\u305f\u3002
admin-console.host=\u30db\u30b9\u30c8
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_nb.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_nb.properties
index ceeca10e70..dd4ba361d4 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_nb.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_nb.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Admin-konsoll
admin-console.help=Hjelp
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Verdier som ble lagret.
admin-console.host=Vert
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_nl.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_nl.properties
index 5c3998400d..4be2b43576 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_nl.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_nl.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Beheerconsole
admin-console.help=Help
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Waarden zijn opgeslagen.
admin-console.host=Host
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_pl.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_pl.properties
index 4019929c04..de48f535f9 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_pl.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_pl.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Konsola administracyjna
admin-console.help=Pomoc
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Warto\u015bci zosta\u0142y zapisane pomy\u015blnie.
admin-console.host=Host
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_pt_BR.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_pt_BR.properties
index 373c5700d0..8b04a473e4 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_pt_BR.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_pt_BR.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Console de administra\u00e7\u00e3o
admin-console.help=Ajuda
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=Valores salvos com sucesso.
admin-console.host=Host
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_ru.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_ru.properties
index cb6dc86ce8..ea81594d27 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_ru.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_ru.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430
admin-console.help=\u0421\u043f\u0440\u0430\u0432\u043a\u0430
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.
admin-console.host=\u0425\u043e\u0441\u0442
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_sv.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_sv.properties
index e7efb0ead4..89954ebce1 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_sv.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_sv.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=Admin-konsol
admin-console.help=Hj\u00e4lp
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=V\u00e4rden sparades.
admin-console.host=V\u00e4rd
diff --git a/remote-api/src/main/resources/alfresco/messages/admin-console_zh_CN.properties b/remote-api/src/main/resources/alfresco/messages/admin-console_zh_CN.properties
index 214afb02bd..1ca7fefabf 100644
--- a/remote-api/src/main/resources/alfresco/messages/admin-console_zh_CN.properties
+++ b/remote-api/src/main/resources/alfresco/messages/admin-console_zh_CN.properties
@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console
admin-console.header=\u7ba1\u7406\u63a7\u5236\u53f0
admin-console.help=\u5e2e\u52a9
-admin-console.help-link=https://support.hyland.com/p/alfresco
+admin-console.help-link-topic=qvs1720602310678
admin-console.success=\u5df2\u6210\u529f\u4fdd\u5b58\u7684\u503c\u3002
admin-console.host=\u4e3b\u673a
diff --git a/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/admin/admin-template.ftl b/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/admin/admin-template.ftl
index 54416692a1..6eb9daa70a 100644
--- a/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/admin/admin-template.ftl
+++ b/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/admin/admin-template.ftl
@@ -554,7 +554,7 @@ Admin.addEventListener(window, 'load', function() {
diff --git a/repository/docs/identity-provider/authentication/README.md b/repository/docs/identity-provider/authentication/README.md
index 02f21977f2..36a14f38c8 100644
--- a/repository/docs/identity-provider/authentication/README.md
+++ b/repository/docs/identity-provider/authentication/README.md
@@ -27,7 +27,7 @@ to integrate with a number of external Authentication providers including
* https://github.com/Alfresco/alfresco-data-model/tree/master/src/main/java/org/alfresco/repo/security/authentication
* License: LGPL
* Issue Tracker Link: https://issues.alfresco.com/jira/issues/?jql=project%3DREPO
-* Documentation Link: https://support.hyland.com/r/Alfresco/Alfresco-Content-Services-Community-Edition/23.4/Alfresco-Content-Services-Community-Edition/Administer/Manage-Security/Authentication-and-sync
+* Documentation Link: https://support.hyland.com/access?dita:id=byj1720776091160&vrm_version=25.2&component=Alfresco%20Content%20Services%20Community%20Edition
* Contribution Model: Alfresco Open Source
***
diff --git a/repository/docs/meta-data-services/versions/README.md b/repository/docs/meta-data-services/versions/README.md
index 268a1f1305..dcdb8ad31c 100644
--- a/repository/docs/meta-data-services/versions/README.md
+++ b/repository/docs/meta-data-services/versions/README.md
@@ -16,7 +16,7 @@
* Source Code Link:m https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/
* License: LGPL
* Issue Tracker Link: https://issues.alfresco.com/jira/secure/RapidBoard.jspa?projectKey=REPO&useStoredSettings=true&rapidView=379
-* Documentation Link: https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Configure/Repository/About-Versioning
+* Documentation Link: https://support.hyland.com/access?dita:id=ybx1720084724583&vrm_version=25.2
* Contribution Model: Alfresco publishes the source code and will review proposed patch requests
***
diff --git a/repository/src/main/java/org/alfresco/repo/template/DocumentationURLMethod.java b/repository/src/main/java/org/alfresco/repo/template/DocumentationURLMethod.java
new file mode 100644
index 0000000000..b51a5be45d
--- /dev/null
+++ b/repository/src/main/java/org/alfresco/repo/template/DocumentationURLMethod.java
@@ -0,0 +1,195 @@
+/*
+ * #%L
+ * Alfresco Repository
+ * %%
+ * Copyright (C) 2005 - 2025 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see
.
+ * #L%
+ */
+package org.alfresco.repo.template;
+
+import java.util.List;
+
+import freemarker.template.TemplateMethodModelEx;
+import freemarker.template.TemplateModelException;
+import freemarker.template.TemplateScalarModel;
+import org.apache.commons.lang3.StringUtils;
+
+public class DocumentationURLMethod extends BaseTemplateProcessorExtension implements TemplateMethodModelEx
+{
+
+ private static final String COMPONENT_SEARCHENTERPRISE = "elasticsearch";
+ private static final String COMPONENT_SEARCH = "solr";
+
+ private String documentationBaseUrl;
+ private String acsVersion;
+ private String alfrescoSearchVersion;
+ private String alfrescoSearchEnterpriseVersion;
+ private String defaultDocumentationUrl;
+
+ public void setDefaultDocumentationUrl(String defaultDocumentationUrl)
+ {
+ this.defaultDocumentationUrl = defaultDocumentationUrl;
+ }
+
+ public void setAcsVersion(String acsVersion)
+ {
+ this.acsVersion = acsVersion;
+ }
+
+ public void setAlfrescoSearchVersion(String alfrescoSearchVersion)
+ {
+ this.alfrescoSearchVersion = alfrescoSearchVersion;
+ }
+
+ public void setAlfrescoSearchEnterpriseVersion(String alfrescoSearchEnterpriseVersion)
+ {
+ this.alfrescoSearchEnterpriseVersion = alfrescoSearchEnterpriseVersion;
+ }
+
+ public void setDocumentationBaseUrl(String documentationBaseUrl)
+ {
+ this.documentationBaseUrl = documentationBaseUrl;
+ }
+
+ /**
+ * Returns documentation URL. You can specify property key which should hold value of topic uid and url component(if required). * a) If no arguments are provided, the default documentation URL is returned.
+ *
+ *
+ * ${documentationUrl() -> https://support.hyland.com/p/alfresco
+ *
+ *
+ * b) First argument is interpreted as Topic UID of the URL. The value is retrieved and treated as Topic UID appended after baseURL and before version.
+ *
+ *
+ * ${documentationURL("eet567890373737")} -> https://support.hyland.com/access?dita:id=eet567890373737&vrm_version=25.1
+ *
+ *
+ * c) Second argument(if required) is interpreted as an additional URL component, which will be appended to the URL to denote a specific component of Alfresco.
+ *
+ *
+ * ${documentationUrl("eeu1720075126296", "&component=Alfresco%20Content%20Services%20Community%20Edition"} -> https://support.hyland.com/access?dita:id=eeu1720075126296&vrm_version=25.1&component=Alfresco%20Content%20Services%20Community%20Edition
+ *
+ *
+ * d) Third argument (if required) is interpreted as the Alfresco component (e.g., "solr", "elasticsearch", or empty) to determine which version to use in the URL.
+ *
+ *
+ * ${documentationUrl("eeu1720075126296", "", "solr")} -> https://support.hyland.com/access?dita:id=eeu1720075126296&vrm_version=2.0
+ *
+ *
+ * @param args
+ * arguments passed to Freemarker template method invocation first argument is interpreted as Topic UID of the URL, second argument is interpreted as an additional URL component, third argument is interpreted as the Alfresco component ("solr", "elasticsearch", or empty) to select the version.
+ * @return the documentation URL
+ * @throws TemplateModelException
+ * if an error occurs
+ */
+ @Override
+ public Object exec(List args) throws TemplateModelException
+ {
+ String topicUid = getTopicUid(args);
+ String urlComponent = getUrlComponent(args);
+ String alfrescoComponent = getAlfrescoComponent(args);
+ return getDocumentationUrl(topicUid, urlComponent, alfrescoComponent);
+ }
+
+ /**
+ * Returns default landing documentation URL.
+ *
+ * @return default documentation URL
+ */
+ public String getDocumentationUrl()
+ {
+ return defaultDocumentationUrl;
+ }
+
+ /**
+ * Constructs the documentation URL using the base URL, topic UID, version, and additional component.
+ *
+ * @param topicUid
+ * path segment
+ * @param urlComponent
+ * additional URL component (may be empty)
+ * @param alfrescoComponent
+ * additional Alfresco component (may be empty), to determine the version
+ * @return full documentation URL
+ */
+ public String getDocumentationUrl(String topicUid, String urlComponent, String alfrescoComponent)
+ {
+ if (StringUtils.isEmpty(topicUid) && StringUtils.isEmpty(urlComponent))
+ {
+ return getDocumentationUrl();
+ }
+ String version = selectVersion(alfrescoComponent);
+ return documentationBaseUrl + topicUid + version + urlComponent;
+ }
+
+ private String selectVersion(String alfrescoComponent)
+ {
+ if (COMPONENT_SEARCHENTERPRISE.equalsIgnoreCase(alfrescoComponent))
+ {
+ return alfrescoSearchEnterpriseVersion;
+ }
+ if (COMPONENT_SEARCH.equalsIgnoreCase(alfrescoComponent))
+ {
+ return alfrescoSearchVersion;
+ }
+ return acsVersion;
+ }
+
+ /**
+ * Extracts a string argument from the list at the given index.
+ *
+ * @param args
+ * argument list
+ * @param index
+ * index to extract
+ * @return string value or empty string if not present
+ * @throws TemplateModelException
+ * if argument is not a scalar
+ */
+ private String getStringArg(List> args, int index) throws TemplateModelException
+ {
+ if (args.size() > index)
+ {
+ Object arg = args.get(index);
+ if (arg instanceof TemplateScalarModel)
+ {
+ String value = ((TemplateScalarModel) arg).getAsString();
+ return value != null ? value : "";
+ }
+ }
+ return "";
+ }
+
+ private String getTopicUid(List> args) throws TemplateModelException
+ {
+ return getStringArg(args, 0);
+ }
+
+ private String getUrlComponent(List> args) throws TemplateModelException
+ {
+ return getStringArg(args, 1);
+ }
+
+ private String getAlfrescoComponent(List> args) throws TemplateModelException
+ {
+ return getStringArg(args, 2);
+ }
+}
diff --git a/repository/src/main/resources/alfresco/messages/system-messages.properties b/repository/src/main/resources/alfresco/messages/system-messages.properties
index 4c4e46b277..04ec48c837 100644
--- a/repository/src/main/resources/alfresco/messages/system-messages.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_cs.properties b/repository/src/main/resources/alfresco/messages/system-messages_cs.properties
index 9cf3047776..055a99f691 100644
--- a/repository/src/main/resources/alfresco/messages/system-messages_cs.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_cs.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Vlastnost ''{0}'' nebyla nastavena: {1} ({2})
system.err.duplicate_name=Duplicitn\u00ed n\u00e1zvy pod\u0159\u00edzen\u00fdch objekt\u016f nejsou povoleny ({0})
-system.err.lucene_not_supported=Subsyst\u00e9m hled\u00e1n\u00ed Lucene nen\u00ed podporov\u00e1n. Viz https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_da.properties b/repository/src/main/resources/alfresco/messages/system-messages_da.properties
index 06c3cb3015..e523ecfd20 100644
--- a/repository/src/main/resources/alfresco/messages/system-messages_da.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_da.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Egenskaben ''{0}'' er ikke blevet indstillet: {1} ({2})
system.err.duplicate_name=Duplikeret navn p\u00e5 underordnet er ikke tilladt: {0}
-system.err.lucene_not_supported=Lucene-s\u00f8geundersystemet underst\u00f8ttes ikke. Se https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_de.properties b/repository/src/main/resources/alfresco/messages/system-messages_de.properties
index b20abde9cc..bd75300896 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_de.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_de.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_es.properties b/repository/src/main/resources/alfresco/messages/system-messages_es.properties
index 8ca51c9df6..08cc0f4af9 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_es.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_es.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_fi.properties b/repository/src/main/resources/alfresco/messages/system-messages_fi.properties
index 56c38e2df1..bfee25c206 100644
--- a/repository/src/main/resources/alfresco/messages/system-messages_fi.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_fi.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Ominaisuutta {0} ei ole m\u00e4\u00e4ritetty: {1} ({2})
system.err.duplicate_name=P\u00e4\u00e4llekk\u00e4ist\u00e4 alatasonime\u00e4 ei sallita: {0}
-system.err.lucene_not_supported=Lucene-hakualij\u00e4rjestelm\u00e4\u00e4 ei tueta. Saat lis\u00e4tietoja osoitteesta https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_fr.properties b/repository/src/main/resources/alfresco/messages/system-messages_fr.properties
index 498a6d7b75..8e2f38dc42 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_fr.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_fr.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set : {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed : {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_it.properties b/repository/src/main/resources/alfresco/messages/system-messages_it.properties
index cda7bde170..0ffbf5e08e 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_it.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_it.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_ja.properties b/repository/src/main/resources/alfresco/messages/system-messages_ja.properties
index 3178ef3acb..d1c062cbf1 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_ja.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_ja.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_nb.properties b/repository/src/main/resources/alfresco/messages/system-messages_nb.properties
index 40611af5aa..45eba3fabe 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_nb.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_nb.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_nl.properties b/repository/src/main/resources/alfresco/messages/system-messages_nl.properties
index e47648c61c..ab9017a481 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_nl.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_nl.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_pl.properties b/repository/src/main/resources/alfresco/messages/system-messages_pl.properties
index 2e4f3c05a5..5888dff051 100644
--- a/repository/src/main/resources/alfresco/messages/system-messages_pl.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_pl.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Nie ustawiono w\u0142a\u015bciwo\u015bci ''{0}'': {1} ({2})
system.err.duplicate_name=Zduplikowane nazwy element\u00f3w podrz\u0119dnych s\u0105 niedozwolone: {0}
-system.err.lucene_not_supported=Podsystem wyszukiwania Lucene nie jest obs\u0142ugiwany. Zobacz https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_pt_BR.properties b/repository/src/main/resources/alfresco/messages/system-messages_pt_BR.properties
index f0a8ce8103..c0b9b1f977 100644
--- a/repository/src/main/resources/alfresco/messages/system-messages_pt_BR.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_pt_BR.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_ru.properties b/repository/src/main/resources/alfresco/messages/system-messages_ru.properties
index 7a2dbc1568..f497c11037 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_ru.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_ru.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_sv.properties b/repository/src/main/resources/alfresco/messages/system-messages_sv.properties
index b928534a10..7295c6e5ee 100644
--- a/repository/src/main/resources/alfresco/messages/system-messages_sv.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_sv.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Egenskap ''{0}'' har inte st\u00e4llts in: {1} ({2})
system.err.duplicate_name=Dubbelt underordnat namn inte till\u00e5tet: {0}
-system.err.lucene_not_supported=Lucene-s\u00f6kundersystemet st\u00f6ds inte. Se https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/messages/system-messages_zh_CN.properties b/repository/src/main/resources/alfresco/messages/system-messages_zh_CN.properties
index cb7ff78959..666aa5a2b6 100755
--- a/repository/src/main/resources/alfresco/messages/system-messages_zh_CN.properties
+++ b/repository/src/main/resources/alfresco/messages/system-messages_zh_CN.properties
@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0}
-system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages
diff --git a/repository/src/main/resources/alfresco/repository.properties b/repository/src/main/resources/alfresco/repository.properties
index 39aac6d0e5..c1ad7f7f30 100644
--- a/repository/src/main/resources/alfresco/repository.properties
+++ b/repository/src/main/resources/alfresco/repository.properties
@@ -1402,3 +1402,10 @@ default.async.folder.items=1000
default.nodeSize.corePoolSize=5
default.nodeSize.maximumPoolSize=10
default.nodeSize.workQueueSize=100
+
+# Documentation URLs properties
+alfresco.documentation.baseurl=https://support.hyland.com/access?dita:id=
+alfresco.documentation.acsVersion=&vrm_version=25.2
+alfresco.documentation.searchVersion=&vrm_version=2.0
+alfresco.documentation.searchEnterpriseVersion=&vrm_version=5.1
+alfresco.documentation.defaultDocumentationUrl=https://support.hyland.com/p/alfresco
diff --git a/repository/src/main/resources/alfresco/subsystems/email/OutboundSMTP/mail-template-services-context.xml b/repository/src/main/resources/alfresco/subsystems/email/OutboundSMTP/mail-template-services-context.xml
index b98ccd5a3b..171c1b8061 100644
--- a/repository/src/main/resources/alfresco/subsystems/email/OutboundSMTP/mail-template-services-context.xml
+++ b/repository/src/main/resources/alfresco/subsystems/email/OutboundSMTP/mail-template-services-context.xml
@@ -161,4 +161,25 @@
+
+
+
+ documentationUrl
+
+
+ ${alfresco.documentation.baseurl}
+
+
+ ${alfresco.documentation.acsVersion}
+
+
+ ${alfresco.documentation.searchVersion}
+
+
+ ${alfresco.documentation.searchEnterpriseVersion}
+
+
+ ${alfresco.documentation.defaultDocumentationUrl}
+
+
diff --git a/repository/src/main/resources/alfresco/template-services-context.xml b/repository/src/main/resources/alfresco/template-services-context.xml
index 62bfc3bb56..f4d86d1758 100644
--- a/repository/src/main/resources/alfresco/template-services-context.xml
+++ b/repository/src/main/resources/alfresco/template-services-context.xml
@@ -171,4 +171,25 @@
urldecode
+
+
+
+ documentationUrl
+
+
+ ${alfresco.documentation.baseurl}
+
+
+ ${alfresco.documentation.acsVersion}
+
+
+ ${alfresco.documentation.searchVersion}
+
+
+ ${alfresco.documentation.searchEnterpriseVersion}
+
+
+ ${alfresco.documentation.defaultDocumentationUrl}
+
+
diff --git a/repository/src/test/java/org/alfresco/AllUnitTestsSuite.java b/repository/src/test/java/org/alfresco/AllUnitTestsSuite.java
index 3c594e091b..6ece232c21 100644
--- a/repository/src/test/java/org/alfresco/AllUnitTestsSuite.java
+++ b/repository/src/test/java/org/alfresco/AllUnitTestsSuite.java
@@ -271,7 +271,8 @@ import org.alfresco.util.testing.category.NonBuildTests;
org.alfresco.util.schemacomp.SchemaDifferenceHelperUnitTest.class,
org.alfresco.repo.tagging.TaggingServiceImplUnitTest.class,
- org.alfresco.repo.serviceaccount.ServiceAccountRegistryImplTest.class
+ org.alfresco.repo.serviceaccount.ServiceAccountRegistryImplTest.class,
+ org.alfresco.repo.template.DocumentationURLMethodTest.class
})
public class AllUnitTestsSuite
{}
diff --git a/repository/src/test/java/org/alfresco/repo/template/DocumentationURLMethodTest.java b/repository/src/test/java/org/alfresco/repo/template/DocumentationURLMethodTest.java
new file mode 100644
index 0000000000..555f8175b7
--- /dev/null
+++ b/repository/src/test/java/org/alfresco/repo/template/DocumentationURLMethodTest.java
@@ -0,0 +1,111 @@
+/*
+ * #%L
+ * Alfresco Repository
+ * %%
+ * Copyright (C) 2005 - 2025 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see
.
+ * #L%
+ */
+package org.alfresco.repo.template;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+import freemarker.template.SimpleScalar;
+import freemarker.template.TemplateModelException;
+import org.junit.Before;
+import org.junit.Test;
+
+public class DocumentationURLMethodTest
+{
+
+ public static final String BASE_URL = "baseUrl";
+ public static final String ACS_VERSION = "_acs_";
+ public static final String SEARCH_VERSION = "_solr_";
+ public static final String SEARCH_ENTERPRISE_VERSION = "_es_";
+ public static final String DEFAULT_DOCUMENTATION_URL = "defaultDocumentationUrl";
+ DocumentationURLMethod documentationURLMethod;
+
+ @Before
+ public void setUp() throws Exception
+ {
+ documentationURLMethod = new DocumentationURLMethod();
+ documentationURLMethod.setAcsVersion(ACS_VERSION);
+ documentationURLMethod.setAlfrescoSearchVersion(SEARCH_VERSION);
+ documentationURLMethod.setAlfrescoSearchEnterpriseVersion(SEARCH_ENTERPRISE_VERSION);
+ documentationURLMethod.setDocumentationBaseUrl(BASE_URL);
+ documentationURLMethod.setDefaultDocumentationUrl(DEFAULT_DOCUMENTATION_URL);
+ }
+
+ @Test
+ public void testGetDocumentationUrl_NoArgs() throws TemplateModelException
+ {
+ Object result = documentationURLMethod.exec(Collections.emptyList());
+ assertEquals("defaultDocumentationUrl", result);
+ }
+
+ @Test
+ public void testGetDocumentationUrl_EmptyTopicUidAndUrlComponent() throws TemplateModelException
+ {
+ Object result = documentationURLMethod.exec(Arrays.asList(
+ new SimpleScalar(""),
+ new SimpleScalar("")));
+ assertEquals("defaultDocumentationUrl", result);
+ }
+
+ @Test
+ public void testGetDocumentationUrl_WithTopicUid_AcsVersion() throws TemplateModelException
+ {
+ Object result = documentationURLMethod.exec(Collections.singletonList(new SimpleScalar("/topic")));
+ assertEquals(BASE_URL + "/topic" + ACS_VERSION, result);
+ }
+
+ @Test
+ public void testGetDocumentationUrl_WithTopicUidAndUrlComponent_AcsVersion() throws TemplateModelException
+ {
+ Object result = documentationURLMethod.exec(Arrays.asList(
+ new SimpleScalar("/topic"),
+ new SimpleScalar("urlComponent")));
+ assertEquals(BASE_URL + "/topic" + ACS_VERSION + "urlComponent", result);
+ }
+
+ @Test
+ public void testGetDocumentationUrl_WithSolrVersion() throws TemplateModelException
+ {
+ Object result = documentationURLMethod.exec(Arrays.asList(
+ new SimpleScalar("/topic"),
+ new SimpleScalar("urlComponent"),
+ new SimpleScalar("solr")));
+ assertEquals(BASE_URL + "/topic" + SEARCH_VERSION + "urlComponent", result);
+ }
+
+ @Test
+ public void testGetDocumentationUrl_WithElasticSearchVersion() throws TemplateModelException
+ {
+ Object result = documentationURLMethod.exec(Arrays.asList(
+ new SimpleScalar("/topic"),
+ new SimpleScalar("urlComponent"),
+ new SimpleScalar("elasticsearch")));
+ assertEquals(BASE_URL + "/topic" + SEARCH_ENTERPRISE_VERSION + "urlComponent", result);
+ }
+
+}