diff --git a/doc/release-notes/5.0-release-notes.md b/doc/release-notes/5.0-release-notes.md index 29c2d7fa39d..e3d13eaca7c 100644 --- a/doc/release-notes/5.0-release-notes.md +++ b/doc/release-notes/5.0-release-notes.md @@ -245,9 +245,10 @@ The instructions below describe the upgrade procedure based on moving an existin `sudo /usr/local/glassfish4/bin/asadmin stop-domain` `sudo cp -ar /usr/local/glassfish4/glassfish/domains/domain1 /usr/local/payara5/glassfish/domains/` -7. Remove the Glassfish cache directories +7. Remove the cache directories - `sudo rm -rf /usr/local/payara5/glassfish/domains/domain1/generated/` `sudo rm -rf /usr/local/payara5/glassfish/domains/domain1/osgi-cache/` + `sudo rm -rf /usr/local/payara5/glassfish/domains/domain1/generated/` + `sudo rm -rf /usr/local/payara5/glassfish/domains/domain1/osgi-cache/` 8. In domain.xml: @@ -263,18 +264,26 @@ Add the below JVM options beneath the -Ddataverse settings: -XX:+UseStringDeduplication -XX:+DisableExplicitGC +Also in domain.xml, replace the follow element: + + ` ` + +with + + ` ` + 9. Change any full pathnames /usr/local/glassfish4/... to /usr/local/payara5/... or whatever it is in your case. (Specifically check the -Ddataverse.files.directory and -Ddataverse.files.file.directory JVM options) -10. In domain1/config/jhove.conf, change the hard-coded /usr/local/glassfish4 path, as above. +10. In domain1/config/jhove.conf, change the hard-coded /usr/local/glassfish4 path, as above. (Optional): If you renamed your service account from glassfish to payara or appserver, update the ownership permissions. The Installation Guide recommends a service account of `dataverse`: `sudo chown -R dataverse /usr/local/payara5/glassfish/domains/domain1` `sudo chown -R dataverse /usr/local/payara5/glassfish/lib` -11. You will also need to check that the service account has write permission on the files directory, if they are located outside the old Glassfish domain. And/or make sure the service account has the correct AWS credentials, if you are using S3 for storage. +11. You will also need to check that the service account has write permission on the files directory, if they are located outside the old Glassfish domain. And/or make sure the service account has the correct AWS credentials, if you are using S3 for storage. -12. Finally, start Payara: +12. Finally, start Payara: `sudo -u dataverse /usr/local/payara5/bin/asadmin start-domain` diff --git a/doc/release-notes/5.3-release-notes.md b/doc/release-notes/5.3-release-notes.md new file mode 100644 index 00000000000..b78aa742f45 --- /dev/null +++ b/doc/release-notes/5.3-release-notes.md @@ -0,0 +1,165 @@ +# Dataverse 5.3 + +This release brings new features, enhancements, and bug fixes to Dataverse. Thank you to all of the community members who contributed code, suggestions, bug reports, and other assistance across the project. + +## Release Highlights + +### Auxiliary Files (Experimental) + +Auxiliary files can now be added to datafiles and accessed using new experimental API endpoints. These endpoints allow additional, non-Dataverse generated metadata to be added alongside datafiles in dataverse. + +The support for auxiliary files in Dataverse is being driven by integration with the [Open Differential Privacy (DP) Project](https://opendp.io) and is designed to support the deposit and retrieval of differentially private metadata, but the endpoints are not specific to differential privacy use cases. + +### Additional Banner Functionality + +Banners in Dataverse can now be set to allow dismissal by a logged in user. Previously, banners would persist until they were removed by an administrator. This allows administrators to more easily communicate one-time messages to users. + +### File Tags Searchable from Advanced Search and Dataset Search + +File tags ("Documentation", "Data", "Code", etc.) now appear on the Advanced Search page. + +Performing a search for files on the dataset page now includes file tags. Previously, only file name and file description were searched. + +### Easier Configuration of Database Connections + +Previously, the configuration of the database connections has been quite static and not very easy to update. This has been an issue especially for cloud and container usage. Using new technologies provided by the move to Payara, you can now more easily configure the connection to your PostgreSQL DB. + +Using MicroProfile Config API (Issue #7000, Issue #7418), you can much more easily specify configuration +details. For an overview of supported options, please see the +[Installation Guide](https://guides.dataverse.org/en/5.3/installation/config.html#jvm-options). + +Note that some settings have been moved from domain.xml to code, such as min and max pool size. + +## Major Use Cases + +Newly-supported use cases in this release include: + +- Users can use an API to add auxiliary files to files in order to provide metadata representations for specific tools or integrations (Issue #7275, PR #7350) +- Administrators can use a new API to manage banner messages and take advantage of new banner display options (Issue #7263, PR #7434) +- Users replacing files will now have their files renamed when a file name conflict exists, making the behavior consistent with upload and edit (Issue #7335, PR #7336) +- Users will now be able to search on file tags on the advanced search and dataset pages (Issue #7194, PR #7385) + +## Notes for Dataverse Installation Administrators + +### Payara 5.2020.6 (or Higher) Required + +Some changes in this release require an upgrade to Payara 5.2020.6 or higher. + +Instructions on how to update can be found in the +[Payara documentation](https://docs.payara.fish/community/docs/5.2020.6/documentation/user-guides/upgrade-payara.html) + +### New Banner API, Obsolete DB Settings + +The functionality previously provided by the DB settings :StatusMessageHeader and ::StatusMessageText is no longer supported and is now provided through the Manage Banner Messages API. Learn more in the [API Guide](https://guides.dataverse.org/en/5.3/api/). + +### New Database Settings and JVM Options + +Several new JVM options have been added in this release: + +- dataverse.db.name +- dataverse.db.user +- dataverse.db.password +- dataverse.db.host +- dataverse.db.port + +For an overview of these new options, please see the +[Installation Guide](https://guides.dataverse.org/en/5.3/installation/config.html#jvm-options) + +See above note about obsolete DB options. + +### Introducing MicroProfile Config API + +With this Dataverse release, Dataverse Administrators can start to make use of the MicroProfile Config API. + +This will benefit both developers and sysadmins, but the codebase will have to be refactored to make use of it. As this will take time, we will always provide a backward compatible way of using it. + +For more details about these new options, please see the Consuming Configuration section of the [Developer Guide](https://guides.dataverse.org/en/5.3/developers/). + +### Java Message System Configuration + +The Ingest process uses the Java Message System to create ingest tasks in a queue. That queue had been configured from command line or domain.xml before. This has now changed to being done +in code. + +In the unlikely case you might want to change any of these settings, feel free to change and recompile or raise an issue on Github. See `IngestQueueProducer` for more details. + +If you want to clean up your existing installation, you can delete the old, unused queue like this: + +- `/bin/asadmin delete-connector-connection-pool --cascade=true jms IngestQueueConnectionFactoryPool` + +## Notes for Tool Developers and Integrators + +### Experimental Auxiliary File Support + +Experimental endpoints have been added to allow auxiliary files to be added to datafiles. These auxiliary files can be deposited and accessed via API. Later releases will include options for accessing these files through the UI. For more information, see the Auxiliary File Support section of the [Developer Guide](https://guides.dataverse.org/en/5.3/developers/). + +## Complete List of Changes + +For the complete list of code changes in this release, see the [5.3 Milestone](https://github.com/IQSS/dataverse/milestone/93?closed=1) in Github. + +For help with upgrading, installing, or general questions please post to the [Dataverse Google Group](https://groups.google.com/forum/#!forum/dataverse-community) or email support@dataverse.org. + +## Installation + +If this is a new installation, please see our [Installation Guide](https://guides.dataverse.org/en/5.3/installation/). + +## Upgrade Instructions + +0\. These instructions assume that you've already successfully upgraded from Dataverse 4.x to Dataverse 5 following the instructions in the [Dataverse 5 Release Notes](https://github.com/IQSS/dataverse/releases/tag/v5.0). + +1\. Upgrade to Payara 5.2020.6 or higher. + +Instructions on how to update can be found in the +[Payara documentation](https://docs.payara.fish/community/docs/5.2020.6/documentation/user-guides/upgrade-payara.html). + +It would likely be safer to upgrade Payara first, while still running Dataverse 5.2, and then proceed with the steps below. Upgrading from an earlier version of Payara should be a straightforward process: Undeploy Dataverse; stop Payara; move the current Payara directory out of the way; unzip the new Payara version in its place; replace **the brand new `payara/glassfish/domains/domain1` with your old, preserved `domain1`**; start Payara, deploy Dataverse 5.2. We still recommend that you read the detailed upgrade instructions above; and, if you run into any issues with this upgrade, it will help to be able to separate them from any problems with the upgrade of Dataverse proper. +If you are still using pre-5.0 version of Dataverse, and Glassfish version 4, please follow the upgrade instructions in the Dataverse 5.0 release notes; but use the latest version of Payara 5 (5.2020.7, as of this writing). + +2\. Undeploy the previous version. + +- `/bin/asadmin list-applications` +- `/bin/asadmin undeploy dataverse<-version>` + +(where `` is where Payara 5 is installed, for example: `/usr/local/payara5`) + +3\. Update your database connection. + +Please configure your connection details, replacing all the `${DB_...}`. +(If you are using a PostgreSQL server on `localhost:5432`, you can omit `dataverse.db.host` and `dataverse.db.port`.) + +- `/bin/asadmin create-system-properties "dataverse.db.user=${DB_USER}"` +- `/bin/asadmin create-system-properties "dataverse.db.host=${DB_HOST}"` +- `/bin/asadmin create-system-properties "dataverse.db.port=${DB_PORT}"` +- `/bin/asadmin create-system-properties "dataverse.db.name=${DB_NAME}"` +- `echo "AS_ADMIN_ALIASPASSWORD=${DB_PASS}" > /tmp/password.txt` + +- `/bin/asadmin create-password-alias --passwordfile /tmp/password.txt dataverse.db.password` +- `rm /tmp/password.txt` + +4\. In domain.xml, verify that the __TimerPool jdbc-connection-pool is using the H2 database, as follows (if you have the old Derby version from Glassfish 4, replace it): + + ` ` + +5\. Reset the EJB timer database back to default: + +- `/bin/asadmin set configs.config.server-config.ejb-container.ejb-timer-service.timer-datasource=jdbc/__TimerPool` + +6\. Delete the old password alias and DB pool: + +- `/bin/asadmin delete-jdbc-connection-pool --cascade=true dvnDbPool` +- `/bin/asadmin delete-password-alias db_password_alias` + +7\. Stop payara, remove the generated and ejbtimer database directories, then restart. + +- `service payara stop` +- `rm -rf /glassfish/domains/domain1/generated` +- `rm -rf /glassfish/domains/domain1/lib/databases/ejbtimer` +- `service payara start` + +8\. Deploy this version. + +- `/bin/asadmin deploy dataverse-5.3.war` + +9\. Restart payara + +- `service payara stop` +- `service payara start` diff --git a/doc/release-notes/5345-ejb-timers.md b/doc/release-notes/5345-ejb-timers.md deleted file mode 100644 index cf6c9ae5979..00000000000 --- a/doc/release-notes/5345-ejb-timers.md +++ /dev/null @@ -1,4 +0,0 @@ -Reset the EJB timer database back to default: -``` -/asadmin set configs.config.server-config.ejb-container.ejb-timer-service.timer-datasource=jdbc/__TimerPool -``` \ No newline at end of file diff --git a/doc/release-notes/7194-file-tags-search.md b/doc/release-notes/7194-file-tags-search.md deleted file mode 100644 index d56b29d7b98..00000000000 --- a/doc/release-notes/7194-file-tags-search.md +++ /dev/null @@ -1,5 +0,0 @@ -### File Tags Searchable from Advanced Search and Dataset Search. - -File tags ("Documentation", "Data", "Code", etc.) now appear on the Advanced Search page. - -Performing a search for files on the dataset page now includes file tags. (Previously, only file name and file description were searched.) diff --git a/doc/release-notes/7263-banner-messages.md b/doc/release-notes/7263-banner-messages.md deleted file mode 100644 index f53f6879199..00000000000 --- a/doc/release-notes/7263-banner-messages.md +++ /dev/null @@ -1,7 +0,0 @@ -## Major Use Cases - -- New API for Banners.. - -## Notes to Admins - -The functionality previously provided by the DB settings :StatusMessageHeader and ::StatusMessageText is no longer supported and is now provided through the Manage Banner Messages API. Learn more in the [Native API Guide](https://guides.dataverse.org/en/5.x/api/). diff --git a/doc/release-notes/7275-aux-files.md b/doc/release-notes/7275-aux-files.md deleted file mode 100644 index 24aa7f86f2d..00000000000 --- a/doc/release-notes/7275-aux-files.md +++ /dev/null @@ -1,3 +0,0 @@ -## Notes for Tool Developers and Integrators - -Experimental endpoints have been added to allow auxiliary files to be added to datafiles. These auxiliary files can be deposited and accessed via API. Later releases will include options for accessing these files through the UI. For more information, see the Auxiliary File Support section of the [Developer Guide](https://guides.dataverse.org/en/5.3/developers/). diff --git a/doc/release-notes/7417-payara-5.2020.6.md b/doc/release-notes/7417-payara-5.2020.6.md deleted file mode 100644 index 8377e772b9f..00000000000 --- a/doc/release-notes/7417-payara-5.2020.6.md +++ /dev/null @@ -1,12 +0,0 @@ -## Update to Payara Platform 5.2020.6 - -In contrast to good old Glassfish 4, the Payara application server -is a maintained product, receiving both feature and - more important - -security and dependent technology updates. You should update the -application server platform on a regular basis, as it is a key component -of a running Dataverse deployment. - - - -Instructions how to update can be found in the -[Payara documentation](https://docs.payara.fish/community/docs/5.2020.6/documentation/user-guides/upgrade-payara.html) diff --git a/doc/release-notes/7418-datasourcedefinition.md b/doc/release-notes/7418-datasourcedefinition.md deleted file mode 100644 index b8c5561c2c2..00000000000 --- a/doc/release-notes/7418-datasourcedefinition.md +++ /dev/null @@ -1,88 +0,0 @@ -## Release Highlights - -### Easier Configuration of Database Connections - -Dataverse now being able to use up-to-date Java technologies, transforms -the way how to configure the connection to your PostgreSQL database. - -In the past, the configuration of the connection has been quite static -and not very easy to update. This has been an issue especially for cloud -and container usage. - -Using MicroProfile Config API (#7000, #7418), you can much more easily specify configuration -details. For an overview of supported options, please see the -[installation guide](https://guides.dataverse.org/en/5.3/installation/config.html#jvm-options). - -Note that some settings have been moved from domain.xml to code such as min and max pool size. - -## Notes for Dataverse Installation Administrators - -### New JVM Options - -- dataverse.db.name -- dataverse.db.user -- dataverse.db.password -- dataverse.db.host -- dataverse.db.port - - - - - -🚨 THIS VERSION OF DATAVERSE **REQUIRES** UPGRADING TO PAYARA 5.2020.6. 🚨 - - - -## Upgrading from earlier releases - -ℹī¸ You need to update the Payara Application Server before continuing here. See above. - -1. Undeploy the previous version. -``` -/asadmin list-applications -/asadmin undeploy dataverse- -``` - -(where `` is where Payara 5 is installed, for example: `/usr/local/payara5`) - -2. Update your database connection before updating. - -Please configure your connection details, replacing all the `${DB_...}`. -(If you are using a PostgreSQL server on `localhost:5432`, you can omit `dataverse.db.host` and `dataverse.db.port`.) - -``` -/asadmin create-system-properties "dataverse.db.user=${DB_USER}" -/asadmin create-system-properties "dataverse.db.host=${DB_HOST}" -/asadmin create-system-properties "dataverse.db.port=${DB_PORT}" -/asadmin create-system-properties "dataverse.db.name=${DB_NAME}" -echo "AS_ADMIN_ALIASPASSWORD=${DB_PASS}" > /tmp/password.txt -/asadmin create-password-alias --passwordfile /tmp/password.txt dataverse.db.password -rm /tmp/password.txt -``` - - - -Now you are safe to delete the old password alias and DB pool: -``` -/asadmin delete-jdbc-connection-pool --cascade=true dvnDbPool -/asadmin delete-password-alias db_password_alias -``` - -3. Stop payara and remove the generated directory, start. -``` -service payara stop -# remove the generated directory: -rm -rf /payara/domains/domain1/generated -service payara start -``` - -3. Deploy this version. -``` -/bin/asadmin deploy dataverse-5.3.war -``` - -4. Restart Payara -``` -service payara stop -service payara start -``` diff --git a/doc/release-notes/7423-jms-move-to-code.md b/doc/release-notes/7423-jms-move-to-code.md deleted file mode 100644 index a324b805716..00000000000 --- a/doc/release-notes/7423-jms-move-to-code.md +++ /dev/null @@ -1,13 +0,0 @@ -# Java Message System Configuration - -The ingest part of Dataverse uses the Java Message System to create ingest tasks in a queue. -That queue had been configured from command line or domain.xml before. This has now changed to being done -in code. - -In the unlikely case you might want to change any of these settings, feel free to change and recompile or raise an issue. -See `IngestQueueProducer` for more details. - -If you want to clean up your existing installation, you can delete the old, unused queue like this: -```shell -asadmin delete-connector-connection-pool --cascade=true jms/IngestQueueConnectionFactoryPool -``` \ No newline at end of file diff --git a/doc/sphinx-guides/source/api/faq.rst b/doc/sphinx-guides/source/api/faq.rst index a3994501f6c..b8e3b97b9dd 100644 --- a/doc/sphinx-guides/source/api/faq.rst +++ b/doc/sphinx-guides/source/api/faq.rst @@ -35,7 +35,7 @@ SWORD only supports a dozen or so operations. The Native API supports many more. To Operate on a Dataset Should I Use Its DOI (or Handle) or Its Database ID? ---------------------------------------------------------------------------- -It is fine to target a datasets using either its Persistent ID (PID such as DOI or Handle) or its database id. +It is fine to target a dataset using either its Persistent ID (PID such as DOI or Handle) or its database id. Here's an example from :ref:`publish-dataset-api` of targeting a dataset using its DOI: diff --git a/doc/sphinx-guides/source/conf.py b/doc/sphinx-guides/source/conf.py index 9eb6d018e4a..dfae614bf14 100755 --- a/doc/sphinx-guides/source/conf.py +++ b/doc/sphinx-guides/source/conf.py @@ -65,9 +65,9 @@ # built documents. # # The short X.Y version. -version = '5.2' +version = '5.3' # The full version, including alpha/beta/rc tags. -release = '5.2' +release = '5.3' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/sphinx-guides/source/developers/configuration.rst b/doc/sphinx-guides/source/developers/configuration.rst new file mode 100644 index 00000000000..d058a1e1705 --- /dev/null +++ b/doc/sphinx-guides/source/developers/configuration.rst @@ -0,0 +1,100 @@ +Consuming Configuration +======================= + +.. contents:: |toctitle| + :local: + +Dataverse uses different types of configuration: + +1. JVM system properties +2. Simple database value settings +3. Complex database stored data structures + +1 and 2 are usually simple text strings, boolean switches or digits. All of those can be found in :doc:`/installation/config`. + +Anything for 3 is configured via the API using either TSV or JSON structures. Examples are metadata blocks, +authentication providers, harvesters and others. + +Simple Configuration Options +---------------------------- + +Developers have accessed the simple properties via + +1. ``System.getProperty(...)`` for JVM system property settings +2. ``SettingsServiceBean.get(...)`` for database settings and +3. ``SystemConfig.xxx()`` for specially treated settings, maybe mixed from 1 and 2 and other sources. +4. ``SettingsWrapper``, reading from 2 and 3 for use in frontend pages based on JSF + +As of Dataverse 5.3, we start to streamline our efforts into using a more consistent approach, also bringing joy and +happiness to all the system administrators out there. This will be done by adopting the use of +`MicroProfile Config `_ over time. + +So far we streamlined configuration of these Dataverse parts: + +- ✅ Database Connection + +Complex Configuration Options +----------------------------- + +We should enable variable substitution in JSON configuration. Example: using substitution to retrieve values from +MicroProfile Config and insert into the authentication provider would allow much easier provisioning of secrets +into the providers. + +Why should I care about MicroProfile Config API? +------------------------------------------------ + +Developers benefit from: + +- A streamlined API to retrieve configuration, backward-compatible renaming strategies and easier testbed configurations. +- Config API is also pushing for validation of configuration, as it's typesafe and converters for non-standard types + can be added within our codebase. +- Defaults in code or bundled in ``META-INF/microprofile-config.properties`` allow for optional values without much hassle. + +System administrators benefit from: + +- Lots of database settings have been introduced in the past, but should be more easily configurable and not rely on a + database connection. +- Running Dataverse in containers gets much easier when configuration can be provisioned in a + streamlined fashion, mitigating the need for scripting glue and distinguishing between setting types. +- Classic installations have a profit, too: we can enable using a single config file, e.g. living in + ``/etc/dataverse/config.properties``. +- Features for monitoring resources and others are easier to use with this streamlined configuration, as we can + avoid people having to deal with ``asadmin`` commands and change a setting comfortably instead. + +Adopting MicroProfile Config API +--------------------------------- + +This technology is introduced on a step-by-step basis. There will not be a big shot, crashing upgrades for everyone. +Instead, we will provide backward compatibility by deprecating renamed or moved config options, while still +supporting the old way of setting them. + +- Introducing a new setting or moving and old one should result in a key ``dataverse..``. + That way we enable sys admins to recognize the meaning of an option and avoid name conflicts. + Starting with ``dataverse`` makes it perfectly clear that this is a setting meant for this application, which is + important when using environment variables, system properties or other MPCONFIG sources. +- Replace ``System.getProperty()`` calls with either injected configs or retrieve programmatically if more complex + handling is necessary. If you rename the property, you should provide an alias. See below. +- Database settings need to be refactored in multiple steps. First you need to change the code retrieving it to use + MicroProfile Config API instead (just like above). Then you should provide an alias to retain backward compatibility. + See below. + +Moving or Replacing a JVM Setting +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When moving an old key to a new (especially when doing so with a former JVM system property setting), you should +add an alias to ``src/main/resources/META-INF/microprofile-aliases.properties`` to enable backward compatibility. +The format is always like ``dataverse..newname...=old.property.name``. + +Details can be found in ``edu.harvard.iq.dataverse.settings.source.AliasConfigSource`` + +Aliasing Database Setting +^^^^^^^^^^^^^^^^^^^^^^^^^ + +When moving a database setting (``:ExampleSetting``), configure an alias +``dataverse.my.example.setting=dataverse.settings.fromdb.ExampleSetting`` in +``src/main/resources/META-INF/microprofile-aliases.properties``. This will enable backward compatibility. + +A database setting with an i18n attribute using *lang* will have available language codes appended to the name. +Example: ``dataverse.settings.fromdb.ExampleI18nSetting.en``, ``dataverse.settings.fromdb.ExampleI18nSetting.de`` + +More details in ``edu.harvard.iq.dataverse.settings.source.DbSettingConfigSource`` diff --git a/doc/sphinx-guides/source/developers/index.rst b/doc/sphinx-guides/source/developers/index.rst index 9c524571a39..184d8aff85a 100755 --- a/doc/sphinx-guides/source/developers/index.rst +++ b/doc/sphinx-guides/source/developers/index.rst @@ -22,6 +22,7 @@ Developer Guide dependencies debugging coding-style + configuration deployment containers making-releases diff --git a/doc/sphinx-guides/source/developers/intro.rst b/doc/sphinx-guides/source/developers/intro.rst index 2ce9c52bd37..e7ed6a12a37 100755 --- a/doc/sphinx-guides/source/developers/intro.rst +++ b/doc/sphinx-guides/source/developers/intro.rst @@ -28,6 +28,8 @@ Dataverse is a `Jakarta EE `_ applicat We make use of a variety of Jakarta EE technologies such as JPA, JAX-RS, JMS, and JSF. The front end is built using PrimeFaces and Bootstrap. +In addition, we start to adopt parts of Eclipse MicroProfile, namely `MicroProfile Config `_. + Roadmap ------- diff --git a/doc/sphinx-guides/source/versions.rst b/doc/sphinx-guides/source/versions.rst index 526aa75e774..0e2ac440856 100755 --- a/doc/sphinx-guides/source/versions.rst +++ b/doc/sphinx-guides/source/versions.rst @@ -6,8 +6,9 @@ Dataverse Documentation Versions This list provides a way to refer to the documentation for previous versions of Dataverse. In order to learn more about the updates delivered from one version to another, visit the `Releases `__ page in our GitHub repo. -- 5.2 +- 5.3 +- `5.2 `__ - `5.1.1 `__ - `5.1 `__ - `5.0 `__ diff --git a/pom.xml b/pom.xml index 6d7378a7ac2..2bba4fec3b0 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ --> edu.harvard.iq dataverse - 5.2 + 5.3 war dataverse @@ -34,7 +34,8 @@ 4.13.1 5.7.0 ${junit.jupiter.version} - 1.13.0 + 1.15.0 + 0.4.1 2.28.2 5.2.4 1.20.1 @@ -280,6 +281,11 @@ 29.0-jre jar + + org.eclipse.microprofile.config + microprofile-config-api + provided + jakarta.platform jakarta.jakartaee-api @@ -637,6 +643,11 @@ junit-jupiter test + + org.testcontainers + postgresql + test + org.mockito mockito-core @@ -649,7 +660,12 @@ ${mockito.version} test - + + org.microbean + microbean-microprofile-config + ${microbean-mpconfig.version} + test +
- + @@ -814,22 +818,21 @@
- + -
- + @@ -1669,45 +1672,18 @@ } } - function testFilesSelected(popup) { + function testFilesSelected() { var count = PF('filesTable').getSelectedRowsCount(); if (count == 0) { - PF(popup).show(); + PF('selectFiles').show(); } else { return true; } } - - function testFilesSelectedForTags() { - return testFilesSelected("selectFilesForEditTags"); - } - - function testFilesSelectedForRestriction() { - return testFilesSelected("selectFilesForRestrict"); - } - - function testFilesSelectedForUnRestriction() { - return testFilesSelected("selectFilesForUnRestrict"); - } - - function testFilesSelectedForDelete() { - return testFilesSelected("selectFilesForDelete"); - } - - function testFilesSelectedForEditMetadata() { - return testFilesSelected("selectFilesForEditMetadata"); - } function updateTemplate() { $('button[id$="updateTemplate"]').trigger('click'); } - function checkNewlyRestricted() { - if ($('input[id$="showAccessPopup"]').val() === 'true') { - PF('accessPopup').show(); - } else { - $('button[id$="datasetSave"]').trigger('click'); - } - } function updateHiddenReason(textArea) { $('input[id$="hiddenReasonInput"]').val(textArea.value); } diff --git a/src/main/webapp/editFilesFragment.xhtml b/src/main/webapp/editFilesFragment.xhtml index be1f65418b5..833a6c2fd07 100644 --- a/src/main/webapp/editFilesFragment.xhtml +++ b/src/main/webapp/editFilesFragment.xhtml @@ -316,7 +316,6 @@ emptyMessage="#{datasetPage || EditDatafilesPage.showFileUploadFragment() ? bundle['file.noUploadedFiles.tip'] : bundle['file.noSelectedFiles.tip']}">
-
@@ -416,17 +415,25 @@
- -

#{bundle['dataset.noSelectedFilesForDelete']}

-
- -
-
- +

#{bundle['file.deleteFileDialog.tip']}

#{bundle['file.deleteFileDialog.failed.tip']}

@@ -594,6 +592,9 @@
+

+ #{bundle['dataset.access.description']} +

- +
@@ -613,16 +614,20 @@ data-toggle="tooltip" data-placement="auto top" data-original-title="#{bundle['file.dataFilesTab.terms.list.termsOfAccess.requestAccess.title']}">
- +
- - +
@@ -925,7 +930,17 @@
- + + + +

#{bundle['dataset.noSelectedFiles']}

+
+ +
+
diff --git a/src/main/webapp/editdatafiles.xhtml b/src/main/webapp/editdatafiles.xhtml index 81634bcb6d2..3c371c0150c 100644 --- a/src/main/webapp/editdatafiles.xhtml +++ b/src/main/webapp/editdatafiles.xhtml @@ -71,9 +71,11 @@
- +
@@ -81,53 +83,13 @@
-
- - -

#{bundle['dataset.noSelectedFilesForRestrict']}

-
- -
-
- -

#{bundle['dataset.noSelectedFilesForUnRestrict']}

-
- -
-
+ - - diff --git a/src/main/webapp/file-edit-button-fragment.xhtml b/src/main/webapp/file-edit-button-fragment.xhtml index 320283cfe69..6b47cac4057 100644 --- a/src/main/webapp/file-edit-button-fragment.xhtml +++ b/src/main/webapp/file-edit-button-fragment.xhtml @@ -18,7 +18,8 @@ This can be used for a single, specific file (passing "fileMetadata") or a group of selected files. - Parameters: + Parameters: + dataserVersion - the datasetversion object to associate with this view fileMetadata - for single file, the fileMetadata object of that file fileMetadataForAction - used by DatasetPage popups to identify single file (also clears for selected file) isDraftReplacementFile - for single file, if the file is a draft and already replacing a past file @@ -35,7 +36,7 @@
  • - @@ -46,19 +47,21 @@
  • - + update="@([id$=accessPopup])" + oncomplete="PF('accessPopup').show();bind_bsui_components();"> - + + +
  • @@ -90,7 +93,7 @@
  • @@ -113,7 +116,7 @@
  • diff --git a/src/main/webapp/file-edit-popup-fragment.xhtml b/src/main/webapp/file-edit-popup-fragment.xhtml index c14fbd00cd4..7fe8fb4c083 100644 --- a/src/main/webapp/file-edit-popup-fragment.xhtml +++ b/src/main/webapp/file-edit-popup-fragment.xhtml @@ -15,10 +15,10 @@ --> - +

    - #{bundle['file.restrictions.description']} + #{bundle['dataset.access.description']}

    @@ -28,7 +28,7 @@ data-toggle="tooltip" data-placement="auto right" data-original-title="#{bundle['file.dataFilesTab.terms.list.termsOfAccess.termsOfsAccess.title']}">
    - +
    @@ -39,16 +39,18 @@
    + value="#{bean.fileAccessRequest}" widgetVar="inputfar"/>
    - + +
    @@ -72,51 +74,15 @@ - - -

    #{bundle['dataset.noSelectedFilesForRestrict']}

    -
    - -
    -
    - -

    #{bundle['dataset.noSelectedFilesForUnRestrict']}

    -
    - -
    -
    - -

    #{bundle['dataset.noSelectedFilesForDelete']}

    -
    - -
    -
    - -

    #{bundle['dataset.noSelectedFilesForMetadataEdit']}

    -
    - -
    -
    - -

    #{bundle['dataset.noSelectedFilesForMetadataEdit']}

    + + +

    #{bundle['dataset.noSelectedFiles']}

    -
    -
    +
    \ No newline at end of file diff --git a/src/main/webapp/file.xhtml b/src/main/webapp/file.xhtml index 4e3b1dbd8e0..9c19273037c 100644 --- a/src/main/webapp/file.xhtml +++ b/src/main/webapp/file.xhtml @@ -225,6 +225,7 @@