Skip to content

Commit c9d8924

Browse files
committed
Merge remote-tracking branch 'IQSS/develop' into MigrateDOI
2 parents e8e5875 + 908ce3c commit c9d8924

File tree

179 files changed

+7765
-1845
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+7765
-1845
lines changed

.github/workflows/deploy_beta_testing.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
run: echo "war_file=$(ls *.war | head -1)">> $GITHUB_ENV
3737

3838
- name: Upload war artifact
39-
uses: actions/upload-artifact@v4
39+
uses: actions/upload-artifact@v5
4040
with:
4141
name: built-app
4242
path: ./target/${{ env.war_file }}
@@ -50,7 +50,7 @@ jobs:
5050
- uses: actions/checkout@v5
5151

5252
- name: Download war artifact
53-
uses: actions/download-artifact@v5
53+
uses: actions/download-artifact@v6
5454
with:
5555
name: built-app
5656
path: ./
@@ -69,7 +69,7 @@ jobs:
6969
overwrite: true
7070

7171
- name: Execute payara war deployment remotely
72-
uses: appleboy/[email protected].2
72+
uses: appleboy/[email protected].3
7373
env:
7474
INPUT_WAR_FILE: ${{ env.war_file }}
7575
with:

.github/workflows/maven_unit_test.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262

6363
# Upload the built war file. For download, it will be wrapped in a ZIP by GitHub.
6464
# See also https://github.com/actions/upload-artifact#zipped-artifact-downloads
65-
- uses: actions/upload-artifact@v4
65+
- uses: actions/upload-artifact@v5
6666
with:
6767
name: dataverse-java${{ matrix.jdk }}.war
6868
path: target/dataverse*.war
@@ -72,7 +72,7 @@ jobs:
7272
- run: |
7373
tar -cvf java-builddir.tar target
7474
tar -cvf java-m2-selection.tar ~/.m2/repository/io/gdcc/dataverse-*
75-
- uses: actions/upload-artifact@v4
75+
- uses: actions/upload-artifact@v5
7676
with:
7777
name: java-artifacts
7878
path: |
@@ -112,7 +112,7 @@ jobs:
112112
cache: maven
113113

114114
# Get the build output from the unit test job
115-
- uses: actions/download-artifact@v5
115+
- uses: actions/download-artifact@v6
116116
with:
117117
name: java-artifacts
118118
- run: |
@@ -124,7 +124,7 @@ jobs:
124124

125125
# Wrap up and send to coverage job
126126
- run: tar -cvf java-reportdir.tar target/site
127-
- uses: actions/upload-artifact@v4
127+
- uses: actions/upload-artifact@v5
128128
with:
129129
name: java-reportdir
130130
path: java-reportdir.tar
@@ -145,7 +145,7 @@ jobs:
145145
cache: maven
146146

147147
# Get the build output from the integration test job
148-
- uses: actions/download-artifact@v5
148+
- uses: actions/download-artifact@v6
149149
with:
150150
name: java-reportdir
151151
- run: tar -xvf java-reportdir.tar
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
### Support for COAR Notify Relationship Announcement
2+
3+
Dataverse now supports sending and receiving [Linked Data Notification ](https://www.w3.org/TR/ldn/) messages involved in the
4+
[COAR Notify Relationship Announcement Workflow](https://coar-notify.net/catalogue/workflows/repository-relationship-repository/).
5+
6+
Dataverse can send messages to configured repositories announcing that a dataset has a related publication (as defined in the dataset metadata). This may be done automatically upon publication or triggered manually by a superuser. The receiving repository may do anything with the message, with the default expectation being that the repository will create a backlink from the publication to the dataset (assuming the publication exists in the repository, admins agree the link makes sense, etc.)
7+
8+
Conversely, Dataverse can receive notices from other configured repositories announcing relationships between their publications and datasets. If the referenced dataset exists in the Dataverse instance, a notification will be sent to users who can publish the dataset, or, optionally, only superusers who can publish the dataset. They can then decide whether to create a backlink to the publication in the dataset metadata.
9+
10+
(Earlier releases of Dataverse had experimental support in this area that was based on message formats defined prior to finalization of the COAR Notify specification for relationship announcements.)
11+
12+
#### New Settings/JVM Options
13+
14+
Configuration for sending messages involves specifying the
15+
:COARNotifyRelationshipAnnouncementTargets and :COARNotifyRelationshipAnnouncementTriggerFields
16+
17+
Configuration to receive messages involves specifying
18+
DATAVERSE_LDN_ALLOWED_HOSTS (dataverse.ldn.allowed-hosts)
19+
20+
Notifications are sent by default to users who can publish a dataset. The option below can be used to restrict notifications to superusers who can publish the dataset.
21+
22+
DATAVERSE_COAR_NOTIFY_RELATIONSHIP_ANNOUNCEMENT_NOTIFY_SUPERSUSERS_ONLY
23+
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
## Database Settings Cleanup
2+
3+
With this release, we remove some legacy specialties around Database Settings and provide better Admin API endpoints for them.
4+
5+
Most important changes:
6+
7+
1. Setting `BuiltinUsers.KEY` was renamed to `:BuiltinUsersKey`, aligned with our general naming pattern for options.
8+
2. Setting `WorkflowsAdmin#IP_WHITELIST_KEY` was renamed to `:WorkflowsAdminIpWhitelist`, aligned with our general naming pattern for options.
9+
3. Setting `:TabularIngestSizeLimit` no longer uses suffixes for formats and becomes a JSON-based setting instead.
10+
4. If set, all three settings will be migrated to their new form automatically for you (Flyway migration).
11+
5. You can no longer (accidentally) create or use arbitrary setting names or languages.
12+
All Admin API endpoints for settings now validate setting names and languages for existence and compliance.
13+
14+
As an administrator of a Dataverse instance, you can now make use of enhanced Bulk Operations on the Settings Admin API:
15+
16+
1. Retrieving all settings as JSON via `GET /api/admin/settings` supports localized options now, too.
17+
2. You can replace all existing settings in an idempotent way sending JSON to `PUT /api/admin/settings`.
18+
This will create, update and remove settings as necessary in one atomic operation.
19+
The new endpoint is especially useful to admins using GitOps or other automations.
20+
It allows control over all Database Settings from a single source without risking an undefined state.
21+
22+
Note: Despite the validation of setting names and languages, the content of any database setting is still not being validated when using the Settings Admin API!
23+
24+
### Updated Database Settings
25+
26+
The following database settings are were added to the official list within the code (to remain valid with the settings cleanup mentioned above):
27+
28+
- `:BagGeneratorThreads`
29+
- `:BagItHandlerEnabled`
30+
- `:BagItLocalPath`
31+
- `:BagValidatorJobPoolSize`
32+
- `:BagValidatorJobWaitInterval`
33+
- `:BagValidatorMaxErrors`
34+
- `:BuiltinUsersKey` - formerly `BuiltinUsers.KEY`
35+
- `:CreateDataFilesMaxErrorsToDisplay`
36+
- `:DRSArchiverConfig` - a Harvard-specific setting
37+
- `:DuraCloudContext`
38+
- `:DuraCloudHost`
39+
- `:DuraCloudPort`
40+
- `:FileCategories`
41+
- `:GoogleCloudBucket`
42+
- `:GoogleCloudProject`
43+
- `:LDNAnnounceRequiredFields`
44+
- `:LDNTarget`
45+
- `:WorkflowsAdminIpWhitelist` - formerly `WorkflowsAdmin#IP_WHITELIST_KEY`
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# 11744: CORS handling improvements
2+
3+
Modernizes CORS so browser integrations (previewers, external tools, JS clients) work correctly with multiple origins and proper caching.
4+
5+
## Highlights
6+
7+
- Echoes the request origin (`Access-Control-Allow-Origin`) when it matches `dataverse.cors.origin`.
8+
- Adds `Vary: Origin` for per-origin responses (not for wildcard).
9+
- Supports comma‑separated origin list; any `*` in the list = wildcard mode.
10+
- CORS now only enabled when `dataverse.cors.origin` is set (removed `:AllowCors` no longer enables it).
11+
- All comma-separated configuration settings (database properties and MicroProfile config) now ignore spaces around commas; tokens remain unchanged (no quote parsing). Examples: `dataverse.cors.methods`, `dataverse.cors.headers.allow`, `dataverse.cors.headers.expose`. See "Comma-separated configuration values" in the Installation Guide.
12+
- Docs updated (Installation, Big Data Support, External Tools, File Previews); new tests cover edge cases.
13+
14+
## Admin Action
15+
16+
Set `dataverse.cors.origin` explicitly (required). Use explicit origins (not `*`) for credentialed requests. Ensure proxies keep `Vary: Origin`.
17+
18+
Examples:
19+
20+
```
21+
dataverse.cors.origin=https://example.org
22+
dataverse.cors.origin=https://libis.github.io,https://gdcc.github.io
23+
dataverse.cors.origin=*
24+
```
25+
26+
Optional (unquoted):
27+
28+
```
29+
dataverse.cors.methods=GET, POST, OPTIONS, PUT, DELETE
30+
```
31+
32+
## Compatibility
33+
34+
- Must configure `dataverse.cors.origin`; `:AllowCors` was deprecated and has now been removed.
35+
- Any `*` triggers wildcard (no per-origin echo / no Vary header).
36+
37+
## Docs
38+
39+
See updated `dataverse.cors.origin` section and related notes in Big Data Support (S3), External Tools, and File Previews.
40+
41+
<!-- Maintainer note: The generic behavior for comma-separated settings has been documented centrally under Installation Guide > Configuration > "Comma-separated configuration values". Keep this item here as a cross-reference. -->
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## New Endpoint: `/datasets/{id}/license`
2+
3+
A new endpoint has been implemented to manage dataset licenses.
4+
5+
### Functionality
6+
- Updates the license of a dataset by applying it to the draft version.
7+
- If no draft exists, a new one is automatically created.
8+
9+
### Usage
10+
This endpoint supports two ways of defining a license:
11+
1. **Predefined License** – Provide the license name (e.g., `CC BY 4.0`).
12+
2. **Custom Terms of Use and Access** – Provide a JSON body with the `customTerms` object.
13+
- All fields are optional **except** `termsOfUse`, which is required.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
## Notifications API Update
2+
3+
**Endpoint:** `notifications/all`
4+
5+
**Enhancements:**
6+
7+
* When the query parameter `inAppNotificationFormat=true` is set:
8+
9+
* Notifications of types:
10+
11+
* `REQUESTFILEACCESS`
12+
* `REQUESTEDFILEACCESS`
13+
* `GRANTFILEACCESS`
14+
* `REJECTFILEACCESS`
15+
16+
now return both the **dataset display name** and **dataset persistent identifier**.
17+
18+
* Notifications of type `DATASETMENTIONED` now return a **formatted JSON** in the `additionalInfo` field when this field contains a valid persisted JSON string, instead of a raw JSON string.
19+
20+
Related issue: #11804
21+
Related PR: #11851
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This release adds database indexes on GuestbookResponse and DatasetMetrtics, speeding up Dataset deletes. It also adds a constraint preventing null VersionState, as a matter of good housekeeping practice.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
This release adds functionality to retry calls to DataCite when their server is overloaded or Dataverse has hit their rate limit.
2+
3+
It also introduces an option to only update DataCite metadata after checking to see if the current DataCite information is out of date.
4+
(This adds a request to get information from DataCite before any potential write of new information which will be more efficient when
5+
most DOIs have not changed but will result in an extra call to get info when a DOI has changed.)
6+
7+
Both of these can help when DataCite is being used heavily, e.g. creating and publishing datasets with many datafiles and using file DOIs,
8+
or doing bulk operations that involve DataCite with many datasets.
9+
10+
### New Settings
11+
12+
- dataverse.feature.only-update-datacite-when-needed
13+
14+
The default is false - Dataverse will not check to see if DataCite's information is out of date before sending an update.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### Big Data Admin Section
2+
3+
- A new section - Scaling Dataverse with Data Size - has been added to the Admin Guide. It is intended to help administrators configure Dataverse appropriately to handle larger amounts of data.

0 commit comments

Comments
 (0)