Does not include chemistry-opencmis 1.1.0 (downgraded to 1.0.0) or jackson-databind 2.11.2 (downgraded to 2.10.1) due to test failures. Original upgrades by dependabot.
* Fix latest T-Engine versions and remove redundantly versions in pom.xml files
* Changes from acs-packaging
* From alfresco-core (included json change after 7.0.0-A7)
Bump commons-io from 2.7 to 2.8.0 (#160)
(cherry picked from commit c5a8f5ffb3988bd87719aa43b7089851607b7308)
MNT-21879 : [Security] Multiple json-java vulnerabilities
- updated org.json.json version
(cherry picked from commit edaffa350b29157bdcd1de3737fa491b88093378)
[revert] MNT-21879 : [Security] Multiple json-java vulnerabilities
- updated org.json.json version
(cherry picked from commit 48e2cffb287adb5c5a1d5092ae7fde895c8d0836)
* from alfresco-data-model
SEARCH-2362: Consider changing properties from mandatory/enforced/pro… (#313)
* SEARCH-2362: Consider changing properties from mandatory/enforced/protected to NON mandatory/enforced/protected as incremental changes
* SEARCH-2362 Update tests to check whole set of returned diffs at once.
Co-authored-by: Tom Page <thomas.page@alfresco.com>
(cherry picked from commit 576601564251038311627f230f286b96ea950383)
Bump dependency.cxf.version from 3.3.7 to 3.4.0 (#309)
(cherry picked from commit dc689a911d83b608d49572cada5c2d16441c1eea)
Bump chemistry-opencmis-commons-impl from 1.0.0 to 1.1.0 (#305)
(cherry picked from commit 98fa7b66851aeada1bb6ea05bd6e747e3c55b342)
Bump commons-compress from 1.19 to 1.20 (#303)
(cherry picked from commit f6a950d4a36f05083536638cc5ff7866436f191d)
Bump pdfbox from 2.0.17 to 2.0.20 (#304)
(cherry picked from commit 435b786817ee18c28b84d093c6fbfbc330434e4c)
* From alfresco-remote-api
MNT-21702 : Kerberos SSO fallback mechanism for WebDAV (#765)
Reinstated 'part' of the reverted code change originally made in MNT-16931 to handle fallback correctly for WebDAV in a kerberos environment.
(cherry picked from commit 4091cb9d4b1cd643f9678a4c5c9654963a72c266)
[MNT-21758] Cannot map an AOS / WebDAV drive with Kerberos SSO enabled (#784)
- Add multi catch for Illegal Argument and Not Found when findWebScript is called.
(cherry picked from commit 59517076d2dfc0477870007a7d136cdf907e322f)
SEARCH-2363: Escape special characters when serializing ChildAssociationRefs and AssociationRefs objects (#788)
(cherry picked from commit f941a6e283517c0949f57fefdb1e7e8d7cfb46c4)
ACS-580: Direct access urls - revert initial api version (#792)
(cherry picked from commit 7f4959fdfaeaf1b7debd78df5dcacd4a5b9e809a)
* From alfresco-repository
SEARCH-2289: Restore the support for SOLR 4 in ACS 6.2+ deployments. (#1063)
This configuration is recommended for upgrading scenarios, where you need to upgrade ACS and to re-index the repository with SOLR 6 while using the system with SOLR 4.
(cherry picked from commit e8bba3ca13880be782c2e4c1d82223e70c370f28)
[MNT-21847] - Aync permissions fail when new nodes are created (#1188)
Fix:
*Changed method setFixedAcls on class ADMAccessControlListDAO to continue to propagate through children to apply the correct acl not only when the current child acl matches the shared acl to replace but also when the current child acl matches the new shared acl
Unit Test:
*Refactored the unit test FixedAclUpdaterTest to be able to add in a new test without repeating code: separating the operations that set the permissions from the one that triggers the job into separate methods
*As it was if one test failed, leaving aspects to be processed, the test would run indefinitely (it was programmed to keep running the job while there where nodes with the aspect). Added a verification to stop triggering the job if the number of nodes with the pendingFixAcl did not change between executions.
*Also, if one test failed, it would leave nodes with pendingFixAcl aspect in the database, and the other tests that ran after would also fail, not completing the goal of processing all nodes with the aspect. If a test fails, the folder structure it ran is now deleted so no nodes with the aspect from that structure are processed by the other tests.
*Added a test to find the first folder in a tree where permissions where set async that has the pendingFixAcl aspect and that creates a new node in it to verify the issue
(cherry picked from commit 443e5e226430a2760492fb82214ad520e7e1cb75)
Bump dependency.pdfbox.version from 2.0.20 to 2.0.21 (#1170)
(cherry picked from commit b93d73dec5f0e94d83f62721842b92e617dfba79)
Bump rhino from 1.7.12 to 1.7.13 (#1185)
(cherry picked from commit a5b5f072c64511999d3d27087a1a82f949371ac8)
Bump spring-security-core from 5.2.1.RELEASE to 5.3.4.RELEASE (#1167)
(cherry picked from commit 54f68d823333254cef74343288e99107494b1e28)
REPO-5339 Improve concurrency of SimplePermissionReference (#1189)
* REPO-5339 Improve concurrency of SimplePermissionReference
* REPO-5339 Change locks to synchronised block
* [REPO-5339] Improve concurrency of SimplePermissionReference
- Move to ConcurrentHashMap
- Capacity set to hold Repo + RM + slight overage for custom permissions
- Getting new SimplePermissionReference will not block while getting existing value.
- If a new value needs to be added to the Map, it will block when adding
- If blocked it will wait, in order, until it can attempt to add
- If it was blocked before it will check first if another operation added before adding as an atomic action
* [REPO-5339] Improve concurrency of SimplePermissionReference
- Simplify getPermissionReference by removing Future
* [REPO-5339] Thread Lock detected for AclReadersGet invocations
- Add load capacity and concurrency level
Co-authored-by: Jared Ottley <jared.ottley@alfresco.com>
(cherry picked from commit 39ded1cc0a364d24f737584eed22bef0918a5359)
[MNT-21766]: Significant degradation of performance as file and site count increase (#1217)
* [MNT-21766]: Significant degradation of performance as file and site
count increase
- Added the following indexes on alf_transaction:
idx_alf_txn_ctms_sc, cols (commit_time_ms)
idx_alf_txn_id_ctms, cols (id, commit_time_ms)
- Added the following indexes on alf_node:
idx_alf_node_ver, cols (version)
idx_alf_node_txn, cols (transaction_id)
- Created patch patch.db-V6.3-add-indexes-node-transaction
- Updated version.schema to 14002
- Added system property system.new-node-transaction-indexes.ignored, set
as true by default to not apply the patch automatically
- Created the MySQL update dbscripts to add the new indexes - and also
drop and recreate the pre-existing index idx_alf_txn_ctms on alf_transaction that was
inconsistent with the other DBMS: was indexing only commit_time_ms when
on all other DBMS index idx_alf_txn_ctms was on (commit_time_ms, id)
- Created the Postgres update dbscripts to add the new indexes
(cherry picked from commit d70746f63a6e6a2154d2e37c577955a17c42256e)
SEARCH-2450 Don't expose properties from solr endpoint if the model says not to index them. (#1228)
(cherry picked from commit 2fea6c9484def402e2bfd7c3717071ff8df69c01)
Fix/MNT-21800 CMIS Web Service Check Out returns error (#1232)
* MNT-21800 : CMIS Web Service Check Out returns error
Integrate path into codebase.
(cherry picked from commit 51a7793668ba1c969c5de37603190244e3839cd0)
* Revert dependency.opencmis.version change 1.1.0 back to 1.0.0 done by dependabot on 08/09/2020 as the upgraded failed in alfresco-remote-api tests which are now part of the same repo.
* Trial build with previous rino version
* Revert cxf upgrade to 3.4.0 from 3.7.7 as dependabot failed to apply it in acs-packaging
Revert org-json to 20160212 from 20090211 as dependabot failed to apply it in alfresco-repository
* Revert "Trial build with previous rino version"
This reverts commit 40f8120d5d
.
* Remove READMEs that have been moved to the top level.
* Fix location of keystore
Only copy win64 and linux pdf-renderer to dist zip
Sort out what get included in dist jar and zip
* jackson databind revert
alfresco-community-repo
This project contains the bulk of the Alfresco Content Services Repository code.
To make the development process simpler, it brings together code historically in alfresco-core
,
alfresco-data-madel
, alfresco-repository
, alfresco-remote-api
and repository specific
tests and war file creation from acs-community-packaging
. They exist as sub projects within the Maven Reactor and still
create the same artifacts.
Alfresco Core
Alfresco Core is a library packaged as a jar file which contains the following:
- Various helpers and utils
- Canned queries interface and supporting classes
- Generic encryption supporting classes
Version 7 of the library uses Spring 5, Quartz 2.3 and does not have Hibernate dependency.
Alfresco Data Model
Data model is a library packaged as a jar file which contains the following:
- Dictionary, Repository and Search Services interfaces
- Models for data types and Dictionary implementation
- Parsers
Alfresco Repository
Repository is a library packaged as a jar file which contains the following:
- DAOs and SQL scripts
- Various Service implementations
- Utility classes
Tests are combined into test classes split by test type or Spring application context used in the test, see classes in src/test/java/org/alfresco. All of these classes as well as individual tests can be run by specifying the test class name and a set of DB connection properties. Check the travis.yml file for docker images that should be started to provide a sutable test environment. For example:
mvn clean test -Dtest=SomeRepoTest -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql:alfresco -Ddb.username=alfresco -Ddb.password=alfresco
Alfresco Remote API
Remote API is a library packaged as a jar file which contains the following:
- REST API framework
- WebScript implementations including V1 REST APIs
- OpenCMIS implementations
Like the alfresco-repository
tests are combined in test classes split by test type or Spring application context used
in the test.
Artifacts
The artifacts can be obtained by:
- downloading from Alfresco maven repository
- getting as Maven dependency by adding the dependency to your pom file:
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-core</artifactId>
<version>version</version>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-data-model</artifactId>
<version>version</version>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-repository</artifactId>
<version>version</version>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-remote-api</artifactId>
<version>version</version>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>content-services-community</artifactId>
<version>version</version>
<type>war</type>
</dependency>
and Alfresco maven repository:
<repository>
<id>alfresco-maven-repo</id>
<url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
</repository>
The SNAPSHOT versions of the artifact are not published.
All current source versions are held in github. Historic versions can be found in Alfresco SVN
Contributing guide
Please use this guide to make a contribution to the project.
Setting up your development environment
Although it is possible to work on individual github projects, we recommend working on
the alfresco-community-repo
, alfresco-enterprise-repo
, acs-packaging
and acs-community-packaging
in a single Intellij IDEA project. They depend on each other and typically you
will want to make changes to all of them if you are changing the repository code.
In the case of older branches, there is generally no need for the acs-community-packaging
as you will
not be creating a community release.
Although it is possible to work on individual github projects, we recommend working on the alfresco-community-repo
and acs-community-packaging
in a single Intellij IDEA project. They depend on each other and typically you will
want to make changes to both of them if you are changing the repository code.
$ mkdir work
$ cd work
$ git clone git@github.com:Alfresco/alfresco-community-repo.git
$ git clone git@github.com:Alfresco/acs-community-packaging.git
If you wish to build these projects from the command line, use the following commands.
$ cd alfresco-community-repo
$ mvn clean install -PcommunityDocker -DskipTests=true -Dversion.edition=Community
$ cd ..
$ cd acs-community-packaging
$ mvn clean install -PcommunityDocker -Dmaven.javadoc.skip=true
$ cd ..
In Itellij IDEA, create a new project using the work
directory as the source.
- File > New Project from Existing Sources > .../work > Maven
Docker
We generally use Docker for testing. In order to reduce the size of images we also supply a squash option that collapses the layers in the image. This is a long-standing experimental feature that we have fould useful. However you will need to enable experimental features in your Docker Engine.
{
"experimental": true,
"debug": true
}
Branches
As multiple projects have been combined, branch names use the ACS version they are targeting.
For example the code used to create the repository in ACS 6.2.1 in a branch called releases/6.2.1
.
The actual version number of the repository artifacts created by alfresco-community-repo
are however different.
For example release/6.2.1
artifacts are 7.183.x
. This adds some complexity, but ensures that
version numbers do not go backwards in existing releases. It also provides some level of
independence between the repository and other ACS components.