Harvester / GeoNetwork protocol / Metadata not updated on harvest.
Harvester / Category not saved #578

This is more a workaround than a fix but fix settings categories
on first harvest and updates.

The issue is related to some method saving the metadata object
to the repository and caller method also using a previous version of
the metadata object. The fix retreive an updated version of the
metadata object when needed in order to properly save the record.
Merge pull request #600 from fxprunayre/fix-harvester-gn-protocol

Harvester / GN protocol / Misc fix
Harvester / Remove metadata folder when removing all records for a harvester node (#596).
Merge remote-tracking branch 'origin/stable-develop' into stable-develop
Findbug.
Widgets / Request readonly status only once every 10s. This will speed up actions menu and view window display.
Test / Clean database in correct order taking FK in account.
Fix e2e test.
Remove unused scheduler (#591).
Remove Jeeves ScheduleManager (#591). Use Spring scheduling if needed.
Increase maxOpenPreparedStatement to avoid SQL error when importing, deleting ~100records (#521).
Reduce database queries of DataManager.buildMetadataInfo for many metadata.

LuceneSearcher calls DataManager.buildMetadataInfo for each search result. The buildMetadata makes several database queries for each call.  This change modifies buildMetadataInfo so that it takes several metadata ids and builds the info for all of the objects with only a few queries.

Tests indicate that it takes the same time for 1 metadata but 14x faster for 20 metadata and 30x faster for 40 metadata.
Merge pull request #603 from jesseeichar/optimize-build-metadata-info

Reduce database queries of DataManager.buildMetadataInfo for many metadata
Fixed compile error
Adding check before rollback. Some errors where due to try to rollback an already rolledback transaction
Add IndexingTask which will be trigger every 30sec by default to reindex a set of records.

This set of records is maintained in the IndexingList bean which can be populate whenever a record needs to be indexed in the near future (not immediate indexing). For example, this is the case when a record is viewed and the popularity updated. If a user switch from one tab to another for the same record, the popularity is updated in the database for each tab switch but the record will be reindexed only once every 30sec (instead of each time in previous IncreasePopularityTask).
Merge pull request #604 from fxprunayre/improvements/increase-popularity

Add IndexingTask which will be trigger every 30sec by default to reindex a set of records.
Removing un-autowirable ServiceContext
If it is a multipart, urlrewrite does not work ok. So we will not redirect those calls.