Compare commits

...

2633 Commits

Author SHA1 Message Date
dependabot[bot]
2a4ac311c2 Bump com.amazonaws:aws-java-sdk-s3 from 1.12.791 to 1.12.792
Bumps [com.amazonaws:aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.791 to 1.12.792.
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.791...1.12.792)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-version: 1.12.792
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 20:00:09 +00:00
Tim Donohue
5723ea1297 Merge pull request #11381 from DSpace/dependabot/maven/dspace-7_x/apache-commons-646c41dc72
Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0 in the apache-commons group
2025-10-06 13:33:10 -05:00
Tim Donohue
fa2a639615 Merge pull request #11380 from DSpace/dependabot/maven/dspace-7_x/test-tools-9b413dd7df
Bump the test-tools group with 2 updates
2025-10-06 13:22:57 -05:00
Tim Donohue
a6699f3c43 Merge pull request #11378 from DSpace/dependabot/maven/dspace-7_x/build-tools-4e1d998f9d
Bump the build-tools group with 6 updates
2025-10-06 13:18:24 -05:00
Tim Donohue
5fe6f9f1d0 Merge pull request #11385 from DSpace/dependabot/maven/dspace-7_x/log4j.version-2.25.2
Bump log4j.version from 2.25.1 to 2.25.2
2025-10-06 13:15:27 -05:00
Tim Donohue
97782fae6e Merge pull request #10534 from 4Science/task/dspace-7_x/DURACOM-243
[dspace-7_x] Handles Rotation EXIF Metadata inside JPEGFilter
2025-10-02 14:37:59 -05:00
Tim Donohue
8fc191e9cb Merge pull request #11403 from tdonohue/port_11321_to_7x
[Port dspace-7_x] DS-8943: adds limit to number of typed links to bitstreams in header
2025-10-02 08:48:10 -05:00
nwoodward
b5501981ab added limit to number of typed links to bitstreams to display, falls back to Link Sets if limit is exceeded 2025-10-01 17:15:14 -05:00
Tim Donohue
61f2695b83 Merge pull request #11396 from TexasDigitalLibrary/port_11329_to_7x
[Port dspace-7_x] Fix Hibernate syntax bugs in the CollectionDAO and BitstreamDAO
2025-10-01 16:44:36 -05:00
Tim Donohue
8643888d68 Merge pull request #11399 from tdonohue/port_11139_to_7x
[Port dspace-7_x] fix(#10721): Sanitize non-characters during OAI indexing
2025-10-01 16:39:31 -05:00
JohnnyMendesC
d8fbe16ede fix(#10721): Sanitize non-characters during OAI indexing (#11139)
* fix(#10721): Sanitize non-characters during OAI indexing

* refactor: Use StringEscapeUtils as suggested in review

* fix: Removed whitespace before the import that was causing error

Maven Unit Test failed due to the whitespace before the import
https://github.com/DSpace/DSpace/actions/runs/16891881837/job/47853392956?pr=11139#step:4:1959

* fix: Removed trailing whitespace that was causing error
2025-10-01 15:28:11 -05:00
nwoodward
29e13b77fc checkstyle fix 2025-10-01 13:46:40 -05:00
nwoodward
fc74a7ffdf fix Hibernate bugs 2025-10-01 13:41:41 -05:00
dependabot[bot]
dd6b3b4a55 Bump log4j.version from 2.25.1 to 2.25.2
Bumps `log4j.version` from 2.25.1 to 2.25.2.

Updates `org.apache.logging.log4j:log4j-api` from 2.25.1 to 2.25.2

Updates `org.apache.logging.log4j:log4j-core` from 2.25.1 to 2.25.2

Updates `org.apache.logging.log4j:log4j-1.2-api` from 2.25.1 to 2.25.2

---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-api
  dependency-version: 2.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.logging.log4j:log4j-core
  dependency-version: 2.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.logging.log4j:log4j-1.2-api
  dependency-version: 2.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 02:36:10 +00:00
dependabot[bot]
fa9df3a4ca Bump org.apache.commons:commons-lang3 in the apache-commons group
Bumps the apache-commons group with 1 update: org.apache.commons:commons-lang3.


Updates `org.apache.commons:commons-lang3` from 3.18.0 to 3.19.0

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-lang3
  dependency-version: 3.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 02:34:22 +00:00
dependabot[bot]
5bc41cb8ab Bump the test-tools group with 2 updates
Bumps the test-tools group with 2 updates: [com.h2database:h2](https://github.com/h2database/h2database) and [org.xmlunit:xmlunit-core](https://github.com/xmlunit/xmlunit).


Updates `com.h2database:h2` from 2.3.232 to 2.4.240
- [Release notes](https://github.com/h2database/h2database/releases)
- [Commits](https://github.com/h2database/h2database/compare/version-2.3.232...version-2.4.240)

Updates `org.xmlunit:xmlunit-core` from 2.10.3 to 2.10.4
- [Release notes](https://github.com/xmlunit/xmlunit/releases)
- [Changelog](https://github.com/xmlunit/xmlunit/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/xmlunit/xmlunit/compare/v2.10.3...v2.10.4)

---
updated-dependencies:
- dependency-name: com.h2database:h2
  dependency-version: 2.4.240
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: test-tools
- dependency-name: org.xmlunit:xmlunit-core
  dependency-version: 2.10.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 02:34:10 +00:00
dependabot[bot]
ccd3d12ad8 Bump the build-tools group with 6 updates
Bumps the build-tools group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [com.github.spotbugs:spotbugs](https://github.com/spotbugs/spotbugs) | `4.9.4` | `4.9.6` |
| [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) | `3.14.0` | `3.14.1` |
| [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) | `4.9.4.2` | `4.9.6.0` |
| [org.sonatype.central:central-publishing-maven-plugin](https://github.com/sonatype/central-publishing-maven-plugin) | `0.8.0` | `0.9.0` |
| [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) | `3.11.3` | `3.12.0` |
| [org.codehaus.mojo:license-maven-plugin](https://github.com/mojohaus/license-maven-plugin) | `2.6.0` | `2.7.0` |


Updates `com.github.spotbugs:spotbugs` from 4.9.4 to 4.9.6
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.9.4...4.9.6)

Updates `org.apache.maven.plugins:maven-compiler-plugin` from 3.14.0 to 3.14.1
- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)
- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.14.0...maven-compiler-plugin-3.14.1)

Updates `com.github.spotbugs:spotbugs-maven-plugin` from 4.9.4.2 to 4.9.6.0
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.9.4.2...spotbugs-maven-plugin-4.9.6.0)

Updates `org.sonatype.central:central-publishing-maven-plugin` from 0.8.0 to 0.9.0
- [Commits](https://github.com/sonatype/central-publishing-maven-plugin/commits)

Updates `org.apache.maven.plugins:maven-javadoc-plugin` from 3.11.3 to 3.12.0
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.11.3...maven-javadoc-plugin-3.12.0)

Updates `org.codehaus.mojo:license-maven-plugin` from 2.6.0 to 2.7.0
- [Release notes](https://github.com/mojohaus/license-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/license-maven-plugin/compare/2.6.0...2.7.0)

---
updated-dependencies:
- dependency-name: com.github.spotbugs:spotbugs
  dependency-version: 4.9.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-compiler-plugin
  dependency-version: 3.14.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: com.github.spotbugs:spotbugs-maven-plugin
  dependency-version: 4.9.6.0
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.sonatype.central:central-publishing-maven-plugin
  dependency-version: 0.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-version: 3.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.codehaus.mojo:license-maven-plugin
  dependency-version: 2.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 02:33:13 +00:00
Tim Donohue
6ac823d29a Merge pull request #11358 from DSpace/backport-11330-to-dspace-7_x
[Port dspace-7_x] Fix (#9694): Change Solr dynamic field *.year to *_year
2025-09-30 17:29:57 -05:00
JohnnyMendesC
0246588ab5 Fix (#9694): Change Solr dynamic field *.year to *_year
(cherry picked from commit 9fc163fbda)
2025-09-30 21:44:34 +00:00
Tim Donohue
190b908a8a Merge pull request #11355 from DSpace/backport-11328-to-dspace-7_x
[Port dspace-7_x] Fix Hibernate syntax bug in the CollectionDAO
2025-09-30 16:38:57 -05:00
nwoodward
f8ac04b591 lint fixes
(cherry picked from commit b8812aad45)
2025-09-30 21:07:21 +00:00
nwoodward
23cd582801 fix hibernate syntax bug
(cherry picked from commit d9cbb96655)
2025-09-30 21:07:21 +00:00
Tim Donohue
c100eb2567 Merge pull request #11344 from tdonohue/port_11341_to_7x
[Port dspace-7_x] [GitHub Actions] Decrease cache size of our Docker images in GitHub Actions
2025-09-23 16:39:24 -05:00
Tim Donohue
de50420624 Change to "mode=min" in order to minimize our cache size for Docker images 2025-09-23 15:54:55 -05:00
Tim Donohue
988a67d8fe Merge pull request #11338 from DSpace/backport-11337-to-dspace-7_x
[Port dspace-7_x] Remove ratingreviewaction in workflow-actions.xml
2025-09-23 15:09:35 -05:00
Sascha Szott
7a95781068 remove ratingreviewaction in test context
(cherry picked from commit ddccb342d6)
2025-09-23 18:47:37 +00:00
Sascha Szott
cad7e9397b remove ratingreviewaction bean in workflow-actions.xml
(cherry picked from commit 770ab0ca79)
2025-09-23 18:47:36 +00:00
Tim Donohue
f84ddb541d Merge pull request #11318 from tdonohue/port_11261_to_7x
[Port dspace-7_x] Fix/11033 solr logging thumbnail download stats
2025-09-12 16:14:56 -05:00
Tim Donohue
45fa8277d8 Merge pull request #11312 from DSpace/backport-10756-to-dspace-7_x
[Port dspace-7_x] The subscription sends an email with `No items` however there are changes in the collection
2025-09-12 15:58:40 -05:00
JohnnyMendesC
d4c826d871 fix(#11033): Prevent logging of ignored bundles in Solr stats 2025-09-12 15:03:15 -05:00
jm
ee5093b6a6 Fixed https://github.com/DSpace/DSpace/issues/10754 by setting the context user to the current subscriber
(cherry picked from commit 6275d3b756)
2025-09-12 19:25:41 +00:00
Tim Donohue
e672be5eaa Merge pull request #11309 from DSpace/backport-10555-to-dspace-7_x
[Port dspace-7_x] Fix sort order in AbstractHibernateDAO findByX
2025-09-12 13:52:27 -05:00
abhinav
fcde7489d3 Added a test case to verify the sort
(cherry picked from commit 989d930417)
2025-09-12 17:30:09 +00:00
abhinav
4402847f38 129616: Added order by
(cherry picked from commit cc6520bfbb)
2025-09-12 17:30:09 +00:00
Tim Donohue
a180a257cd Merge pull request #11305 from DSpace/backport-11253-to-dspace-7_x
[Port dspace-7_x] Add ORCID document type
2025-09-11 13:56:24 -05:00
Pierre Lasou
467e42ca27 Add ORCID document type
Addiing new mappings between ORCID document type and DSpace default type.

(cherry picked from commit e213f5b305)
2025-09-11 15:59:20 +00:00
Tim Donohue
13c6835656 Merge pull request #11302 from DSpace/backport-10929-to-dspace-7_x
[Port dspace-7_x] Fix SAF Import Open connection leak
2025-09-10 15:50:31 -05:00
Tim Donohue
f700c37a73 Merge pull request #11299 from DSpace/backport-11263-to-dspace-7_x
[Port dspace-7_x] Add familyName and givenName when creating profile author and fix EPe…
2025-09-10 15:49:47 -05:00
Nathan Buckingham
0902db21eb 132206: Saf Imports close connections
(cherry picked from commit 35135c80ae)
2025-09-10 19:32:40 +00:00
Jesiel Viana
11ba34b1fd Add familyName and givenName when creating profile author and fix EPerson#getName
(cherry picked from commit df0dd01776)
2025-09-10 19:22:58 +00:00
Tim Donohue
936cb3c101 Merge pull request #11227 from DSpace/dependabot/maven/dspace-7_x/io.grpc-grpc-context-1.75.0
Bump io.grpc:grpc-context from 1.74.0 to 1.75.0
2025-09-10 09:50:25 -05:00
Tim Donohue
7c7bbeadc5 Merge pull request #11235 from DSpace/dependabot/maven/dspace-7_x/org.ehcache-ehcache-3.11.1
Bump org.ehcache:ehcache from 3.10.8 to 3.11.1
2025-09-10 09:48:33 -05:00
Tim Donohue
5e3c57a920 Merge pull request #11276 from DSpace/dependabot/maven/dspace-7_x/com.amazonaws-aws-java-sdk-s3-1.12.791
Bump com.amazonaws:aws-java-sdk-s3 from 1.12.788 to 1.12.791
2025-09-10 09:40:49 -05:00
Tim Donohue
beb5a096ab Merge pull request #11275 from DSpace/dependabot/maven/dspace-7_x/com.github.spotbugs-spotbugs-maven-plugin-4.9.4.2
Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.4.0 to 4.9.4.2
2025-09-09 17:10:17 -05:00
Tim Donohue
73a0316f99 Merge pull request #11237 from DSpace/dependabot/maven/dspace-7_x/net.minidev-json-smart-2.6.0
Bump net.minidev:json-smart from 2.5.2 to 2.6.0
2025-09-09 17:06:38 -05:00
Tim Donohue
257dc13d32 Merge pull request #11274 from DSpace/dependabot/maven/dspace-7_x/test-tools-7b258dae6a
Bump the test-tools group with 6 updates
2025-09-09 17:03:06 -05:00
Tim Donohue
dfa38c90df Merge pull request #11295 from DSpace/backport-11170-to-dspace-7_x
[Port dspace-7_x] DS-3796 Fix dates for Not to be processed checker-emailer report
2025-09-09 16:48:05 -05:00
Miika Nurminen
cd62cac431 DS-3796 Fix dates for Not to be processed checker-emailer report
Based on 86de8c74a7 (ResultTypeInDateRange dates have already been fixed in upstream).

(cherry picked from commit fac888793c)
2025-09-09 21:14:21 +00:00
dependabot[bot]
847904cadb Bump com.amazonaws:aws-java-sdk-s3 from 1.12.788 to 1.12.791
Bumps [com.amazonaws:aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.788 to 1.12.791.
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.788...1.12.791)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-version: 1.12.791
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 20:35:21 +00:00
dependabot[bot]
127770219b Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.4.0 to 4.9.4.2
Bumps [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.9.4.0 to 4.9.4.2.
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.9.4.0...spotbugs-maven-plugin-4.9.4.2)

---
updated-dependencies:
- dependency-name: com.github.spotbugs:spotbugs-maven-plugin
  dependency-version: 4.9.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 20:34:23 +00:00
dependabot[bot]
98e89caa35 Bump the test-tools group with 6 updates
Bumps the test-tools group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [io.netty:netty-buffer](https://github.com/netty/netty) | `4.2.4.Final` | `4.2.6.Final` |
| [io.netty:netty-transport](https://github.com/netty/netty) | `4.2.4.Final` | `4.2.6.Final` |
| [io.netty:netty-transport-native-unix-common](https://github.com/netty/netty) | `4.2.4.Final` | `4.2.6.Final` |
| [io.netty:netty-common](https://github.com/netty/netty) | `4.2.4.Final` | `4.2.6.Final` |
| [io.netty:netty-handler](https://github.com/netty/netty) | `4.2.4.Final` | `4.2.6.Final` |
| [io.netty:netty-codec](https://github.com/netty/netty) | `4.2.4.Final` | `4.2.6.Final` |


Updates `io.netty:netty-buffer` from 4.2.4.Final to 4.2.6.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.4.Final...netty-4.2.6.Final)

Updates `io.netty:netty-transport` from 4.2.4.Final to 4.2.6.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.4.Final...netty-4.2.6.Final)

Updates `io.netty:netty-transport-native-unix-common` from 4.2.4.Final to 4.2.6.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.4.Final...netty-4.2.6.Final)

Updates `io.netty:netty-common` from 4.2.4.Final to 4.2.6.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.4.Final...netty-4.2.6.Final)

Updates `io.netty:netty-handler` from 4.2.4.Final to 4.2.6.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.4.Final...netty-4.2.6.Final)

Updates `io.netty:netty-codec` from 4.2.4.Final to 4.2.6.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.4.Final...netty-4.2.6.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-buffer
  dependency-version: 4.2.6.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport
  dependency-version: 4.2.6.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport-native-unix-common
  dependency-version: 4.2.6.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-common
  dependency-version: 4.2.6.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-handler
  dependency-version: 4.2.6.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-codec
  dependency-version: 4.2.6.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 20:33:03 +00:00
Tim Donohue
a063a7a4f6 Merge pull request #11273 from tdonohue/port_11171_to_7x
[Port dspace-7_x] Error in file upload after security fixes
2025-09-08 13:23:38 -05:00
Stefano Maffei
7dd2b5318b [CST-21947] fix security fix 2025-09-08 12:17:59 -05:00
Tim Donohue
29b3ba9c57 Merge pull request #11269 from tdonohue/port_11268_to_7x
[Port dspace-7_x] fix(#11191): Align Content-Disposition with RFC 5987/6266
2025-09-05 17:30:08 -05:00
Tim Donohue
568fdab395 Merge pull request #11264 from DSpace/backport-11245-to-dspace-7_x
[Port dspace-7_x] AIP Packager bitstream URL fix
2025-09-05 16:57:27 -05:00
JohnnyMendesC
fe4077acee fix(#11191): Align Content-Disposition with RFC 5987/6266 2025-09-05 16:55:45 -05:00
Kristof De Langhe
cbecc64a5a 133552: unused import
(cherry picked from commit 93240941d3)
2025-09-05 21:18:54 +00:00
Kristof De Langhe
5ed0b28a36 133552: AIP packager bitstream url fix
(cherry picked from commit 11da562ea4)
2025-09-05 21:18:54 +00:00
Tim Donohue
54a6011e60 Merge pull request #11257 from DSpace/backport-10142-to-dspace-7_x
[Port dspace-7_x] DS-10133: make several usage statistics parameters configurable
2025-09-04 12:03:46 -05:00
nwoodward
be9d2bd2bf make several usage statistics parameters configurable
(cherry picked from commit cd57985934)
2025-09-04 14:31:45 +00:00
Tim Donohue
e4d058f1c9 Merge pull request #11251 from DSpace/backport-11174-to-dspace-7_x
[Port dspace-7_x] Fix #11074 export simple archive format when item has no collection
2025-09-03 15:47:29 -05:00
Tim Donohue
603f638174 Merge pull request #11247 from DSpace/backport-11200-to-dspace-7_x
[Port dspace-7_x] Fix database connection leak on failed login attempts
2025-09-03 14:51:14 -05:00
Martin Walk
66fc49800d Fix #11074 export simple archive format with no collection
(cherry picked from commit d282f92427)
2025-09-03 19:46:19 +00:00
Alexandre Vryghem
376f49e99b 133421: Removed database connection leak on unsuccessful login
(cherry picked from commit 0b0c9fc84c)
2025-09-03 19:09:02 +00:00
Tim Donohue
4dedd1b66f Merge pull request #11242 from DSpace/backport-11195-to-dspace-7_x
[Port dspace-7_x] Implement logging for index out-of-range in MetadataValueRemovePatchOperation
2025-09-02 15:10:25 -05:00
Sascha Szott
8f4a3f963a Implement logging for index out-of-range
Add logging for out-of-range index when removing metadata values.

(cherry picked from commit 7692b02b12)
2025-09-02 19:34:30 +00:00
Tim Donohue
cc35141661 Merge pull request #11226 from DSpace/dependabot/maven/dspace-7_x/build-tools-e11e9b5c2b
Bump the build-tools group with 3 updates
2025-09-02 13:01:34 -05:00
Tim Donohue
fd1aa013a7 Merge pull request #11233 from DSpace/dependabot/maven/dspace-7_x/apache-commons-4538dd79bf
Bump commons-cli:commons-cli from 1.9.0 to 1.10.0 in the apache-commons group
2025-09-02 10:51:10 -05:00
Tim Donohue
3721d231b3 Merge pull request #11234 from DSpace/dependabot/maven/dspace-7_x/jetty.version-9.4.58.v20250814
Bump jetty.version from 9.4.57.v20241219 to 9.4.58.v20250814
2025-09-02 10:48:42 -05:00
Tim Donohue
45b677c20e Merge pull request #11223 from DSpace/dependabot/maven/dspace-7_x/test-tools-2cb88a00ef
Bump the test-tools group with 6 updates
2025-09-02 10:47:02 -05:00
dependabot[bot]
ccf253ddda Bump net.minidev:json-smart from 2.5.2 to 2.6.0
Bumps [net.minidev:json-smart](https://github.com/netplex/json-smart-v2) from 2.5.2 to 2.6.0.
- [Release notes](https://github.com/netplex/json-smart-v2/releases)
- [Commits](https://github.com/netplex/json-smart-v2/compare/2.5.2...v2.6.0)

---
updated-dependencies:
- dependency-name: net.minidev:json-smart
  dependency-version: 2.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 06:01:09 +00:00
dependabot[bot]
2c34dde3a8 Bump org.ehcache:ehcache from 3.10.8 to 3.11.1
Bumps [org.ehcache:ehcache](https://github.com/ehcache/ehcache3) from 3.10.8 to 3.11.1.
- [Release notes](https://github.com/ehcache/ehcache3/releases)
- [Commits](https://github.com/ehcache/ehcache3/compare/v3.10.8...v3.11.1)

---
updated-dependencies:
- dependency-name: org.ehcache:ehcache
  dependency-version: 3.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 06:00:09 +00:00
dependabot[bot]
13982618df Bump jetty.version from 9.4.57.v20241219 to 9.4.58.v20250814
Bumps `jetty.version` from 9.4.57.v20241219 to 9.4.58.v20250814.

Updates `org.eclipse.jetty:jetty-server` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-alpn-java-server` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-deploy` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-http` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-io` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-servlet` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-servlets` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-util` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-webapp` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty:jetty-xml` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty.http2:http2-common` from 9.4.57.v20241219 to 9.4.58.v20250814

Updates `org.eclipse.jetty.http2:http2-server` from 9.4.57.v20241219 to 9.4.58.v20250814

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-server
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-alpn-java-server
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-deploy
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-http
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-io
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-servlet
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-servlets
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-util
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-webapp
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-xml
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.http2:http2-common
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.http2:http2-server
  dependency-version: 9.4.58.v20250814
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 05:53:13 +00:00
dependabot[bot]
cf3f8e9bb2 Bump commons-cli:commons-cli in the apache-commons group
Bumps the apache-commons group with 1 update: [commons-cli:commons-cli](https://github.com/apache/commons-cli).


Updates `commons-cli:commons-cli` from 1.9.0 to 1.10.0
- [Changelog](https://github.com/apache/commons-cli/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-cli/compare/rel/commons-cli-1.9.0...rel/commons-cli-1.10.0)

---
updated-dependencies:
- dependency-name: commons-cli:commons-cli
  dependency-version: 1.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 05:51:23 +00:00
dependabot[bot]
9bef7b58d6 Bump io.grpc:grpc-context from 1.74.0 to 1.75.0
Bumps [io.grpc:grpc-context](https://github.com/grpc/grpc-java) from 1.74.0 to 1.75.0.
- [Release notes](https://github.com/grpc/grpc-java/releases)
- [Commits](https://github.com/grpc/grpc-java/compare/v1.74.0...v1.75.0)

---
updated-dependencies:
- dependency-name: io.grpc:grpc-context
  dependency-version: 1.75.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 05:45:53 +00:00
dependabot[bot]
b78f570dbf Bump the build-tools group with 3 updates
Bumps the build-tools group with 3 updates: [com.github.spotbugs:spotbugs](https://github.com/spotbugs/spotbugs), [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) and [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin).


Updates `com.github.spotbugs:spotbugs` from 4.9.3 to 4.9.4
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.9.3...4.9.4)

Updates `com.github.spotbugs:spotbugs-maven-plugin` from 4.9.3.2 to 4.9.4.0
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.9.3.2...spotbugs-maven-plugin-4.9.4.0)

Updates `org.apache.maven.plugins:maven-javadoc-plugin` from 3.11.2 to 3.11.3
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.11.2...maven-javadoc-plugin-3.11.3)

---
updated-dependencies:
- dependency-name: com.github.spotbugs:spotbugs
  dependency-version: 4.9.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: com.github.spotbugs:spotbugs-maven-plugin
  dependency-version: 4.9.4.0
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-version: 3.11.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 05:44:48 +00:00
dependabot[bot]
103d7f754a Bump the test-tools group with 6 updates
Bumps the test-tools group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [io.netty:netty-buffer](https://github.com/netty/netty) | `4.2.3.Final` | `4.2.4.Final` |
| [io.netty:netty-transport](https://github.com/netty/netty) | `4.2.3.Final` | `4.2.4.Final` |
| [io.netty:netty-transport-native-unix-common](https://github.com/netty/netty) | `4.2.3.Final` | `4.2.4.Final` |
| [io.netty:netty-common](https://github.com/netty/netty) | `4.2.3.Final` | `4.2.4.Final` |
| [io.netty:netty-handler](https://github.com/netty/netty) | `4.2.3.Final` | `4.2.4.Final` |
| [io.netty:netty-codec](https://github.com/netty/netty) | `4.2.3.Final` | `4.2.4.Final` |


Updates `io.netty:netty-buffer` from 4.2.3.Final to 4.2.4.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final)

Updates `io.netty:netty-transport` from 4.2.3.Final to 4.2.4.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final)

Updates `io.netty:netty-transport-native-unix-common` from 4.2.3.Final to 4.2.4.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final)

Updates `io.netty:netty-common` from 4.2.3.Final to 4.2.4.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final)

Updates `io.netty:netty-handler` from 4.2.3.Final to 4.2.4.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final)

Updates `io.netty:netty-codec` from 4.2.3.Final to 4.2.4.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-buffer
  dependency-version: 4.2.4.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport
  dependency-version: 4.2.4.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport-native-unix-common
  dependency-version: 4.2.4.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-common
  dependency-version: 4.2.4.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-handler
  dependency-version: 4.2.4.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-codec
  dependency-version: 4.2.4.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 05:44:10 +00:00
Tim Donohue
ff0ebea316 Merge pull request #11188 from DSpace/backport-11160-to-dspace-7_x
[Port dspace-7_x] fix(#8852): Statistics event processor now uses oaiPrefix instead of getHost
2025-08-21 16:56:25 -05:00
JohnnyMendesC
f831acf4d7 fix(#8852): Statistics event processor now uses oaiPrefix instead of getHost
(cherry picked from commit c8fe80c22b)
2025-08-21 21:15:20 +00:00
Tim Donohue
21343d3158 Merge pull request #11184 from DSpace/backport-11161-to-dspace-7_x
[Port dspace-7_x] dspace-api/pom.xml: remove build-helper-maven-plugin
2025-08-21 08:54:54 -05:00
Tim Donohue
abc238cdd0 Merge pull request #11183 from tdonohue/port_11168_to_7x
[Port dspace-7_x] Fix bean initialization with citation-page.enabled_communities
2025-08-21 08:46:31 -05:00
Alan Orth
922109b10a dspace-api/pom.xml: remove build-helper-maven-plugin
Remove the org.codehaus.mojo:build-helper-maven-plugin because the
`maven-version` property has been included by maven itself since
version 3.0.4. This fixes the following warning during build:

    [INFO] --- build-helper:3.6.1:maven-version (default) @ dspace-api ---
    [WARNING]  Goal 'maven-version' is deprecated: Maven since version 3.0.4 has such property build in: MNG-4112 <https://issues.apache.org/jira/browse/MNG-4112>. So goal can be removed.

(cherry picked from commit de3170d4eb)
2025-08-21 13:20:36 +00:00
Tim Donohue
23150bc89a Merge pull request #11180 from tdonohue/port-11166-to-7x
[Port dspace-7_x] .github/workflows/codescan.yml: use codeql-action v3
2025-08-20 17:15:35 -05:00
Miika Nurminen
e51a2537ac Fix bean initialization error on Tomcat startup if citation-page.enabled_communities is set
Arrays.asList produces non-mutable list but with communities, sub-collections are added dynamically on initializaion.
2025-08-20 17:05:46 -05:00
Alan Orth
94a1a0b2e0 .github/workflows/codescan.yml: use codeql-action v3
Version 2 was deprecated in January, 2024 after the release of v3.

See: https://github.blog/changelog/2025-01-10-code-scanning-codeql-action-v2-is-now-deprecated/
2025-08-20 16:30:23 -05:00
Tim Donohue
71af1503ae Merge pull request #11175 from DSpace/backport-11156-to-dspace-7_x
[Port dspace-7_x] Metadata import empty collection column check
2025-08-20 16:28:23 -05:00
Joran De Braekeleer
d063f1ef66 133268: Metadata import empty collection col check
(cherry picked from commit b9513228d7)
2025-08-20 20:50:47 +00:00
kshepherd
be3702f419 Merge pull request #11151 from DSpace/backport-11150-to-dspace-7_x
[Port dspace-7_x] Fix for #9589 Incorrect Export of Search Results with Double Quotation Marks in DSpace 7. Reference PR #10103
2025-08-12 18:10:49 +02:00
im-shubham-vish
aa0fe083a6 Make parse protected to make it override in MetadataExportSearch Add Test for Double Quoted Search CSV Export
(cherry picked from commit 39a45f7f34)
2025-08-12 14:36:37 +00:00
Tim Donohue
38dd432feb Merge pull request #11143 from DSpace/backport-10508-to-dspace-7_x
[Port dspace-7_x] Fix checkpointing for DSpace "checker" command
2025-08-06 16:30:25 -05:00
Tim Donohue
bce865f299 Revert to using java.util.Date instead of Instant to support earlier versions of DSpace. 2025-08-06 15:10:41 -05:00
David P. Steelman
558f0c7bea Fix checkpointing for checksum checking
Fixes the checkpointing for checksum checking by actually committing
the changes to the database.

Replacing "uncacheEntity" with "commit", as testing has shown that this
is necessary to ensure that the checksum status is properly updated in
the most_recent_checksum" table when checksum process is interrupted.

The provided integration test fails if the checksums of bitstreams that
were checked before the interruption are not properly recorded in the
database.

(cherry picked from commit 502b655ef6)
2025-08-06 19:43:04 +00:00
Tim Donohue
eec374a7c5 Merge pull request #11140 from DSpace/backport-11138-to-dspace-7_x
[Port dspace-7_x] FIX uses dc.source for bitstream originalName tag
2025-08-06 14:14:15 -05:00
Tim Donohue
375c0aee1c Merge pull request #11135 from DSpace/backport-11131-to-dspace-7_x
[Port dspace-7_x] Enhance SWORDv1 Integration Tests & fix WRITE Permissions error for submitters
2025-08-06 14:09:11 -05:00
Vincenzo Mecca
56b38bb26d fix: uses dc.source for bitstream originalName tag
Refs: DURACOM-391, #1130
(cherry picked from commit f5c0c17c66)
2025-08-06 18:37:42 +00:00
Tim Donohue
e4f9e90394 Merge pull request #11134 from the-library-code/orcid-identifier-fix-7x_backport
[Port dspace-7_x] ORCID Push: Fix SELF and PART_OF external identifier handling
2025-08-06 13:32:54 -05:00
Tim Donohue
05af860553 getContentAsByteArray() didn't exist in Spring 5. Use readAllBytes() from InputStream instead. 2025-08-06 12:19:14 -05:00
Tim Donohue
ea6e025519 Fix WRITE permissions error when ingesting a new Item. Do not call "updateDSpaceObject" after calling "finishCreateItem" as the latter saves the object and removes submitter privileges from it.
(cherry picked from commit c2d05891ab)
2025-08-06 16:33:00 +00:00
Tim Donohue
b8cbaa053d Add a deposit integration test for SWORDv1 based on the similar SWORDv2 test.
(cherry picked from commit 0589011849)
2025-08-06 16:33:00 +00:00
Kim Shepherd
af654e57f2 [TLC-1097] Additional javadoc for ORCID sync fix 2025-08-06 17:26:12 +02:00
Kim Shepherd
3bca2164be [TLC-1097] ORCID external identifier sync fix
Handle SELF and PART_OF identifiers properly based on
configuration, work type, and identifier type
2025-08-06 17:25:57 +02:00
Tim Donohue
389269e958 Merge pull request #11123 from DSpace/backport-10490-to-dspace-7_x
[Port dspace-7_x] Fix checkpointing for bitstore migration
2025-07-31 16:24:12 -05:00
David P. Steelman
2d353ea995 Fix checkpointing for bitstore migration
Fixes the checkpointing for bitstore migration by actually committing
the changes to the database.

Replacing "dispatchEvents" with "commit" as testing has shown that this
is necessary to ensure that the status of bitstreams is properly
updated when the bitstore migration is interrupted.

The provided integration tests fail if bitstreams successfully migrated
before the interruption are not properly recorded in the database as
being in the destination assetstore.

(cherry picked from commit 3d7c45852d)
2025-07-31 20:52:41 +00:00
Tim Donohue
e0dd7454a4 Merge pull request #11116 from DSpace/dependabot/maven/dspace-7_x/apache-commons-cb46d7dc0f
Bump org.apache.commons:commons-compress from 1.27.1 to 1.28.0 in the apache-commons group
2025-07-31 08:47:43 -05:00
Tim Donohue
7153efe412 Merge pull request #11119 from DSpace/dependabot/maven/dspace-7_x/com.github.spotbugs-spotbugs-maven-plugin-4.9.3.2
Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.3.0 to 4.9.3.2
2025-07-30 17:08:55 -05:00
Tim Donohue
0a3733db95 Merge pull request #11121 from DSpace/dependabot/maven/dspace-7_x/io.grpc-grpc-context-1.74.0
Bump io.grpc:grpc-context from 1.73.0 to 1.74.0
2025-07-30 15:42:04 -05:00
Tim Donohue
ee45f736cd Merge pull request #11113 from tdonohue/port_11111_to_7x
[Port dspace-7_x] Ensure DSpace defaults to UTC time zone in all code / tests
2025-07-30 14:13:10 -05:00
dependabot[bot]
808135f688 Bump io.grpc:grpc-context from 1.73.0 to 1.74.0
Bumps [io.grpc:grpc-context](https://github.com/grpc/grpc-java) from 1.73.0 to 1.74.0.
- [Release notes](https://github.com/grpc/grpc-java/releases)
- [Commits](https://github.com/grpc/grpc-java/compare/v1.73.0...v1.74.0)

---
updated-dependencies:
- dependency-name: io.grpc:grpc-context
  dependency-version: 1.74.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 18:42:52 +00:00
dependabot[bot]
1ecb5660f8 Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.3.0 to 4.9.3.2
Bumps [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.9.3.0 to 4.9.3.2.
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.9.3.0...spotbugs-maven-plugin-4.9.3.2)

---
updated-dependencies:
- dependency-name: com.github.spotbugs:spotbugs-maven-plugin
  dependency-version: 4.9.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 18:41:59 +00:00
dependabot[bot]
6282cb9f12 Bump org.apache.commons:commons-compress in the apache-commons group
Bumps the apache-commons group with 1 update: [org.apache.commons:commons-compress](https://github.com/apache/commons-compress).


Updates `org.apache.commons:commons-compress` from 1.27.1 to 1.28.0
- [Changelog](https://github.com/apache/commons-compress/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-compress/compare/rel/commons-compress-1.27.1...rel/commons-compress-1.28.0)

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-compress
  dependency-version: 1.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 18:40:38 +00:00
Tim Donohue
2b2d0b19b6 Ensure DSpace defaults to UTC time zone in all code / tests. This is necessary so that Spring / Hibernate don't auto-switch timezones when reading from database. 2025-07-30 12:08:23 -05:00
Tim Donohue
77f07a735b Merge pull request #11105 from tdonohue/port_11077_to_7x
[Port dspace-7_x] Add basic logging tests to our docker deployment script in GitHub actions
2025-07-29 10:14:54 -05:00
Tim Donohue
613ef1dc62 Merge pull request #11067 from kshepherd/log4j_it
Simple Log4j tests with in-memory log appender
2025-07-29 09:14:59 -05:00
Tim Donohue
5e3463bd8b Add tests for backend logging to docker deployment tests 2025-07-29 09:11:36 -05:00
Tim Donohue
e3c64906de Merge pull request #11088 from DSpace/dependabot/maven/dspace-7_x/org.apache.james-apache-mime4j-core-0.8.13
Bump org.apache.james:apache-mime4j-core from 0.8.12 to 0.8.13
2025-07-28 16:33:12 -05:00
Tim Donohue
8c79201da3 Merge pull request #10976 from DSpace/dependabot/maven/dspace-7_x/google-apis-d482fb5384
Bump the google-apis group with 3 updates
2025-07-28 16:30:14 -05:00
Tim Donohue
c22583e892 Merge pull request #11005 from DSpace/dependabot/maven/dspace-7_x/build-tools-4f2f951df2
Bump the build-tools group across 1 directory with 2 updates
2025-07-28 15:52:14 -05:00
dependabot[bot]
af38697ade Bump the build-tools group across 1 directory with 2 updates
Bumps the build-tools group with 2 updates in the / directory: [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer) and [org.codehaus.mojo:license-maven-plugin](https://github.com/mojohaus/license-maven-plugin).


Updates `org.apache.maven.plugins:maven-enforcer-plugin` from 3.5.0 to 3.6.0
- [Release notes](https://github.com/apache/maven-enforcer/releases)
- [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.5.0...enforcer-3.6.0)

Updates `org.codehaus.mojo:license-maven-plugin` from 2.5.0 to 2.6.0
- [Release notes](https://github.com/mojohaus/license-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/license-maven-plugin/compare/2.5.0...2.6.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-enforcer-plugin
  dependency-version: 3.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.codehaus.mojo:license-maven-plugin
  dependency-version: 2.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 19:43:25 +00:00
Tim Donohue
ccdbc381c5 Merge pull request #11047 from DSpace/dependabot/maven/dspace-7_x/test-tools-68aaeff8ca
Bump the test-tools group across 1 directory with 7 updates
2025-07-28 14:37:51 -05:00
Tim Donohue
584d70db81 Merge pull request #11100 from mwoodiupui/my-11042-7x
Avoid injection vulnerability in controlled vocabulary lookup 7_x
2025-07-28 14:18:43 -05:00
Mark H. Wood
ceab9526c4 Port #11075 to 7_x 2025-07-28 13:42:28 -04:00
Alan Orth
45c37bcf66 Merge pull request #11089 from DSpace/dependabot/maven/dspace-7_x/com.opencsv-opencsv-5.12.0 2025-07-28 09:30:39 -07:00
Tim Donohue
69a83f0bdd Merge pull request #11049 from DSpace/dependabot/maven/dspace-7_x/com.amazonaws-aws-java-sdk-s3-1.12.788
Bump com.amazonaws:aws-java-sdk-s3 from 1.12.785 to 1.12.788
2025-07-28 08:58:22 -05:00
Tim Donohue
18d53743cd Merge pull request #11087 from DSpace/dependabot/maven/dspace-7_x/apache-commons-7e5b090d5c
Bump the apache-commons group across 1 directory with 5 updates
2025-07-28 08:55:42 -05:00
Tim Donohue
f6f2d5e05c Merge pull request #11050 from DSpace/dependabot/maven/dspace-7_x/fasterxml-d1c1cdfb0c
Bump the fasterxml group with 3 updates
2025-07-28 08:50:51 -05:00
dependabot[bot]
dc65c7a304 Bump com.opencsv:opencsv from 5.11.1 to 5.12.0
Bumps com.opencsv:opencsv from 5.11.1 to 5.12.0.

---
updated-dependencies:
- dependency-name: com.opencsv:opencsv
  dependency-version: 5.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 03:39:24 +00:00
dependabot[bot]
de220d55ac Bump org.apache.james:apache-mime4j-core from 0.8.12 to 0.8.13
Bumps org.apache.james:apache-mime4j-core from 0.8.12 to 0.8.13.

---
updated-dependencies:
- dependency-name: org.apache.james:apache-mime4j-core
  dependency-version: 0.8.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 03:37:58 +00:00
dependabot[bot]
ac81a3d36f Bump the apache-commons group across 1 directory with 5 updates
Bumps the apache-commons group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [commons-codec:commons-codec](https://github.com/apache/commons-codec) | `1.18.0` | `1.19.0` |
| [commons-io:commons-io](https://github.com/apache/commons-io) | `2.19.0` | `2.20.0` |
| org.apache.commons:commons-lang3 | `3.17.0` | `3.18.0` |
| [org.apache.commons:commons-text](https://github.com/apache/commons-text) | `1.13.1` | `1.14.0` |
| commons-validator:commons-validator | `1.9.0` | `1.10.0` |



Updates `commons-codec:commons-codec` from 1.18.0 to 1.19.0
- [Changelog](https://github.com/apache/commons-codec/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-codec/compare/rel/commons-codec-1.18.0...rel/commons-codec-1.19.0)

Updates `commons-io:commons-io` from 2.19.0 to 2.20.0
- [Changelog](https://github.com/apache/commons-io/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-io/compare/rel/commons-io-2.19.0...rel/commons-io-2.20.0)

Updates `org.apache.commons:commons-lang3` from 3.17.0 to 3.18.0

Updates `org.apache.commons:commons-text` from 1.13.1 to 1.14.0
- [Changelog](https://github.com/apache/commons-text/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-text/compare/rel/commons-text-1.13.1...rel/commons-text-1.14.0)

Updates `commons-validator:commons-validator` from 1.9.0 to 1.10.0

---
updated-dependencies:
- dependency-name: commons-codec:commons-codec
  dependency-version: 1.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: commons-io:commons-io
  dependency-version: 2.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-lang3
  dependency-version: 3.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-text
  dependency-version: 1.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: commons-validator:commons-validator
  dependency-version: 1.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 03:36:02 +00:00
dependabot[bot]
92120211da Bump the test-tools group across 1 directory with 7 updates
---
updated-dependencies:
- dependency-name: org.xmlunit:xmlunit-core
  dependency-version: 2.10.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-buffer
  dependency-version: 4.2.3.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport
  dependency-version: 4.2.3.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport-native-unix-common
  dependency-version: 4.2.3.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-common
  dependency-version: 4.2.3.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-handler
  dependency-version: 4.2.3.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-codec
  dependency-version: 4.2.3.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 02:55:44 +00:00
dependabot[bot]
609062befb Bump the google-apis group with 3 updates
Bumps the google-apis group with 3 updates: [com.google.http-client:google-http-client](https://github.com/googleapis/google-http-java-client), [com.google.http-client:google-http-client-jackson2](https://github.com/googleapis/google-http-java-client) and [com.google.http-client:google-http-client-gson](https://github.com/googleapis/google-http-java-client).


Updates `com.google.http-client:google-http-client` from 1.47.0 to 1.47.1
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.47.0...v1.47.1)

Updates `com.google.http-client:google-http-client-jackson2` from 1.47.0 to 1.47.1
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.47.0...v1.47.1)

Updates `com.google.http-client:google-http-client-gson` from 1.47.0 to 1.47.1
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.47.0...v1.47.1)

---
updated-dependencies:
- dependency-name: com.google.http-client:google-http-client
  dependency-version: 1.47.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-jackson2
  dependency-version: 1.47.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-gson
  dependency-version: 1.47.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: google-apis
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 02:55:24 +00:00
dependabot[bot]
ffd60bf811 Bump the fasterxml group with 3 updates
Bumps the fasterxml group with 3 updates: [com.fasterxml.jackson.core:jackson-annotations](https://github.com/FasterXML/jackson), [com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core) and [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson).


Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.19.1 to 2.19.2
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.19.1 to 2.19.2
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.19.1...jackson-core-2.19.2)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.19.1 to 2.19.2
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.19.1...jackson-core-2.19.2)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.19.1 to 2.19.2
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 02:55:08 +00:00
Tim Donohue
695aa673d3 Merge pull request #11071 from tdonohue/port_10356_to_7x
[Port dspace-7_x] Live Import - PubMed - support optional apiKey config
2025-07-23 15:05:28 -05:00
Marie Verdonck
2f66457abe 109807: Live Import - PubMed - support optional apiKey config 2025-07-23 12:41:25 -05:00
Tim Donohue
c061015ecf [maven-release-plugin] prepare for next development iteration 2025-07-22 15:03:08 -05:00
Tim Donohue
6e8b6cc33a [maven-release-plugin] prepare release dspace-7.6.5 2025-07-22 15:03:04 -05:00
Tim Donohue
479cb76885 Minor updates to LICENSES_THIRD_PARTY for 7.6.5 release 2025-07-22 14:42:47 -05:00
Kim Shepherd
588c4ef4d2 Add simple log4j WebappLoggingIT test 2025-07-22 18:12:05 +02:00
Tim Donohue
5f291400b3 Merge pull request #11066 from tdonohue/port_11063_to_7x
[Port dspace-7_x] Fix several unit/integration test failures that only occur on Windows
2025-07-22 09:34:56 -05:00
kshepherd
1bd4da3899 Merge pull request #11028 from DSpace/dependabot/maven/dspace-7_x/log4j.version-2.25.1
Bump log4j.version from 2.25.0 to 2.25.1
2025-07-22 16:23:59 +02:00
Tim Donohue
15b3f314a3 Force UTF-8 encoding in all tests. This fixes several test failures when running tests from Windows commandline because Windows doesn't default to using UTF-8. 2025-07-22 08:59:50 -05:00
Tim Donohue
28686fc48a Improve logging in AbstractLiveImportIntegrationTest (to make tests easier to debug). Replace obscure StringInputStream (from Ant) with IOUtils.toInputStream 2025-07-22 08:59:44 -05:00
Tim Donohue
d2c120bd8b Fix broken tests on Windows by using Paths to split file path instead of regex. Also switch to in-memory s3mock because Windows cannot cleanup created files successfully. 2025-07-22 08:59:39 -05:00
Tim Donohue
39fb2afba1 Update test to no longer assume 127.0.0.1 will always respond with "localhost" as the hostname. On my machine it does not. 2025-07-22 08:59:34 -05:00
dependabot[bot]
5cd3daa379 Bump com.amazonaws:aws-java-sdk-s3 from 1.12.785 to 1.12.788
Bumps [com.amazonaws:aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.785 to 1.12.788.
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.785...1.12.788)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-version: 1.12.788
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 02:49:30 +00:00
Tim Donohue
9424ccf4aa [maven-release-plugin] prepare for next development iteration 2025-07-14 12:03:15 -05:00
Tim Donohue
a5f04f9c77 [maven-release-plugin] prepare release dspace-7.6.4 2025-07-14 12:03:12 -05:00
Tim Donohue
f506d18bb1 Merge pull request #11036 from DSpace/backport-11031-to-dspace-7_x
[Port dspace-7_x] Improve SAF manifest path handling
2025-07-14 10:18:06 -05:00
Kim Shepherd
bc17559162 Fix line length in DSBitstore log
(cherry picked from commit dbf524c112)
2025-07-14 14:36:58 +00:00
Kim Shepherd
907b42c2a9 return existing File constructed and validated for bitstream
(cherry picked from commit 31b1c922b2)
2025-07-14 14:36:58 +00:00
Kim Shepherd
b0a4a3400f Enforce bitstream path to be within (fs) bitstore base on get
(cherry picked from commit 6799660a90)
2025-07-14 14:36:58 +00:00
MMilosz
84e308c8f5 fix: prevent path traversal in SAF import
(cherry picked from commit 596d8666f4)
2025-07-14 14:36:58 +00:00
Tim Donohue
91989e5efb Merge pull request #11032 from kshepherd/saf-xml-fix-2_7.x
Improve SAF Import XML handling (7.x)
2025-07-14 09:22:15 -05:00
Kim Shepherd
e9bc74cf6d Fix missing XMLUtils imports 2025-07-14 13:09:43 +02:00
Kim Shepherd
dda6d9ec9d Remove unused imports 2025-07-14 13:07:45 +02:00
Kim Shepherd
45a9f8b530 Re-add file separator to normalized SAF item path 2025-07-14 12:50:32 +02:00
dependabot[bot]
a381611ebd Bump log4j.version from 2.25.0 to 2.25.1
Bumps `log4j.version` from 2.25.0 to 2.25.1.

Updates `org.apache.logging.log4j:log4j-api` from 2.25.0 to 2.25.1

Updates `org.apache.logging.log4j:log4j-core` from 2.25.0 to 2.25.1

Updates `org.apache.logging.log4j:log4j-1.2-api` from 2.25.0 to 2.25.1

---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-api
  dependency-version: 2.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.logging.log4j:log4j-core
  dependency-version: 2.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.logging.log4j:log4j-1.2-api
  dependency-version: 2.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 03:45:03 +00:00
Kim Shepherd
259c3ddd37 Enforce path traversal check on import subdir (pre-processing) 2025-07-13 10:08:30 +02:00
Tim Donohue
d48e22aff5 Update LICENSES_THIRD_PARTY to prepare for 7.6.4 release. 2025-07-11 14:01:37 -05:00
Tim Donohue
4fd3112ebf Merge pull request #10690 from atmire/w2p-119612_export-item-limit-dspace-7_x
[Port dspace-7_x] support a configurable limit for exporting items as it can take a up a huge amount of resources
2025-07-10 13:25:38 -05:00
Kim Shepherd
99b2a630a7 Allow trusted XML builder to enforce base path for entities 2025-07-10 17:22:58 +02:00
Tim Donohue
8c80b67b04 EPO and PubMed only need to allow for DOCTYPEs. All other XML security changes can be used. 2025-07-03 12:49:11 +02:00
Kim Shepherd
f7dcbf1b44 Safe and consistent XML entity handling in parsers 2025-07-03 12:48:47 +02:00
Tim Donohue
a9546055f4 Merge pull request #10998 from DSpace/backport-10997-to-dspace-7_x
[Port dspace-7_x] Point directly to HTTPS address for ArXiv
2025-07-02 13:21:17 -05:00
Yury Bondarenko
8f9a7f1f92 Point directly to HTTPS address for ArXiv
(cherry picked from commit cf0d6635f2)
2025-07-02 16:22:49 +00:00
Tim Donohue
042bf15237 Merge pull request #10994 from tdonohue/port_10986_to_7x
[Port dspace-7_x] Update POM to use Sonatype's Central Portal for Maven Releases
2025-07-01 14:25:05 -05:00
Tim Donohue
76c50ac43e Update POM to use central-publishing-maven-plugin and Sonatype's Central Portal 2025-07-01 12:22:58 -05:00
Tim Donohue
2b9b14501c Merge pull request #9966 from atmire/accessibility-settings-7_x
[Port dspace-7_x] Accessibility settings metadata field
2025-06-30 13:22:15 -05:00
Alan Orth
96ce51ae09 Merge pull request #10914 from DSpace/dependabot/maven/dspace-7_x/fasterxml-4343a5c2e7 2025-06-30 07:00:24 +03:00
dependabot[bot]
66a75f522f Bump the fasterxml group with 3 updates
Bumps the fasterxml group with 3 updates: [com.fasterxml.jackson.core:jackson-annotations](https://github.com/FasterXML/jackson), [com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core) and [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson).


Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.19.0 to 2.19.1
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.19.0 to 2.19.1
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.19.0...jackson-core-2.19.1)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.19.0 to 2.19.1
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.19.0...jackson-core-2.19.1)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.19.0 to 2.19.1
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-version: 2.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 02:37:25 +00:00
Tim Donohue
88a1ac08bf Merge pull request #10970 from DSpace/backport-10961-to-dspace-7_x
[Port dspace-7_x] Fix patching metadata on unknown field clears all DSO metadata
2025-06-27 15:03:33 -05:00
Tim Donohue
aac45284d2 Correct metadata value count for dspace-7_x 2025-06-27 14:06:33 -05:00
abhinav
130442746a move the exception to patchUtils
(cherry picked from commit a2dc6fbdf8)
2025-06-27 16:42:45 +00:00
abhinav
934f73f412 Update PatchMetadataIT
(cherry picked from commit 27d59085db)
2025-06-27 16:42:45 +00:00
abhinav
172783691b fix metadata getting cleared on patch request with invalid field
(cherry picked from commit e559af1841)
2025-06-27 16:42:44 +00:00
Tim Donohue
04f443b589 Merge pull request #10896 from mwoodiupui/9733-7
[Port dspace-7_x] filter-media:  make POI record buffer size adjustable.
2025-06-26 16:58:17 -05:00
Tim Donohue
61277b72d9 Merge pull request #10875 from alanorth/malformed-dates-7x
[Port dspace-7_x] dspace-api: improve date parsing for Solr sort indexes
2025-06-26 16:19:22 -05:00
Mark H. Wood
e2e402f0de Merge branch 'dspace-7_x' of github.com:DSpace/DSpace into 9733-7 2025-06-26 13:17:22 -04:00
Mark H. Wood
d0b5911cf6 Make POI record buffer size adjustable. 2025-06-26 13:16:32 -04:00
Alan Orth
27540b93bf Merge pull request #10865 from DSpace/dependabot/maven/dspace-7_x/jersey.version-2.47 2025-06-26 08:38:25 +02:00
Alan Orth
62512bdec8 Merge pull request #10915 from DSpace/dependabot/maven/dspace-7_x/org.postgresql-postgresql-42.7.7 2025-06-26 08:36:07 +02:00
Alan Orth
cd8c277ae5 Merge pull request #10950 from DSpace/dependabot/maven/dspace-7_x/log4j.version-2.25.0 2025-06-26 08:28:03 +02:00
Tim Donohue
9f9d810bea Merge pull request #10952 from max-nuding/backport-10688-to-dspace-7_x
[Port dspace-7_x] Allow collection admins to add new policies for bitstreams
2025-06-25 17:11:11 -05:00
Tim Donohue
57a1de5ecd Update deploy demo.dspace.org branch to 9.x to ensure older branches never trigger a redeploy. 2025-06-25 16:41:48 -05:00
max.nuding
e3b9179482 remove unnecessary code 2025-06-25 10:36:51 +02:00
dependabot[bot]
312416a716 Bump jersey.version from 2.46 to 2.47
Bumps `jersey.version` from 2.46 to 2.47.

Updates `org.glassfish.jersey.core:jersey-client` from 2.46 to 2.47

Updates `org.glassfish.jersey.inject:jersey-hk2` from 2.46 to 2.47

Updates `org.glassfish.jersey.core:jersey-server` from 2.46 to 2.47

Updates `org.glassfish.jersey.containers:jersey-container-servlet` from 2.46 to 2.47

Updates `org.glassfish.jersey.media:jersey-media-json-jackson` from 2.46 to 2.47

Updates `org.glassfish.jersey.media:jersey-media-jaxb` from 2.46 to 2.47

Updates `org.glassfish.jersey.ext:jersey-spring5` from 2.46 to 2.47

---
updated-dependencies:
- dependency-name: org.glassfish.jersey.core:jersey-client
  dependency-version: '2.47'
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.inject:jersey-hk2
  dependency-version: '2.47'
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.core:jersey-server
  dependency-version: '2.47'
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.containers:jersey-container-servlet
  dependency-version: '2.47'
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.media:jersey-media-json-jackson
  dependency-version: '2.47'
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.media:jersey-media-jaxb
  dependency-version: '2.47'
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.ext:jersey-spring5
  dependency-version: '2.47'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 20:24:13 +00:00
dependabot[bot]
8839eefbe7 Bump org.postgresql:postgresql from 42.7.6 to 42.7.7
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.6 to 42.7.7.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.7.6...REL42.7.7)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-version: 42.7.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 20:09:59 +00:00
Alan Orth
b594ebbf9e dspace-api: improve date parsing for Solr sort
Re-use DSpace date parsing from o.d.util.MultiFormatDateParser for
more robust date support when creating of Solr browse/sort indexes.
2025-06-24 22:08:07 +02:00
dependabot[bot]
230bf80b5f Bump log4j.version from 2.24.3 to 2.25.0
Bumps `log4j.version` from 2.24.3 to 2.25.0.

Updates `org.apache.logging.log4j:log4j-api` from 2.24.3 to 2.25.0

Updates `org.apache.logging.log4j:log4j-core` from 2.24.3 to 2.25.0

Updates `org.apache.logging.log4j:log4j-1.2-api` from 2.24.3 to 2.25.0

---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-api
  dependency-version: 2.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.apache.logging.log4j:log4j-core
  dependency-version: 2.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.apache.logging.log4j:log4j-1.2-api
  dependency-version: 2.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 20:04:48 +00:00
max.nuding
b8923c986f fix imports for checkstyle 2025-06-24 07:01:56 +02:00
Alan Orth
c587d70a09 Merge pull request #10955 from tdonohue/fix_handle_ITs 2025-06-23 23:09:55 +02:00
Tim Donohue
8a84cba371 Fix broken ITs by removing unnecessary registrations and managing context permissions better 2025-06-23 15:33:50 -05:00
Tim Donohue
973c5f9daa Merge pull request #10918 from tuub/backport-10580-to-dspace-7_x
Backport 10580 to dspace 7 x
2025-06-23 11:54:43 -05:00
max.nuding
61c6e59a06 remove jakarta import 2025-06-23 11:44:22 +02:00
max.nuding
e90f792869 add missing imports 2025-06-23 11:36:52 +02:00
max.nuding
1732285d59 add import for Intstant 2025-06-23 10:12:56 +02:00
Mykhaylo Boychuk
03992be08d [DURACOM-318] remove unused import
(cherry picked from commit ed91462ccd7f99f5cf0dc326ed06ab42c13b80e0)
(cherry picked from commit 8df4e35e76)
2025-06-23 10:06:27 +02:00
Mykhaylo Boychuk
2104d605bd [DURACOM-318] improve code
(cherry picked from commit 8e0ca2e6f88b0251edf8a840f65135590c65f088)
(cherry picked from commit 4270170d40)
2025-06-23 10:06:25 +02:00
Adamo
a24340a197 [DURACOM-318] IT fix
(cherry picked from commit accba0738f)
2025-06-23 10:05:48 +02:00
Mykhaylo Boychuk
de5908725a [DURACOM-318] improve sucurity plugin
(cherry picked from commit b1ce88925ea36e84a77e667a94ae5577b5ee05b6)
(cherry picked from commit e9be8435ec)
2025-06-23 10:05:47 +02:00
Mykhaylo Boychuk
f92e376896 [DURACOM-318] update security annotations on ResourcePolicyRepository
(cherry picked from commit fabcc692db68e5232986ff062e849e4ec5c68c8b)
(cherry picked from commit 95836c271c)
2025-06-23 10:04:04 +02:00
Mykhaylo Boychuk
39def52592 [DURACOM-318] add new ITs for ResourcePolicy
(cherry picked from commit d78d4f00d94ef0d4b147031b075b8df1e8896fe4)
(cherry picked from commit 98c2b99421)
2025-06-23 10:04:01 +02:00
Alan Orth
6337f2fa67 Merge pull request #10838 from DSpace/dependabot/maven/dspace-7_x/bouncycastle.version-1.81 2025-06-17 14:38:05 +03:00
Sascha Szott
07e840b675 removal of configuration file sword-client.cfg 2025-06-16 13:38:06 +02:00
Sascha Szott
34134b3c3b remove inclusion of sword-client.cfg 2025-06-16 13:37:49 +02:00
Alan Orth
309e25e8c8 Merge pull request #10591 from alanorth/port-dspace7-10537
[Port dspace-7_x] Optimize count-only Solr queries
2025-06-13 07:13:37 +03:00
Tim Donohue
bc7a681428 Merge pull request #10883 from DSpace/backport-10583-to-dspace-7_x
[Port dspace-7_x] Introduce custom contributor for PubMed's abstract format on metadata import
2025-06-11 10:00:06 -05:00
Alan Orth
9eef166b7e dspace-api: set search fields in Solr query only if we are interested in the actual search results 2025-06-11 17:18:35 +03:00
Alan Orth
bd753005e6 dspace-api: do not request actual search hits in count-only query 2025-06-11 17:18:35 +03:00
Alan Orth
d9cc564ace dspace-api: use static variable RESOURCE_TYPE_FIELD 2025-06-11 17:18:35 +03:00
DSpace Bot
2abbe67ea6 [Port dspace-7_x] improve robustness of search in index field submit (use filter query) (#10890)
* improve robustness of search in index field submit (use filter query)

(cherry picked from commit a65ef008b7)

* fix checkstyle warnings

(cherry picked from commit 183d5ca671)

* fix checkstyle warning

(cherry picked from commit fe251f39e3)

---------

Co-authored-by: Sascha Szott <szott@gmx.de>
2025-06-11 15:26:49 +03:00
DSpace Bot
2c400bf2da [Port dspace-7_x] Optimization of Solr Queries: Transition to Filter Queries (#10887)
* use filter query instead of generic query

(cherry picked from commit f2417feeca)

* use filter query instead of generic query

(cherry picked from commit d83a2525ad)

* use filter query instead of generic query

(cherry picked from commit f3a976107e)

* remove obsolete comment

(cherry picked from commit 3ee2dbcc56)

* use filter query instead of generic query

(cherry picked from commit 318afc769a)

* add static imports

(cherry picked from commit 8ad19c42df)

* move static import to the top of the import block

(cherry picked from commit b85585c34e)

* move static imports to the top of the import block

(cherry picked from commit 4b446e24a0)

---------

Co-authored-by: Sascha Szott <szott@gmx.de>
2025-06-11 15:20:59 +03:00
Alan Orth
4afd54cbbb Merge pull request #10872 from tdonohue/remove_commons-fileupload
[dspace-7_x] Remove `commons-fileupload` as it is no longer used.
2025-06-11 08:58:21 +03:00
Jens Vannerum
1f174f4657 129944: Introduce custom abstract xpath contributor for pubmed to respect their labelled structure - modify IT for it
(cherry picked from commit 28bc4970b7)
2025-06-10 22:01:23 +00:00
Tim Donohue
144d9a25d2 Merge pull request #10864 from DSpace/dependabot/maven/dspace-7_x/net.handle-handle-9.3.2
Bump net.handle:handle from 9.3.1 to 9.3.2
2025-06-09 12:37:44 -05:00
Tim Donohue
a5ae3705e7 Remove commons-fileupload as it is no longer used. 2025-06-09 10:15:00 -05:00
Tim Donohue
d740232199 Merge pull request #10862 from DSpace/dependabot/maven/dspace-7_x/build-tools-0af78e14c7
Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 in the build-tools group
2025-06-09 09:23:58 -05:00
Tim Donohue
ec27f96d5f Merge pull request #10861 from DSpace/dependabot/maven/dspace-7_x/test-tools-05bec946dc
Bump the test-tools group with 6 updates
2025-06-09 09:22:38 -05:00
dependabot[bot]
358c00c199 Bump net.handle:handle from 9.3.1 to 9.3.2
Bumps net.handle:handle from 9.3.1 to 9.3.2.

---
updated-dependencies:
- dependency-name: net.handle:handle
  dependency-version: 9.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 03:09:56 +00:00
dependabot[bot]
a458fbd6ce Bump org.codehaus.mojo:build-helper-maven-plugin
Bumps the build-tools group with 1 update: [org.codehaus.mojo:build-helper-maven-plugin](https://github.com/mojohaus/build-helper-maven-plugin).


Updates `org.codehaus.mojo:build-helper-maven-plugin` from 3.6.0 to 3.6.1
- [Release notes](https://github.com/mojohaus/build-helper-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/build-helper-maven-plugin/compare/3.6.0...3.6.1)

---
updated-dependencies:
- dependency-name: org.codehaus.mojo:build-helper-maven-plugin
  dependency-version: 3.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 03:08:40 +00:00
dependabot[bot]
0bc41bfaaf Bump the test-tools group with 6 updates
Bumps the test-tools group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [io.netty:netty-buffer](https://github.com/netty/netty) | `4.2.1.Final` | `4.2.2.Final` |
| [io.netty:netty-transport](https://github.com/netty/netty) | `4.2.1.Final` | `4.2.2.Final` |
| [io.netty:netty-transport-native-unix-common](https://github.com/netty/netty) | `4.2.1.Final` | `4.2.2.Final` |
| [io.netty:netty-common](https://github.com/netty/netty) | `4.2.1.Final` | `4.2.2.Final` |
| [io.netty:netty-handler](https://github.com/netty/netty) | `4.2.1.Final` | `4.2.2.Final` |
| [io.netty:netty-codec](https://github.com/netty/netty) | `4.2.1.Final` | `4.2.2.Final` |


Updates `io.netty:netty-buffer` from 4.2.1.Final to 4.2.2.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.1.Final...netty-4.2.2.Final)

Updates `io.netty:netty-transport` from 4.2.1.Final to 4.2.2.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.1.Final...netty-4.2.2.Final)

Updates `io.netty:netty-transport-native-unix-common` from 4.2.1.Final to 4.2.2.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.1.Final...netty-4.2.2.Final)

Updates `io.netty:netty-common` from 4.2.1.Final to 4.2.2.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.1.Final...netty-4.2.2.Final)

Updates `io.netty:netty-handler` from 4.2.1.Final to 4.2.2.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.1.Final...netty-4.2.2.Final)

Updates `io.netty:netty-codec` from 4.2.1.Final to 4.2.2.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.1.Final...netty-4.2.2.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-buffer
  dependency-version: 4.2.2.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport
  dependency-version: 4.2.2.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport-native-unix-common
  dependency-version: 4.2.2.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-common
  dependency-version: 4.2.2.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-handler
  dependency-version: 4.2.2.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-codec
  dependency-version: 4.2.2.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 03:07:54 +00:00
Alan Orth
415be6283a Merge pull request #10842 from DSpace/dependabot/maven/dspace-7_x/com.amazonaws-aws-java-sdk-s3-1.12.785
Bump com.amazonaws:aws-java-sdk-s3 from 1.12.783 to 1.12.785
2025-06-05 12:18:31 +03:00
kshepherd
94fe90f9d8 Merge pull request #10850 from DSpace/backport-10786-to-dspace-7_x
[Port dspace-7_x] Add HTTP timeouts in LiveImportClient to improve robustness
2025-06-04 23:06:19 +02:00
Sascha Szott
87ce9fd136 Add HTTP timeouts to improve robustness
(cherry picked from commit cabf5a7a44)
2025-06-04 19:24:16 +00:00
Tim Donohue
f2cbcca4c5 Merge pull request #10811 from DSpace/dependabot/maven/dspace-7_x/build-tools-137e7ca1b5
Bump org.apache.maven.plugins:maven-clean-plugin from 3.4.1 to 3.5.0 in the build-tools group
2025-06-04 14:08:28 -05:00
dependabot[bot]
a6cc912e62 Bump com.amazonaws:aws-java-sdk-s3 from 1.12.783 to 1.12.785
Bumps [com.amazonaws:aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.783 to 1.12.785.
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.783...1.12.785)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-version: 1.12.785
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-04 14:25:57 +00:00
dependabot[bot]
21c56aeda7 Bump bouncycastle.version from 1.80 to 1.81
Bumps `bouncycastle.version` from 1.80 to 1.81.

Updates `org.bouncycastle:bcpkix-jdk18on` from 1.80 to 1.81
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

Updates `org.bouncycastle:bcprov-jdk18on` from 1.80 to 1.81
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

Updates `org.bouncycastle:bcutil-jdk18on` from 1.80 to 1.81
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

---
updated-dependencies:
- dependency-name: org.bouncycastle:bcpkix-jdk18on
  dependency-version: '1.81'
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.bouncycastle:bcprov-jdk18on
  dependency-version: '1.81'
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.bouncycastle:bcutil-jdk18on
  dependency-version: '1.81'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-04 14:25:16 +00:00
dependabot[bot]
25ad6039dc Bump org.apache.maven.plugins:maven-clean-plugin
Bumps the build-tools group with 1 update: [org.apache.maven.plugins:maven-clean-plugin](https://github.com/apache/maven-clean-plugin).


Updates `org.apache.maven.plugins:maven-clean-plugin` from 3.4.1 to 3.5.0
- [Release notes](https://github.com/apache/maven-clean-plugin/releases)
- [Commits](https://github.com/apache/maven-clean-plugin/compare/maven-clean-plugin-3.4.1...maven-clean-plugin-3.5.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-clean-plugin
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-04 14:25:05 +00:00
Alan Orth
de7fd98a34 Merge pull request #10812 from DSpace/dependabot/maven/dspace-7_x/com.opencsv-opencsv-5.11.1
Bump com.opencsv:opencsv from 5.11 to 5.11.1
2025-06-04 12:26:14 +03:00
kshepherd
3396233f2d Merge pull request #10822 from tdonohue/port_10806_to_7x
[Port dspace-7_x] Alphabetize external source importers by service name (on MyDSpace, etc)
2025-06-02 17:16:23 +02:00
Tim Donohue
19e22c10f1 Alphabetize importers by service name 2025-06-02 09:26:24 -05:00
dependabot[bot]
32bd615ba8 Bump com.opencsv:opencsv from 5.11 to 5.11.1
Bumps com.opencsv:opencsv from 5.11 to 5.11.1.

---
updated-dependencies:
- dependency-name: com.opencsv:opencsv
  dependency-version: 5.11.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 02:30:57 +00:00
Tim Donohue
91d845563a Merge pull request #10796 from DSpace/dependabot/maven/dspace-7_x/io.grpc-grpc-context-1.73.0
Bump io.grpc:grpc-context from 1.72.0 to 1.73.0
2025-05-28 15:47:03 -05:00
Tim Donohue
0ad9699128 Merge pull request #10797 from DSpace/dependabot/maven/dspace-7_x/org.postgresql-postgresql-42.7.6
Bump org.postgresql:postgresql from 42.7.5 to 42.7.6
2025-05-28 15:44:19 -05:00
Tim Donohue
9b1899de48 Merge pull request #10791 from DSpace/dependabot/maven/dspace-7_x/apache-commons-3e71c7e148
Bump commons-beanutils:commons-beanutils from 1.10.1 to 1.11.0 in the apache-commons group
2025-05-28 15:41:30 -05:00
dependabot[bot]
4367eebef2 Bump org.postgresql:postgresql from 42.7.5 to 42.7.6
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.5 to 42.7.6.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.7.5...REL42.7.6)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-version: 42.7.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 16:28:25 +00:00
dependabot[bot]
b7960bd42e Bump io.grpc:grpc-context from 1.72.0 to 1.73.0
Bumps [io.grpc:grpc-context](https://github.com/grpc/grpc-java) from 1.72.0 to 1.73.0.
- [Release notes](https://github.com/grpc/grpc-java/releases)
- [Commits](https://github.com/grpc/grpc-java/compare/v1.72.0...v1.73.0)

---
updated-dependencies:
- dependency-name: io.grpc:grpc-context
  dependency-version: 1.73.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 16:26:54 +00:00
dependabot[bot]
3fef856ef0 Bump commons-beanutils:commons-beanutils in the apache-commons group
Bumps the apache-commons group with 1 update: commons-beanutils:commons-beanutils.


Updates `commons-beanutils:commons-beanutils` from 1.10.1 to 1.11.0

---
updated-dependencies:
- dependency-name: commons-beanutils:commons-beanutils
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 16:25:45 +00:00
Tim Donohue
53b819b4b5 Merge pull request #10779 from DSpace/dependabot/maven/dspace-7_x/org.xmlunit-xmlunit-core-2.10.2
Bump org.xmlunit:xmlunit-core from 2.10.0 to 2.10.2
2025-05-28 08:03:47 -05:00
dependabot[bot]
a2a6838390 Bump org.xmlunit:xmlunit-core from 2.10.0 to 2.10.2
Bumps [org.xmlunit:xmlunit-core](https://github.com/xmlunit/xmlunit) from 2.10.0 to 2.10.2.
- [Release notes](https://github.com/xmlunit/xmlunit/releases)
- [Changelog](https://github.com/xmlunit/xmlunit/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/xmlunit/xmlunit/compare/v2.10.0...v2.10.2)

---
updated-dependencies:
- dependency-name: org.xmlunit:xmlunit-core
  dependency-version: 2.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 22:15:28 +00:00
Tim Donohue
c791ac1460 Merge pull request #10486 from atmire/issue-10484_fix-invalid-cast-in-DOIOrganiser
Fix invalid cast in DOIOrganiser exception handling
2025-05-23 09:43:10 -05:00
Tim Donohue
2330ff37b5 Merge pull request #10760 from tdonohue/port_10758_to_7x
[Port dspace-7_x] Bump XOAI to 3.4.1
2025-05-19 14:40:09 -05:00
Tim Donohue
a1582d9477 Bump XOAI to 3.4.1 2025-05-19 14:07:02 -05:00
Tim Donohue
46440dcc2d Merge pull request #10752 from DSpace/backport-10611-to-dspace-7_x
[Port dspace-7_x] Use application/json as mime type for iiif manifests
2025-05-15 12:07:03 -05:00
Kim Shepherd
8b3618f583 [#10611] Remove json mime test from findOneCanvas
(cherry picked from commit e07e051e67)
2025-05-15 15:42:16 +00:00
Kim Shepherd
878ecdc09d [#10611] Add mime type checks in IIIFControllerIT
(cherry picked from commit 87c82f234c)
2025-05-15 15:42:16 +00:00
Pascal-Nicolas Becker
a46e01d6db Use application/json as mime type for iiif manifests
(cherry picked from commit 643e9984c7)
2025-05-15 15:42:16 +00:00
Tim Donohue
e26fd0d9dc Merge pull request #10748 from DSpace/backport-10745-to-dspace-7_x
[Port dspace-7_x] Improve DSpaceObjectService string comparison tests
2025-05-14 15:53:11 -05:00
Kim Shepherd
a2a0649227 [#10744] Update Javadoc in DSpaceObjectService (Item.ANY usage)
(cherry picked from commit 9aa74b8e68)
2025-05-14 19:53:23 +00:00
Kim Shepherd
359dc609a8 [#10744] Improve String comparison in DSpaceObjectServiceImpl
(cherry picked from commit b089fd6442)
2025-05-14 19:53:23 +00:00
Tim Donohue
e6475dc04f Merge pull request #10746 from DSpace/backport-10184-to-dspace-7_x
[Port dspace-7_x] conditional rendering of metadata section in style.xsl
2025-05-14 14:42:04 -05:00
Sascha Szott
fa603b2a58 add conditional check in metadata card rendering
(cherry picked from commit b681145343)
2025-05-14 18:30:19 +00:00
Sascha Szott
bbfc6874a4 conditional rendering for metadata section in style.xsl
(cherry picked from commit addc26ad19)
2025-05-14 18:30:19 +00:00
Tim Donohue
92a92abe9f Merge pull request #10734 from DSpace/dependabot/maven/dspace-7_x/webjars-36a72e2b67
Bump org.webjars.npm:json-editor__json-editor from 2.15.1 to 2.15.2 in the webjars group
2025-05-13 14:41:06 -05:00
Tim Donohue
66b6ed3f4a Must update version in index.html to complete upgrade 2025-05-13 12:12:50 -05:00
Tim Donohue
02ead6997f Merge pull request #10733 from DSpace/dependabot/maven/dspace-7_x/test-tools-3dcec26f7e
Bump the test-tools group with 6 updates
2025-05-13 12:06:25 -05:00
dependabot[bot]
5765bff79c Bump org.webjars.npm:json-editor__json-editor in the webjars group
Bumps the webjars group with 1 update: [org.webjars.npm:json-editor__json-editor](https://github.com/json-editor/json-editor).


Updates `org.webjars.npm:json-editor__json-editor` from 2.15.1 to 2.15.2
- [Changelog](https://github.com/json-editor/json-editor/blob/master/CHANGELOG.md)
- [Commits](https://github.com/json-editor/json-editor/compare/2.15.1...2.15.2)

---
updated-dependencies:
- dependency-name: org.webjars.npm:json-editor__json-editor
  dependency-version: 2.15.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: webjars
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 22:49:31 +00:00
dependabot[bot]
42e979a021 Bump the test-tools group with 6 updates
Bumps the test-tools group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [io.netty:netty-buffer](https://github.com/netty/netty) | `4.2.0.Final` | `4.2.1.Final` |
| [io.netty:netty-transport](https://github.com/netty/netty) | `4.2.0.Final` | `4.2.1.Final` |
| [io.netty:netty-transport-native-unix-common](https://github.com/netty/netty) | `4.2.0.Final` | `4.2.1.Final` |
| [io.netty:netty-common](https://github.com/netty/netty) | `4.2.0.Final` | `4.2.1.Final` |
| [io.netty:netty-handler](https://github.com/netty/netty) | `4.2.0.Final` | `4.2.1.Final` |
| [io.netty:netty-codec](https://github.com/netty/netty) | `4.2.0.Final` | `4.2.1.Final` |


Updates `io.netty:netty-buffer` from 4.2.0.Final to 4.2.1.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.0.Final...netty-4.2.1.Final)

Updates `io.netty:netty-transport` from 4.2.0.Final to 4.2.1.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.0.Final...netty-4.2.1.Final)

Updates `io.netty:netty-transport-native-unix-common` from 4.2.0.Final to 4.2.1.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.0.Final...netty-4.2.1.Final)

Updates `io.netty:netty-common` from 4.2.0.Final to 4.2.1.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.0.Final...netty-4.2.1.Final)

Updates `io.netty:netty-handler` from 4.2.0.Final to 4.2.1.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.0.Final...netty-4.2.1.Final)

Updates `io.netty:netty-codec` from 4.2.0.Final to 4.2.1.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.0.Final...netty-4.2.1.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-buffer
  dependency-version: 4.2.1.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport
  dependency-version: 4.2.1.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport-native-unix-common
  dependency-version: 4.2.1.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-common
  dependency-version: 4.2.1.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-handler
  dependency-version: 4.2.1.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-codec
  dependency-version: 4.2.1.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 22:48:26 +00:00
Tim Donohue
102649b404 Merge pull request #10726 from DSpace/backport-10725-to-dspace-7_x
[Port dspace-7_x] Potential fix for code scanning alert no. 3549: Arbitrary file access during archive extraction ("Zip Slip")
2025-05-09 16:03:49 -05:00
Tim Donohue
086a26d3b4 Potential fix for code scanning alert no. 3549: Arbitrary file access during archive extraction ("Zip Slip")
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
(cherry picked from commit 5fbdfc218f)
2025-05-09 19:15:44 +00:00
Tim Donohue
44d657da1e Merge pull request #10724 from 4Science/task/dspace-7_x/DURACOM-109
[Port dspace-7_x] Proxy Configuration and Connection Leak using HTTP Clients
2025-05-09 12:16:51 -05:00
Stefano Maffei
53e4147910 [DURACOM-109] fix dependency error 2025-05-09 16:12:50 +02:00
Stefano Maffei
2c6f02f74c [DURACOM-109] fix missing dependency 2025-05-09 15:59:50 +02:00
Stefano Maffei
01527712c1 Merge remote-tracking branch 'dspaceCommunity/dspace-7_x' into task/dspace-7_x/DURACOM-109 2025-05-09 15:28:48 +02:00
Tim Donohue
e975ed42b0 Merge pull request #10716 from 4Science/task/dspace-7_x/DURACOM-328
[Port dspace-7_x] FIX Submission patch operation weird recognition check
2025-05-07 09:48:46 -05:00
Elios Buzo
1ade960988 [DURACOM-109] Fixed conflicts 2025-05-07 12:28:43 +02:00
Stefano Maffei
ac20eefe4b [DURACOM-328] fix tests 2025-05-07 10:43:19 +02:00
Stefano Maffei
0ef3b27189 [DURACOM-328] fix test 2025-05-07 09:24:38 +02:00
Stefano Maffei
032252664b [DURACOM-328] fix error in check for Patch request 2025-05-07 09:24:06 +02:00
Tim Donohue
05f96db258 Merge pull request #10706 from DSpace/dependabot/maven/dspace-7_x/com.amazonaws-aws-java-sdk-s3-1.12.783
Bump com.amazonaws:aws-java-sdk-s3 from 1.12.782 to 1.12.783
2025-05-06 12:41:44 -05:00
Tim Donohue
c8fa70073d Merge pull request #10708 from DSpace/dependabot/maven/dspace-7_x/com.opencsv-opencsv-5.11
Bump com.opencsv:opencsv from 5.10 to 5.11
2025-05-06 12:40:26 -05:00
Tim Donohue
5169c48632 Merge pull request #10707 from DSpace/dependabot/maven/dspace-7_x/tika.version-2.9.4
Bump tika.version from 2.9.3 to 2.9.4
2025-05-06 11:58:01 -05:00
Stefano Maffei
409b775d35 [DURACOM-109] fix TruncatedChunkException error 2025-05-06 17:27:21 +02:00
Stefano Maffei
dbcaac4b08 [DURACOM-109] added checkstyle rules to forbid usage of HttpClientBuilder.create() 2025-05-06 17:27:07 +02:00
Stefano Maffei
9d6c482cc4 [DURACOM-109] Orcid connector fix and improvement 2025-05-06 17:26:07 +02:00
Stefano Maffei
0f1679ed72 [DURACOM-109] fix typo and correct logic for ORCID connector 2025-05-06 17:25:34 +02:00
Elios Buzo
7f865ad956 [DURACOM-109] Linter error fix 2025-05-06 17:22:50 +02:00
Elios Buzo
f4390fef52 [DURACOM-109] Continued fixing http connection leaks 2025-05-06 17:22:26 +02:00
Elios Buzo
f9307b617c [DURACOM-109] Minor fix 2025-05-06 17:20:09 +02:00
Elios Buzo
b9352c9149 [DURACOM-109] Fixed http connection leaks 2025-05-06 17:19:29 +02:00
Elios Buzo
32dd1a3dd2 [DURACOM-109] Minor fix 2025-05-06 17:18:38 +02:00
Elios Buzo
a8d33d3ad0 [DURACOM-109] Continued configuring proxy for other classes 2025-05-06 17:17:07 +02:00
Elios Buzo
c2c41e65f8 [DURACOM-109] Configured proxy settings for all clients 2025-05-06 17:10:17 +02:00
Alan Orth
4c7d9223cb Merge pull request #10713 from DSpace/backport-10556-to-dspace-7_x
[Port dspace-7_x] Fix tests failing in TikaTextExtractionFilterTest
2025-05-06 09:56:05 +03:00
abhinav
930565efff 129614: Fixed tests failing in TikaTextExtractionFilterTest when textextractor.use-temp-file is set to true
(cherry picked from commit f9f29f49cb)
2025-05-06 06:20:23 +00:00
dependabot[bot]
8b089be727 Bump com.opencsv:opencsv from 5.10 to 5.11
Bumps com.opencsv:opencsv from 5.10 to 5.11.

---
updated-dependencies:
- dependency-name: com.opencsv:opencsv
  dependency-version: '5.11'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 23:11:48 +00:00
dependabot[bot]
f5e83433c4 Bump tika.version from 2.9.3 to 2.9.4
Bumps `tika.version` from 2.9.3 to 2.9.4.

Updates `org.apache.tika:tika-core` from 2.9.3 to 2.9.4
- [Changelog](https://github.com/apache/tika/blob/2.9.4/CHANGES.txt)
- [Commits](https://github.com/apache/tika/compare/2.9.3...2.9.4)

Updates `org.apache.tika:tika-parsers-standard-package` from 2.9.3 to 2.9.4

---
updated-dependencies:
- dependency-name: org.apache.tika:tika-core
  dependency-version: 2.9.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.tika:tika-parsers-standard-package
  dependency-version: 2.9.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 23:02:34 +00:00
dependabot[bot]
a26ef22a46 Bump com.amazonaws:aws-java-sdk-s3 from 1.12.782 to 1.12.783
Bumps [com.amazonaws:aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.782 to 1.12.783.
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.782...1.12.783)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-version: 1.12.783
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 22:58:31 +00:00
Tim Donohue
1052e6b787 Merge pull request #10705 from tdonohue/port_10693_to_7x
[Port dspace-7_x] ISSN code not imported when using SHERPA import
2025-05-05 13:50:04 -05:00
Adamo
d7948d5f7b [DURACOM-356] Updated tests to use metadata constants 2025-05-05 12:32:26 -05:00
Adamo
5dd4e4248c [DURACOM-356] Updated Sherpa Journal mapping to use creativeworkseries.issn instead of dc.identifier.issn 2025-05-05 12:29:32 -05:00
Adamo
bacbe06b2c [DURACOM-356] Fixed tests 2025-05-05 12:29:24 -05:00
Adamo
a0c2891226 [DURACOM-356] Updated Sherpa mapping to use creativeworkseries.issn instead of dc.identifier.issn 2025-05-05 12:29:17 -05:00
Tim Donohue
663ffcf2b1 Merge pull request #10698 from DSpace/backport-10697-to-dspace-7_x
[Port dspace-7_x] Bulk access control fails to iterate over each item in a collection, producing duplicate policies for some items
2025-05-02 16:46:58 -05:00
Tim Donohue
3f9f5639f6 Must use older Java syntax in DSpace 7 2025-05-02 15:49:00 -05:00
Adamo
605956b073 [DURACOM-311] Ensure stable pagination in bulk access control by adding explicit sort
(cherry picked from commit ced9e9b9f7)
2025-05-02 19:56:23 +00:00
Tim Donohue
fd33cee025 Merge pull request #10695 from DSpace/backport-10692-to-dspace-7_x
[Port dspace-7_x] Error when using WOS import service
2025-05-02 10:42:35 -05:00
Adamo
eb5f09f3f2 [DURACOM-355] Update to avoid NPE during WOS live import when no api key is found
(cherry picked from commit 70f1c83bf0)
2025-05-02 15:08:39 +00:00
Jens Vannerum
fae4130d41 119612: Fix limit not applying on export
(cherry picked from commit bcf48821d9)
2025-05-02 11:14:58 +02:00
Jens Vannerum
5929fdc926 124504: Move configuration to be included in the bulkedit module and apply the configured limit earlier, never obtaining a larger list than actually required
(cherry picked from commit b63ffd2eb4)
2025-05-02 11:14:49 +02:00
Jens Vannerum
c5c8417848 119612: Remove group configuration and expose property to angular
(cherry picked from commit c73c739deb)
2025-05-02 11:14:19 +02:00
Jens Vannerum
4626b06d7f 119612: property should be commented by default and have a normal limit
(cherry picked from commit a8b98bb7b7)
2025-05-02 11:12:49 +02:00
Jens Vannerum
4ec611bf79 119612: configurable limit on exporting items since it can take up a bunch of resources
(cherry picked from commit b634e1e380)
2025-05-02 11:12:46 +02:00
Tim Donohue
bf917357a6 Merge pull request #10687 from tdonohue/port_10685_to_7x
[Port dspace-7_x] Remove `javax.el` dependency & replace `MethodNotFoundException` with `UnsupportedOperationException`
2025-05-01 13:46:54 -05:00
Tim Donohue
d83779022e Remove javax.el dependency 2025-05-01 12:53:41 -05:00
Tim Donohue
b04eb9d725 Replace MethodNotFoundException with more appropriate UnsupportedOperationException 2025-05-01 12:53:13 -05:00
Tim Donohue
4821e75294 Merge pull request #10353 from atmire/cli-speed-improvements-periodically-uncache-entities-when-processing-many_7-x
[Port dspace-7_x] Index discovery speed improvement - periodically uncache entities when processing many items
2025-04-30 11:55:34 -05:00
kshepherd
f4e02b73f2 Merge pull request #10681 from DSpace/backport-10668-to-dspace-7_x
[Port dspace-7_x] Fix Collection Admin cannot see withdrawn item metadata
2025-04-30 14:16:51 +02:00
Stefano Maffei
4a89a68736 [DURACOM-357] improved javadoc
(cherry picked from commit f1cb3c3ad1)
2025-04-30 11:45:56 +00:00
Stefano Maffei
2429a0ba29 [DURACOM-357] improved admin check
(cherry picked from commit bb3935a047)
2025-04-30 11:45:56 +00:00
Stefano Maffei
8ca8bd4543 [DURACOM-357] improved check for authorization on objects in ItemConverter
(cherry picked from commit a70dede20b)
2025-04-30 11:45:56 +00:00
Stefano Maffei
c6098c0232 [DURACOM-357] fix Collection Admin cannot see withdrawn item metadata
(cherry picked from commit 5e2bb4fb92)
2025-04-30 11:45:56 +00:00
kshepherd
b937fa8799 Merge pull request #10677 from DSpace/backport-10675-to-dspace-7_x
[Port dspace-7_x] Resolving XML external entity in user-controlled data in PubMedImport
2025-04-30 13:24:05 +02:00
Tim Donohue
90ea371e0b Cannot disable DTDs with PubMed, so instead disallow external entities & entity expansion
(cherry picked from commit f9614c41a6)
2025-04-30 10:24:14 +00:00
Tim Donohue
6fe9af84bd Potential fix for code scanning alert no. 30: Resolving XML external entity in user-controlled data
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
(cherry picked from commit a0ce50b2a4)
2025-04-30 10:24:14 +00:00
Tim Donohue
1494732989 Merge pull request #10673 from DSpace/backport-10640-to-dspace-7_x
[Port dspace-7_x] Improve CLI RegistryLoader, InitializeEntities, Curation commands
2025-04-29 15:37:28 -05:00
Kim Shepherd
85a9e4b731 Let Curation CLI accept uuid identifiers
(cherry picked from commit 5020689095)
2025-04-29 19:50:29 +00:00
Kim Shepherd
fbb496e1c6 Improve help and docs for RegistryLoader
And a few other small improvements

(cherry picked from commit f1b4e6ef17)
2025-04-29 19:50:29 +00:00
Kim Shepherd
98921724f4 Add help opt and javadoc to InitializeEntities
(cherry picked from commit 5240a02996)
2025-04-29 19:50:29 +00:00
Tim Donohue
f94a4e4b71 Merge pull request #10671 from DSpace/backport-10669-to-dspace-7_x
[Port dspace-7_x] Make DiscoveryConfigurationService "get all facet configs" return UNIQUE set
2025-04-29 14:00:45 -05:00
Kim Shepherd
e94d934a5c Make getAllFacetConfigs unique
Improve performance and debuggability by
refactoring getAllFacetConfigs to
getAllUniqueFacetConfigs. Used only by
ChoiceAuthorityService to generate hierarchical
vocabulary map for the browse menu, etc.

(cherry picked from commit 159bd18529)
2025-04-29 17:23:57 +00:00
Tim Donohue
160a70ed16 Merge pull request #10663 from DSpace/dependabot/maven/dspace-7_x/google-apis-b1f0883f77
Bump the google-apis group with 3 updates
2025-04-29 06:56:21 -05:00
Tim Donohue
d63a088e70 Merge pull request #10661 from DSpace/dependabot/maven/dspace-7_x/apache-commons-f6cb4980f5
Bump the apache-commons group with 2 updates
2025-04-29 06:55:48 -05:00
Tim Donohue
46880b025e Merge pull request #10658 from DSpace/dependabot/maven/dspace-7_x/fasterxml-111bca66b8
Bump the fasterxml group with 3 updates
2025-04-29 06:54:28 -05:00
Alan Orth
23dfcf0af6 Merge pull request #10665 from DSpace/dependabot/maven/dspace-7_x/pdfbox-version-2.0.34
Bump pdfbox-version from 2.0.33 to 2.0.34
2025-04-29 12:52:24 +03:00
dependabot[bot]
19010353c9 Bump pdfbox-version from 2.0.33 to 2.0.34
Bumps `pdfbox-version` from 2.0.33 to 2.0.34.

Updates `org.apache.pdfbox:pdfbox` from 2.0.33 to 2.0.34

Updates `org.apache.pdfbox:fontbox` from 2.0.33 to 2.0.34

---
updated-dependencies:
- dependency-name: org.apache.pdfbox:pdfbox
  dependency-version: 2.0.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.pdfbox:fontbox
  dependency-version: 2.0.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-29 00:15:34 +00:00
dependabot[bot]
5400e3f8a8 Bump the google-apis group with 3 updates
Bumps the google-apis group with 3 updates: [com.google.http-client:google-http-client](https://github.com/googleapis/google-http-java-client), [com.google.http-client:google-http-client-jackson2](https://github.com/googleapis/google-http-java-client) and [com.google.http-client:google-http-client-gson](https://github.com/googleapis/google-http-java-client).


Updates `com.google.http-client:google-http-client` from 1.46.3 to 1.47.0
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.46.3...v1.47.0)

Updates `com.google.http-client:google-http-client-jackson2` from 1.46.3 to 1.47.0
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.46.3...v1.47.0)

Updates `com.google.http-client:google-http-client-gson` from 1.46.3 to 1.47.0
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.46.3...v1.47.0)

---
updated-dependencies:
- dependency-name: com.google.http-client:google-http-client
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-jackson2
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-gson
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-29 00:02:22 +00:00
dependabot[bot]
ff67241bc9 Bump the apache-commons group with 2 updates
Bumps the apache-commons group with 2 updates: org.apache.commons:commons-collections4 and org.apache.commons:commons-configuration2.


Updates `org.apache.commons:commons-collections4` from 4.4 to 4.5.0

Updates `org.apache.commons:commons-configuration2` from 2.11.0 to 2.12.0

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-collections4
  dependency-version: 4.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-configuration2
  dependency-version: 2.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-29 00:01:34 +00:00
dependabot[bot]
b949bdd4c0 Bump the fasterxml group with 3 updates
Bumps the fasterxml group with 3 updates: [com.fasterxml.jackson.core:jackson-annotations](https://github.com/FasterXML/jackson), [com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core) and [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson).


Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.3...jackson-core-2.19.0)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.3...jackson-core-2.19.0)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 23:58:24 +00:00
Tim Donohue
e4d5d7cbcc Merge pull request #10241 from atmire/w2p-124362_VersionedHandleIdentifierProviderWithCanonicalHandles-and-com-col-handles
Fix issue with VersionedHandleIdentifierProviderWithCanonicalHandles and com/col handles
2025-04-28 16:05:21 -05:00
Tim Donohue
1278068eaa Merge pull request #10647 from DSpace/backport-10636-to-dspace-7_x
[Port dspace-7_x] Fix: import public email from ORCID person
2025-04-25 16:35:47 -05:00
Jesiel Viana
106936967e removing duplicated files
(cherry picked from commit c6d1121cbe)
2025-04-25 20:08:08 +00:00
Jesiel Viana
cf9e5c1cd4 fix: Checkstyle violations
(cherry picked from commit 9a831e5393)
2025-04-25 20:08:08 +00:00
Jesiel Viana
ac7dfc562f fix: import public email from ORCID person
(cherry picked from commit 82ca80cd6b)
2025-04-25 20:08:08 +00:00
Tim Donohue
37338424e3 Merge pull request #10645 from tdonohue/port_10549_to_7x
[Port dspace-7_x] restrict maximum value of URL parameter rpp in OpenSearchController to a reasonable default
2025-04-25 08:50:03 -05:00
Sascha Szott
1a619b2833 restrict maximum value of URL parameter rpp 2025-04-24 16:49:59 -05:00
Sascha Szott
ca3b2de1a8 add configuration key websvc.opensearch.max_num_of_items_per_request 2025-04-24 16:48:54 -05:00
Sascha Szott
869d122eac implement method getMaxNumOfItemsPerRequest 2025-04-24 16:48:48 -05:00
Sascha Szott
045a5c0b0e add method getMaxNumOfItemsPerRequest 2025-04-24 16:48:42 -05:00
Tim Donohue
9d1e2d5f9d Merge pull request #10641 from DSpace/backport-10505-to-dspace-7_x
[Port dspace-7_x] Fix incorrect parsing of access-status metadata
2025-04-24 15:15:51 -05:00
Agustina Martinez
440bb64809 Update dim.xsl
Added template to correctly parse elements under "others" metadata element

(cherry picked from commit ac7da6a477)
2025-04-24 19:44:57 +00:00
Tim Donohue
0695b6756c Merge pull request #10623 from DSpace/backport-10599-to-dspace-7_x
[Port dspace-7_x] Fix login endpoints not automatically closing their Context
2025-04-23 11:12:18 -05:00
Tim Donohue
c8a0c94f78 Merge pull request #10630 from DSpace/dependabot/maven/dspace-7_x/io.grpc-grpc-context-1.72.0
Bump io.grpc:grpc-context from 1.71.0 to 1.72.0
2025-04-22 09:41:48 -05:00
dependabot[bot]
5d880bcf2d Bump io.grpc:grpc-context from 1.71.0 to 1.72.0
Bumps [io.grpc:grpc-context](https://github.com/grpc/grpc-java) from 1.71.0 to 1.72.0.
- [Release notes](https://github.com/grpc/grpc-java/releases)
- [Commits](https://github.com/grpc/grpc-java/compare/v1.71.0...v1.72.0)

---
updated-dependencies:
- dependency-name: io.grpc:grpc-context
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 23:03:07 +00:00
Alexandre Vryghem
133c280883 126885: Removed database connection leak on logout
(cherry picked from commit b299a96076)
2025-04-18 19:01:50 +00:00
Alexandre Vryghem
0a79903f30 126885: Removed database connection leak on login
Also:
- Updated EPersonRestAuthenticationProvider to not open an additional DB connection, and reuse the existing one instead
- Normalized the behaviour of OidcLoginFilter by not calling the redirectAfterSuccess instead of doing a chain.doFilter(req, res). This way we don't need to reopen a new Context

(cherry picked from commit 518fb3b1d8)
2025-04-18 19:01:50 +00:00
kshepherd
4ec40054b1 Merge pull request #10617 from DSpace/backport-10519-to-dspace-7_x
[Port dspace-7_x] Fix metadata browsing in descending order using a json.facet to retrieve index values
2025-04-17 15:56:50 +02:00
Toni Prieto
b2f44f57f9 Add test for browse entries pagination
(cherry picked from commit a7bc82084e)
2025-04-17 13:21:02 +00:00
Toni Prieto
d6ff41d9f5 Refactor browse entries facet query to use JSON facet query
(cherry picked from commit 8e88547932)
2025-04-17 13:21:02 +00:00
Tim Donohue
6817d2aa59 Merge pull request #10614 from DSpace/backport-10613-to-dspace-7_x
[Port dspace-7_x] [DURACOM-346] SubscribeServiceImpl : the method "isSubscribed" returns incorrect result
2025-04-16 12:05:37 -05:00
Piaget Bouaka Donfack
3a894e5f5d [DURACOM-346] SubscribeServiceImpl : the method "isSubscribed" returns incorrect result
(cherry picked from commit 23468d4ee3)
2025-04-16 16:28:22 +00:00
Tim Donohue
d74ae7345e Merge pull request #10604 from DSpace/dependabot/maven/dspace-7_x/apache-commons-9d0a8b4b96
Bump the apache-commons group with 2 updates
2025-04-15 09:45:46 -05:00
Alan Orth
3f653411cf Merge pull request #10605 from DSpace/backport-10109-to-dspace-7_x 2025-04-15 10:23:35 +03:00
Toni Prieto
086e54cb31 Modify Solr query to find collections with submit permissions in searches with spaces
(cherry picked from commit 425dc1556e)
2025-04-15 06:32:12 +00:00
dependabot[bot]
dd62a57564 Bump the apache-commons group with 2 updates
Bumps the apache-commons group with 2 updates: commons-io:commons-io and org.apache.commons:commons-text.


Updates `commons-io:commons-io` from 2.18.0 to 2.19.0

Updates `org.apache.commons:commons-text` from 1.13.0 to 1.13.1

---
updated-dependencies:
- dependency-name: commons-io:commons-io
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-text
  dependency-version: 1.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 23:11:31 +00:00
Tim Donohue
e8ee694f21 Merge pull request #10588 from atmire/backport-10485-to-dspace-7_x
[Port dspace-7_x] SEOHealthIndicator which verifies all relevant parameters for SEO issues
2025-04-11 09:27:54 -05:00
Jens Vannerum
5b8782509f 127746: Include success result for robots.txt check if other checks fail
(cherry picked from commit 5dc12775fa)
2025-04-11 15:48:48 +02:00
Jens Vannerum
64c5f82209 127746: Add more detailed information messages on how to solve problems
(cherry picked from commit 170dc9a44c)
2025-04-11 15:48:48 +02:00
Jens Vannerum
7a876999f8 127746: Implement different failures for robots file so we can differentiate between a missing file or an invalid file
(cherry picked from commit 32c0484280)
2025-04-11 15:48:48 +02:00
Jens Vannerum
31549bdace Disable new actuator in IT
(cherry picked from commit 20ab43cccc)
2025-04-11 15:48:45 +02:00
Jens Vannerum
e122a90674 Implement a SEOHealthIndicator which verifies all relevant parameters for SEO are ok
(cherry picked from commit 4bd8a24ca7)
2025-04-11 15:46:34 +02:00
Tim Donohue
ac7eee6465 Merge pull request #10472 from DSpace/dependabot/maven/dspace-7_x/fasterxml-560de934c1
Bump the fasterxml group with 3 updates
2025-04-09 10:12:10 -05:00
Tim Donohue
503f78f065 Merge pull request #10571 from DSpace/dependabot/maven/dspace-7_x/build-tools-8be766aa5b
Bump the build-tools group across 1 directory with 5 updates
2025-04-09 10:11:14 -05:00
Tim Donohue
8d79120eec Merge pull request #10469 from DSpace/dependabot/maven/dspace-7_x/google-apis-88ea69a71a
Bump the google-apis group across 1 directory with 4 updates
2025-04-08 13:24:57 -05:00
Tim Donohue
76018e0048 Merge pull request #10482 from DSpace/dependabot/maven/dspace-7_x/io.grpc-grpc-context-1.71.0
Bump io.grpc:grpc-context from 1.70.0 to 1.71.0
2025-04-08 13:24:11 -05:00
Tim Donohue
5fd134d7cf Merge pull request #10544 from DSpace/dependabot/maven/dspace-7_x/joda-time-joda-time-2.14.0
Bump joda-time:joda-time from 2.13.1 to 2.14.0
2025-04-08 13:23:15 -05:00
Tim Donohue
3de7bab453 Merge pull request #10449 from DSpace/dependabot/maven/dspace-7_x/com.amazonaws-aws-java-sdk-s3-1.12.782
Bump com.amazonaws:aws-java-sdk-s3 from 1.12.781 to 1.12.782
2025-04-08 13:21:39 -05:00
dependabot[bot]
16239433f6 Bump io.grpc:grpc-context from 1.70.0 to 1.71.0
Bumps [io.grpc:grpc-context](https://github.com/grpc/grpc-java) from 1.70.0 to 1.71.0.
- [Release notes](https://github.com/grpc/grpc-java/releases)
- [Commits](https://github.com/grpc/grpc-java/compare/v1.70.0...v1.71.0)

---
updated-dependencies:
- dependency-name: io.grpc:grpc-context
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 15:47:34 +00:00
dependabot[bot]
bb2ed04ed3 Bump the build-tools group across 1 directory with 5 updates
Bumps the build-tools group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [com.github.spotbugs:spotbugs](https://github.com/spotbugs/spotbugs) | `4.9.1` | `4.9.3` |
| [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) | `3.13.0` | `3.14.0` |
| [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) | `4.9.1.0` | `4.9.3.0` |
| [org.apache.maven.plugins:maven-clean-plugin](https://github.com/apache/maven-clean-plugin) | `3.4.0` | `3.4.1` |
| [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) | `0.8.12` | `0.8.13` |



Updates `com.github.spotbugs:spotbugs` from 4.9.1 to 4.9.3
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.9.1...4.9.3)

Updates `org.apache.maven.plugins:maven-compiler-plugin` from 3.13.0 to 3.14.0
- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)
- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.13.0...maven-compiler-plugin-3.14.0)

Updates `com.github.spotbugs:spotbugs-maven-plugin` from 4.9.1.0 to 4.9.3.0
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.9.1.0...spotbugs-maven-plugin-4.9.3.0)

Updates `org.apache.maven.plugins:maven-clean-plugin` from 3.4.0 to 3.4.1
- [Release notes](https://github.com/apache/maven-clean-plugin/releases)
- [Commits](https://github.com/apache/maven-clean-plugin/compare/maven-clean-plugin-3.4.0...maven-clean-plugin-3.4.1)

Updates `org.jacoco:jacoco-maven-plugin` from 0.8.12 to 0.8.13
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.12...v0.8.13)

---
updated-dependencies:
- dependency-name: com.github.spotbugs:spotbugs
  dependency-version: 4.9.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-compiler-plugin
  dependency-version: 3.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: com.github.spotbugs:spotbugs-maven-plugin
  dependency-version: 4.9.3.0
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-clean-plugin
  dependency-version: 3.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-version: 0.8.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 15:36:26 +00:00
dependabot[bot]
a5806fb518 Bump the google-apis group across 1 directory with 4 updates
Bumps the google-apis group with 4 updates in the / directory: [com.google.http-client:google-http-client](https://github.com/googleapis/google-http-java-client), [com.google.http-client:google-http-client-jackson2](https://github.com/googleapis/google-http-java-client), [com.google.oauth-client:google-oauth-client](https://github.com/googleapis/google-oauth-java-client) and [com.google.http-client:google-http-client-gson](https://github.com/googleapis/google-http-java-client).


Updates `com.google.http-client:google-http-client` from 1.46.1 to 1.46.3
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.46.1...v1.46.3)

Updates `com.google.http-client:google-http-client-jackson2` from 1.46.1 to 1.46.3
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.46.1...v1.46.3)

Updates `com.google.oauth-client:google-oauth-client` from 1.37.0 to 1.38.0
- [Release notes](https://github.com/googleapis/google-oauth-java-client/releases)
- [Changelog](https://github.com/googleapis/google-oauth-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-oauth-java-client/compare/v1.37.0...v1.38.0)

Updates `com.google.http-client:google-http-client-gson` from 1.46.1 to 1.46.3
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.46.1...v1.46.3)

---
updated-dependencies:
- dependency-name: com.google.http-client:google-http-client
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-jackson2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: google-apis
- dependency-name: com.google.oauth-client:google-oauth-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-gson
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: google-apis
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 15:35:52 +00:00
dependabot[bot]
b64b79973d Bump the fasterxml group with 3 updates
Bumps the fasterxml group with 3 updates: [com.fasterxml.jackson.core:jackson-annotations](https://github.com/FasterXML/jackson), [com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core) and [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson).


Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.2...jackson-core-2.18.3)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.2...jackson-core-2.18.3)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fasterxml
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 15:35:47 +00:00
Tim Donohue
7d5db89889 Merge pull request #10470 from DSpace/dependabot/maven/dspace-7_x/test-tools-fd1863f7f0
Bump the test-tools group with 6 updates
2025-04-08 09:26:20 -05:00
dependabot[bot]
c8cc425357 Bump com.amazonaws:aws-java-sdk-s3 from 1.12.781 to 1.12.782
Bumps [com.amazonaws:aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.781 to 1.12.782.
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.781...1.12.782)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 14:23:43 +00:00
Tim Donohue
5fa01ef63e Merge pull request #10570 from tdonohue/remove_unused_sword_client_7x
[Port dspace-7_x] Remove unused, unmaintained SWORD v1 client code
2025-04-08 06:58:52 -05:00
dependabot[bot]
68cffba5fa Bump the test-tools group with 6 updates
Bumps the test-tools group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [io.netty:netty-buffer](https://github.com/netty/netty) | `4.1.118.Final` | `4.1.119.Final` |
| [io.netty:netty-transport](https://github.com/netty/netty) | `4.1.118.Final` | `4.1.119.Final` |
| [io.netty:netty-transport-native-unix-common](https://github.com/netty/netty) | `4.1.118.Final` | `4.1.119.Final` |
| [io.netty:netty-common](https://github.com/netty/netty) | `4.1.118.Final` | `4.1.119.Final` |
| [io.netty:netty-handler](https://github.com/netty/netty) | `4.1.118.Final` | `4.1.119.Final` |
| [io.netty:netty-codec](https://github.com/netty/netty) | `4.1.118.Final` | `4.1.119.Final` |


Updates `io.netty:netty-buffer` from 4.1.118.Final to 4.1.119.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.118.Final...netty-4.1.119.Final)

Updates `io.netty:netty-transport` from 4.1.118.Final to 4.1.119.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.118.Final...netty-4.1.119.Final)

Updates `io.netty:netty-transport-native-unix-common` from 4.1.118.Final to 4.1.119.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.118.Final...netty-4.1.119.Final)

Updates `io.netty:netty-common` from 4.1.118.Final to 4.1.119.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.118.Final...netty-4.1.119.Final)

Updates `io.netty:netty-handler` from 4.1.118.Final to 4.1.119.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.118.Final...netty-4.1.119.Final)

Updates `io.netty:netty-codec` from 4.1.118.Final to 4.1.119.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.118.Final...netty-4.1.119.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-buffer
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport-native-unix-common
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-common
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-handler
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-codec
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 23:48:45 +00:00
Tim Donohue
bfe7e7871e Remove unused SWORD v1 client code. This is "dead code" which is unmaintained and obsolete 2025-04-07 17:10:43 -05:00
Tim Donohue
a6fcdeab9e Merge pull request #10567 from tdonohue/port_10565_to_7x
[Port dspace-7_x][GitHub Actions] Update Docker scripts to use new Ubuntu ARM64 runner instead of emulation
2025-04-07 12:53:01 -05:00
Tim Donohue
4c73e4b01f Update reusable-docker-build to use Ubuntu ARM64 runner for those images 2025-04-07 11:56:20 -05:00
Tim Donohue
a2a56d416e Merge pull request #10551 from DSpace/backport-9876-to-dspace-7_x
[Port dspace-7_x] Fix DSpace startup failures when ORCID http connections fail
2025-04-02 14:08:35 -05:00
Kim Shepherd
1fe697a19e Fix some ORCID mock / test usage
(cherry picked from commit 038ddeee97)
2025-04-02 18:28:28 +00:00
Kim Shepherd
3fa57d7c0e More robust ORCID accessToken init, REST con. usage
* Ensure that http client / IO exceptions don't cause a
  total DSpace startup failure because of unhandled
  exceptions in Spring service init methods.
* Centralise access token retrieval method in factory utils.
* Check for NULL rest connector since that can now happen
  and handle gracefully, with error logging

(cherry picked from commit b72344ecfb)
2025-04-02 18:28:28 +00:00
dependabot[bot]
d68c5ac8eb Bump joda-time:joda-time from 2.13.1 to 2.14.0
Bumps [joda-time:joda-time](https://github.com/JodaOrg/joda-time) from 2.13.1 to 2.14.0.
- [Release notes](https://github.com/JodaOrg/joda-time/releases)
- [Changelog](https://github.com/JodaOrg/joda-time/blob/main/RELEASE-NOTES.txt)
- [Commits](https://github.com/JodaOrg/joda-time/compare/v2.13.1...v2.14.0)

---
updated-dependencies:
- dependency-name: joda-time:joda-time
  dependency-version: 2.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 22:52:59 +00:00
Vincenzo Mecca
82d04061c0 [DURACOM-243] Adds Test for JPEGFilter 2025-03-27 12:48:50 +01:00
Vincenzo Mecca
08e330c1c0 [DURACOM-243] Adds rotation handling inside JPEGFilter
Conflicts:
2025-03-27 12:48:00 +01:00
DSpace Bot
c797441b86 [Port dspace-7_x] Add null check in SolrServiceFileInfoPlugin for index-discovery (#10517)
* Add null check in SolrServiceFileInfoPlugin for index-discovery

(cherry picked from commit d07f1e0caa)

* Fix starting curly brace.

(cherry picked from commit e11994c0ee)

* Update SolrServiceFileInfoPlugin.java

(cherry picked from commit 18372ae072)

---------

Co-authored-by: jameswsullivan <81947235+jameswsullivan@users.noreply.github.com>
2025-03-24 14:04:03 -05:00
Tim Donohue
56e8322079 Merge pull request #10515 from DSpace/backport-10511-to-dspace-7_x
[Port dspace-7_x] Add bitstream null check to XOAI.java
2025-03-24 10:59:57 -05:00
Tim Donohue
0a3174551f Merge pull request #10513 from DSpace/backport-10509-to-dspace-7_x
[Port dspace-7_x] DiscoverQueryBuilder: add missing whitespace in exception message
2025-03-24 10:58:45 -05:00
jameswsullivan
bdfe2bfe2e Add bitstream null check to XOAI
(cherry picked from commit 54602f47b1)
2025-03-24 14:58:37 +00:00
Sascha Szott
00da667ba5 add missing whitespace
(cherry picked from commit 4ea4958093)
2025-03-24 14:55:00 +00:00
Sascha Szott
fbec7f2e56 add missing whitespace in exception message
(cherry picked from commit 9a904ab4c9)
2025-03-24 14:55:00 +00:00
Zahraa Chreim
238893ce6d Fix invalid cast in DOIOrganiser exception handling 2025-03-11 16:02:03 +02:00
Tim Donohue
4c0bbeffa3 Merge pull request #10474 from DSpace/backport-10460-to-dspace-7_x
[Port dspace-7_x] Refactoring the function to retrieve the number of browse entries (fix errors using Solr 9.x)
2025-03-04 10:11:01 -06:00
Toni Prieto
15dab1e41e Use NestableJsonFacet to process browse entries count response
(cherry picked from commit 7ba09b7a85)
2025-03-04 15:24:29 +00:00
Tim Donohue
1d4117f4ba Merge pull request #9895 from minurmin/DSpace-9665
[Port dspace-7_x] BitstreamRestController etag/content-length calculation fix when coverpages are enabled
2025-02-27 14:25:31 -06:00
Tim Donohue
4972a5d8f9 Merge pull request #10416 from DSpace/dependabot/maven/dspace-7_x/net.minidev-json-smart-2.5.2
Bump net.minidev:json-smart from 2.5.1 to 2.5.2
2025-02-18 12:09:53 -06:00
Tim Donohue
8fd3429c9a Merge pull request #10417 from DSpace/dependabot/maven/dspace-7_x/com.amazonaws-aws-java-sdk-s3-1.12.781
Bump com.amazonaws:aws-java-sdk-s3 from 1.12.780 to 1.12.781
2025-02-18 12:05:10 -06:00
Tim Donohue
f1ddc78729 Merge pull request #10415 from DSpace/dependabot/maven/dspace-7_x/apache-commons-6a14420bb4
Bump commons-beanutils:commons-beanutils from 1.10.0 to 1.10.1 in the apache-commons group
2025-02-18 12:04:01 -06:00
Tim Donohue
0cb3020442 Merge pull request #10414 from DSpace/dependabot/maven/dspace-7_x/build-tools-4f90ff9816
Bump com.github.spotbugs:spotbugs-maven-plugin from 4.8.6.6 to 4.9.1.0 in the build-tools group
2025-02-18 12:02:57 -06:00
dependabot[bot]
1d85653ed0 Bump com.amazonaws:aws-java-sdk-s3 from 1.12.780 to 1.12.781
Bumps [com.amazonaws:aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.780 to 1.12.781.
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.780...1.12.781)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 22:27:07 +00:00
dependabot[bot]
51c766caa3 Bump net.minidev:json-smart from 2.5.1 to 2.5.2
Bumps [net.minidev:json-smart](https://github.com/netplex/json-smart-v2) from 2.5.1 to 2.5.2.
- [Release notes](https://github.com/netplex/json-smart-v2/releases)
- [Commits](https://github.com/netplex/json-smart-v2/compare/2.5.1...2.5.2)

---
updated-dependencies:
- dependency-name: net.minidev:json-smart
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 22:26:49 +00:00
dependabot[bot]
edbf9ef605 Bump commons-beanutils:commons-beanutils in the apache-commons group
Bumps the apache-commons group with 1 update: commons-beanutils:commons-beanutils.


Updates `commons-beanutils:commons-beanutils` from 1.10.0 to 1.10.1

---
updated-dependencies:
- dependency-name: commons-beanutils:commons-beanutils
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 22:25:48 +00:00
dependabot[bot]
b63329b45a Bump com.github.spotbugs:spotbugs-maven-plugin in the build-tools group
Bumps the build-tools group with 1 update: [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin).


Updates `com.github.spotbugs:spotbugs-maven-plugin` from 4.8.6.6 to 4.9.1.0
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.8.6.6...spotbugs-maven-plugin-4.9.1.0)

---
updated-dependencies:
- dependency-name: com.github.spotbugs:spotbugs-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 22:25:23 +00:00
Tim Donohue
8adbe244bf Merge pull request #10409 from DSpace/backport-10406-to-dspace-7_x
[Port dspace-7_x] Fix #10405 bug in log4j-cli
2025-02-13 12:59:05 -06:00
Martin Walk
268b5fc8b7 Fix #10405 bug in log4j-cli
(cherry picked from commit 4c044adcf3)
2025-02-13 16:40:50 +00:00
Tim Donohue
fedbccae49 Merge pull request #10392 from DSpace/dependabot/maven/dspace-7_x/tika.version-2.9.3
Bump tika.version from 2.9.2 to 2.9.3
2025-02-12 17:11:40 -06:00
Tim Donohue
fcc4dcf5b3 Merge pull request #10174 from atmire/w2p-121973_openaire-compliance-updates-7.x
[Port dspace-7_x] OpenAIRE v4 compliance updates
2025-02-12 12:36:10 -06:00
Paulo Graça
ee762260cf [Port dspace-7_x] Fixing Crossref document type issue with new metadata mapping processor (#9909)
* new metadata mapping processor for crossref document type

* licence and code style fixes

* adjust crossref test to consider mapped dc.type to Article

* correcting english

* remove trailing space
2025-02-12 15:26:27 +03:00
Tim Donohue
63bb639e68 Merge pull request #10346 from DSpace/dependabot/maven/dspace-7_x/io.grpc-grpc-context-1.70.0
Bump io.grpc:grpc-context from 1.69.0 to 1.70.0
2025-02-11 10:52:49 -06:00
Tim Donohue
dfe5628ed9 Merge pull request #10389 from DSpace/dependabot/maven/dspace-7_x/google-apis-4ffec14d6f
Bump the google-apis group across 1 directory with 3 updates
2025-02-11 10:52:11 -06:00
Tim Donohue
fc4a7628ef Merge pull request #10391 from DSpace/dependabot/maven/dspace-7_x/apache-commons-8f079b07b9
Bump commons-logging:commons-logging from 1.3.4 to 1.3.5 in the apache-commons group
2025-02-11 10:42:35 -06:00
Tim Donohue
102c347455 Dependency convergence fix 2025-02-11 10:40:51 -06:00
Tim Donohue
cf7370e2bc Merge pull request #10390 from DSpace/dependabot/maven/dspace-7_x/test-tools-104c99f93b
Bump the test-tools group with 6 updates
2025-02-11 09:51:01 -06:00
Tim Donohue
1c59295693 Merge pull request #10388 from DSpace/dependabot/maven/dspace-7_x/build-tools-2e3c11379d
Bump com.github.spotbugs:spotbugs from 4.9.0 to 4.9.1 in the build-tools group
2025-02-11 09:49:45 -06:00
dependabot[bot]
2c13ee40fe Bump tika.version from 2.9.2 to 2.9.3
Bumps `tika.version` from 2.9.2 to 2.9.3.

Updates `org.apache.tika:tika-core` from 2.9.2 to 2.9.3
- [Changelog](https://github.com/apache/tika/blob/2.9.3/CHANGES.txt)
- [Commits](https://github.com/apache/tika/compare/2.9.2...2.9.3)

Updates `org.apache.tika:tika-parsers-standard-package` from 2.9.2 to 2.9.3

---
updated-dependencies:
- dependency-name: org.apache.tika:tika-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.tika:tika-parsers-standard-package
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 22:27:33 +00:00
dependabot[bot]
090001b685 Bump commons-logging:commons-logging in the apache-commons group
Bumps the apache-commons group with 1 update: commons-logging:commons-logging.


Updates `commons-logging:commons-logging` from 1.3.4 to 1.3.5

---
updated-dependencies:
- dependency-name: commons-logging:commons-logging
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 22:26:31 +00:00
dependabot[bot]
ba318d9710 Bump the test-tools group with 6 updates
Bumps the test-tools group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [io.netty:netty-buffer](https://github.com/netty/netty) | `4.1.117.Final` | `4.1.118.Final` |
| [io.netty:netty-transport](https://github.com/netty/netty) | `4.1.117.Final` | `4.1.118.Final` |
| [io.netty:netty-transport-native-unix-common](https://github.com/netty/netty) | `4.1.117.Final` | `4.1.118.Final` |
| [io.netty:netty-common](https://github.com/netty/netty) | `4.1.117.Final` | `4.1.118.Final` |
| [io.netty:netty-handler](https://github.com/netty/netty) | `4.1.117.Final` | `4.1.118.Final` |
| [io.netty:netty-codec](https://github.com/netty/netty) | `4.1.117.Final` | `4.1.118.Final` |


Updates `io.netty:netty-buffer` from 4.1.117.Final to 4.1.118.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.117.Final...netty-4.1.118.Final)

Updates `io.netty:netty-transport` from 4.1.117.Final to 4.1.118.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.117.Final...netty-4.1.118.Final)

Updates `io.netty:netty-transport-native-unix-common` from 4.1.117.Final to 4.1.118.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.117.Final...netty-4.1.118.Final)

Updates `io.netty:netty-common` from 4.1.117.Final to 4.1.118.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.117.Final...netty-4.1.118.Final)

Updates `io.netty:netty-handler` from 4.1.117.Final to 4.1.118.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.117.Final...netty-4.1.118.Final)

Updates `io.netty:netty-codec` from 4.1.117.Final to 4.1.118.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.117.Final...netty-4.1.118.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-buffer
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport-native-unix-common
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-common
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-handler
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-codec
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 22:26:17 +00:00
dependabot[bot]
06a5458205 Bump the google-apis group across 1 directory with 3 updates
Bumps the google-apis group with 3 updates in the / directory: [com.google.http-client:google-http-client](https://github.com/googleapis/google-http-java-client), [com.google.http-client:google-http-client-jackson2](https://github.com/googleapis/google-http-java-client) and [com.google.http-client:google-http-client-gson](https://github.com/googleapis/google-http-java-client).


Updates `com.google.http-client:google-http-client` from 1.45.3 to 1.46.1
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.45.3...v1.46.1)

Updates `com.google.http-client:google-http-client-jackson2` from 1.45.3 to 1.46.1
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.45.3...v1.46.1)

Updates `com.google.http-client:google-http-client-gson` from 1.43.3 to 1.46.1
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/v1.43.3...v1.46.1)

---
updated-dependencies:
- dependency-name: com.google.http-client:google-http-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-jackson2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-gson
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 22:25:53 +00:00
dependabot[bot]
8e411ac70c Bump com.github.spotbugs:spotbugs in the build-tools group
Bumps the build-tools group with 1 update: [com.github.spotbugs:spotbugs](https://github.com/spotbugs/spotbugs).


Updates `com.github.spotbugs:spotbugs` from 4.9.0 to 4.9.1
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.9.0...4.9.1)

---
updated-dependencies:
- dependency-name: com.github.spotbugs:spotbugs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 22:25:47 +00:00
Tim Donohue
ce1dbb6d2c Merge pull request #10372 from DSpace/dependabot/maven/dspace-7_x/joda-time-joda-time-2.13.1
Bump joda-time:joda-time from 2.13.0 to 2.13.1
2025-02-10 14:15:36 -06:00
Tim Donohue
cb4fb777c5 Merge pull request #10347 from DSpace/dependabot/maven/dspace-7_x/dnsjava-dnsjava-3.6.3
Bump dnsjava:dnsjava from 3.6.2 to 3.6.3
2025-02-10 14:11:56 -06:00
Tim Donohue
72cedb7722 Merge pull request #10344 from DSpace/dependabot/maven/dspace-7_x/apache-commons-f9d9c8ba39
Bump the apache-commons group with 2 updates
2025-02-10 14:10:41 -06:00
Tim Donohue
dd6183b9cb Merge pull request #10383 from tdonohue/port_10381_to_7x
[Port dspace-7_x] Remove unused/unnecessary dependencies : `byte-buddy`
2025-02-10 14:03:48 -06:00
Tim Donohue
a2cb8cc838 Remove unused byte-buddy 2025-02-10 11:37:26 -06:00
Tim Donohue
e0aa56ca82 [maven-release-plugin] prepare for next development iteration 2025-02-07 10:57:05 -06:00
Tim Donohue
6181f2723c [maven-release-plugin] prepare release dspace-7.6.3 2025-02-07 10:57:02 -06:00
Tim Donohue
7e4fc1daaf Update LICENSES_THIRD_PARTY for 7.6.3 2025-02-07 10:22:53 -06:00
Tim Donohue
ae0b9a4bdb Merge pull request #10378 from 4Science/task/dspace-7_x/DURACOM-288
[Port dspace-7_x] Provide a setting to use a different REST url during SSR execution
2025-02-07 09:30:59 -06:00
Giuseppe Digilio
7e7a4c9da0 Merge remote-tracking branch 'upstreamdspace/dspace-7_x' into task/dspace-7_x/DURACOM-288
# Conflicts:
#	dspace-server-webapp/src/test/java/org/dspace/app/rest/AuthorizationRestRepositoryIT.java
2025-02-06 18:08:15 +01:00
Giuseppe Digilio
888edc4597 [DURACOM-288] Fix wrong imports 2025-02-06 18:03:23 +01:00
Giuseppe Digilio
81642ea139 [DURACOM-288] Change logic in order to use dspaceUrl as default fallback 2025-02-06 17:05:56 +01:00
Giuseppe Digilio
e6f565e90f [DURACOM-288] Build endpoint map according to request origin, in order to get internal urls if used 2025-02-06 17:05:38 +01:00
Giuseppe Digilio
648d9f6972 [DURACOM-288] Set dspace.server.ssr.url as dspace.server.url by default 2025-02-06 17:05:18 +01:00
Giuseppe Digilio
c39042095a [DURACOM-288] Code refactoring and test improvements 2025-02-06 17:05:02 +01:00
Giuseppe Digilio
a2e518444c [DURACOM-288] Fix test 2025-02-06 17:04:50 +01:00
Giuseppe Digilio
369bda130a [DURACOM-288] Add dspace.server.ssr.uri in the local.cfg.EXAMPLE 2025-02-06 17:04:39 +01:00
Giuseppe Digilio
ea15a3b965 [DURACOM-288] Add check to allow base object uri containing dspace.server.ssr.uri 2025-02-06 17:04:28 +01:00
Giuseppe Digilio
94ad5744e2 [DURACOM-288] Add DSpace property to specify addition rest url 2025-02-06 17:04:18 +01:00
dependabot[bot]
723ad07ae9 Bump joda-time:joda-time from 2.13.0 to 2.13.1
Bumps [joda-time:joda-time](https://github.com/JodaOrg/joda-time) from 2.13.0 to 2.13.1.
- [Release notes](https://github.com/JodaOrg/joda-time/releases)
- [Changelog](https://github.com/JodaOrg/joda-time/blob/main/RELEASE-NOTES.txt)
- [Commits](https://github.com/JodaOrg/joda-time/compare/v2.13.0...v2.13.1)

---
updated-dependencies:
- dependency-name: joda-time:joda-time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 23:20:40 +00:00
dependabot[bot]
63fbffc963 Bump the apache-commons group with 2 updates
Bumps the apache-commons group with 2 updates: [commons-codec:commons-codec](https://github.com/apache/commons-codec) and org.apache.commons:commons-pool2.


Updates `commons-codec:commons-codec` from 1.17.2 to 1.18.0
- [Changelog](https://github.com/apache/commons-codec/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-codec/compare/rel/commons-codec-1.17.2...rel/commons-codec-1.18.0)

Updates `org.apache.commons:commons-pool2` from 2.12.0 to 2.12.1

---
updated-dependencies:
- dependency-name: commons-codec:commons-codec
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-pool2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 23:19:27 +00:00
Tim Donohue
ec32897f50 Merge pull request #10358 from DSpace/backport-10293-to-dspace-7_x
[Port dspace-7_x] Fix ClamAV curation task crashing on exceptions instead of ending gracefully
2025-02-03 09:54:43 -06:00
Jens Vannerum
094af861b3 124579: catch any exceptions during process and end task gracefully
(cherry picked from commit 11a1c9ab06)
2025-02-01 09:53:29 +00:00
Jens Vannerum
6b4c7a773d 124579: If no ORIGINAL bundle exists, end the process gracefully instead of throwing NPE
(cherry picked from commit 046c1b5d05)
2025-02-01 09:53:29 +00:00
Marie Verdonck
bf520782d8 Merge branch 'cli-speed-improvements-periodically-uncache-entities-when-processing-many_7.6' into cli-speed-improvements-periodically-uncache-entities-when-processing-many_7-x
# Conflicts:
#	dspace-api/src/main/java/org/dspace/core/Context.java
#	dspace-api/src/main/java/org/dspace/core/DBConnection.java
#	dspace-api/src/main/java/org/dspace/core/HibernateDBConnection.java
2025-01-29 22:11:03 +01:00
Tim Donohue
6bf4d142a4 Merge pull request #10111 from atmire/issue-10110_w2p-109807_arxiv-author-mapping-fix-7_x
[Port dspace-7_x] ArXiv Live Import - Author mapping fix
2025-01-29 12:08:08 -06:00
Marie Verdonck
e8a54e698c cli speed improvement: periodically uncache entities when processing many 2025-01-29 12:42:25 +01:00
dependabot[bot]
3885966b4d Bump dnsjava:dnsjava from 3.6.2 to 3.6.3
Bumps [dnsjava:dnsjava](https://github.com/dnsjava/dnsjava) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/dnsjava/dnsjava/releases)
- [Changelog](https://github.com/dnsjava/dnsjava/blob/master/Changelog)
- [Commits](https://github.com/dnsjava/dnsjava/compare/v3.6.2...v3.6.3)

---
updated-dependencies:
- dependency-name: dnsjava:dnsjava
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 23:07:21 +00:00
dependabot[bot]
859dd4c69d Bump io.grpc:grpc-context from 1.69.0 to 1.70.0
Bumps [io.grpc:grpc-context](https://github.com/grpc/grpc-java) from 1.69.0 to 1.70.0.
- [Release notes](https://github.com/grpc/grpc-java/releases)
- [Commits](https://github.com/grpc/grpc-java/compare/v1.69.0...v1.70.0)

---
updated-dependencies:
- dependency-name: io.grpc:grpc-context
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 23:07:18 +00:00
Tim Donohue
c27084724b Merge pull request #10336 from DSpace/backport-10331-to-dspace-7_x
[Port dspace-7_x] Remove unused configuration `csvexport.dir`
2025-01-27 11:15:20 -06:00
Tim Donohue
8cb693ab62 Merge pull request #10334 from DSpace/backport-9835-to-dspace-7_x
[Port dspace-7_x] On error in DOI Organiser bulk operations, continue instead of panic-stopping.
2025-01-27 10:27:19 -06:00
Tim Donohue
338e17d197 Remove unused configuration
(cherry picked from commit 845c706cac)
2025-01-27 16:03:36 +00:00
Mark H. Wood
6d187a08fd Document and handle the actual exceptions returned by register.
(cherry picked from commit 2edea69ca3)
2025-01-27 15:44:58 +00:00
Mark H. Wood
cc3841d212 Reorganize some documentation.
(cherry picked from commit 77425163f2)
2025-01-27 15:44:57 +00:00
Mark H. Wood
f7902bce00 On error in bulk operations, continue instead of panic-stopping.
(cherry picked from commit bfeba1aa7a)
2025-01-27 15:44:57 +00:00
Tim Donohue
a54d61923a Merge pull request #10283 from DSpace/dependabot/maven/dspace-7_x/net.cnri-cnri-servlet-container-3.1.0
Bump net.cnri:cnri-servlet-container from 3.0.0 to 3.1.0
2025-01-24 17:01:08 -06:00
Tim Donohue
125716efeb Merge pull request #10306 from DSpace/dependabot/maven/dspace-7_x/net.minidev-json-smart-2.5.1
Bump net.minidev:json-smart from 2.5.0 to 2.5.1
2025-01-24 16:34:55 -06:00
Tim Donohue
1cc98e6c2d Fix missing dependency errors for javax.el 2025-01-24 16:31:05 -06:00
Tim Donohue
5408f317d7 Merge pull request #10226 from DSpace/dependabot/maven/dspace-7_x/google-apis-05b77a15af
Bump the google-apis group with 4 updates
2025-01-24 15:57:09 -06:00
Tim Donohue
5169a55437 Resolve dependency convergence issue 2025-01-24 15:56:12 -06:00
Tim Donohue
96451f7391 Dependency convergence fixes 2025-01-24 15:06:43 -06:00
Tim Donohue
c7883e0f0a Merge pull request #10302 from DSpace/dependabot/maven/dspace-7_x/org.atteo-evo-inflector-1.3
Bump org.atteo:evo-inflector from 1.2.1 to 1.3
2025-01-24 14:42:36 -06:00
Tim Donohue
6d466ccde9 Merge pull request #10328 from DSpace/dependabot/maven/dspace-7_x/de.digitalcollections.iiif-iiif-apis-0.3.11
Bump de.digitalcollections.iiif:iiif-apis from 0.3.10 to 0.3.11
2025-01-24 11:40:33 -06:00
Tim Donohue
140588de8b Merge pull request #10330 from tdonohue/port_9950_to_7x
[Port dspace-7_x] added expunge request param and enabled workflowitem delete based on it
2025-01-24 10:47:25 -06:00
Oscar Chacón
10b3f06480 added expunge request param and enabled workflowitem delete based on it (#9950)
* added expunge request param and enabled workflowitem delete based on it

* enabled expunge param only in workflowitem delete endpoint and IT

* Remove invalid param from JavaDocs

---------

Co-authored-by: Tim Donohue <tim.donohue@lyrasis.org>
2025-01-24 10:11:23 -06:00
Tim Donohue
6486f61010 Merge pull request #10320 from tdonohue/port_10158_to_7x
[Port dspace-7_x] Processes should only be failed after a Tomcat restart
2025-01-24 08:53:07 -06:00
Tim Donohue
6d9278e6f0 Merge pull request #10325 from DSpace/dependabot/maven/dspace-7_x/com.ibm.icu-icu4j-62.2
Bump com.ibm.icu:icu4j from 62.1 to 62.2
2025-01-24 07:00:45 -06:00
Tim Donohue
f7f2d23399 Merge pull request #10327 from DSpace/dependabot/maven/dspace-7_x/com.opencsv-opencsv-5.10
Bump com.opencsv:opencsv from 5.9 to 5.10
2025-01-24 06:58:52 -06:00
dependabot[bot]
25be075b3c Bump de.digitalcollections.iiif:iiif-apis from 0.3.10 to 0.3.11
Bumps [de.digitalcollections.iiif:iiif-apis](https://github.com/dbmdz/iiif-apis) from 0.3.10 to 0.3.11.
- [Release notes](https://github.com/dbmdz/iiif-apis/releases)
- [Commits](https://github.com/dbmdz/iiif-apis/compare/0.3.10...0.3.11)

---
updated-dependencies:
- dependency-name: de.digitalcollections.iiif:iiif-apis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 00:22:28 +00:00
dependabot[bot]
63081494d8 Bump com.opencsv:opencsv from 5.9 to 5.10
Bumps com.opencsv:opencsv from 5.9 to 5.10.

---
updated-dependencies:
- dependency-name: com.opencsv:opencsv
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 00:22:13 +00:00
dependabot[bot]
77efa5ce88 Bump com.ibm.icu:icu4j from 62.1 to 62.2
Bumps [com.ibm.icu:icu4j](https://github.com/unicode-org/icu) from 62.1 to 62.2.
- [Release notes](https://github.com/unicode-org/icu/releases)
- [Commits](https://github.com/unicode-org/icu/commits)

---
updated-dependencies:
- dependency-name: com.ibm.icu:icu4j
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 00:21:41 +00:00
dependabot[bot]
62959008f8 Bump the google-apis group with 4 updates
Bumps the google-apis group with 4 updates: [com.google.api-client:google-api-client](https://github.com/googleapis/google-api-java-client), [com.google.http-client:google-http-client](https://github.com/googleapis/google-http-java-client), [com.google.http-client:google-http-client-jackson2](https://github.com/googleapis/google-http-java-client) and [com.google.oauth-client:google-oauth-client](https://github.com/googleapis/google-oauth-java-client).


Updates `com.google.api-client:google-api-client` from 1.23.0 to 1.35.2
- [Release notes](https://github.com/googleapis/google-api-java-client/releases)
- [Changelog](https://github.com/googleapis/google-api-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-java-client/compare/1.23.0...v1.35.2)

Updates `com.google.http-client:google-http-client` from 1.23.0 to 1.45.3
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/1.23.0...v1.45.3)

Updates `com.google.http-client:google-http-client-jackson2` from 1.23.0 to 1.45.3
- [Release notes](https://github.com/googleapis/google-http-java-client/releases)
- [Changelog](https://github.com/googleapis/google-http-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-http-java-client/compare/1.23.0...v1.45.3)

Updates `com.google.oauth-client:google-oauth-client` from 1.33.3 to 1.37.0
- [Release notes](https://github.com/googleapis/google-oauth-java-client/releases)
- [Changelog](https://github.com/googleapis/google-oauth-java-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-oauth-java-client/compare/v1.33.3...v1.37.0)

---
updated-dependencies:
- dependency-name: com.google.api-client:google-api-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
- dependency-name: com.google.http-client:google-http-client-jackson2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
- dependency-name: com.google.oauth-client:google-oauth-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: google-apis
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 00:21:38 +00:00
Tim Donohue
bcd837fab6 Merge pull request #10301 from DSpace/dependabot/maven/dspace-7_x/com.amazonaws-aws-java-sdk-s3-1.12.780
Bump com.amazonaws:aws-java-sdk-s3 from 1.12.261 to 1.12.780
2025-01-23 17:06:00 -06:00
Tim Donohue
06c02192ea Merge pull request #10310 from DSpace/dependabot/maven/dspace-7_x/org.postgresql-postgresql-42.7.5
Bump org.postgresql:postgresql from 42.7.3 to 42.7.5
2025-01-23 17:01:19 -06:00
Tim Donohue
951637f610 Merge pull request #10311 from DSpace/dependabot/maven/dspace-7_x/org.jboss.logging-jboss-logging-3.6.1.Final
Bump org.jboss.logging:jboss-logging from 3.4.3.Final to 3.6.1.Final
2025-01-23 16:55:01 -06:00
Tim Donohue
a7fb760fee Merge pull request #10314 from DSpace/dependabot/maven/dspace-7_x/org.apache.james-apache-mime4j-core-0.8.12
Bump org.apache.james:apache-mime4j-core from 0.8.10 to 0.8.12
2025-01-23 16:52:12 -06:00
Nona Luypaert
0d069354f7 122350: Move failRunningProcesses during tomcat startup to RestRepository 2025-01-23 16:32:55 -06:00
Tim Donohue
ae3cc23025 Merge pull request #10281 from DSpace/dependabot/maven/dspace-7_x/joda-time-joda-time-2.13.0
Bump joda-time:joda-time from 2.12.5 to 2.13.0
2025-01-23 14:12:42 -06:00
dependabot[bot]
75d747e40a Bump org.apache.james:apache-mime4j-core from 0.8.10 to 0.8.12
Bumps org.apache.james:apache-mime4j-core from 0.8.10 to 0.8.12.

---
updated-dependencies:
- dependency-name: org.apache.james:apache-mime4j-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 18:23:46 +00:00
dependabot[bot]
daa29e582a Bump org.jboss.logging:jboss-logging from 3.4.3.Final to 3.6.1.Final
Bumps [org.jboss.logging:jboss-logging](https://github.com/jboss-logging/jboss-logging) from 3.4.3.Final to 3.6.1.Final.
- [Release notes](https://github.com/jboss-logging/jboss-logging/releases)
- [Commits](https://github.com/jboss-logging/jboss-logging/compare/3.4.3.Final...3.6.1.Final)

---
updated-dependencies:
- dependency-name: org.jboss.logging:jboss-logging
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 18:23:43 +00:00
dependabot[bot]
0f3fc0eccb Bump org.postgresql:postgresql from 42.7.3 to 42.7.5
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.3 to 42.7.5.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.7.3...REL42.7.5)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 18:23:37 +00:00
dependabot[bot]
1b850aaf0b Bump net.minidev:json-smart from 2.5.0 to 2.5.1
Bumps [net.minidev:json-smart](https://github.com/netplex/json-smart-v2) from 2.5.0 to 2.5.1.
- [Release notes](https://github.com/netplex/json-smart-v2/releases)
- [Commits](https://github.com/netplex/json-smart-v2/compare/2.5.0...2.5.1)

---
updated-dependencies:
- dependency-name: net.minidev:json-smart
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 18:23:27 +00:00
dependabot[bot]
3767093c15 Bump org.atteo:evo-inflector from 1.2.1 to 1.3
Bumps [org.atteo:evo-inflector](https://github.com/atteo/evo-inflector) from 1.2.1 to 1.3.
- [Commits](https://github.com/atteo/evo-inflector/compare/1.2.1...1.3)

---
updated-dependencies:
- dependency-name: org.atteo:evo-inflector
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 18:23:11 +00:00
dependabot[bot]
f451307e6f Bump com.amazonaws:aws-java-sdk-s3 from 1.12.261 to 1.12.780
Bumps [com.amazonaws:aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.261 to 1.12.780.
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.261...1.12.780)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 18:23:01 +00:00
dependabot[bot]
0a55995b7c Remove unused joad-time dependency
Bumps [joda-time:joda-time](https://github.com/JodaOrg/joda-time) from 2.12.5 to 2.13.0.
- [Release notes](https://github.com/JodaOrg/joda-time/releases)
- [Changelog](https://github.com/JodaOrg/joda-time/blob/main/RELEASE-NOTES.txt)
- [Commits](https://github.com/JodaOrg/joda-time/compare/v2.12.5...v2.13.0)

---
updated-dependencies:
- dependency-name: joda-time:joda-time
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 17:08:10 +00:00
Tim Donohue
1a9ae38675 Merge pull request #10284 from DSpace/dependabot/maven/dspace-7_x/org.apache.ant-ant-1.10.15
Bump org.apache.ant:ant from 1.10.14 to 1.10.15
2025-01-22 16:50:29 -06:00
Tim Donohue
6e4365757e Merge pull request #10285 from DSpace/dependabot/maven/dspace-7_x/dnsjava-dnsjava-3.6.2
Bump dnsjava:dnsjava from 3.6.0 to 3.6.2
2025-01-22 16:50:03 -06:00
Tim Donohue
e6dcbb8412 Merge pull request #10282 from DSpace/dependabot/maven/dspace-7_x/org.apache.velocity-velocity-engine-core-2.4.1
Bump org.apache.velocity:velocity-engine-core from 2.3 to 2.4.1
2025-01-22 16:48:28 -06:00
Tim Donohue
1dbd23e247 Merge pull request #10277 from DSpace/dependabot/maven/dspace-7_x/net.bytebuddy-byte-buddy-1.16.1
Bump net.bytebuddy:byte-buddy from 1.11.13 to 1.16.1
2025-01-22 16:47:15 -06:00
Tim Donohue
f14b8bfe6c Merge pull request #10275 from DSpace/dependabot/maven/dspace-7_x/bouncycastle.version-1.80
Bump bouncycastle.version from 1.78.1 to 1.80
2025-01-22 16:46:11 -06:00
Tim Donohue
18cf98be4f Merge pull request #10278 from DSpace/dependabot/maven/dspace-7_x/pdfbox-version-2.0.33
Bump pdfbox-version from 2.0.31 to 2.0.33
2025-01-22 15:09:29 -06:00
Tim Donohue
8bcd3980d8 Merge pull request #9722 from 4Science/task/dspace-7_x/CST-14901
[Port dspace-7_x] Handles versioning for ORCID publications.
2025-01-22 14:51:02 -06:00
Tim Donohue
f94bbfca45 Merge pull request #10295 from DSpace/backport-10209-to-dspace-7_x
[Port dspace-7_x] Avoid IllegalArgumentException thrown during creating a new version in special DSpace settings
2025-01-22 14:22:56 -06:00
Tim Donohue
1f53491140 Merge pull request #10254 from DSpace/dependabot/maven/dspace-7_x/org.scala-lang-scala-library-2.13.16
Bump org.scala-lang:scala-library from 2.13.11 to 2.13.16
2025-01-22 10:38:12 -06:00
Eike Martin Löhden
da3584759b Add check to avoid adding empty array of values to an item.
(cherry picked from commit 6e0124fcbb)
2025-01-22 16:19:54 +00:00
dependabot[bot]
cd2fbbf51b Bump dnsjava:dnsjava from 3.6.0 to 3.6.2
Bumps [dnsjava:dnsjava](https://github.com/dnsjava/dnsjava) from 3.6.0 to 3.6.2.
- [Release notes](https://github.com/dnsjava/dnsjava/releases)
- [Changelog](https://github.com/dnsjava/dnsjava/blob/master/Changelog)
- [Commits](https://github.com/dnsjava/dnsjava/compare/v3.6.0...v3.6.2)

---
updated-dependencies:
- dependency-name: dnsjava:dnsjava
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-21 23:28:54 +00:00
dependabot[bot]
9d46a45191 Bump org.apache.ant:ant from 1.10.14 to 1.10.15
Bumps org.apache.ant:ant from 1.10.14 to 1.10.15.

---
updated-dependencies:
- dependency-name: org.apache.ant:ant
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-21 23:28:48 +00:00
dependabot[bot]
9bca0c928b Bump net.cnri:cnri-servlet-container from 3.0.0 to 3.1.0
Bumps [net.cnri:cnri-servlet-container](https://gitlab.com/cnri/cnri-servlet-container) from 3.0.0 to 3.1.0.
- [Commits](https://gitlab.com/cnri/cnri-servlet-container/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: net.cnri:cnri-servlet-container
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-21 23:28:37 +00:00
dependabot[bot]
e3abd1c129 Bump org.apache.velocity:velocity-engine-core from 2.3 to 2.4.1
Bumps org.apache.velocity:velocity-engine-core from 2.3 to 2.4.1.

---
updated-dependencies:
- dependency-name: org.apache.velocity:velocity-engine-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-21 23:28:34 +00:00
dependabot[bot]
39e2ef2b30 Bump pdfbox-version from 2.0.31 to 2.0.33
Bumps `pdfbox-version` from 2.0.31 to 2.0.33.

Updates `org.apache.pdfbox:pdfbox` from 2.0.31 to 2.0.33

Updates `org.apache.pdfbox:fontbox` from 2.0.31 to 2.0.33

---
updated-dependencies:
- dependency-name: org.apache.pdfbox:pdfbox
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.pdfbox:fontbox
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-21 23:28:19 +00:00
dependabot[bot]
9705c30f8a Bump net.bytebuddy:byte-buddy from 1.11.13 to 1.16.1
Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.11.13 to 1.16.1.
- [Release notes](https://github.com/raphw/byte-buddy/releases)
- [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md)
- [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.11.13...byte-buddy-1.16.1)

---
updated-dependencies:
- dependency-name: net.bytebuddy:byte-buddy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-21 23:28:11 +00:00
dependabot[bot]
7d4a5fc311 Bump bouncycastle.version from 1.78.1 to 1.80
Bumps `bouncycastle.version` from 1.78.1 to 1.80.

Updates `org.bouncycastle:bcpkix-jdk18on` from 1.78.1 to 1.80
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

Updates `org.bouncycastle:bcprov-jdk18on` from 1.78.1 to 1.80
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

Updates `org.bouncycastle:bcutil-jdk18on` from 1.78.1 to 1.80
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

---
updated-dependencies:
- dependency-name: org.bouncycastle:bcpkix-jdk18on
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.bouncycastle:bcprov-jdk18on
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.bouncycastle:bcutil-jdk18on
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-21 23:28:06 +00:00
Tim Donohue
4ca723573b Merge pull request #10256 from DSpace/dependabot/maven/dspace-7_x/log4j.version-2.24.3
Bump log4j.version from 2.23.1 to 2.24.3
2025-01-21 16:48:02 -06:00
Tim Donohue
a40620514a Merge pull request #10255 from DSpace/dependabot/maven/dspace-7_x/org.apache.bcel-bcel-6.10.0
Bump org.apache.bcel:bcel from 6.7.0 to 6.10.0
2025-01-21 16:42:50 -06:00
Tim Donohue
6bd6686e57 Merge pull request #10269 from DSpace/dependabot/maven/dspace-7_x/io.swagger-swagger-core-1.6.15
Remove unused swagger:swagger-core
2025-01-21 15:54:53 -06:00
Tim Donohue
b3e1139006 Remove swagger-core as it is unused 2025-01-21 13:41:10 -06:00
Tim Donohue
1c82598c3f Merge pull request #10268 from DSpace/dependabot/maven/dspace-7_x/solr.client.version-8.11.4
Bump solr.client.version from 8.11.3 to 8.11.4
2025-01-21 13:25:48 -06:00
Tim Donohue
3d0006ee73 Merge pull request #10264 from DSpace/dependabot/maven/dspace-7_x/build-tools-907e20f2d5
Bump com.github.spotbugs:spotbugs from 4.8.6 to 4.9.0 in the build-tools group across 1 directory
2025-01-21 13:10:09 -06:00
Tim Donohue
86dd22acab Merge pull request #10220 from DSpace/dependabot/maven/dspace-7_x/test-tools-6cdf6921de
Bump the test-tools group with 8 updates
2025-01-21 13:09:19 -06:00
Tim Donohue
5ff9702254 Merge pull request #10253 from DSpace/dependabot/maven/dspace-7_x/spring-e4edb82a34
Bump the spring group with 4 updates
2025-01-21 13:06:38 -06:00
dependabot[bot]
8076745a09 Bump io.swagger:swagger-core from 1.6.2 to 1.6.15
Bumps [io.swagger:swagger-core](https://github.com/swagger-api/swagger-core) from 1.6.2 to 1.6.15.
- [Release notes](https://github.com/swagger-api/swagger-core/releases)
- [Commits](https://github.com/swagger-api/swagger-core/compare/v1.6.2...v1.6.15)

---
updated-dependencies:
- dependency-name: io.swagger:swagger-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 22:43:53 +00:00
dependabot[bot]
bf1aa3da7a Bump solr.client.version from 8.11.3 to 8.11.4
Bumps `solr.client.version` from 8.11.3 to 8.11.4.

Updates `org.apache.solr:solr-solrj` from 8.11.3 to 8.11.4

Updates `org.apache.lucene:lucene-core` from 8.11.3 to 8.11.4

Updates `org.apache.lucene:lucene-analyzers-icu` from 8.11.3 to 8.11.4

Updates `org.apache.lucene:lucene-analyzers-smartcn` from 8.11.3 to 8.11.4

Updates `org.apache.lucene:lucene-analyzers-stempel` from 8.11.3 to 8.11.4

Updates `org.apache.solr:solr-core` from 8.11.3 to 8.11.4

---
updated-dependencies:
- dependency-name: org.apache.solr:solr-solrj
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.lucene:lucene-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.lucene:lucene-analyzers-icu
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.lucene:lucene-analyzers-smartcn
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.lucene:lucene-analyzers-stempel
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.apache.solr:solr-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 22:43:50 +00:00
dependabot[bot]
9dcc4e6f7c Bump the spring group with 4 updates
Bumps the spring group with 4 updates: [org.springframework.security:spring-security-test](https://github.com/spring-projects/spring-security), [org.springframework.security:spring-security-core](https://github.com/spring-projects/spring-security), [org.springframework.security:spring-security-web](https://github.com/spring-projects/spring-security) and [org.springframework.security:spring-security-config](https://github.com/spring-projects/spring-security).


Updates `org.springframework.security:spring-security-test` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/spring-projects/spring-security/releases)
- [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc)
- [Commits](https://github.com/spring-projects/spring-security/compare/5.7.12...5.7.14)

Updates `org.springframework.security:spring-security-core` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/spring-projects/spring-security/releases)
- [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc)
- [Commits](https://github.com/spring-projects/spring-security/compare/5.7.12...5.7.14)

Updates `org.springframework.security:spring-security-web` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/spring-projects/spring-security/releases)
- [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc)
- [Commits](https://github.com/spring-projects/spring-security/compare/5.7.12...5.7.14)

Updates `org.springframework.security:spring-security-config` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/spring-projects/spring-security/releases)
- [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc)
- [Commits](https://github.com/spring-projects/spring-security/compare/5.7.12...5.7.14)

Updates `org.springframework.security:spring-security-core` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/spring-projects/spring-security/releases)
- [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc)
- [Commits](https://github.com/spring-projects/spring-security/compare/5.7.12...5.7.14)

Updates `org.springframework.security:spring-security-web` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/spring-projects/spring-security/releases)
- [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc)
- [Commits](https://github.com/spring-projects/spring-security/compare/5.7.12...5.7.14)

Updates `org.springframework.security:spring-security-config` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/spring-projects/spring-security/releases)
- [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc)
- [Commits](https://github.com/spring-projects/spring-security/compare/5.7.12...5.7.14)

---
updated-dependencies:
- dependency-name: org.springframework.security:spring-security-test
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: spring
- dependency-name: org.springframework.security:spring-security-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: spring
- dependency-name: org.springframework.security:spring-security-web
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: spring
- dependency-name: org.springframework.security:spring-security-config
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: spring
- dependency-name: org.springframework.security:spring-security-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: spring
- dependency-name: org.springframework.security:spring-security-web
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: spring
- dependency-name: org.springframework.security:spring-security-config
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: spring
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 22:43:38 +00:00
dependabot[bot]
75e291d867 Bump the test-tools group with 8 updates
Bumps the test-tools group with 8 updates:

| Package | From | To |
| --- | --- | --- |
| [com.h2database:h2](https://github.com/h2database/h2database) | `2.2.224` | `2.3.232` |
| [org.mock-server:mockserver-junit-rule](https://github.com/jamesdbloom/mockservice) | `5.11.2` | `5.15.0` |
| [io.netty:netty-buffer](https://github.com/netty/netty) | `4.1.106.Final` | `4.1.117.Final` |
| [io.netty:netty-transport](https://github.com/netty/netty) | `4.1.106.Final` | `4.1.117.Final` |
| [io.netty:netty-transport-native-unix-common](https://github.com/netty/netty) | `4.1.106.Final` | `4.1.117.Final` |
| [io.netty:netty-common](https://github.com/netty/netty) | `4.1.106.Final` | `4.1.117.Final` |
| [io.netty:netty-handler](https://github.com/netty/netty) | `4.1.106.Final` | `4.1.117.Final` |
| [io.netty:netty-codec](https://github.com/netty/netty) | `4.1.106.Final` | `4.1.117.Final` |


Updates `com.h2database:h2` from 2.2.224 to 2.3.232
- [Release notes](https://github.com/h2database/h2database/releases)
- [Commits](https://github.com/h2database/h2database/compare/version-2.2.224...version-2.3.232)

Updates `org.mock-server:mockserver-junit-rule` from 5.11.2 to 5.15.0
- [Changelog](https://github.com/mock-server/mockserver/blob/master/changelog.md)
- [Commits](https://github.com/jamesdbloom/mockservice/compare/mockserver-5.11.2...mockserver-5.15.0)

Updates `io.netty:netty-buffer` from 4.1.106.Final to 4.1.117.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.106.Final...netty-4.1.117.Final)

Updates `io.netty:netty-transport` from 4.1.106.Final to 4.1.117.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.106.Final...netty-4.1.117.Final)

Updates `io.netty:netty-transport-native-unix-common` from 4.1.106.Final to 4.1.117.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.106.Final...netty-4.1.117.Final)

Updates `io.netty:netty-common` from 4.1.106.Final to 4.1.117.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.106.Final...netty-4.1.117.Final)

Updates `io.netty:netty-handler` from 4.1.106.Final to 4.1.117.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.106.Final...netty-4.1.117.Final)

Updates `io.netty:netty-codec` from 4.1.106.Final to 4.1.117.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.106.Final...netty-4.1.117.Final)

---
updated-dependencies:
- dependency-name: com.h2database:h2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: test-tools
- dependency-name: org.mock-server:mockserver-junit-rule
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: test-tools
- dependency-name: io.netty:netty-buffer
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-transport-native-unix-common
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-common
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-handler
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
- dependency-name: io.netty:netty-codec
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 22:43:27 +00:00
Vincenzo Mecca
6c99c25d34 [CST-14901][DSC-1357][#8662] Adds IT for isLatestVersion 2025-01-20 13:30:26 +01:00
dependabot[bot]
6b2e4c185e Bump com.github.spotbugs:spotbugs
Bumps the build-tools group with 1 update in the / directory: [com.github.spotbugs:spotbugs](https://github.com/spotbugs/spotbugs).


Updates `com.github.spotbugs:spotbugs` from 4.8.6 to 4.9.0
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.8.6...4.9.0)

---
updated-dependencies:
- dependency-name: com.github.spotbugs:spotbugs
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-18 01:09:25 +00:00
Tim Donohue
100470d4aa Merge pull request #10218 from DSpace/dependabot/maven/dspace-7_x/build-tools-cee8dec2eb
Bump the build-tools group with 21 updates
2025-01-17 17:01:41 -06:00
Tim Donohue
d3014fde19 Merge pull request #10230 from DSpace/dependabot/maven/dspace-7_x/jersey.version-2.46
Bump jersey.version from 2.39.1 to 2.46
2025-01-17 16:29:15 -06:00
Tim Donohue
82a610c71d Merge pull request #10229 from DSpace/dependabot/maven/dspace-7_x/com.google.guava-guava-32.1.3-jre
Bump com.google.guava:guava from 32.0.0-jre to 32.1.3-jre
2025-01-17 16:05:49 -06:00
dependabot[bot]
80e39f7669 Bump log4j.version from 2.23.1 to 2.24.3
Bumps `log4j.version` from 2.23.1 to 2.24.3.

Updates `org.apache.logging.log4j:log4j-api` from 2.23.1 to 2.24.3

Updates `org.apache.logging.log4j:log4j-core` from 2.23.1 to 2.24.3

Updates `org.apache.logging.log4j:log4j-1.2-api` from 2.23.1 to 2.24.3

---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.apache.logging.log4j:log4j-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.apache.logging.log4j:log4j-1.2-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-17 21:13:06 +00:00
dependabot[bot]
bd16f7a982 Bump org.apache.bcel:bcel from 6.7.0 to 6.10.0
Bumps [org.apache.bcel:bcel](https://github.com/apache/commons-bcel) from 6.7.0 to 6.10.0.
- [Changelog](https://github.com/apache/commons-bcel/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-bcel/compare/rel/commons-bcel-6.7.0...rel/commons-bcel-6.10.0)

---
updated-dependencies:
- dependency-name: org.apache.bcel:bcel
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-17 21:13:00 +00:00
dependabot[bot]
2b5db943b2 Bump org.scala-lang:scala-library from 2.13.11 to 2.13.16
Bumps [org.scala-lang:scala-library](https://github.com/scala/scala) from 2.13.11 to 2.13.16.
- [Release notes](https://github.com/scala/scala/releases)
- [Commits](https://github.com/scala/scala/compare/v2.13.11...v2.13.16)

---
updated-dependencies:
- dependency-name: org.scala-lang:scala-library
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-17 21:12:56 +00:00
Tim Donohue
4c46bc33be Remove unused dependency 2025-01-17 15:07:10 -06:00
Tim Donohue
c657f7770f Sync a few dependency exclusions from dspace-8_x to dspace-7_x to fix convergence issues 2025-01-17 14:12:38 -06:00
Tim Donohue
6b8a17c3e2 Revert to Errorprone 2.31.0, as that's the last version that supports Java 11 2025-01-17 12:45:52 -06:00
Mark H. Wood
95d7a013f9 Fix ErrorProne errors in tests.
Also fix some of the hundreds of warnings.  This uncovered still more
warnings that hadn't been previously reported, probably because there are
simply too many.
2025-01-17 12:26:15 -06:00
Mark H. Wood
b4dce26749 Fix new ErrorProne errors from new EP version, and a few ancient warnings. 2025-01-17 12:26:15 -06:00
Yana De Pauw
507aade92c Merge remote-tracking branch 'upstream/dspace-7_x' into w2p-124362_VersionedHandleIdentifierProviderWithCanonicalHandles-and-com-col-handles 2025-01-17 15:58:07 +01:00
Yana De Pauw
997945d85d 124362: Restore default config and add tests 2025-01-17 13:37:35 +01:00
Tim Donohue
84ea8af092 Merge pull request #10228 from DSpace/dependabot/maven/dspace-7_x/webjars-694cad7f5e
Bump org.webjars.npm:json-editor__json-editor from 2.6.1 to 2.15.1 in the webjars group
2025-01-16 17:10:40 -06:00
Tim Donohue
1581c737e2 Update jsoneditor.js reference in Hal Browser 2025-01-16 16:43:47 -06:00
Tim Donohue
f04e01eacb Merge pull request #10231 from DSpace/dependabot/maven/dspace-7_x/jetty.version-9.4.57.v20241219
Bump jetty.version from 9.4.54.v20240208 to 9.4.57.v20241219
2025-01-16 16:33:50 -06:00
Tim Donohue
709095a91a Merge pull request #10224 from DSpace/dependabot/maven/dspace-7_x/fasterxml-6e3d9a09b6
Bump the fasterxml group with 4 updates
2025-01-16 16:25:13 -06:00
Tim Donohue
69ca399967 Merge pull request #10222 from DSpace/dependabot/maven/dspace-7_x/apache-commons-25c65aad98
Bump the apache-commons group with 11 updates
2025-01-16 16:23:25 -06:00
Yana De Pauw
745e9c468a 124362: Fix issue with the VersionedHandleIdentifierProviderWithCanonicalHandles and creating communities / collections 2025-01-16 12:01:13 +01:00
Tim Donohue
f7ee509423 Fix duplicate code warning from errorprone. This "else if" clause is the same as the "else" and can be removed 2025-01-15 17:01:07 -06:00
Tim Donohue
5d7b42603d Add newly required "should-stop" flag to errorprone config. See https://errorprone.info/docs/installation 2025-01-15 17:00:57 -06:00
Tim Donohue
eee743a72d Minor checkstyle fixes after bump to 8.45.1. All are indentation / spacing fixes which are more strict now. 2025-01-15 17:00:43 -06:00
Tim Donohue
a01983c230 Fix checkstyle.xml syntax for bump to 8.45.1 2025-01-15 16:59:31 -06:00
dependabot[bot]
9d17009cf3 Bump jetty.version from 9.4.54.v20240208 to 9.4.57.v20241219
Bumps `jetty.version` from 9.4.54.v20240208 to 9.4.57.v20241219.

Updates `org.eclipse.jetty:jetty-server` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-alpn-java-server` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-deploy` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-http` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-io` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-servlet` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-servlets` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-util` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-webapp` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty:jetty-xml` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty.http2:http2-common` from 9.4.54.v20240208 to 9.4.57.v20241219

Updates `org.eclipse.jetty.http2:http2-server` from 9.4.54.v20240208 to 9.4.57.v20241219

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-server
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-alpn-java-server
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-deploy
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-http
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-io
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-servlet
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-servlets
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-webapp
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-xml
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.http2:http2-common
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.http2:http2-server
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-15 21:04:17 +00:00
dependabot[bot]
d9945b27b9 Bump jersey.version from 2.39.1 to 2.46
Bumps `jersey.version` from 2.39.1 to 2.46.

Updates `org.glassfish.jersey.core:jersey-client` from 2.39.1 to 2.46

Updates `org.glassfish.jersey.inject:jersey-hk2` from 2.39.1 to 2.46

Updates `org.glassfish.jersey.core:jersey-server` from 2.39.1 to 2.46

Updates `org.glassfish.jersey.containers:jersey-container-servlet` from 2.39.1 to 2.46

Updates `org.glassfish.jersey.media:jersey-media-json-jackson` from 2.39.1 to 2.46

Updates `org.glassfish.jersey.media:jersey-media-jaxb` from 2.39.1 to 2.46

Updates `org.glassfish.jersey.ext:jersey-spring5` from 2.39.1 to 2.46

---
updated-dependencies:
- dependency-name: org.glassfish.jersey.core:jersey-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.inject:jersey-hk2
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.core:jersey-server
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.containers:jersey-container-servlet
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.media:jersey-media-json-jackson
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.media:jersey-media-jaxb
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.glassfish.jersey.ext:jersey-spring5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-15 21:03:55 +00:00
dependabot[bot]
75d740ec86 Bump com.google.guava:guava from 32.0.0-jre to 32.1.3-jre
Bumps [com.google.guava:guava](https://github.com/google/guava) from 32.0.0-jre to 32.1.3-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-15 21:03:43 +00:00
dependabot[bot]
bec1ee84e5 Bump org.webjars.npm:json-editor__json-editor in the webjars group
Bumps the webjars group with 1 update: [org.webjars.npm:json-editor__json-editor](https://github.com/json-editor/json-editor).


Updates `org.webjars.npm:json-editor__json-editor` from 2.6.1 to 2.15.1
- [Changelog](https://github.com/json-editor/json-editor/blob/master/CHANGELOG.md)
- [Commits](https://github.com/json-editor/json-editor/compare/2.6.1...2.15.1)

---
updated-dependencies:
- dependency-name: org.webjars.npm:json-editor__json-editor
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: webjars
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-15 21:03:40 +00:00
dependabot[bot]
4a20a4c37f Bump the fasterxml group with 4 updates
Bumps the fasterxml group with 4 updates: [com.fasterxml:classmate](https://github.com/FasterXML/java-classmate), [com.fasterxml.jackson.core:jackson-annotations](https://github.com/FasterXML/jackson), [com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core) and [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson).


Updates `com.fasterxml:classmate` from 1.6.0 to 1.7.0
- [Commits](https://github.com/FasterXML/java-classmate/compare/classmate-1.6.0...classmate-1.7.0)

Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.16.0 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.16.0 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.16.0...jackson-core-2.18.2)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.16.0 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.16.0...jackson-core-2.18.2)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.16.0 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml:classmate
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fasterxml
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-15 21:02:28 +00:00
dependabot[bot]
d7b0e26179 Bump the apache-commons group with 11 updates
Bumps the apache-commons group with 11 updates:

| Package | From | To |
| --- | --- | --- |
| commons-beanutils:commons-beanutils | `1.9.4` | `1.10.0` |
| commons-cli:commons-cli | `1.6.0` | `1.9.0` |
| [commons-codec:commons-codec](https://github.com/apache/commons-codec) | `1.16.0` | `1.17.2` |
| org.apache.commons:commons-configuration2 | `2.10.1` | `2.11.0` |
| org.apache.commons:commons-dbcp2 | `2.11.0` | `2.13.0` |
| commons-io:commons-io | `2.15.1` | `2.18.0` |
| org.apache.commons:commons-lang3 | `3.14.0` | `3.17.0` |
| commons-logging:commons-logging | `1.3.0` | `1.3.4` |
| org.apache.commons:commons-compress | `1.26.0` | `1.27.1` |
| org.apache.commons:commons-text | `1.10.0` | `1.13.0` |
| commons-validator:commons-validator | `1.7` | `1.9.0` |


Updates `commons-beanutils:commons-beanutils` from 1.9.4 to 1.10.0

Updates `commons-cli:commons-cli` from 1.6.0 to 1.9.0

Updates `commons-codec:commons-codec` from 1.16.0 to 1.17.2
- [Changelog](https://github.com/apache/commons-codec/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-codec/compare/rel/commons-codec-1.16.0...rel/commons-codec-1.17.2)

Updates `org.apache.commons:commons-configuration2` from 2.10.1 to 2.11.0

Updates `org.apache.commons:commons-dbcp2` from 2.11.0 to 2.13.0

Updates `commons-io:commons-io` from 2.15.1 to 2.18.0

Updates `org.apache.commons:commons-lang3` from 3.14.0 to 3.17.0

Updates `commons-logging:commons-logging` from 1.3.0 to 1.3.4

Updates `org.apache.commons:commons-compress` from 1.26.0 to 1.27.1

Updates `org.apache.commons:commons-text` from 1.10.0 to 1.13.0

Updates `commons-validator:commons-validator` from 1.7 to 1.9.0

---
updated-dependencies:
- dependency-name: commons-beanutils:commons-beanutils
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: commons-cli:commons-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: commons-codec:commons-codec
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-configuration2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-dbcp2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: commons-io:commons-io
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-lang3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: commons-logging:commons-logging
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-compress
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: org.apache.commons:commons-text
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
- dependency-name: commons-validator:commons-validator
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: apache-commons
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-15 21:02:16 +00:00
dependabot[bot]
1492ed7f61 Bump the build-tools group with 21 updates
Bumps the build-tools group with 21 updates:

| Package | From | To |
| --- | --- | --- |
| [com.google.errorprone:error_prone_core](https://github.com/google/error-prone) | `2.10.0` | `2.36.0` |
| [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) | `8.38` | `8.45.1` |
| [com.github.spotbugs:spotbugs](https://github.com/spotbugs/spotbugs) | `4.8.2` | `4.8.6` |
| [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer) | `3.0.0-M3` | `3.5.0` |
| [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) | `3.8.1` | `3.13.0` |
| [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin) | `3.2.0` | `3.4.2` |
| [org.apache.maven.plugins:maven-war-plugin](https://github.com/apache/maven-war-plugin) | `3.2.3` | `3.4.0` |
| [org.apache.maven.plugins:maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) | `3.3.1` | `3.6.0` |
| [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) | `4.8.2.0` | `4.8.6.6` |
| [org.apache.maven.plugins:maven-clean-plugin](https://github.com/apache/maven-clean-plugin) | `3.1.0` | `3.4.0` |
| [org.apache.maven.plugins:maven-assembly-plugin](https://github.com/apache/maven-assembly-plugin) | `3.6.0` | `3.7.1` |
| [org.apache.maven.plugins:maven-dependency-plugin](https://github.com/apache/maven-dependency-plugin) | `3.1.2` | `3.8.1` |
| [org.apache.maven.plugins:maven-resources-plugin](https://github.com/apache/maven-resources-plugin) | `3.1.0` | `3.3.1` |
| org.sonatype.plugins:nexus-staging-maven-plugin | `1.6.8` | `1.7.0` |
| [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) | `3.2.0` | `3.11.2` |
| [org.apache.maven.plugins:maven-source-plugin](https://github.com/apache/maven-source-plugin) | `3.2.1` | `3.3.1` |
| [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) | `0.8.5` | `0.8.12` |
| [org.codehaus.mojo:xml-maven-plugin](https://github.com/mojohaus/xml-maven-plugin) | `1.0.2` | `1.1.0` |
| [org.codehaus.mojo:license-maven-plugin](https://github.com/mojohaus/license-maven-plugin) | `2.0.0` | `2.5.0` |
| [org.codehaus.mojo:build-helper-maven-plugin](https://github.com/mojohaus/build-helper-maven-plugin) | `3.4.0` | `3.6.0` |
| [org.codehaus.mojo:buildnumber-maven-plugin](https://github.com/mojohaus/buildnumber-maven-plugin) | `3.2.0` | `3.2.1` |


Updates `com.google.errorprone:error_prone_core` from 2.10.0 to 2.36.0
- [Release notes](https://github.com/google/error-prone/releases)
- [Commits](https://github.com/google/error-prone/compare/v2.10.0...v2.36.0)

Updates `com.puppycrawl.tools:checkstyle` from 8.38 to 8.45.1
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-8.38...checkstyle-8.45.1)

Updates `com.github.spotbugs:spotbugs` from 4.8.2 to 4.8.6
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.8.2...4.8.6)

Updates `org.apache.maven.plugins:maven-enforcer-plugin` from 3.0.0-M3 to 3.5.0
- [Release notes](https://github.com/apache/maven-enforcer/releases)
- [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.0.0-M3...enforcer-3.5.0)

Updates `org.apache.maven.plugins:maven-compiler-plugin` from 3.8.1 to 3.13.0
- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)
- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.8.1...maven-compiler-plugin-3.13.0)

Updates `org.apache.maven.plugins:maven-jar-plugin` from 3.2.0 to 3.4.2
- [Release notes](https://github.com/apache/maven-jar-plugin/releases)
- [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.2.0...maven-jar-plugin-3.4.2)

Updates `org.apache.maven.plugins:maven-war-plugin` from 3.2.3 to 3.4.0
- [Commits](https://github.com/apache/maven-war-plugin/compare/maven-war-plugin-3.2.3...maven-war-plugin-3.4.0)

Updates `org.apache.maven.plugins:maven-checkstyle-plugin` from 3.3.1 to 3.6.0
- [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.3.1...maven-checkstyle-plugin-3.6.0)

Updates `com.github.spotbugs:spotbugs-maven-plugin` from 4.8.2.0 to 4.8.6.6
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.8.2.0...spotbugs-maven-plugin-4.8.6.6)

Updates `org.apache.maven.plugins:maven-clean-plugin` from 3.1.0 to 3.4.0
- [Release notes](https://github.com/apache/maven-clean-plugin/releases)
- [Commits](https://github.com/apache/maven-clean-plugin/compare/maven-clean-plugin-3.1.0...maven-clean-plugin-3.4.0)

Updates `org.apache.maven.plugins:maven-assembly-plugin` from 3.6.0 to 3.7.1
- [Release notes](https://github.com/apache/maven-assembly-plugin/releases)
- [Commits](https://github.com/apache/maven-assembly-plugin/compare/maven-assembly-plugin-3.6.0...maven-assembly-plugin-3.7.1)

Updates `org.apache.maven.plugins:maven-dependency-plugin` from 3.1.2 to 3.8.1
- [Release notes](https://github.com/apache/maven-dependency-plugin/releases)
- [Commits](https://github.com/apache/maven-dependency-plugin/compare/maven-dependency-plugin-3.1.2...maven-dependency-plugin-3.8.1)

Updates `org.apache.maven.plugins:maven-resources-plugin` from 3.1.0 to 3.3.1
- [Release notes](https://github.com/apache/maven-resources-plugin/releases)
- [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-3.1.0...maven-resources-plugin-3.3.1)

Updates `org.sonatype.plugins:nexus-staging-maven-plugin` from 1.6.8 to 1.7.0

Updates `org.apache.maven.plugins:maven-javadoc-plugin` from 3.2.0 to 3.11.2
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.2.0...maven-javadoc-plugin-3.11.2)

Updates `org.apache.maven.plugins:maven-source-plugin` from 3.2.1 to 3.3.1
- [Release notes](https://github.com/apache/maven-source-plugin/releases)
- [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.2.1...maven-source-plugin-3.3.1)

Updates `org.jacoco:jacoco-maven-plugin` from 0.8.5 to 0.8.12
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.5...v0.8.12)

Updates `org.codehaus.mojo:xml-maven-plugin` from 1.0.2 to 1.1.0
- [Release notes](https://github.com/mojohaus/xml-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/xml-maven-plugin/compare/xml-maven-plugin-1.0.2...1.1.0)

Updates `org.codehaus.mojo:license-maven-plugin` from 2.0.0 to 2.5.0
- [Release notes](https://github.com/mojohaus/license-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/license-maven-plugin/compare/license-maven-plugin-2.0.0...2.5.0)

Updates `org.codehaus.mojo:build-helper-maven-plugin` from 3.4.0 to 3.6.0
- [Release notes](https://github.com/mojohaus/build-helper-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/build-helper-maven-plugin/compare/3.4.0...3.6.0)

Updates `org.codehaus.mojo:buildnumber-maven-plugin` from 3.2.0 to 3.2.1
- [Release notes](https://github.com/mojohaus/buildnumber-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/buildnumber-maven-plugin/compare/3.2.0...3.2.1)

---
updated-dependencies:
- dependency-name: com.google.errorprone:error_prone_core
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: com.github.spotbugs:spotbugs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-enforcer-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-compiler-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-jar-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-war-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: com.github.spotbugs:spotbugs-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-clean-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-assembly-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-dependency-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-resources-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.sonatype.plugins:nexus-staging-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.apache.maven.plugins:maven-source-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
- dependency-name: org.codehaus.mojo:xml-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.codehaus.mojo:license-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.codehaus.mojo:build-helper-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: build-tools
- dependency-name: org.codehaus.mojo:buildnumber-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: build-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-15 21:01:16 +00:00
Tim Donohue
e46f02550a Merge pull request #10205 from tdonohue/enable_dependabot_on_7x
[Port dspace-7_x] Create `dependabot.yml` to auto-update Maven dependencies
2025-01-14 16:26:16 -06:00
Tim Donohue
a236b8b975 Merge pull request #10206 from DSpace/backport-9832-to-dspace-7_x
[Port dspace-7_x] Separate log file for cli jobs, fixing corruption of main log file
2025-01-14 15:56:57 -06:00
Jens Vannerum
1a6088388f apply fix to windows env and remove duplicate logging for checksum checker
(cherry picked from commit 9f39a3d6a5)
2025-01-14 21:10:10 +00:00
Kevin Van de Velde
04ec6381cb Modifying it so that the cli file content is stored in a file using the date
(cherry picked from commit 529c3a77c1)
2025-01-14 21:10:10 +00:00
Jens Vannerum
0b46a0963c 113811: cli logs should be written to a different file
(cherry picked from commit d30468a09f)
2025-01-14 21:10:10 +00:00
Tim Donohue
fe28962e96 Exclude spring from build-tools group in dependabot.yml 2025-01-14 15:02:18 -06:00
Tim Donohue
e840ca2731 Create dependabot.yml 2025-01-14 15:02:15 -06:00
Tim Donohue
5201d90b19 Merge pull request #10200 from tdonohue/port_9690_to_7x
[Port dspace-7_x] option to exclude the submitter being indexed to solr in archived items
2025-01-13 16:07:08 -06:00
Gantner, Florian Klaus
62596ad863 option to exclude the submitter being indexed to solr in archived items
https://github.com/DSpace/DSpace/issues/9660
2025-01-13 15:01:20 -06:00
Tim Donohue
024f88b1e0 Merge pull request #10196 from DSpace/backport-9687-to-dspace-7_x
[Port dspace-7_x] Scopus metadata import: put DOIs in dc.relation.hasversion
2025-01-10 15:13:39 -06:00
Sascha Szott
d109eac2a0 use dc.relation.hasversion instead of dc.identifier.doi
(cherry picked from commit d61dc8d911)
2025-01-10 19:54:42 +00:00
Sascha Szott
09a722a029 use dc.relation.hasversion for externally generated DOIs
(cherry picked from commit 29067b6572)
2025-01-10 19:54:42 +00:00
Sascha Szott
5d0e9871e9 fix broken test
(cherry picked from commit 2eff833fab)
2025-01-10 19:54:42 +00:00
Sascha Szott
5973c67eff put DOIs in dc.identifier.doi
(cherry picked from commit 3d1bef9d0e)
2025-01-10 19:54:42 +00:00
Tim Donohue
d11bbc9c15 Merge pull request #10194 from DSpace/backport-10193-to-dspace-7_x
[Port dspace-7_x] Refactor AbstractIntegrationTestWithDatabase to use EPersonBuilder for test users
2025-01-10 13:32:00 -06:00
Tim Donohue
49b3deef77 Refactor AbstractIntegrationTestWithDatabase to use Builders to create test EPersons.
(cherry picked from commit 0b8b7be22b)
2025-01-10 17:40:32 +00:00
Tim Donohue
a2a9494859 Merge pull request #9724 from 4Science/task/dspace-7_x/CST-14905
[Port dspace-7_x] Orcid revoke token feature
2025-01-10 11:29:24 -06:00
Tim Donohue
a0fd518cb4 Merge pull request #10191 from DSpace/backport-10189-to-dspace-7_x
[Port dspace-7_x] switch IT search core to MockSolrSearchCore
2025-01-09 10:17:11 -06:00
Gantner, Florian Klaus
97a5439e3a switch IT search core to MockSolrSearchCore
https://github.com/DSpace/DSpace/issues/10188
(cherry picked from commit 6d781e8f83)
2025-01-09 14:24:20 +00:00
Tim Donohue
0a9ecee819 Merge pull request #10186 from DSpace/backport-10185-to-dspace-7_x
[Port dspace-7_x] Fix for flakey IdentifierProvider Integration Tests
2025-01-08 11:28:07 -06:00
Tim Donohue
41207d5dee Update CreateMissingIdentifiers to better identify when CanonicalHandles provider is enabled. Update CreateMissingIdentifiersIT to verify that we are accurately resetting to our default IdentifierProvider
(cherry picked from commit 2385c13f2d)
2025-01-08 15:59:55 +00:00
Tim Donohue
22511a17b6 Refactor identifier ITs to ensure they unregister all utilized IdentifierProviders which are non-default. Cannot use "getApplicationContext().refresh()" as that seems to result in empty test database in Hibernate 6.6.
(cherry picked from commit cfca2adbb1)
2025-01-08 15:59:54 +00:00
Tim Donohue
da4535ddfd Merge pull request #10183 from tdonohue/port_9340_to_7x
[Port dspace-7_x] Bugfix: Enforce unique item id in workspace table (#9340)
2025-01-07 10:45:37 -06:00
Koen Pauwels
6c82e2dba4 Bugfix: Enforce unique item id in workspace table (#9340)
* 106798 Enforce values in item_id column of workspaceitem table to be unique, both at database level and at WorkspaceItemService level

* 106798 Removed Oracle SQL migration

* 106798 workspaceitem table migration: delete duplicate rows before introducing uniqueness constraint

* 106798: update migration for H2

---------

Co-authored-by: Koen Pauwels <koen.pauwels@atmire.com>
Co-authored-by: wout <wout.atmire@gmail.com>
2025-01-07 08:59:13 -06:00
Tim Donohue
09fad6dc7e Merge pull request #10179 from DSpace/backport-10104-to-dspace-7_x
[Port dspace-7_x] style.xsl: fix missing +1 offset in result-count template
2025-01-06 12:12:12 -06:00
Tim Donohue
2780ebab74 Merge pull request #10177 from DSpace/backport-10157-to-dspace-7_x
[Port dspace-7_x] remove deprecated constructor call in org.dspace.curate.Curation
2025-01-06 11:52:16 -06:00
Sascha Szott
214c669e80 fix missing +1 offset
(cherry picked from commit ab00de05b4)
2025-01-06 17:07:29 +00:00
Sascha Szott
964e4bf476 remove usage of deprecated constructor call
(cherry picked from commit 45cdb4d9d4)
2025-01-06 16:46:17 +00:00
Nona Luypaert
82b0944137 Merge remote-tracking branch 'origin/dspace-7_x' into w2p-121973_openaire-compliance-updates-7.x 2024-12-31 16:53:08 +01:00
Alan Orth
78194071b8 Merge pull request #10166 from DSpace/backport-10089-to-dspace-7_x 2024-12-24 12:31:57 +03:00
Toni Prieto
e856ae3291 Uncache all entities during OAI indexing to reduce memory usage
(cherry picked from commit 9af2e2e17c)
2024-12-24 06:59:53 +00:00
Tim Donohue
a36f0e606c Merge pull request #10154 from DSpace/backport-3253-to-dspace-7_x
[Port dspace-7_x] Add Context method to uncache all entities
2024-12-19 14:29:35 -06:00
Chris Wilper
8849212895 Add Context method to uncache all entities
(cherry picked from commit 8ea664adb2)
2024-12-19 18:57:47 +00:00
Tim Donohue
9b651b7ab3 Merge pull request #9893 from bkeese/patch-1
Fix full-text indexing for files over the character limit
2024-12-19 12:28:37 -06:00
Tim Donohue
66281d3a6d Merge pull request #10149 from DSpace/backport-10059-to-dspace-7_x
[Port dspace-7_x] Statistics scope fix
2024-12-19 08:56:17 -06:00
Tim Donohue
3fa86d43f6 Merge pull request #10147 from DSpace/backport-9815-to-dspace-7_x
[Port dspace-7_x] fix for #9311: set default configFile
2024-12-19 08:56:07 -06:00
Kristof De Langhe
51df5c1fe6 119664: Search event scope fix
(cherry picked from commit 48956d90b7)
2024-12-18 22:50:42 +00:00
DSpace Bot
1ce4e08333 [Port dspace-7_x] Fix issue with submission sections visibility (#10140)
* README.md: v8 is the current release, not v7

(cherry picked from commit 2b698eff60)
(cherry picked from commit 83460afb37)

* Update README.md

(cherry picked from commit 671234b08f)
(cherry picked from commit 7a6785b1c3)

* [DURACOM-291] Expose section scope attribute

(cherry picked from commit 4107f937fd)

* README.md: v8 is the current release, not v7

(cherry picked from commit 2b698eff60)
(cherry picked from commit d98499a394)

* Update README.md

(cherry picked from commit 671234b08f)
(cherry picked from commit 6a707548ff)

---------

Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: Giuseppe Digilio <giuseppe.digilio@4science.com>
2024-12-18 16:45:16 -06:00
Tim Donohue
0d8c5f12a3 Merge pull request #10145 from DSpace/backport-9817-to-dspace-7_x
[Port dspace-7_x] fix for #9312: properly type in field id, adjust use of getProperty and add error handling
2024-12-18 16:05:38 -06:00
Tim Donohue
ad033ef1ba Merge pull request #10143 from DSpace/backport-9913-to-dspace-7_x
[Port dspace-7_x] Submission scope naming for input field validation fixed
2024-12-18 15:56:13 -06:00
igorbaptist4
c86d082d5f fix: set default configFile
(cherry picked from commit a5e8d7aa15)
2024-12-18 21:02:37 +00:00
igorbaptist4
3a223e3fef fix line length checkstyle
(cherry picked from commit 338f3b1d3e)
2024-12-18 20:57:22 +00:00
igorbaptist4
973beee2ce fix: properly type in field id, adjust use of getProperty and add error handling when dbPath is null (when property usage-statistics.dbfile is commented
(cherry picked from commit 412d5751f2)
2024-12-18 20:57:22 +00:00
Jukka Lipka
31faf809d1 fix(submission): Submission scope naming fixed
Corrected wording in related code comment

(cherry picked from commit ec2187ea65)
2024-12-18 20:47:49 +00:00
Jukka Lipka
95742fe4f3 fix(submission): Submission scope naming fixed
According to the documentation, the value for the <visibility> property is 'submission' in the 'submission-forms.xml'. Without this change, an empty input field will never be marked as an error, even if the field is marked as 'required'.

(cherry picked from commit 02f52c7d5c)
2024-12-18 20:47:49 +00:00
Tim Donohue
026a0aa9ab Merge pull request #10138 from DSpace/backport-10057-to-dspace-7_x
[Port dspace-7_x] Add limit, offset, and total facet count to Solr query for the metadata browse index
2024-12-18 12:57:36 -06:00
Toni Prieto
fcc650e1a6 Add limit, offset, and a new parameter to calculate the total entry count in the Solr query used for the metadata navigation index
(cherry picked from commit e71de8a4d0)
2024-12-18 18:05:26 +00:00
Tim Donohue
b4d4588d34 Merge pull request #10136 from DSpace/backport-9834-to-dspace-7_x
[Port dspace-7_x] More information about failed DOI registrations.
2024-12-17 16:01:36 -06:00
Tim Donohue
89b8e92512 Merge pull request #10134 from DSpace/backport-10132-to-dspace-7_x
[Port dspace-7_x] [Docker] Minor Dockerfile enhancements to stabilize & speed up automated builds
2024-12-17 16:01:01 -06:00
Mark H. Wood
e5568157c8 More information about failed DOI registrations.
(cherry picked from commit b8f4ab0eb3)
2024-12-17 21:11:32 +00:00
Tim Donohue
58af9fd224 Significantly speed up build of dspace-dependencies by only copying over POM files
(cherry picked from commit 6d7a3fcb72)
2024-12-17 20:52:35 +00:00
Tim Donohue
aa027aefae Improve Apache Ant download process. Switch to using curl so that we can retry the request if it initially fails.
(cherry picked from commit e236634a4c)
2024-12-17 20:52:35 +00:00
Tim Donohue
4e59693da5 Merge pull request #10131 from tdonohue/port_9760_to_7x
[Port dspace-7_x] Improve Group2GroupCache computation
2024-12-17 12:12:35 -06:00
autavares-dev
05bac14716 Refactor 'var' variables to explicit types 2024-12-17 11:11:37 -06:00
autavares-dev
64cb3bda00 Changes Group2GroupCache computation 2024-12-17 11:11:20 -06:00
Nona Luypaert
ecbb8682a7 Merge remote-tracking branch 'contributions/w2p-121971_openaire-compliance-updates-7.6' into w2p-121973_openaire-compliance-updates-7.x 2024-12-17 11:43:38 +01:00
Tim Donohue
8e6371c9b5 Merge pull request #10122 from DSpace/backport-10120-to-dspace-7_x
[Port dspace-7_x] [GitHub Actions] Refactor Docker build process to use ghcr.io for build, and then copy to docker.io once build completes
2024-12-16 15:14:37 -06:00
Tim Donohue
a27f1ed175 Ensure "docker-deploy" job also uses ghcr.io by default. 2024-12-16 13:57:18 -06:00
Tim Donohue
296c9a12f4 PRs must also login to ghcr.io in order to read private images for the build process 2024-12-16 13:57:11 -06:00
Tim Donohue
2a6c60e139 Refactor Docker build process to use ghcr.io for build, and then copy to docker.io once build completes 2024-12-16 13:56:53 -06:00
Tim Donohue
5869f03b51 Merge pull request #10115 from tdonohue/port_10800_to_7x
[Port dspace-7_x] [Docker] Use fully qualified image names & allow for other registries to be used
2024-12-12 16:49:44 -06:00
Tim Donohue
2ee328ff18 Minor Dockerfile cleanup. Use new syntax for ENV variables 2024-12-12 16:15:10 -06:00
Tim Donohue
a6d2c4897b Add Docker registry to all scripts. Allow it to be configurable for DSpace images (only). Other minor Dockerfile cleanup 2024-12-12 16:15:10 -06:00
Nona Luypaert
e540168594 121971: #9867 - Remove objectType attribute from openaire crosswalk 2024-12-12 09:18:40 +01:00
Nona Luypaert
52e5b35c06 121971: #9664 - Make cclicense step required in openaire submission form 2024-12-12 09:16:21 +01:00
Marie Verdonck
93aaece18f Merge branch 'w2p-109807_external-sources-fixes-7.6' into issue-10110_w2p-109807_arxiv-author-mapping-fix-7_x 2024-12-12 01:28:52 +01:00
Marie Verdonck
e0d67c2bd4 Merge remote-tracking branch 'atmire-gitlab/w2p-109807_external-sources-fixes' into w2p-109807_external-sources-fixes-7.6 2024-12-12 01:27:05 +01:00
Nona Luypaert
31c79500ce 121971: #9716 - Only dc.date.embargo should have date type Available 2024-12-11 21:49:37 +01:00
Nona Luypaert
04953b94d9 121971: #9715 - Only dc.date.issued should have date types Accepted and Issued 2024-12-11 21:46:17 +01:00
Nona Luypaert
c017a662e0 121971: #9669 - Remove unsupported OpenAIRE date types 2024-12-11 21:26:42 +01:00
Tim Donohue
ac9f7c16e6 Merge pull request #10101 from tdonohue/port_10091_to_7x
[Port dspace-7_x] [GitHub Actions] Ensure PRs against main also use "latest" tag when running test Docker deployment
2024-12-10 12:14:12 -06:00
Tim Donohue
b8c88ef284 Ensure PRs against main also use "latest" tag 2024-12-10 11:33:51 -06:00
Tim Donohue
f0bb57a4c2 Merge pull request #10087 from tdonohue/port_github_action_docker_to_7x
[Port dspace-7_x] [GitHub Actions] Port several Docker building improvements
2024-12-09 11:56:32 -06:00
Tim Donohue
78855cdbba Ensure we use the main Docker image, and not the "-test" image. 2024-12-09 10:18:32 -06:00
Tim Donohue
3c0e7158a2 Ensure each image has a separate cache. This allows later builds of that same image to inherit that cache. 2024-12-06 17:16:40 -06:00
Tim Donohue
020fec96d8 Ensure PRs are tagging their images with same tag as the base branch the PR was created against 2024-12-06 17:16:26 -06:00
Tim Donohue
46c169fb79 Refactor to use the same local TAR image build for PRs and non-PRs. These TAR images act as a cache for our current build. 2024-12-06 17:16:19 -06:00
Tim Donohue
0fc0f181fd Enable caching of Docker builds using GitHub Actions cache 2024-12-06 17:16:14 -06:00
Tim Donohue
1f5defe643 Ensure non-PRs run image build twice. First for a DockerHub image, then to export a local tarball. Since these are different image types they cannot be combined 2024-12-06 17:16:06 -06:00
Tim Donohue
8d34f06396 Update Actions to always deploy the locally created image. non-PRs do not need to redownload images from DockerHub. 2024-12-06 17:16:01 -06:00
Tim Donohue
f8bf278f06 Ensure login occurs *before* setup-buildx, as some buildx commands appear to be unauthenticated. 2024-12-06 17:15:54 -06:00
Tim Donohue
f26a732ab8 Merge pull request #10082 from DSpace/backport-9728-to-dspace-7_x
[Port dspace-7_x] Improve observability of running processes + Fail them during startup
2024-12-05 15:43:01 -06:00
Nona Luypaert
8bc100375a 116609: Add try catch to init method in ProcessServiceImpl
(cherry picked from commit 070fe689d7)
2024-12-05 21:00:48 +00:00
Nona Luypaert
3f836ae7a5 116687: Never handle exception with null message
(cherry picked from commit bdf7069cb7)
2024-12-05 21:00:48 +00:00
Nona Luypaert
1ba7ca3bdd 116609: Add tomcat shutdown line to process log
(cherry picked from commit 156ad471b5)
2024-12-05 21:00:48 +00:00
Nona Luypaert
25fb8111f1 116609: Improve running process observability
- keep temp process log files in [dspace]/log/processes/ instead of temp dir
- reformat file names of process logs
- ensure that running and scheduled processes are cleaned up during startup

(cherry picked from commit d80f49e023)
2024-12-05 21:00:48 +00:00
Tim Donohue
a1d2504ab3 Merge pull request #10068 from DSpace/backport-9658-to-dspace-7_x
[Port dspace-7_x] Feature curation link checker customizations
2024-12-03 09:53:43 -06:00
Nathan Buckingham
3ff38ec4b4 115778: Adjust redirect check to only follow a limited amount defined in curate.cfg
(cherry picked from commit ef381aa151)
2024-12-03 15:17:19 +00:00
Marie Verdonck
be905a0887 110719: IT checking redirect links accepted by checklinks curate task
(cherry picked from commit e826660cb0)
2024-12-03 15:17:19 +00:00
Nathan Buckingham
2136dbf690 110719: Port fix to checkLinks that works on redirects
(cherry picked from commit 3dab2a7cea)
2024-12-03 15:17:19 +00:00
Tim Donohue
df4ddc8197 Merge pull request #10061 from DSpace/backport-9941-to-dspace-7_x
[Port dspace-7_x] Fixed dso endpoint returning 500 for unauthorized users
2024-12-02 10:58:09 -06:00
Alexandre Vryghem
38a71cc664 119960: Fixed NPE when retrieving a DSpace object with the api/dso/find endpoint without the required permissions
(cherry picked from commit dd8b1d91cb)
2024-12-02 16:07:46 +00:00
Marie Verdonck
54a1c75cbc 109807: ArXiv mapping fix - author/name to dc.contributor.author
https://info.arxiv.org/help/api/basics.html#using
2024-11-28 13:06:23 +01:00
Tim Donohue
88b5ce81a6 Merge pull request #10041 from DSpace/backport-10040-to-dspace-7_x
[Port dspace-7_x] [GitHub Actions] Ensure all optional modules are enabled in our test Docker deployment
2024-11-22 16:28:05 -06:00
Tim Donohue
cf99694a84 Fix startup errors for SWORDv2. Requires the log4jv1->v2 bridge to be installed. 2024-11-22 16:03:16 -06:00
Tim Donohue
66a9782eee Fix syntax error in #10040. Env variables cannot have dashes or periods 2024-11-22 16:03:16 -06:00
Tim Donohue
f44dba60cb Enable all optional modules/controllers to test their deployment in Spring Boot
(cherry picked from commit 98768d6f4f)
2024-11-22 16:03:15 -06:00
Tim Donohue
bbf9ccf2ab Merge pull request #10034 from tdonohue/port_10032_to_7x
[Port dspace-7_x] Remove unused dependencies from several modules
2024-11-21 11:58:16 -06:00
Tim Donohue
9f8240987b Remove unused dependencies from several modules 2024-11-21 11:24:23 -06:00
Tim Donohue
888332a8d5 Merge pull request #10020 from tdonohue/port_10014_to_7x
[Port dspace-7_x] Dependency cleanup for OAI-PMH and Log4j (removing log4j v1 bridge & settings which used it)
2024-11-18 14:40:16 -06:00
Tim Donohue
f3d15e5c04 Log4j cleanup. Remove last traces of log4j v1 (and remove log4j1 bridge to avoid them coming back). Create log4j2 settings for Handle Plugin. 2024-11-18 14:02:14 -06:00
Tim Donohue
d952fea6a2 Remove parboiled-java and minor cleanup of unused OAI dependencies 2024-11-18 13:39:06 -06:00
Tim Donohue
ca176b77b2 Merge pull request #10017 from DSpace/backport-10016-to-dspace-7_x
[Port dspace-7_x] [GitHub Actions] More fixes to Docker deployment builds
2024-11-15 17:13:00 -06:00
Tim Donohue
f0c92ac96b Ensure only main branch uses "latest". Other branches should use the tag corresponding to the branch name
(cherry picked from commit e0b7241acb)
2024-11-15 22:42:11 +00:00
Tim Donohue
7e18e743ee Merge pull request #10011 from DSpace/backport-10010-to-dspace-7_x
[Port dspace-7_x] [GitHub Actions] Minor bug fix to Docker deployment builds
2024-11-15 10:26:42 -06:00
Tim Donohue
7fa31e2131 Ensure we use "pr-testing" images for PRs, but use "latest" images for other builds (e.g. after PR is merged to a branch).
(cherry picked from commit aa537c4490)
2024-11-15 15:34:38 +00:00
Tim Donohue
90b58833ec Merge pull request #9995 from DSpace/backport-9746-to-dspace-7_x
[Port dspace-7_x] Fix 9734: Check configured workflow.reviewer.file-edit to show item e…
2024-11-14 14:54:50 -06:00
Agustina Martinez
aa71e4840b Fix 9734: Check configured workflow.reviewer.file-edit to show item edit functionality in workflow UI
(cherry picked from commit e8ec0c1b1d)
2024-11-14 20:11:05 +00:00
Tim Donohue
3f1f4cb217 Merge pull request #9993 from tdonohue/port_9973_to_7x
[Port dspace-7_x] [GitHub Actions] Add a job to test Docker deployment with newly built images & test Handle Server
2024-11-13 16:45:25 -06:00
Tim Donohue
5bb65c6b56 Fix error in Handle Server startup caused by having multiple versions of BouncyCastle in our classpath. Exclude the old version brought in by cnri-servlet-container 2024-11-13 15:11:36 -06:00
Tim Donohue
d6d78298b3 Add check for Handle Server error.log 2024-11-13 15:11:30 -06:00
Tim Donohue
a0ed4a40ea Bug fixes. Ensure all steps of docker-deploy use the same environment variables. Ensure Handle Server HTTP port is open 2024-11-13 15:11:12 -06:00
Tim Donohue
faca14ad40 Ensure "host" command is installed in images, so "bin/make-handle-config" will work. 2024-11-13 15:09:47 -06:00
Tim Donohue
9853aa5bb4 Fix error in running Handle Server in GitHub Actions. Must exclude "spring-jcl" from dependencies as it conflicts with "commons-logging" (used by more of our dependencies) 2024-11-13 15:06:41 -06:00
Tim Donohue
c1f168245b Ensure Docker images built from PRs are stored as artifacts. This allows us to use those new images when testing deployment (in docker-deploy) 2024-11-13 15:06:32 -06:00
Tim Donohue
3ce85a2df3 Add a check that the Handle Server can be started & works properly 2024-11-13 15:06:25 -06:00
Tim Donohue
c66dde2aa8 Add a job to test Docker deployment with the built images 2024-11-13 15:06:18 -06:00
Tim Donohue
7017f5ecb1 Merge pull request #9976 from DSpace/backport-9861-to-dspace-7_x
[Port dspace-7_x] performance of claiming workflow task fix
2024-11-11 16:00:36 -06:00
Andrew
fde825265d fix: performance of claiming workflow task
(cherry picked from commit 27dd5a2ec5)
2024-11-11 21:15:41 +00:00
Tim Donohue
426d3abde0 Merge pull request #9974 from DSpace/backport-9890-to-dspace-7_x
[Port dspace-7_x] Status of DOI object should be set to TO_BE_DELETED when the related item is removed
2024-11-11 12:20:45 -06:00
Jens Vannerum
831db33018 118774: status of doi should be set to TO_BE_DELETED when related item is removed permanently
(cherry picked from commit 352f4c2152)
2024-11-11 16:40:56 +00:00
Tim Donohue
a452f035c3 Merge pull request #9969 from DSpace/backport-9968-to-dspace-7_x
[Port dspace-7_x] Improve logging of Unit & Integration Tests.  Ensure all tests log which method they are running.
2024-11-06 15:53:10 -06:00
Tim Donohue
68266cd3c1 Move logging of test methods to Abstract*Test classes in dspace-api. That way they work for **both** dspace-server-webapp and dspace-api tests.
(cherry picked from commit bd20c9262b)
2024-11-06 21:12:01 +00:00
Andreas Awouters
30cd44c196 Merge branch 'accessibility-settings-7.6' into accessibility-settings-7_x 2024-11-06 09:41:36 +01:00
Andreas Awouters
10a95ae92a 119602: Add accessibility settings metadata field 2024-11-06 09:39:33 +01:00
Tim Donohue
68b800f070 Merge pull request #9897 from DSpace/backport-9894-to-dspace-7_x
[Port dspace-7_x] Add Eclipse JDT .factorypath to .gitignore
2024-10-16 10:31:32 -05:00
Kim Shepherd
6018f926d7 Add Eclipse JDT .factorypath to .gitignore
(cherry picked from commit 9ce645e08b)
2024-10-16 15:28:30 +00:00
Miika Nurminen
31d36e7abf Bugfix: BitstreamRestController etag/content-length calculation does not consider cover page
Ported Alphonse Bendt's PR #9666 to DSpace 7 branch (squashed 5 commits).
This PR fixes a bug where the etag/content-length calculation did not respect the potential existence of a coverpage.
The controller now will use the post processed pdf if coverpages are enabled.
2024-10-16 11:48:10 +03:00
Brian Keese
4a4a8bcb22 Fix full-text indexing for files over the character limit
The error handler for files over the limit logged the correct message, but never actually added the full text to the index doc.
2024-10-15 11:38:54 -05:00
Tim Donohue
e9290f4bdc Merge pull request #9888 from tdonohue/update_latest_spring5
Bump `dspace-7_x` to Spring 5.3.39 and Spring Security 5.7.12
2024-10-14 08:42:57 -05:00
Tim Donohue
70dd847759 Revert to Spring Security 5.7.12. Spring Security 5.8.x changes behavior of CSRF tokens 2024-10-11 16:41:40 -05:00
Tim Donohue
1e47fa61d9 Bump to Spring 5.3.39 and Spring Security 5.8.14 2024-10-11 14:38:47 -05:00
Tim Donohue
ce1edc3bd3 Merge pull request #9877 from DSpace/backport-9777-to-dspace-7_x
[Port dspace-7_x] several optimizations in HAL browser login page
2024-10-08 14:11:57 -05:00
Sascha Szott
4669d8f760 applied change suggested by reviewer: use String.prototype.includes
(cherry picked from commit 546afb189e)
2024-10-08 19:11:02 +00:00
Sascha Szott
a721f8c41e fix failed first login attempt in HAL browser
(cherry picked from commit 002e637d4f)
2024-10-08 19:11:02 +00:00
Tim Donohue
5ad4adbddc Merge pull request #9862 from DSpace/backport-9859-to-dspace-7_x
[Port dspace-7_x] minor fix in parameter description in subscriptions_content
2024-09-27 10:47:18 -05:00
Sascha Szott
702ff9cf4c minor fix in parameter description
(cherry picked from commit 5758d9e903)
2024-09-27 15:44:49 +00:00
Tim Donohue
7b98632152 Merge pull request #9857 from DSpace/backport-9678-to-dspace-7_x
[Port dspace-7_x] LDAPAuthentication considers update of eperson's attributes
2024-09-26 16:12:58 -05:00
Sascha Szott
31af49ea72 fix Checkstyle violations
(cherry picked from commit aaa74b88c9)
2024-09-26 18:27:55 +00:00
Sascha Szott
b0370a064b add missing import
(cherry picked from commit c5ad32a9b3)
2024-09-26 18:27:55 +00:00
Sascha Szott
405397b8b0 update eperson's attributes right after successful login
(cherry picked from commit 428489ca52)
2024-09-26 18:27:55 +00:00
kshepherd
43c25c9972 Merge pull request #9838 from DSpace/backport-9581-to-dspace-7_x
[Port dspace-7_x] Add missing wosPublisherContrib key-ref in wos-integration.xml (#9579)
2024-09-19 15:49:16 +02:00
Mikhail Schastlivtsev
a49ee62450 add missing publisher metadatum in test (#9579)
(cherry picked from commit cde892c8c7)
2024-09-19 12:05:06 +00:00
Mikhail Schastlivtsev
9031322e7d add missing wosPublisherContrib key-ref in wos-integration.xml (#9579)
(cherry picked from commit 6a8c76bbe1)
2024-09-19 12:05:06 +00:00
Tim Donohue
b6209e0a95 Merge pull request #9801 from tdonohue/port_9668_to_7x
[Port dspace-7_x] Fix for DSpace#9667: Request-a-copy link generation for base URLs that have sub-paths
2024-09-06 16:40:59 -05:00
Tim Donohue
4ac4c911cf Singular name needed in 7.x 2024-09-06 16:08:49 -05:00
Kim Shepherd
7ec746d005 lint fixes (RequestItemRepository) 2024-09-06 13:54:01 -05:00
Kim Shepherd
ab43b86066 Tidy implementation of link token generation 2024-09-06 13:54:01 -05:00
Kim Shepherd
1914aac18b Improved URI build method as per review 2024-09-06 13:54:01 -05:00
Kim Shepherd
64255ffb05 #9668: Ensure proper handling of non-subpath URLs in link tokens 2024-09-06 13:54:01 -05:00
Kim Shepherd
cdb255feca Make RequestItemRepository#getLinkTokenEmail public, write test 2024-09-06 13:54:01 -05:00
Kim Shepherd
724f821bee Fix request a copy link token generation
Ensure DSpace URLs with extra segments are included
fully in the generated link
2024-09-06 13:54:00 -05:00
Tim Donohue
65232f64d3 Merge pull request #9812 from DSpace/backport-9807-to-dspace-7_x
[Port dspace-7_x] Rewrite DSpace integration tests to consistently use AbstractBuilder<T> builders
2024-09-06 12:21:42 -05:00
Kim Shepherd
123aedde04 #9806: Move cleanup of handle provider to destroy in VersionedHandleIdentifierProviderIT
(cherry picked from commit f6cabe648d)
2024-09-06 16:49:19 +00:00
Kim Shepherd
89796ece6b #9806: Set explicit id provider before VersioningWithRelationshipsIT
(cherry picked from commit 4af6900650)
2024-09-06 16:49:19 +00:00
Kim Shepherd
48c8848fc2 #9806: Use builders for creation in VersioningWithRelationshipsIT
I am a bit uncertain about the createBean() calls here, why do
we not simply *get* the configured beans using the service manager
instead, but will look at that in a separate change

(cherry picked from commit 3521ab6d35)
2024-09-06 16:49:19 +00:00
Kim Shepherd
282d4db36b #9806: Align provider reg in CreateMissingIdentifiersIT with other tests
VersionedHandlerIdentifierProviderIT uses this registerProvider method
which looks more reliable and doesn't do a refresh/reload of
applicationContext after (which I suspected might have an odd interaction
with VersioningWithRelationshipsIT and its createBean() calls?)

(cherry picked from commit 90536e443b)
2024-09-06 16:49:19 +00:00
Kim Shepherd
5fd99d8b14 #9806: Update object cleanup in GroupRestRepositoryIT
(cherry picked from commit 8cfb433c40)
2024-09-06 16:49:19 +00:00
Kim Shepherd
e6a0bb8943 #9806: Builders for comm, coll, group in CommunityAdminGroupRestControllerIT
(cherry picked from commit 2d9988f77c)
2024-09-06 16:49:19 +00:00
Kim Shepherd
968559bbaf #9806: Use builders for comm, coll, group creation in CollectionGroupRestControllerIT
(cherry picked from commit f4629d8351)
2024-09-06 16:49:19 +00:00
Kim Shepherd
b9278cbf33 #9806: Use builders for comm, coll, group creation in SupervisionOrderServiceIT
(cherry picked from commit 6e9181e3f7)
2024-09-06 16:49:19 +00:00
Kim Shepherd
ffc807205f #9806: Refactor WorkspaceItemBuilder to support specific item uuid
(cherry picked from commit b99b1eec29)
2024-09-06 16:49:19 +00:00
Kim Shepherd
8d576f8300 #9806: Use builders for group, comm, coll creation in StructBuilderIT
(cherry picked from commit 2ef69045d1)
2024-09-06 16:49:18 +00:00
Kim Shepherd
67fa262b83 #9806: Use builders for group, comm, coll creation in PackagerIT
(cherry picked from commit 1f475aa731)
2024-09-06 16:49:18 +00:00
Kim Shepherd
690dfa0809 #9806: Tidy imports for GroupRestRepositoryIT
(cherry picked from commit 80328eaca5)
2024-09-06 16:49:18 +00:00
Kim Shepherd
b9b135163f #9806: Use builders for coll, comm, group creation in GroupRestRepositoryIT
(cherry picked from commit 9205773802)
2024-09-06 16:49:18 +00:00
Kim Shepherd
2ff2297b1f #9806: Use builders for coll, comm, group creation in BitstreamRestRepositoryIT
(cherry picked from commit b13abac753)
2024-09-06 16:49:18 +00:00
Kim Shepherd
404039ade6 #9806: Add new create methods to group builder
Now supports admin groups, default read, workflow role

(cherry picked from commit cdb167e55a)
2024-09-06 16:49:18 +00:00
Tim Donohue
730e87536d Merge pull request #9798 from DSpace/backport-9796-to-dspace-7_x
[Port dspace-7_x] Translate underscores to dashes in xml:lang attr for DIM2DataCite.xsl
2024-09-03 13:33:06 -05:00
Kim Shepherd
e15f60abd3 Translate underscores to dashes in xml:lang attr for DIM2DataCite.xsl
Modified the DataCite crosswalk to ensure that the xml:lang attribute translates any underscores in the value of @lang to dashes. This change aligns the attribute formatting with standard language code conventions.

(cherry picked from commit a898afd5ac)
2024-09-03 17:19:12 +00:00
Tim Donohue
2ad5172120 Merge pull request #9790 from DSpace/backport-9775-to-dspace-7_x
[Port dspace-7_x] Make statistics autocommit much more frequently
2024-08-29 16:50:41 -05:00
Mark H. Wood
41312eec6e Make statistics autocommit much more frequent.
(cherry picked from commit 5c9af9764e)
2024-08-29 21:22:50 +00:00
kshepherd
8b3bf176fb Merge pull request #9784 from DSpace/backport-9684-to-dspace-7_x
[Port dspace-7_x] Crossref metadata import: change order of person name parts
2024-08-29 20:40:17 +02:00
Tim Donohue
94fca6fe35 Merge pull request #9789 from tdonohue/port_9497_to_7x
[Port dspace-7_x] In workflow-attached curation, separate task-list building from execution.
2024-08-29 12:11:20 -05:00
Tim Donohue
e570135689 Merge pull request #9786 from DSpace/backport-9765-to-dspace-7_x
[Port dspace-7_x] Fix index-discovery process when using handle
2024-08-29 10:41:47 -05:00
Mark H. Wood
0d74bd9f18 Separate task-list building from execution.
The old code would curate the object once for each task, meaning that all
but one task would be executed N times up to the length of the list.
2024-08-29 10:32:56 -05:00
autavares-dev
ffc99d06a1 Fix index-discovery process when using handle
(cherry picked from commit 077aed38dc)
2024-08-29 15:10:11 +00:00
Sascha Szott
7e87d57672 fix broken unit tests
(cherry picked from commit 1712b9f078)
2024-08-29 15:03:01 +00:00
Sascha Szott
f61c45bdc6 change order of name parts: familyName, givenName
(cherry picked from commit 076f1f233e)
2024-08-29 15:03:01 +00:00
Bram Luyten
8a997abf6a Merge pull request #9771 from DSpace/backport-9671-to-dspace-7_x
[Port dspace-7_x] DataCite DOI error fixes
2024-08-23 14:16:27 +02:00
Kristof De Langhe
c1be5f8e4e 115693: Pass doi metadatafield with xsl parameters
(cherry picked from commit 9e11e1f9ae)
2024-08-23 11:24:58 +00:00
Kristof De Langhe
d240a16b05 115693: DataCiteConnector fallback for blank metadata doi
(cherry picked from commit 021e424347)
2024-08-23 11:24:58 +00:00
Kristof De Langhe
f1dc25195f 115693: data-cite xsl targetting dc.identifier.uri fixes doi registration error
(cherry picked from commit c5d08f037c)
2024-08-23 11:24:58 +00:00
Tim Donohue
d23bf4c3cd Merge pull request #9743 from DSpace/backport-9742-to-dspace-7_x
[Port dspace-7_x] Fix potentially invalid usages of == operator
2024-08-02 11:57:54 -05:00
Sascha Szott
36ff5ca6cb use equals instead of ==
(cherry picked from commit a13cc82d40)
2024-08-02 16:24:13 +00:00
Sascha Szott
6a5236f2f9 use equals instead of ==
(cherry picked from commit d2ef7b01ef)
2024-08-02 16:24:13 +00:00
Sascha Szott
dc09d06ed6 use equals instead of ==
(cherry picked from commit 5e3552ee38)
2024-08-02 16:24:13 +00:00
Sascha Szott
b8f638b3b6 use equals instead of ==
(cherry picked from commit 80de8f6fb5)
2024-08-02 16:24:13 +00:00
Tim Donohue
275b0f89b7 Merge pull request #9740 from DSpace/backport-9737-to-dspace-7_x
[Port dspace-7_x] fix invalid usage of == operator
2024-08-02 11:08:28 -05:00
Sascha Szott
24318e01b8 fix invalid usage of == operator
(cherry picked from commit fa0fb14a18)
2024-08-02 14:49:40 +00:00
Tim Donohue
54bd5dd189 Merge pull request #9710 from atmire/w2p-116319_fix-metadata-import-setting-language-as-any-instead-of-null-upstream-7-x
[Port dspace-7_x] Fix issue where CSV Import / Export can clear metadata if there are metadata values with language "*" (Item.ANY)
2024-07-25 10:22:55 -05:00
Vincenzo Mecca
26905b7d45 [CST-14901][DSC-1357][#8662] Handles versioning for ORCID publications.
feat:
 - ORCID publications waiting to be published are removed whenever a new version is created
 - ORCID publications already published will be updated with the ref to the last item version
 - ORCID consumer will process only latest item versions, ignoring all the other ones
2024-07-25 11:44:37 +02:00
Vincenzo Mecca
affa4b00ff [CST-14905] Orcid revoke token feature 2024-07-24 19:39:21 +02:00
Tim Donohue
f6208bc1ce Merge pull request #9719 from DSpace/backport-9717-to-dspace-7_x
[Port dspace-7_x] Update spider list URLs to satisfy Cloudflare redirects
2024-07-23 14:28:03 -05:00
Kim Shepherd
30b6eddeb6 Update spider list URLs to satisfy cloudflare redirects
Update spider list URLs to satisfy cloudflare redirects

Update spider list URLs to satisfy cloudflare redirects

(cherry picked from commit d22ea117ca)
2024-07-23 18:53:56 +00:00
Tim Donohue
a3b27bdfb6 Merge pull request #9712 from DSpace/backport-9711-to-dspace-7_x
[Port dspace-7_x] Bump dnsjava:dnsjava from 2.1.9 to 3.6.0 in /dspace-api
2024-07-22 14:00:51 -05:00
dependabot[bot]
fff8cc3cb4 Bump dnsjava:dnsjava from 2.1.9 to 3.6.0 in /dspace-api
Bumps [dnsjava:dnsjava](https://github.com/dnsjava/dnsjava) from 2.1.9 to 3.6.0.
- [Release notes](https://github.com/dnsjava/dnsjava/releases)
- [Changelog](https://github.com/dnsjava/dnsjava/blob/master/Changelog)
- [Commits](https://github.com/dnsjava/dnsjava/compare/v2.1.9...v3.6.0)

---
updated-dependencies:
- dependency-name: dnsjava:dnsjava
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 1775c88919)
2024-07-22 18:19:36 +00:00
Jens Vannerum
7082e32595 116542: resolve issues after merge with latest 7-x branch 2024-07-22 15:18:44 +02:00
Jens Vannerum
8f049579dc Merge branch 'w2p-116319_fix-metadata-import-setting-language-as-any-instead-of-null' into w2p-116319_fix-metadata-import-setting-language-as-any-instead-of-null-upstream-7-x 2024-07-22 15:14:12 +02:00
Jens Vannerum
03cff072c3 116542: fix issues with CSV importing and the Any language being set on metadata values 2024-07-22 15:08:59 +02:00
Tim Donohue
086655712d Merge pull request #9707 from tdonohue/port_9704_to_7x
[Port dspace-7_x] Docker build: fix FromAsCasing warnings
2024-07-17 12:00:06 -05:00
Sascha Szott
e4209d5d0b fix FromAsCasing warning 2024-07-17 11:26:47 -05:00
Sascha Szott
9b6b7ded97 fix FromAsCasing warning 2024-07-17 11:26:36 -05:00
Sascha Szott
f340dfadbe fix FromAsCasing warning 2024-07-17 11:25:33 -05:00
Sascha Szott
83f3ea4d05 fix FromAsCasing warning 2024-07-17 11:24:15 -05:00
Tim Donohue
9e1ea61a0b Merge pull request #9693 from tdonohue/port_9691_to_7x
[Port dspace-7_x] Fix random test failures in LinksetRestControllerIT and ManageGroupsFeatureIT
2024-07-10 15:49:27 -05:00
Tim Donohue
3bb93be793 Fix random pagination failures in ManageGroupsFeatureIT by using the "feature" param to filter for the feature we are looking for. If this feature appeared on page 2, then the tests would fail. 2024-07-10 15:17:56 -05:00
Tim Donohue
17a46a2fb6 Remove unused services & unnecessary cache cleanup. This can result in random failures if these services are not yet loaded by another test. 2024-07-10 15:15:47 -05:00
Tim Donohue
e4874c9f2f Merge pull request #9683 from TexasDigitalLibrary/port_9682_to_7x
updated creative commons licenses version from 3.0 to 4.0
2024-07-09 15:43:21 -05:00
Tim Donohue
86b28bf927 [maven-release-plugin] prepare for next development iteration 2024-07-09 14:10:05 -05:00
Tim Donohue
08947bc34e [maven-release-plugin] prepare release dspace-7.6.2 2024-07-09 14:10:01 -05:00
Tim Donohue
98c661d8d0 Update redeployment of demo.dspace.org to use dspace-8_x branch. 2024-07-09 13:43:15 -05:00
Tim Donohue
12c3cc5b3e Update LICENSES_THIRD_PARTY (and related configs) for 7.6.2 release 2024-07-09 13:35:16 -05:00
nwoodward
2cb8204d3c updated creative commons licenses version from 3.0 to 4.0 2024-07-08 12:33:07 -05:00
kshepherd
d47c00a24b Merge pull request #9599 from tdonohue/port_new_csrf_endpoint_to_7x
[Port dspace-7_x] Add a GET `/csrf` endpoint to allow for forcing refresh of CSRF token
2024-06-29 14:57:45 +02:00
Tim Donohue
324020ac81 Merge pull request #9651 from DSpace/backport-9638-to-dspace-7_x
[Port dspace-7_x] Update configuration to always download HTML/JS/XML Bitstreams (no inline display)
2024-06-17 09:23:22 -05:00
Tim Donohue
3bcd33d92a To avoid misconfiguration, hardcode HTML, XML, RDF, JS to download only. Add a new wildcard setting to allow sites to force all files to download only.
(cherry picked from commit a091d343b9)
2024-06-17 07:23:16 +00:00
Tim Donohue
c30ff35448 For additional security, ensure "unknown" formats are always downloaded. Update test to prove behavior.
(cherry picked from commit 6da072de9e)
2024-06-17 07:23:16 +00:00
Tim Donohue
7951c8e428 Add a test to prove the default settings are to always download these formats
(cherry picked from commit e6bfb833ee)
2024-06-17 07:23:16 +00:00
Tim Donohue
7ba150f4fc Add XML to the list of formats to always download
(cherry picked from commit 39975e45cf)
2024-06-17 07:23:16 +00:00
Tim Donohue
7143c97248 Fix failing IT by increasing number of formats by one
(cherry picked from commit c61b7033f2)
2024-06-17 07:23:16 +00:00
Tim Donohue
0f74cb22bf Avoid inline display of HTML/JS bitstreams. Add JS to list of known formats so that it can be recognized by DSpace.
(cherry picked from commit 356a028186)
2024-06-17 07:23:16 +00:00
Tim Donohue
0b67aa3070 Merge pull request #9649 from DSpace/backport-9509-to-dspace-7_x
[Port dspace-7_x] Fix bug where empty metadata List can result in "Index 0 out of bounds for length 0" exceptions in several scenarios
2024-06-14 11:53:31 -05:00
Tim Donohue
c890199cfe Add tests to verify behavior of addMetadata() when encountering virtual metadata
(cherry picked from commit 2eb7dbca6b)
2024-06-14 14:58:15 +00:00
Tim Donohue
872af33155 Fix bug in MetadataImport where it could call addMetadata() with empty values. Minor refactors to MetadataImportIT to make findItemByName more efficient.
(cherry picked from commit f8ac8edc49)
2024-06-14 14:58:15 +00:00
Tim Donohue
30dafa09d0 Fix testAddMetadata_5args_2 to no longer be *identical* to testAddMetadata_5args_1. It appears this second test was meant to test a different addMetadata() method which accepts a single Value instead of a List
(cherry picked from commit 25f722ed98)
2024-06-14 14:58:15 +00:00
Tim Donohue
8407c571db Throw IllegalArgumentException if addMetadata() called without values. Add unit tests to prove it works
(cherry picked from commit ed918a8d0c)
2024-06-14 14:58:15 +00:00
Tim Donohue
928dad1c5c Ensure List is not empty before returning first value
(cherry picked from commit 068bcdf3af)
2024-06-14 14:58:15 +00:00
Tim Donohue
370550c06b Merge pull request #9643 from DSpace/backport-9621-to-dspace-7_x
[Port dspace-7_x] Fixed item edit relationships with same type name but different entities all being shown under same label
2024-06-10 09:37:09 -05:00
Tim Donohue
2bf663e5a1 Merge pull request #9642 from DSpace/backport-9594-to-dspace-7_x
[Port dspace-7_x] Metadata Import via Scopus API: improved handling of empty search results
2024-06-07 15:52:26 -05:00
Alexandre Vryghem
7789304ebe 115434: Added test proving that different values for relatedEntityType return different results
(cherry picked from commit bbae1fb0d1)
2024-06-07 20:09:19 +00:00
Alexandre Vryghem
8d82457eb7 115434: Added relatedEntityType parameter to byLabel endpoint to differentiate relationships with same label and different entity types
(cherry picked from commit 8512fab392)
2024-06-07 20:09:19 +00:00
Sascha Szott
8e56fdd95b fixed failed test
(cherry picked from commit 6989cb6f15)
2024-06-07 19:59:21 +00:00
Sascha Szott
2b1270197e improve handling of 0 hits responses of Scopus API
(cherry picked from commit b12bd6ce56)
2024-06-07 19:59:21 +00:00
Sascha Szott
6e5c5089ab Update scopus-empty-resp.xml
(cherry picked from commit 4b2ea66f19)
2024-06-07 19:59:21 +00:00
Sascha Szott
26658b6665 evaluate surname and given-name if authname is not present
(cherry picked from commit 8b5f044537)
2024-06-07 19:59:21 +00:00
Tim Donohue
e8991992fc Merge pull request #9637 from DSpace/backport-9629-to-dspace-7_x
[Port dspace-7_x] Ensure work directory is cleaned up even when Zip export fails
2024-06-06 10:44:27 -05:00
Tim Donohue
95fc68b3ee Ensure work directory is cleaned up whether zip file is created successfully or an error occurs.
(cherry picked from commit b7f764746c)
2024-06-06 14:53:00 +00:00
Tim Donohue
1769f16d7a Merge pull request #9635 from DSpace/backport-9539-to-dspace-7_x
[Port dspace-7_x] Fixed too long classpath bug in test_databaseFixed classpath issue in test_database target
2024-06-05 15:27:53 -05:00
Jean-François Morin
4cd3b75e67 Fixed classpath issue in test_database target
(cherry picked from commit 6937c19973)
2024-06-05 19:14:17 +00:00
Tim Donohue
3ad22bf977 Merge pull request #9634 from tdonohue/port_9625_to_7x
[Port dspace-7_x] updates creativecommons.org links to https
2024-06-05 12:01:26 -05:00
nwoodward
c5d139c9e1 updates creativecommons.org links to https 2024-06-05 11:24:30 -05:00
Tim Donohue
a95ed84b75 Merge pull request #9632 from DSpace/backport-9605-to-dspace-7_x
[Port dspace-7_x] Fix for Bump org.apache.commons:commons-configuration2 from 2.9.0 to 2.10.1
2024-06-05 10:35:53 -05:00
Andrea Bollini
7fc74bdc56 DURACOM-267 assure that our custom DSpaceConfigurationPropertySource is used also for the spring context created by the DSpace kernel
(cherry picked from commit 4fcf995b69)
2024-06-05 14:38:44 +00:00
Andrea Bollini
b9e6af6758 DURACOM-267 improve handling of empty configuration property
(cherry picked from commit 0422b8786f)
2024-06-05 14:38:44 +00:00
Andrea Bollini
4b5248fe15 DURACOM-267 update commons-configuration2 fix according to the community feedback
(cherry picked from commit f2d4ffc49c)
2024-06-05 14:38:44 +00:00
Andrea Bollini
0d4d065d45 Create a temporary version of the ConfigurationPlaceholderConfigurer to overcome bu in 2.10
(cherry picked from commit d44d76ea03)
2024-06-05 14:38:44 +00:00
dependabot[bot]
fe76579d04 Bump org.apache.commons:commons-configuration2 from 2.9.0 to 2.10.1
Bumps org.apache.commons:commons-configuration2 from 2.9.0 to 2.10.1.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-configuration2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit df7220bd98)
2024-06-05 14:38:44 +00:00
Tim Donohue
6b23e6fac0 Merge pull request #9628 from DSpace/backport-9627-to-dspace-7_x
[Port dspace-7_x] Cleanup doi filters
2024-06-04 11:55:20 -05:00
Pascal-Nicolas Becker
2d150cb86c Cleanup doi filters
We can set filters in identifier-service.xml. Setting them in
modules/identifiers.cfg is just overidding the other one. To keep things
simple, we should avoid having two different filters for the same issue.
The filter configured in spring is working for any new DOI, while the
one we take out here, is just working for items being run through the
install item service.

(cherry picked from commit 59aaf3e57c)
2024-06-04 16:25:51 +00:00
Tim Donohue
1827b89937 Merge pull request #9626 from DSpace/backport-9619-to-dspace-7_x
[Port dspace-7_x] Remove the is-archived_condition from the doi-filter
2024-06-03 17:02:42 -05:00
Pascal-Nicolas Becker
b8a6711140 Remove the is_archived_condition from the doi-filter
In the conversation of #9271 kshepherd states that he had issues to
register DOIs when the doi-filter is usint the is_archived_condition. I
was able to reproduce these issues. This removes the reference to that
condition from the filter. The item is not archived when the
InstallItemService is trying to apply a DOI to it.

(cherry picked from commit 24da6fe769)
2024-06-03 21:24:15 +00:00
Tim Donohue
77827cdfaa Merge pull request #9624 from DSpace/backport-9618-to-dspace-7_x
[Port dspace-7_x] Update comments in identifier-service.xml
2024-06-03 12:04:20 -05:00
Pascal-Nicolas Becker
ac07f08497 Update comments in identifier-service.xml
The DOIIdentifierProvider using a filter was commented out twice. We
should show that it works with and without a filter. Furthermore one
comments looked cut off.

(cherry picked from commit 3dd49f4ac3)
2024-06-03 16:33:25 +00:00
Tim Donohue
0d014e5e9e Merge pull request #9617 from tdonohue/port_9273_to_7x
[Port dspace-7_x] MediaFilter over large repository result in downtime
2024-05-31 16:00:03 -05:00
Andrea Bollini
a09d46d8e4 DURACOM-225 fix lazy initialization traversing comms/colls 2024-05-31 14:30:11 -05:00
Andrea Bollini
88b44e9281 DURACOM-225 porting of the uuid iterator implementation from dspace-cris to retrie just the uuid from the database in the initial query 2024-05-31 14:30:04 -05:00
Andrea Bollini
86286474cc DURACOM-225 commit after each item to release DB resources 2024-05-31 14:29:59 -05:00
Andrea Bollini
96f490a3a0 DURACOM-225 add IT for the media filter script 2024-05-31 14:29:52 -05:00
Tim Donohue
4651ba8797 Merge pull request #9614 from DSpace/backport-9576-to-dspace-7_x
[Port dspace-7_x] Remove old UI references from OpenSearch / RSS feeds
2024-05-29 16:54:10 -05:00
Tim Donohue
fcbf8b80e3 Merge pull request #9609 from tdonohue/port_9583_to_7x
[dspace-7_x] Fix Item Counts (webui.strengths) by refactoring ItemCounter and ItemCountDAO to act like other Spring beans
2024-05-29 16:42:12 -05:00
Tim Donohue
3e831123b7 Add a basic test that refactoring of code results in correct logo URLs. Also enable/fix a test for special characters.
(cherry picked from commit 8c22915adf)
2024-05-29 20:56:51 +00:00
Tim Donohue
3b1cf3e35e Remove references to UI type from OpenSearch / RSS feeds
(cherry picked from commit 47b79bb2cb)
2024-05-29 20:56:51 +00:00
damian
ab0b80e57a Merge remote-tracking branch 'origin/refactor_item_counter' into refactor_item_counter 2024-05-24 16:50:51 -05:00
damian
a5901af564 Level up counting items methods - both now use the same flags from Item model (discoverable, archived, withdrawn) 2024-05-24 16:48:56 -05:00
damian
8ae9f9f251 Check withdrawn flag at item count method 2024-05-24 16:44:05 -05:00
Tim Donohue
be4dfeb140 Refactor ItemCounter and ItemCountDAO to act like other DSpace beans. Also ensure they do not cache a Context object. 2024-05-24 16:43:49 -05:00
Tim Donohue
eb9f63ab95 DSpace 7 requires using jvax not jakarta 2024-05-17 09:17:33 -05:00
Tim Donohue
fabd60db43 Update test to prove CSRF token changes for every GET request to endpoint 2024-05-16 16:46:44 -05:00
Tim Donohue
a6c369686d Add a GET /csrf endpoint to allow for forcing refresh of CSRF token 2024-05-16 16:39:17 -05:00
Tim Donohue
b3a4571d4c Merge pull request #9596 from paulo-graca/bugfixes/issue-7464
Fixing issue #7464 for DSpace 7
2024-05-16 13:13:23 -05:00
Paulo Graça
11062ae869 Fixing issue #7464 for DSpace 7 2024-05-16 17:03:25 +01:00
Tim Donohue
598fb1831f Merge pull request #9484 from 4Science/s3lazy_7x
Porting of Improve S3 Bitstream Storage to Lazy download object from S3 to 7_x
2024-05-16 10:59:23 -05:00
Tim Donohue
94965116ee Merge pull request #9590 from DSpace/backport-9588-to-dspace-7_x
[Port dspace-7_x] I18nUtil: reduce log level error to info or warn
2024-05-16 08:37:13 -05:00
Tim Donohue
c875f1c8e1 Merge pull request #9591 from DSpace/backport-9580-to-dspace-7_x
[Port dspace-7_x] improve interoperability: replace hard-coded slash by File.separator
2024-05-16 08:36:48 -05:00
Sascha Szott
f7a5c7375a replaced slash by File.separator
(cherry picked from commit 3e23fea0b8)
2024-05-15 21:59:43 +00:00
Sascha Szott
caf0671ce2 reduce log level error to info or warn
(cherry picked from commit bc4c6742d3)
2024-05-15 21:51:40 +00:00
Tim Donohue
5f29b52e4e Merge pull request #9586 from DSpace/backport-9582-to-dspace-7_x
[Port dspace-7_x] Add additional DOI prefixes
2024-05-15 13:36:06 -05:00
max.nuding
1d6ab238c0 Add additional DOI prefixes
(cherry picked from commit ba4edeed15)
2024-05-15 17:58:05 +00:00
Tim Donohue
33b6b4ba09 Merge pull request #9578 from DSpace/backport-9577-to-dspace-7_x
[Port dspace-7_x] Fix broken ITs after merger of #9485
2024-05-13 17:27:48 -05:00
Tim Donohue
fd755bf810 Merge pull request #9575 from DSpace/backport-9485-to-dspace-7_x
[Port dspace-7_x] Fix person lookup on project submission #2959
2024-05-13 17:27:18 -05:00
Tim Donohue
ed9ff262d6 Fix broken ITs after merger of #9485
(cherry picked from commit 16343d68bf)
2024-05-13 22:23:38 +00:00
Eike Martin Löhden
b0995cdf6c Set correct metadata field for virtual metadata of persons in projects.
(cherry picked from commit ff7d96b82c)
2024-05-13 19:27:54 +00:00
Eike Martin Löhden
2309496f67 Correct relationship direction for persons in the project submission step.
(cherry picked from commit ee2abfaf88)
2024-05-13 19:27:54 +00:00
Tim Donohue
d99ad4736e Merge pull request #9574 from tdonohue/port_9573_to_7x
[Port dspace-7_x] remove outdated comment as RSS feeds are supported in DS 7.3+
2024-05-13 10:03:35 -05:00
Sascha Szott
1128b0eb10 remove outdated comment as RSS feeds are supported in DS 7.3+ 2024-05-13 10:01:59 -05:00
Tim Donohue
71b8f1d3b2 Merge pull request #9571 from DSpace/backport-9400-to-dspace-7_x
[Port dspace-7_x] fix datacite import recordscount and pagination options
2024-05-10 16:57:09 -05:00
Gantner, Florian Klaus
17c68323db avoid empty data to create phantom records for datacite import
(cherry picked from commit 9667a3374d)
2024-05-10 21:29:16 +00:00
Gantner, Florian Klaus
e35f859e06 datacite api test for no results count
(cherry picked from commit 9cd1a1093d)
2024-05-10 21:29:16 +00:00
Gantner, Florian Klaus
d14f113024 use datacite api response for recordscount and paginated calls. update test file for response as expected from the api.
(cherry picked from commit 65ac01a4a6)
2024-05-10 21:29:16 +00:00
Tim Donohue
132bf49397 Merge pull request #9570 from DSpace/backport-9569-to-dspace-7_x
[Port dspace-7_x] potential array index out of bounds access in SubscriptionDsoMetadataForEmailCompose
2024-05-10 11:53:05 -05:00
Sascha Szott
2976ae3971 bugfix: array index can be out of bound
(cherry picked from commit 4fc6b07466)
2024-05-10 16:21:44 +00:00
Tim Donohue
2481a6f700 Merge pull request #9567 from DSpace/backport-9566-to-dspace-7_x
[Port dspace-7_x] Remove not unique id from inner beans to avoid xml validation issues
2024-05-09 13:02:39 -05:00
Andrea Bollini
ca27ea5fc2 Remove not unique id from inner beans to avoid xml validation issues
(cherry picked from commit 844b73ff49)
2024-05-09 16:31:04 +00:00
Tim Donohue
d71350da4e Merge pull request #9565 from DSpace/backport-9433-to-dspace-7_x
[Port dspace-7_x] Restore batch templates mail
2024-05-09 11:28:21 -05:00
Roy Bruschini
d90cf24a21 Fix typo
(cherry picked from commit 74c15e8d55)
2024-05-09 15:42:55 +00:00
Roy Bruschini
31020d1d4f Create templates mail and renamed name in getEmailFileName
(cherry picked from commit 7a637e6871)
2024-05-09 15:42:55 +00:00
Tim Donohue
ead90b6bbf Merge pull request #9455 from paulo-graca/organisation2organization
Replace organisation->organization
2024-05-09 10:12:15 -05:00
Paulo Graça
2fdc422b24 change IT from organisation to organization 2024-05-09 14:39:51 +01:00
Tim Donohue
2219ca80f0 Merge pull request #9557 from DSpace/backport-9555-to-dspace-7_x
[Port dspace-7_x] Updated CheckStyle to support newer Java features while not changing anything else
2024-05-08 16:49:58 -05:00
Tim Donohue
ebff350216 Merge pull request #9432 from DSpace/bugfix-9425
adding Unicode filtering for sorts
2024-05-08 16:22:21 -05:00
Jean-François Morin
532e21ffb9 Updated CheckStyle so that new Java features such as string blocks are supported, but without requiring to change anything else
(cherry picked from commit ef8c621a0f)
2024-05-08 21:01:06 +00:00
Tim Donohue
44090605b0 Merge pull request #9556 from DSpace/backport-9410-to-dspace-7_x
[Port dspace-7_x] Fix OAIHarvester#extractHandle not handling config properly
2024-05-08 15:17:52 -05:00
Tim Donohue
a4a09209f8 Merge pull request #9554 from DSpace/backport-9551-to-dspace-7_x
[Port dspace-7_x] Ensure Process `user_id` is nullified when referenced EPerson is deleted
2024-05-08 14:45:16 -05:00
Nona Luypaert
1b091a033e Fix OAIHarvester#extractHandle not handling config properly
- defaults for oai.harvester.acceptedHandleServer and oai.harvester.rejectedHandlePrefix are now set
- rejected handles no longer pass if multiple prefixes were configured for oai.harvester.rejectedHandlePrefix

(cherry picked from commit 862a6c5be6)
2024-05-08 19:44:05 +00:00
Tim Donohue
448a69483b Fix NullPointerException. Only return userid if EPerson not null
(cherry picked from commit f34c592352)
2024-05-08 19:07:01 +00:00
Tim Donohue
606b10ccb7 Add migration to set user_id to null if EPerson no longer exists & enforce it for future
(cherry picked from commit ef24645cbf)
2024-05-08 19:07:01 +00:00
Tim Donohue
c0b36a9e9c Merge pull request #9549 from DSpace/backport-9548-to-dspace-7_x
[Port dspace-7_x] Ensure potentially large Solr query uses POST, not GET
2024-05-07 09:36:19 -05:00
Tim Donohue
dbf063dfb9 Ensure potentially large Solr query uses POST, not GET
(cherry picked from commit 0a21a11c9a)
2024-05-07 14:09:09 +00:00
Tim Donohue
28bb6c7e95 Merge pull request #9547 from tdonohue/port_9542_to_7x
Upgrade Tika and bcprov-jdk18on to latest versions
2024-05-06 11:16:04 -05:00
Tim Donohue
03f8a0c56d Merge pull request #9507 from atmire/w2p-105866_Submission-performance-7_x
7.x - Submission performance
2024-05-06 11:11:21 -05:00
Tim Donohue
e22f9a211f Upgrade Tika and bcprov-jdk18on to latest versions. Synced other dependencies with versions used on main (where possible to do so) 2024-05-06 10:09:23 -05:00
Tim Donohue
7a9c8c1ea3 Merge pull request #9538 from DSpace/backport-9453-to-dspace-7_x
[Port dspace-7_x] DS-9452: Updates query to get collections referenced in the subscribers table
2024-05-03 16:12:42 -05:00
Tim Donohue
a2b9bf256f Merge pull request #9482 from dsteelma-umd/opensearch_npe_fix_for_valid_unknown_uuids
Fix OpenSearch NullPointerException for "scope" UUID that is not a community or collection
2024-05-03 15:46:09 -05:00
Tim Donohue
2754549156 Merge pull request #9541 from DSpace/backport-9386-to-dspace-7_x
[Port dspace-7_x] CrossRef metadata import: improve handling of JATS markup in CrossRef JSON response
2024-05-03 15:23:55 -05:00
Tim Donohue
6b3e3cf044 Merge pull request #9540 from DSpace/backport-9385-to-dspace-7_x
[Port dspace-7_x] CrossRef metadata import: trim trailing whitespaces in search query
2024-05-03 14:47:42 -05:00
Sascha Szott
263b45046c sort imports lexicographically
(cherry picked from commit 2867b36ebb)
2024-05-03 19:47:30 +00:00
Sascha Szott
71798f0f74 fix code style violations
(cherry picked from commit 23b8b696a0)
2024-05-03 19:47:30 +00:00
Sascha Szott
6b57079569 add header in class file
(cherry picked from commit b772004397)
2024-05-03 19:47:30 +00:00
Sascha Szott
a000f1430a add CrossRefAbstractProcessor
(cherry picked from commit fa3f10e0b6)
2024-05-03 19:47:29 +00:00
Sascha Szott
1606862aa3 add processor to handle CrossRef abstracts
(cherry picked from commit 498d137970)
2024-05-03 19:47:29 +00:00
Sascha Szott
cef170ad12 extend trimming
(cherry picked from commit 2c6f43d48f)
2024-05-03 19:21:05 +00:00
Sascha Szott
4d54f74ae1 trim trailing whitespaces in search query
(cherry picked from commit 43e2a1d402)
2024-05-03 19:21:05 +00:00
nwoodward
1da7c6b933 make sure collections list is unique
(cherry picked from commit d27331a0b3)
2024-05-03 17:31:19 +00:00
nwoodward
d6f6444f58 updated query to get collections referenced in the subscribers table
(cherry picked from commit c5989c65bb)
2024-05-03 17:31:19 +00:00
Tim Donohue
8205c07586 Merge pull request #9537 from DSpace/backport-9436-to-dspace-7_x
[Port dspace-7_x] Issue-9435
2024-05-03 11:30:30 -05:00
Xiqinger
1920101273 avoid outputStream write after close
(cherry picked from commit 214568d480)
2024-05-03 16:00:42 +00:00
Xiqinger
cbfe0beede Add empty check before call iterator().next()
(cherry picked from commit b2663c810c)
2024-05-03 16:00:42 +00:00
Xiqinger
24f2bca4b3 check path before mkdirs
(cherry picked from commit fda62bc101)
2024-05-03 16:00:41 +00:00
Tim Donohue
5b89effeb9 Merge pull request #9191 from atmire/w2p-106812_enforce-resource-policies-to-have-group-or-eperson
[Port to dspace-7_x] Enforce resource policies to have group or eperson
2024-05-03 10:16:02 -05:00
Kristof De Langhe
ce9129c961 105866: Remove commented code 2024-05-03 14:20:58 +02:00
Yana De Pauw
ce869e55d0 Merge remote-tracking branch 'upstream/dspace-7_x' into w2p-106812_enforce-resource-policies-to-have-group-or-eperson 2024-05-03 14:07:25 +02:00
Tim Donohue
d935ab26d7 Merge pull request #9487 from toniprieto/form-by-entity-type-with-map-v7
[Port dspace-7_x] Refactor SubmissionConfigReader to use a map for the item process configurations based on entityType
2024-05-02 11:01:20 -05:00
Tim Donohue
15fa850bcb Merge pull request #9531 from DSpace/backport-9358-to-dspace-7_x
[Port dspace-7_x] PreloadLevel config vocabulary issue
2024-05-02 08:33:46 -05:00
Tim Donohue
930e63f01a Merge pull request #9532 from DSpace/backport-9429-to-dspace-7_x
[Port dspace-7_x] Fix packager NPE if using the passwords=true option
2024-05-02 08:33:33 -05:00
Agustina Martinez
62b42ff2d1 Update RoleDisseminator.java
Fix NPE if empty password hash string

(cherry picked from commit 04824a2e98)
2024-05-01 21:49:13 +00:00
Marie Verdonck
097d253063 Make sure vocab init is run for vocabulary returned in /api/submission/vocabularies
(cherry picked from commit 42437dd65b)
2024-05-01 21:28:25 +00:00
Tim Donohue
5626fa1adc Merge pull request #9528 from DSpace/backport-9523-to-dspace-7_x
[Port dspace-7_x] Bump org.xmlunit:xmlunit-core from 2.9.1 to 2.10.0 in /dspace-api
2024-05-01 15:08:00 -05:00
dependabot[bot]
08c46bd0a1 Bump org.xmlunit:xmlunit-core from 2.9.1 to 2.10.0 in /dspace-api
Bumps [org.xmlunit:xmlunit-core](https://github.com/xmlunit/xmlunit) from 2.9.1 to 2.10.0.
- [Release notes](https://github.com/xmlunit/xmlunit/releases)
- [Changelog](https://github.com/xmlunit/xmlunit/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/xmlunit/xmlunit/compare/v2.9.1...v2.10.0)

---
updated-dependencies:
- dependency-name: org.xmlunit:xmlunit-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 1fdc3ce220)
2024-05-01 19:37:54 +00:00
Tim Donohue
25108cb9a1 Merge pull request #9387 from MW3000/fix-9383-email-subject-for-request-a-copy
Fix #9383: Set email subject for request copy form
2024-05-01 14:27:35 -05:00
Tim Donohue
d96916c19b Merge pull request #9526 from DSpace/backport-9522-to-dspace-7_x
[Port dspace-7_x] Remove obsolete "version" tag from Docker Compose files
2024-05-01 14:14:06 -05:00
Tim Donohue
0c7a41e47c Merge pull request #9524 from tdonohue/update_spring
[dspace-7_x] Minor update to latest Spring version
2024-05-01 13:20:24 -05:00
Tim Donohue
c030bcfa5a Merge pull request #9525 from DSpace/backport-9521-to-dspace-7_x
[Port dspace-7_x] Install unzip util in built dspace-cli image
2024-05-01 13:11:03 -05:00
Tim Donohue
e1dc695102 Remove obsolete "version" tag from compose files
(cherry picked from commit 9ca0ad5579)
2024-05-01 17:18:01 +00:00
John Abrahams
735906c429 Install unzip util in final built image
(cherry picked from commit 3eae430bec)
2024-05-01 16:56:22 +00:00
Tim Donohue
a97d72f993 Minor update to latest Spring version 2024-05-01 11:50:22 -05:00
Tim Donohue
6024a42448 Merge pull request #9520 from DSpace/backport-9296-to-dspace-7_x
[Port dspace-7_x] Fix resource policy type not set for bitstreams when importing items
2024-05-01 11:38:21 -05:00
Agustina Martinez
30e3cde30d Update ItemImportServiceImpl.java
expand setPermission to take the rpType string

(cherry picked from commit 679df52bbd)
2024-05-01 14:54:23 +00:00
Tim Donohue
aafc111c98 Merge pull request #9518 from DSpace/backport-9289-to-dspace-7_x
[Port dspace-7_x] Validation of page url in FeedbackRestRepository
2024-04-30 13:42:32 -05:00
Sascha Szott
0cfe4aec73 allow empty feedback page url
(cherry picked from commit c4cc56a429)
2024-04-30 17:40:22 +00:00
Sascha Szott
f9d3efd1e7 added validation of page url
(cherry picked from commit 771f37a1fa)
2024-04-30 17:40:22 +00:00
Tim Donohue
4636410894 Merge pull request #9516 from DSpace/backport-9515-to-dspace-7_x
[Port dspace-7_x] Fix SWORDv2 Deletion for Workflow / Archived Items
2024-04-30 11:27:28 -05:00
Tim Donohue
67d7c0bf3b Fix deletion by only cleaning up wrapper for Workspace/workflow items
(cherry picked from commit 5c13569d0f)
2024-04-30 16:00:25 +00:00
Tim Donohue
07377d12c8 Add ITs which test SWORD deletion for workspace vs workflow items (we already have a test for archived items)
(cherry picked from commit 70b0a28749)
2024-04-30 16:00:25 +00:00
Tim Donohue
0434cd9c92 Merge pull request #9513 from DSpace/backport-9285-to-dspace-7_x
[Port dspace-7_x] Fix deleting workspace items via SWORDv2 endpoint
2024-04-30 10:59:12 -05:00
Yana De Pauw
435988ca00 Swap the delete and constraint db lines 2024-04-30 16:40:47 +02:00
Tim Donohue
74c43d4027 Merge pull request #9512 from DSpace/backport-9229-to-dspace-7_x
[Port dspace-7_x] [DS-3439] Copy collection template item specified metadata during …
2024-04-29 17:09:36 -05:00
Agustina Martinez
849a252fa8 Update ContainerManagerDSpace.java
Remove duplicate item.delete call that causes hibernate errors as item is already deleted

(cherry picked from commit 57032050b9)
2024-04-29 22:02:08 +00:00
haoueclf
2f99646417 [DS-3439] Copy collection template item specified metadata during Sword v2 METS deposit ingestion.
(cherry picked from commit 7ead4ae7f0)
2024-04-29 21:42:21 +00:00
DSpace Bot
75c688daef [Port dspace-7_x] Drop not null for EPerson in Process table (#9510)
* Set EPerson nullable in ProcessTable

(cherry picked from commit 9ed997d2dd)

* chore: Remove nullable = false in EPerson Entity

(cherry picked from commit f1a38c2485)

* chore: Avoid NPE when getEPerson is called

(cherry picked from commit 2f9ad72298)

* test: Add test for insert nullable EPerson in Process' table

(cherry picked from commit 8fe264ee69)

* Revert "Set EPerson nullable in ProcessTable"

This reverts commit aea7b9385b6c6972b0ac27e061d082bb92eaf4a6.

(cherry picked from commit 7de931c7be)

* feat: Drop NOT NULL for user_id in Process table

(cherry picked from commit 3b73786c55)

* chore: add endline

(cherry picked from commit 27ed14c38c)

* fix: add headers file

(cherry picked from commit a3ea7cbaaa)

* Rename file sql

(cherry picked from commit eb22285924)

* Rename sql script to 7.6.x

(cherry picked from commit d2ef87eab6)

* fix: Set fetch lazy in EPerson Process

(cherry picked from commit d6340403ff)

* fix: set the user attached to a process to null if none is found in the DB

(cherry picked from commit afb734df5f)

---------

Co-authored-by: Roy Bruschini <r.bruschini@key2.it>
Co-authored-by: Jens Vannerum <jens.vannerum@atmire.com>
2024-04-29 14:31:20 -05:00
Kristof De Langhe
d139d06c58 105866: test fixes 2024-04-29 12:58:20 +02:00
Yana De Pauw
9d12600d13 [Ticket 2124] Slow response times 2024-04-26 17:09:00 +02:00
Toni Prieto
10aa318919 Add comment to clarify in which use case the consumer submissionconfig is useful 2024-04-26 14:50:30 +02:00
Toni Prieto
1cfa041a31 Remove unused function findAllCollectionsByEntityType of CollectionService 2024-04-26 14:50:17 +02:00
Tim Donohue
9c0281018c Merge pull request #9500 from DSpace/backport-9406-to-dspace-7_x
[Port dspace-7_x] Change from openjdk to eclipse-temurin base images
2024-04-24 14:00:05 -05:00
Thomas Misilo
362c80136b Change from openjdk to eclipse-temurin base images
Since the opendjk image has been deprecated, it was suggested to change to eclipse-temurin

Fixes #9277

(cherry picked from commit 86ca5aabf9)
2024-04-24 18:23:29 +00:00
Yana De Pauw
80a7e48536 Merge remote-tracking branch 'upstream/dspace-7_x' into w2p-106812_enforce-resource-policies-to-have-group-or-eperson 2024-04-24 17:06:14 +02:00
Tim Donohue
13d2a96443 Merge pull request #9494 from DSpace/backport-9492-to-dspace-7_x
[Port dspace-7_x] Remove unnecessary "exit" statements which stop running Postgres container
2024-04-22 15:53:23 -05:00
Tim Donohue
b1fb884aec Remove unnecessary "exit" statements which stop running container
(cherry picked from commit 11158ae525)
2024-04-22 20:03:02 +00:00
Tim Donohue
6755b0e77f Merge pull request #9491 from tdonohue/docker_fixes_7x
Fixes to Docker scripts for DSpace 7.x
2024-04-22 11:24:43 -05:00
Tim Donohue
69f7f85def Minor fixes to DB scripts. Use Postgres 15. Don't error out if pgcrypto already installed. 2024-04-22 10:50:21 -05:00
Tim Donohue
d5e2c71da4 Minor fixes to Entities import. MUST run "ignored" migrations. Also modifying submission configs no longer needed 2024-04-22 10:50:15 -05:00
Toni Prieto
770b38c793 Add test for item process submission forms mapped by entityType 2024-04-19 22:35:55 +02:00
Toni Prieto
1a65dfb15b Remove the consumer submissionconfig from default configuration because it is not needed to reload forms if a collection entitytype is changed 2024-04-19 21:39:19 +02:00
Toni Prieto
cf6008271a Refactor SubmissionConfigReader to use a map for the collections configured through the entityType value 2024-04-19 21:38:31 +02:00
Toni Prieto
15d9d1c042 Port from #9259 the changes to use a collection object to return the item process submission configured 2024-04-19 21:03:45 +02:00
Andrea Bollini
23ee2fd6cd DURACOM-249 fix checkstyle issues, add javadoc 2024-04-19 07:58:01 +02:00
Andrea Bollini
e82b94fa43 Add support for LazyDownload of files from S3 2024-04-19 07:58:01 +02:00
David P. Steelman
9b47b2215c Fix OpenSearch NullPointerException for unknown valid UUIDs in scope
Fixes a NullPointerException when the "scope" parameter provided to
the OpenSearch endpoint is a valid UUID, but is not a UUID associated
with a Community or Collection.

Instead of throwing a NullPointerException, this change modifies the
code to return a null scope (resulting in an "unscoped" OpenSearch
request), which is the same behavior that occurs when the UUID
is invalid, or otherwise not usable.
2024-04-17 13:55:34 -04:00
Tim Donohue
15e246ae88 Merge pull request #9474 from DSpace/backport-9473-to-dspace-7_x
[Port dspace-7_x] Add Space in ePerson's Name in Rejection Emails and Metadata
2024-04-12 16:11:48 -05:00
Tom Misilo
8d45c1f94d Add Space in ePerson's Name for rejection metadata and email
(cherry picked from commit ec3089dc4d)
2024-04-12 21:04:37 +00:00
Tim Donohue
3160e42ff9 Merge pull request #9465 from DSpace/backport-9344-to-dspace-7_x
[Port dspace-7_x] httpd-shibd-foreground.sh needs to be executable
2024-04-10 15:13:44 -05:00
Thomas Misilo
2f7ee4bc76 httpd-shibd-foreground.sh needs to be executable
In order for the shib container to start, the file that is running needs to be executable

(cherry picked from commit 3f9274f23f)
2024-04-10 19:46:21 +00:00
Tim Donohue
68bb3c5583 Merge pull request #9269 from atmire/w2p-90830-104654_issue-8125_pr-8267_Issue-stale-record-cleanup-7.x
7.x - Issue predb status cleanup
2024-04-10 12:57:07 -05:00
Tim Donohue
2afc9b158e Docker build IDs must all be unique to avoid image conflicts. Avoid conflict with "-loadsql" build by appending "-prod" on main build id. 2024-04-10 09:27:46 -05:00
Tim Donohue
7c505e113e Docker build IDs must all be unique to avoid image conflicts. Ensure no builds use a generic name like "dspace". 2024-04-09 15:04:46 -05:00
Tim Donohue
92c71df5a4 Merge pull request #9463 from DSpace/backport-9462-to-dspace-7_x
[Port dspace-7_x] Refactor SubmissionConfigConsumer to avoid reload the submission config multiple times
2024-04-09 14:26:27 -05:00
Toni Prieto
e22bf93a97 Refactor SubmissionConfigConsumer to avoid reload the submission config multiple times during the creation of a collection
(cherry picked from commit 00d0a01e1f)
2024-04-09 19:21:52 +00:00
Tim Donohue
49e54eb34f Ensure build digest name does NOT have slashes by changing arch to use dashes 2024-04-09 12:37:50 -05:00
Tim Donohue
cae7eeaee9 Merge pull request #9461 from DSpace/backport-9460-to-dspace-7_x
[Port dspace-7_x] Fix bug in Docker `amd64` build in GitHub Actions
2024-04-09 11:55:49 -05:00
Tim Donohue
a1d7c47f1e Fix Docker build by ensuring all artifacts are named with architecture (amd64 vs arm64)
(cherry picked from commit f4edf92860)
2024-04-09 16:53:46 +00:00
Tim Donohue
51c43602ef Merge pull request #9459 from tdonohue/port_9454_to_7x
[Port dspace-7_x] Update all GitHub Actions & add token for Codecov.io
2024-04-09 09:54:55 -05:00
Tim Donohue
5aa32dfd5a Update all GitHub Actions. Add newly required CODECOV_TOKEN to codecov action 2024-04-08 17:06:08 -05:00
Paulo Graça
9779c175db Replace organisation->organization 2024-04-08 16:44:43 +01:00
Tim Donohue
a6dd759ee6 Merge pull request #9448 from DSpace/backport-9271-to-dspace-7_x
[Port dspace-7_x] Fix generating versioned identifiers if pre-registration is enabled
2024-04-04 14:42:36 -05:00
Agustina Martinez
acfe272fbc Fix generating versioned identifiers if pre-registration is enabled
(cherry picked from commit 1844fd28a0)
2024-04-04 19:02:43 +00:00
Paulo Graça
48079d70a9 adding Unicode filtering for sorts 2024-03-22 12:19:43 +00:00
Alan Orth
a75717fc08 Merge pull request #9423 from DSpace/backport-9409-to-dspace-7_x
[Port dspace-7_x] Bump org.apache.solr:solr-solrj from 8.11.2 to 8.11.3
2024-03-20 10:27:59 +03:00
dependabot[bot]
3817f3ff9d Bump org.apache.solr:solr-solrj from 8.11.2 to 8.11.3
Bumps org.apache.solr:solr-solrj from 8.11.2 to 8.11.3.

---
updated-dependencies:
- dependency-name: org.apache.solr:solr-solrj
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit e934557966)
2024-03-20 06:59:09 +00:00
Alan Orth
889f3997bd Merge pull request #9422 from saschaszott/patch-30
dependency update: Spring Framework v5.3.32 → v5.3.33
2024-03-20 08:15:33 +03:00
Sascha Szott
78d8e86369 upgrade to Spring Framework v5.3.33 2024-03-19 15:18:28 +01:00
Martin Walk
b36613951b Fix #9383: Set email subject for request copy form 2024-02-29 15:21:15 +01:00
Tim Donohue
f46f49a3cc Merge pull request #9380 from DSpace/backport-9363-to-dspace-7_x
[Port dspace-7_x] Bump org.eclipse.jetty.http2:http2-common from 9.4.53.v20231009 to 9.4.54.v20240208
2024-02-28 13:48:27 -06:00
Tim Donohue
10eb906099 Merge pull request #9379 from DSpace/backport-9350-to-dspace-7_x
[Port dspace-7_x] Bump org.postgresql:postgresql from 42.6.0 to 42.7.2
2024-02-28 13:20:21 -06:00
dependabot[bot]
678aa9bad5 Bump org.eclipse.jetty.http2:http2-common
Bumps org.eclipse.jetty.http2:http2-common from 9.4.53.v20231009 to 9.4.54.v20240208.

---
updated-dependencies:
- dependency-name: org.eclipse.jetty.http2:http2-common
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit a6e3d7a55a)
2024-02-28 18:48:28 +00:00
Tim Donohue
6dc3936acb Merge pull request #9377 from DSpace/backport-9370-to-dspace-7_x
[Port dspace-7_x] Bump org.apache.james:apache-mime4j-core from 0.8.9 to 0.8.10
2024-02-28 12:35:00 -06:00
dependabot[bot]
ae2ee43df8 Bump org.postgresql:postgresql from 42.6.0 to 42.7.2
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.6.0 to 42.7.2.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/commits)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 0b2b81682a)
2024-02-28 18:34:00 +00:00
Tim Donohue
b17596c7b3 Merge pull request #9376 from DSpace/backport-9371-to-dspace-7_x
[Port dspace-7_x] Update to latest Spring 5
2024-02-28 12:15:08 -06:00
dependabot[bot]
e28a083ef7 Bump org.apache.james:apache-mime4j-core from 0.8.9 to 0.8.10
Bumps org.apache.james:apache-mime4j-core from 0.8.9 to 0.8.10.

---
updated-dependencies:
- dependency-name: org.apache.james:apache-mime4j-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 7f91661f84)
2024-02-28 17:57:52 +00:00
Tim Donohue
26a683f4d5 Update to latest Spring 5
(cherry picked from commit 8252d05ee2)
2024-02-28 17:39:01 +00:00
kshepherd
0ef8094b07 Merge pull request #9367 from DSpace/backport-9266-to-dspace-7_x
[Port dspace-7_x] S3store is always enabled
2024-02-27 17:15:08 +13:00
frabacche
54f816e08c DURACOM-211 s3bitstoreService IT class fix
(cherry picked from commit 2beb604255)
2024-02-27 03:40:14 +00:00
frabacche
44bf7bfdb3 DURACOM-211 S3store enabling checkstyle
(cherry picked from commit 584d178a95)
2024-02-27 03:40:14 +00:00
frabacche
df66f8401d DURACOM-211 S3store enabling according to assetstore.s3.enabled config
(cherry picked from commit 772eaa7666)
2024-02-27 03:40:14 +00:00
kshepherd
e0974b9469 Merge pull request #9366 from DSpace/backport-8986-to-dspace-7_x
[Port dspace-7_x] fix: add default HandleIdentifierProvider for disabled versioning
2024-02-27 16:04:31 +13:00
Mirko Scherf
4e721bfbb0 fix: add default HandleIdentifierProvider for disabled versioning
Setting versioning.enabled = false in versioning.cfg is not enough to
disable versioning. It is also required to replace the bean class
VersionedHandleIdentifierProvider with a HandleIdentifierProvider
in identifier-service.xml. I've added one that is commented out as by
default versioning is enabled.

(cherry picked from commit 92c38de99e)
2024-02-27 02:33:26 +00:00
kshepherd
fb76988909 Merge pull request #9334 from atmire/sword-configuration-old-style-fixes-7.x
Sword configuration old style fixes 7.x
2024-02-27 14:59:37 +13:00
Tim Donohue
b1f2d5f487 Merge pull request #9364 from DSpace/backport-9336-to-dspace-7_x
[Port dspace-7_x] Add more SWORDv2 Integration Tests
2024-02-26 17:15:41 -06:00
Tim Donohue
2c57c68a81 Add more ITs to SWORDv2 to verify basic upload, edit, delete functionality. These all pass prior to any SWORDv2 refactoring
(cherry picked from commit eeee029510)
2024-02-26 22:43:34 +00:00
Tim Donohue
99aec7fffa Merge pull request #9356 from DSpace/backport-9339-to-dspace-7_x
[Port dspace-7_x] Update of DataCite crosswalk to metadata schema 4.5
2024-02-22 11:32:10 -06:00
Pascal-Nicolas Becker
ab56ad09ab Changing a comment on DIM2DataCite.xsl
(cherry picked from commit 1a567827df)
2024-02-22 16:05:55 +00:00
Yannick Paulsen
61053cab8d Update of DataCite crosswalk to metadata schema 4.5
(cherry picked from commit 5db110a19f)
2024-02-22 16:05:55 +00:00
Alan Orth
1716d5a15b Merge pull request #9353 from DSpace/backport-9320-to-dspace-7_x
[Port dspace-7_x] Community/Collection admins can't edit logo for communities/collections
2024-02-22 16:26:19 +03:00
eskander
d172865f52 [DURACOM-232] solved Community/Collection admins can't edit logo for communities/collections
(cherry picked from commit d1812866a6)
2024-02-22 12:57:22 +00:00
Yana De Pauw
dddd500bd1 106812: Add flyway migration to remove faulty rp entries 2024-02-19 10:06:33 +01:00
Tim Donohue
80368e1467 Merge pull request #9347 from DSpace/backport-9346-to-dspace-7_x
[Port dspace-7_x] [DS-9345] Correct the package name of the IIIF search plugin
2024-02-16 11:09:41 -06:00
haoueclf
adec8e2e60 [DS-9345] Correct the package name of the IIIF search plugin
(cherry picked from commit 03fe586681)
2024-02-16 17:08:38 +00:00
Tim Donohue
9d2daafd79 Merge pull request #9337 from DSpace/backport-9263-to-dspace-7_x
[Port dspace-7_x] Repository indexing fails when item tika fulltext processing fails with error
2024-02-15 16:59:57 -06:00
mohamed eskander
14f593e097 [DURACOM-143] Fix license
(cherry picked from commit 324d2e3184)
2024-02-15 22:32:50 +00:00
mohamed eskander
b97b093d6c [DURACOM-143] Fix indexing errors & further improvements
(cherry picked from commit d645939baf)
2024-02-15 22:32:50 +00:00
Marie Verdonck
16d44370f1 Merge remote-tracking branch 'origin/dspace-7_x' into sword-configuration-old-style-fixes-7.x 2024-02-15 18:37:58 +01:00
Marie Verdonck
2cbcf9006d SWORD config fixes: Instances where old style module/fileName, configName params are used from long-deprecated ConfigurationManager instead of configName, defaultValue 2024-02-15 18:36:45 +01:00
Marie Verdonck
124a05b16f Merge remote-tracking branch 'atmire/w2p-111719_sword-embargo-bugfix' into sword-configuration-old-style-fixes-7.6 2024-02-15 18:32:11 +01:00
Yana De Pauw
4942fd272c 106812: Fix compile issue due to new test 2024-02-15 10:31:04 +01:00
Yana De Pauw
24cd78469c Merge remote-tracking branch 'upstream/dspace-7_x' into w2p-106812_enforce-resource-policies-to-have-group-or-eperson 2024-02-15 10:08:39 +01:00
Tim Donohue
b60d66d508 Merge pull request #9325 from DSpace/backport-8896-to-dspace-7_x
[Port dspace-7_x] Fast fail error when creating administrator, if there is no database connection
2024-02-13 09:27:07 -06:00
MajoBerger
09357b133e added failsafe while creating admin when db is not connected
(cherry picked from commit efcf9dba20)
2024-02-12 22:51:11 +00:00
Tim Donohue
6f380ec011 Merge pull request #9310 from DSpace/backport-9309-to-dspace-7_x
[Port dspace-7_x] Improve default identifiers.cfg properties
2024-02-07 11:48:36 -06:00
Kim Shepherd
6624248c7a Improve default identifiers.cfg properties
(Related to dspace-angular#2765)

(cherry picked from commit 40b7427d88)
2024-02-07 16:59:22 +00:00
Tim Donohue
c1f9206c0a Merge pull request #9308 from DSpace/backport-9278-to-dspace-7_x
[Port dspace-7_x] Bump com.jayway.jsonpath:json-path from 2.6.0 to 2.9.0
2024-02-07 08:47:23 -06:00
Koen Pauwels
1dada28c89 111719 Fix bug where old style of retrieving config value was being used 2024-02-07 14:35:46 +01:00
dependabot[bot]
6d5949729d Bump com.jayway.jsonpath:json-path from 2.6.0 to 2.9.0
Bumps [com.jayway.jsonpath:json-path](https://github.com/jayway/JsonPath) from 2.6.0 to 2.9.0.
- [Release notes](https://github.com/jayway/JsonPath/releases)
- [Changelog](https://github.com/json-path/JsonPath/blob/master/changelog.md)
- [Commits](https://github.com/jayway/JsonPath/compare/json-path-2.6.0...json-path-2.9.0)

---
updated-dependencies:
- dependency-name: com.jayway.jsonpath:json-path
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit db56de3887)
2024-02-06 22:49:57 +00:00
Tim Donohue
a9e3a354df Merge pull request #9307 from DSpace/backport-9225-to-dspace-7_x
[Port dspace-7_x] Bump dependencies
2024-02-06 12:23:14 -06:00
Alan Orth
9274a11759 dspace-server-webapp/pom.xml: upgrade zjsonpatch
Upgrade zjsonpatch from v0.4.6 to v0.4.16.

(cherry picked from commit 20fc8e4fb7)
2024-02-06 16:30:00 +00:00
Alan Orth
762c0397fe pom.xml: update commons-dbcp2 and commons-pool2
Update commons-dbcp2 and commons-pool2 to latest stable versions.

(cherry picked from commit bafb1b5657)
2024-02-06 16:30:00 +00:00
Alan Orth
c5398670f9 pom.xml: bump jackson version
Bump jackson-core and jackson-databind to v2.16.0.

(cherry picked from commit b90f043744)
2024-02-06 16:30:00 +00:00
renovate[bot]
bdb19787bb Update dependency org.apache.commons:commons-collections4 to v4.4
(cherry picked from commit 6de85adeb7)
2024-02-06 16:30:00 +00:00
renovate[bot]
1f67a2bffe Update dependency org.apache.commons:commons-configuration2 to v2.9.0
(cherry picked from commit b583029a7d)
2024-02-06 16:30:00 +00:00
renovate[bot]
186453eb3f Update dependency commons-logging:commons-logging to v1.3.0
(cherry picked from commit e76132b4d8)
2024-02-06 16:30:00 +00:00
renovate[bot]
4682db506e Update dependency org.apache.commons:commons-lang3 to v3.14.0
(cherry picked from commit 3f675d9cd5)
2024-02-06 16:30:00 +00:00
renovate[bot]
4dcbe16e24 Update dependency org.webjars.bowergithub.jquery:jquery-dist to v3.7.1
(cherry picked from commit 6d0b5deb8e)
2024-02-06 16:30:00 +00:00
renovate[bot]
9cb4eac802 Update dependency org.webjars.bowergithub.twbs:bootstrap to v4.6.2
(cherry picked from commit 2c1a45bc88)
2024-02-06 16:30:00 +00:00
renovate[bot]
88edfbbfdf Update dependency org.apache.maven.plugins:maven-assembly-plugin to v3.6.0
(cherry picked from commit 275757e6d4)
2024-02-06 16:30:00 +00:00
renovate[bot]
752d94efb4 Update dependency org.apache.maven.plugins:maven-checkstyle-plugin to v3.3.1
(cherry picked from commit ae12f1865f)
2024-02-06 16:30:00 +00:00
Alan Orth
c7c8062f01 Update hamcrest to v2.2
Due to changes in hamcrest packaging we only need the main artifact
now, but we add hamcrest-core (which is an empty pom) so it doesn't
get pulled in by other deps. Last, the hamcrest docs recommend that
we put hamcrest first so that we don't have dependency convergence
issues from junit.

See: https://hamcrest.org/JavaHamcrest/distributables
(cherry picked from commit 710feb798d)
2024-02-06 16:30:00 +00:00
renovate[bot]
b2494c6be2 Update json-path.version to v2.8.0
(cherry picked from commit 8809e98a18)
2024-02-06 16:30:00 +00:00
renovate[bot]
5342d54075 Update dependency org.apache.ant:ant to v1.10.14
(cherry picked from commit 4e071b2428)
2024-02-06 16:30:00 +00:00
Alan Orth
487202e246 pom.xml: update spotbugs and spotbugs-maven-plugin
Update to latest versions:

- spotbugs v4.1.2→v4.8.2
- spotbugs-maven-plugin v4.0.4→v4.8.2.0

These are not run in CI and seem to only run manually when asked,
ie via maven:

    $ mvn spotbugs:spotbugs

(cherry picked from commit fc6a9ca5cb)
2024-02-06 16:30:00 +00:00
Alan Orth
b603776a08 pom.xml: update Spring
We need to keep Spring Framework, Spring Boot, and Spring Security
versions updated together:

- Spring Framework: 5.3.28→5.3.31
- Spring Boot: 2.7.13→2.7.18
- Spring Security: 5.7.9→5.7.11

(cherry picked from commit f42a981d1b)
2024-02-06 16:30:00 +00:00
renovate[bot]
4840b1de83 Update netty monorepo to v4.1.106.Final
(cherry picked from commit 71ea2a7526)
2024-02-06 16:29:59 +00:00
renovate[bot]
a77628bd1e Update dependency com.maxmind.geoip2:geoip2 to v2.17.0
(cherry picked from commit 68caa1dcf8)
2024-02-06 16:29:59 +00:00
renovate[bot]
28d051e88d Update dependency org.xmlunit:xmlunit-core to v2.9.1
(cherry picked from commit 0958a98b1f)
2024-02-06 16:29:59 +00:00
renovate[bot]
8edd8bc09b Update dependency com.fasterxml:classmate to v1.6.0
(cherry picked from commit 07ec54832a)
2024-02-06 16:29:59 +00:00
renovate[bot]
279a315301 Update log4j.version to v2.22.1
(cherry picked from commit a697813720)
2024-02-06 16:29:59 +00:00
renovate[bot]
ed74d3198c Update dependency commons-io:commons-io to v2.15.1
(cherry picked from commit 70646a30de)
2024-02-06 16:29:59 +00:00
renovate[bot]
f7c7abc362 Update dependency com.opencsv:opencsv to v5.9
(cherry picked from commit ab9279cbb8)
2024-02-06 16:29:59 +00:00
renovate[bot]
602e9e854f Update dependency commons-cli:commons-cli to v1.6.0
(cherry picked from commit f67e0f6509)
2024-02-06 16:29:59 +00:00
renovate[bot]
a50534d617 Update pdfbox-version to v2.0.30
(cherry picked from commit fe7800ab5a)
2024-02-06 16:29:59 +00:00
renovate[bot]
7a38f0097d Update dependency org.glassfish.jaxb:jaxb-runtime to v2.3.9
(cherry picked from commit 8d6f6e37b3)
2024-02-06 16:29:59 +00:00
renovate[bot]
0d1dd13c84 Update dependency com.h2database:h2 to v2.2.224
(cherry picked from commit 0d4c1ea63a)
2024-02-06 16:29:59 +00:00
Tim Donohue
d928d8c672 Merge pull request #9305 from tdonohue/port_8884_to_7x
[Port dspace-7_x] Bump dependencies
2024-02-06 09:09:35 -06:00
renovate[bot]
79178e3b62 Update pdfbox-version to v2.0.29 2024-02-05 17:10:57 -06:00
Alan Orth
16b1104b01 pom.xml: bump spring core version to v5.3.28
Minor version bump with some bug fixes.

See: https://github.com/spring-projects/spring-framework/releases/tag/v5.3.28
2024-02-05 17:10:57 -06:00
Alan Orth
ad061c962b pom.xml: update spring boot to v2.7.13
Minor update. Also bump the spring security version to 5.7.9 as is
used by spring boot.

See: https://github.com/spring-projects/spring-boot/releases/tag/v2.7.13
2024-02-05 17:10:57 -06:00
renovate[bot]
972c2d69c8 Update dependency commons-codec:commons-codec to v1.16.0 2024-02-05 17:10:57 -06:00
renovate[bot]
5152e99bda Update dependency org.exparity:hamcrest-date to v2.0.8 2024-02-05 17:10:57 -06:00
renovate[bot]
af29486965 Update dependency commons-io:commons-io to v2.13.0 2024-02-05 17:10:57 -06:00
renovate[bot]
e92e5ee6d8 Update dependency org.scala-lang:scala-library to v2.13.11 2024-02-05 17:10:57 -06:00
renovate[bot]
6b4e5ed9c8 Update dependency org.apache.bcel:bcel to v6.7.0 2024-02-05 17:10:57 -06:00
Alan Orth
096fb3fb74 Bump jaxen:jaxen dependency to 2.0.0
Should be mostly drop-in API compatible with Jaxen 1.1.x, but more
importantly it makes the xom dependency optional so we can remove
the exclusions in our various pom.xml files.

See: http://cafeconleche.org/jaxen/releases.html
2024-02-05 17:10:57 -06:00
Alan Orth
69e1ff98a0 Bump xom:xom dependency
No breaking changes, but some bug fixes, performance improvements,
and compatibility fixes with Java 17+.

See: https://xom.nu/history.html
2024-02-05 17:10:57 -06:00
renovate[bot]
7b0b21f84d Update dependency org.webjars.bowergithub.jquery:jquery-dist to v3.7.0 2024-02-05 17:10:57 -06:00
renovate[bot]
fe8c3ef388 Update dependency com.fasterxml:classmate to v1.5.1 2024-02-05 17:10:57 -06:00
renovate[bot]
36c042bc98 Update dependency org.webjars.bowergithub.medialize:uri.js to v1.19.11 2024-02-05 17:10:57 -06:00
Alan Orth
f9469c9b6f dspace-api/pom.xml: add exclusion for javassist
Add an exclusion for org.javassist:javassist due to a dependency
convergence error caused by eu.openaire:funders-model pulling in a
version conflicting with Jersey's transitive dependency.
2024-02-05 17:10:57 -06:00
Alan Orth
8e66812dbb pom.xml: bump Jersey
Bump jersey due to jersey-media-json-jackson pulling in a conflicting
jakarta.xml.bind-api via transitive dependency in dspace-rest, which
is the legacy DSpace 6 REST API.
2024-02-05 17:10:57 -06:00
renovate[bot]
b5a59c76e8 Update dependency joda-time:joda-time to v2.12.5 2024-02-05 17:10:57 -06:00
renovate[bot]
a9a8021cf6 Update dependency commons-cli:commons-cli to v1.5.0 2024-02-05 17:10:57 -06:00
renovate[bot]
167033d830 Update dependency commons-codec:commons-codec to v1.15 2024-02-05 17:10:57 -06:00
renovate[bot]
8895aca3eb Update dependency commons-validator:commons-validator to v1.7 2024-02-05 17:10:56 -06:00
renovate[bot]
53c4e18159 Update dependency commons-io:commons-io to v2.12.0 2024-02-05 17:10:56 -06:00
renovate[bot]
e14f267229 Update dependency org.apache.james:apache-mime4j-core to v0.8.9 2024-02-05 17:10:56 -06:00
renovate[bot]
ba95c1852f Update dependency org.glassfish.jaxb:jaxb-runtime to v2.3.8 2024-02-05 17:10:56 -06:00
renovate[bot]
91f9d8c4dd Update dependency com.opencsv:opencsv to v5.7.1 2024-02-05 17:10:56 -06:00
renovate[bot]
e2d809ffb4 Update dependency org.flywaydb:flyway-core to v8.5.13 2024-02-05 17:10:56 -06:00
renovate[bot]
bbe05833a9 Update dependency org.ehcache:ehcache to v3.10.8 2024-02-05 17:10:56 -06:00
Alan Orth
95ac7dea42 pom.xml: bump org.apache.httpcomponents
Closes: https://github.com/alanorth/DSpace/pull/21
Closes: https://github.com/alanorth/DSpace/pull/22
Closes: https://github.com/alanorth/DSpace/pull/23
2024-02-05 17:10:56 -06:00
renovate[bot]
969bee4871 Update dependency junit:junit to v4.13.2 2024-02-05 17:10:56 -06:00
renovate[bot]
be7bdcf398 Update dependency org.apache.ant:ant to v1.10.13 2024-02-05 17:10:56 -06:00
renovate[bot]
84452a97d8 Update dependency net.handle:handle to v9.3.1 2024-02-05 17:10:56 -06:00
renovate[bot]
aeb5300c6f Update dependency javax.cache:cache-api to v1.1.1 2024-02-05 17:10:56 -06:00
Alan Orth
bd7214ad1f pom.xml: bump com.google.code.findbugs:jsr305
Closes: https://github.com/alanorth/DSpace/pull/12
2024-02-05 17:10:56 -06:00
renovate[bot]
5893c7768e Update dependency dnsjava:dnsjava to v2.1.9 2024-02-05 17:10:56 -06:00
renovate[bot]
774f3bbcd5 Update dependency de.digitalcollections.iiif:iiif-apis to v0.3.10 2024-02-05 17:09:59 -06:00
renovate[bot]
3bfcf82977 Update dependency com.flipkart.zjsonpatch:zjsonpatch to v0.4.14 2024-02-05 17:09:44 -06:00
Tim Donohue
66a4a036e0 Merge pull request #9304 from tdonohue/port_9303_to_7x
[Port dspace-7_x] Fix Docker image build issues for new versions of Docker (25.0.2) and Docker Compose (2.24.3)
2024-02-02 15:53:17 -06:00
Tim Donohue
414837a12a Fix 'dspacesolr' build issues in GitHub actions by adding 'solrconfig' as an additional_context 2024-02-02 14:47:15 -06:00
Tim Donohue
250e82af9d Fix build issues with dockersolr by using "additional_contexts" to pass solr config path to Dockerfile. 2024-02-02 14:45:55 -06:00
Tim Donohue
a0ba470197 Fix "cannot override networks.dspacenet" by updating all compose files to reference 'dspacenet' network 2024-02-02 14:43:09 -06:00
Tim Donohue
f46742510b Merge pull request #9297 from DSpace/backport-9293-to-dspace-7_x
[Port dspace-7_x] Call cas.init() method in the VocabularyRestRepositoryIT#setup method
2024-01-29 12:19:04 -06:00
milanmajchrak
2549663081 The cas.init() method is called in the VocabularyRestRepositoryIT#setup() method
(cherry picked from commit 85b5e06fb0)
2024-01-29 17:52:28 +00:00
Alan Orth
5f7af6b3fc Merge pull request #9280 from DSpace/backport-9276-to-dspace-7_x
[Port dspace-7_x] Search on the label of an authority, not the value in a submission context
2024-01-23 11:48:44 +03:00
Jens Vannerum
a22a01aa5c search on labels, not values on DCInputs
(cherry picked from commit 5ebe1a9402)
2024-01-23 08:05:25 +00:00
Tim Donohue
c509d495b1 Merge pull request #9270 from DSpace/backport-9261-to-dspace-7_x
[Port dspace-7_x] DS-9142: prevent UUID exception by adding check for -1 value for the id field
2024-01-19 09:43:45 -06:00
nwoodward
dc57aceeaf catch exceptions stemming from invalid id's
(cherry picked from commit 848df25984)
2024-01-19 15:15:26 +00:00
Marie Verdonck
4fc19da34a Merge remote-tracking branch 'origin/dspace-7_x' into w2p-90830-104654_issue-8125_pr-8267_Issue-stale-record-cleanup-7.x 2024-01-18 19:36:57 +01:00
Alan Orth
8a59c12b35 Merge pull request #9264 from DSpace/backport-9252-to-dspace-7_x
[Port dspace-7_x] Skip recording usage events if user is administrator
2024-01-18 10:13:03 +03:00
Agustina Martinez
9a0db2a642 Skip recording usage event if administrator
(cherry picked from commit 73e5c43f7c)
2024-01-18 06:46:35 +00:00
Alan Orth
c86a0cf04e Merge pull request #9256 from DSpace/backport-9248-to-dspace-7_x
[Port dspace-7_x] Return headers for HEAD request
2024-01-11 18:43:12 +03:00
William Welling
ebbae391d7 Add content-length to bitstream
(cherry picked from commit 6be7e4e370)
2024-01-11 15:15:35 +00:00
William Welling
b8d00afd12 Return headers for HEAD request
(cherry picked from commit 64ae49a29f)
2024-01-11 15:15:35 +00:00
Tim Donohue
8b29c04790 Merge pull request #9251 from DSpace/backport-9250-to-dspace-7_x
[Port dspace-7_x] dspace-api: fix typo in AuthorizeServiceImpl log
2024-01-09 14:23:17 -06:00
Alan Orth
37ed65850f dspace-api: fix typo in AuthorizeServiceImpl log
(cherry picked from commit 127b1ae868)
2024-01-09 20:13:56 +00:00
Alan Orth
426a2f9c47 Merge pull request #9246 from DSpace/backport-9239-to-dspace-7_x
[Port dspace-7_x] Correct response of get controlled vocabulary by metadata and collection when NO controlled vocabulary is available for the specified metadata and collection
2024-01-04 10:59:16 +03:00
Toni Prieto
14c6ccce21 Add missing test for byMetadataAndCollection operation of Controlled Vocabularies endpoint
(cherry picked from commit a294f996cf)
2024-01-04 07:32:53 +00:00
Toni Prieto
c7113e5d24 Correct response of byMetadataAndCollection operation of Controlled Vocabularies Endpoint when no controlled vocabulary is available for the specified metadata and collection
(cherry picked from commit eb2e4f1155)
2024-01-04 07:32:53 +00:00
Marie Verdonck
91f53c2287 90830/104654: issue PR#8267 - Only first 10 predb records resynced (default size) - Fix:
- Query with 0 rows to get total number of records to process
- Process them in batches of 100
2023-12-29 05:58:25 +01:00
Marie Verdonck
7536537206 90830/104654: issue PR#8267 - Only first 10 predb records resynced (default size) - IT proving issue 2023-12-29 05:55:48 +01:00
Alan Orth
5606c8b97f Merge pull request #9224 from DSpace/backport-9220-to-dspace-7_x
[Port dspace-7_x] fix: Failure of org.dspace.app.rest.SitemapRestControllerIT when running locally
2023-12-08 11:37:43 +03:00
Shankeerthan Kasilingam
16112a44d8 fix: Failure of org.dspace.app.rest.SitemapRestControllerIT when running locally
(cherry picked from commit 44fc15f74b)
2023-12-08 07:38:07 +00:00
Tim Donohue
7524d169f5 Remove unused env variables from docker.yml build script 2023-11-28 17:01:04 -06:00
Tim Donohue
61d9e75ccd Merge pull request #9214 from DSpace/backport-9213-to-dspace-7_x
[Port dspace-7_x] Add parallel builds for Docker Images in GitHub Actions
2023-11-28 15:59:53 -06:00
Tim Donohue
af1550d415 Ensure dspace-solr redeploys the Solr instances for Demo/Sandbox 2023-11-28 15:13:17 -06:00
Tim Donohue
93fc3ce8d0 Refactor docker.yml to use a separate reusable-docker-build.yml script for each image build.
(cherry picked from commit 0e88bfdae7)
2023-11-28 19:48:25 +00:00
Tim Donohue
68f29c45b6 Minor fixes to Dockerfiles. No longer need 'git'. Use Maven flags to slightly speed up build/install steps.
(cherry picked from commit 538833f8a8)
2023-11-28 19:48:25 +00:00
Tim Donohue
c9c57faa21 Update GitHub action plugin versions. Minor fixes including using built-in Maven caching & fix to CodeCov action
(cherry picked from commit 2aae4cd78d)
2023-11-28 19:48:25 +00:00
Alan Orth
501e657348 Merge pull request #9207 from alanorth/port-9203-dspace-7_x
[Port dspace-7-x] CrossRefImport: ignore empty responses rather than generating empty phantom ImportRecords
2023-11-23 09:13:58 +03:00
Philipp Rumpf
21a7f25118 CrossRefImportMetadataSourceServiceIT: Test empty responses don't result in ... results. 2023-11-23 08:44:34 +03:00
Philipp Rumpf
722ad02757 CrossRefImport: ignore empty responses rather than generating empty phantom ImportRecords
Fixes https://github.com/DSpace/DSpace/issues/9202 .
2023-11-23 08:44:21 +03:00
Tim Donohue
76658e7c96 [maven-release-plugin] prepare for next development iteration 2023-11-15 14:16:40 -06:00
Tim Donohue
8ad5bc1262 [maven-release-plugin] prepare release dspace-7.6.1 2023-11-15 14:16:37 -06:00
DSpace Bot
64d30e6fdf [Port dspace-7_x] subscription email: do not send email if nothing has changed (#9204)
* improved subscriptions email template

(cherry picked from commit 6e7b327959)

* do not send emails without content

(cherry picked from commit 926b242130)

* fixed coding style violations

(cherry picked from commit fdacec08df)

* removed unnecessary isEmpty check as suggested by reviewer

(cherry picked from commit 30a837f854)

* moved null check on indexableObjects in generateBodyMail

(cherry picked from commit b43c340b18)

* fixed unhandled IOException

(cherry picked from commit 9b3f7b698c)

* fixed typo in bodyCommunities

(cherry picked from commit ac3d02eb1c)

* do not use != to compare strings

(cherry picked from commit e460183335)

* fixed improper handling of empty list

(cherry picked from commit ac72aae44b)

---------

Co-authored-by: Sascha Szott <szott@gmx.de>
2023-11-14 14:19:50 -06:00
Tim Donohue
a3501c64af Merge pull request #9200 from DSpace/backport-9162-to-dspace-7_x
[Port dspace-7_x] Fix match theme by handle with cannonical prefix https://hdl.handle.net/ not working
2023-11-13 16:00:10 -06:00
Alexandre Vryghem
a7f106da92 Remove line breaks from default.license because they are being rendered in the frontend
(cherry picked from commit 56aae347c2)
2023-11-13 20:20:23 +00:00
Alexandre Vryghem
e7786f49af 107671: Expose the handle.canonical.prefix to the frontend
(cherry picked from commit 6d86e65b72)
2023-11-13 20:20:23 +00:00
Tim Donohue
a25710a23d Merge pull request #9199 from DSpace/backport-9163-to-dspace-7_x
[Port dspace-7_x] Simplify process of fixing the tests after adding sidebar facets
2023-11-13 13:18:10 -06:00
Tim Donohue
dccd7a04b6 Merge pull request #9198 from DSpace/backport-9184-to-dspace-7_x
[Port dspace-7_x] Updated IIIF Controller IT to text bitstream and bundle exclusions
2023-11-13 11:47:17 -06:00
Alexandre Vryghem
74733ab4b4 Simplified the process of fixing the tests after adding new sidebar facets/search filters and sort options to discover.xml
(cherry picked from commit b40ad0dfc2)
2023-11-13 17:40:51 +00:00
Michael Spalti
6b99584e96 Updated IIIF Controller IT to text bitstream and bundle exclusions
(cherry picked from commit e92b4b7bfd)
2023-11-13 17:09:55 +00:00
Tim Donohue
6edf793023 Merge pull request #9197 from DSpace/backport-9125-to-dspace-7_x
[Port dspace-7_x] Add `isNotMemberOf` searches for Groups and EPersons (for improved performance on Edit Group pages)
2023-11-10 15:14:34 -06:00
Tim Donohue
c2fd617921 Bug fix to EPersonDAOImpl. Correctly determine if excluded group needs to be preceded by AND or WHERE
(cherry picked from commit e5e0eaa999)
2023-11-10 19:02:14 +00:00
Tim Donohue
b65ddc3638 Add /epersons/search/isNotMemberOf endpoint to REST API along with integration tests
(cherry picked from commit 5208a355d6)
2023-11-10 19:02:14 +00:00
Tim Donohue
887c7c486a Implement searchNonMembers for EPersonService. Add tests to prove it works (and tests for search()). Requires minor bug fix to AbstractHibernateDSODAO to allow for additional OR/AND clauses to be appended.
(cherry picked from commit f186dcf4ca)
2023-11-10 19:02:14 +00:00
Tim Donohue
7df4a2b1c6 Add isNotMemberOf for groups, including unit and integration tests
(cherry picked from commit 9d271b24b9)
2023-11-10 19:02:14 +00:00
DSpace Bot
417a270cf3 [Port dspace-7_x] Event consumer for submission config reloading when a collection changes (#9196)
* initialization with refactoring

(cherry picked from commit e93dc1cf45)

* also consider SubmissionConfigReaderException

(cherry picked from commit 8a04b87750)

* rename consumer file

(cherry picked from commit f6c92a4c8b)

* init submission service factory

(cherry picked from commit fcc52390b9)

* set submissionconfig config settings by default

(cherry picked from commit e343d51519)

* renaming SubmissionConfigReaderService

(cherry picked from commit 9ea7c321c3)

* support for SubmissionConfigService

(cherry picked from commit 61389fb787)

* fixing style errors and renaming submissionConfigService

(cherry picked from commit 5f49491b53)

* fixing style errors and unused imports

(cherry picked from commit 31d9251950)

* set default submission event configs

(cherry picked from commit 578198c588)

* adding force indexing action to Consumer

(cherry picked from commit b91236434f)

* stylecheck fixes

(cherry picked from commit 89e89c3d8a)

* undo event.dispatcher.noindex.consumers

(cherry picked from commit ae9dc5f005)

---------

Co-authored-by: Paulo Graça <paulo1978@gmail.com>
2023-11-10 12:58:18 -06:00
Tim Donohue
be52c85e62 Merge pull request #9193 from DSpace/backport-9175-to-dspace-7_x
[Port dspace-7_x] Improve sitemap performance and exclude restricted and undiscoverable content
2023-11-10 09:55:21 -06:00
Andrea Bollini
154d488138 DURACOM-199 fix sitemap generator for restricted content and improve performance
(cherry picked from commit 6d9ca388da)
2023-11-10 15:04:59 +00:00
Andrea Bollini
c9abeac208 DURACOM-199 improved test to show bug related to restricted content
(cherry picked from commit dac4df9c1a)
2023-11-10 15:04:59 +00:00
Yana De Pauw
9b1234fc85 106812: Remove stray settting of group for an rp 2023-11-10 14:05:38 +01:00
Tim Donohue
adde7b7efd Merge pull request #9189 from DSpace/backport-9161-to-dspace-7_x
[Port dspace-7_x] Cache 'Administrator' group to improve performance of Workflow Tasks Page.
2023-11-09 17:18:31 -06:00
Tim Donohue
d301eade48 Merge pull request #9188 from DSpace/backport-9130-to-dspace-7_x
[Port dspace-7_x] Authentication Method related special groups are put in claim set even if a different authentication method is used
2023-11-09 17:18:12 -06:00
Jens Vannerum
fd13ee7cfd 107891: Cache administrator group
(cherry picked from commit 1e82ca7998)
2023-11-09 22:49:20 +00:00
Luca Giamminonni
911a7a394f [DURACOM-192] Added test
(cherry picked from commit fa39251071)
2023-11-09 22:38:12 +00:00
Luca Giamminonni
ec972ea2de [DURACOM-192] Authentication Method related special groups are put in claim set even if a different authentication method is used
(cherry picked from commit 6504d749b9)
2023-11-09 22:38:11 +00:00
Alan Orth
68ab431294 Merge pull request #9187 from DSpace/backport-9181-to-dspace-7_x
[Port dspace-7_x] Fix an issue where the `closed` attribute of vocabularies in the submission forms would be neglected
2023-11-09 22:32:09 +03:00
Alan Orth
a6046e0168 Merge pull request #9186 from DSpace/backport-9179-to-dspace-7_x
[Port dspace-7_x] [DURACOM-200] improvement of checker script
2023-11-09 22:30:11 +03:00
Jens Vannerum
adf644535c 108055: isClosed method should use xml configuration
(cherry picked from commit d800d800d5)
2023-11-09 18:57:23 +00:00
mohamed eskander
4b2957358f [DURACOM-200] improvement of checker script
(cherry picked from commit 5a7c7956cd)
2023-11-09 17:40:27 +00:00
Tim Donohue
5601392e84 Merge pull request #9183 from DSpace/backport-9148-to-dspace-7_x
[Port dspace-7_x] Return both user and operational LDAP attributes
2023-11-08 17:07:32 -06:00
wwuck
0172cf6508 Return both user and operational LDAP attributes
Explicitly request both user and operation attributes
for LDAP group search as the default searching does not
include operational attributes.

This is required to fetch the memberOf attribute when checking
LDAP group membership.

Fixes #9151

(cherry picked from commit 56b7cbf4db)
2023-11-08 22:40:46 +00:00
Tim Donohue
843828dcdf Merge pull request #9182 from tdonohue/port_9076_to_dspace-7_x
[Port dspace-7_x] Fix to prevent workflow tasks configured to be queued from running automatically
2023-11-08 15:52:03 -06:00
Agustina Martinez
c1a48e5512 XmlWorkflowCuratorServiceImpl: add check to queue task if configured; Curation: remove obsolete code preventing curation running on workflow tasks as #3157 is now implemented 2023-11-08 14:58:39 -06:00
Alan Orth
101b3a2f57 Merge pull request #9173 from DSpace/backport-9165-to-dspace-7_x
[Port dspace-7_x] DS-9059: removes options to ping search engines when generating sitemaps
2023-11-06 23:13:19 +03:00
nwoodward
ca624e7ab5 removed options to ping search engines when generating sitemaps
(cherry picked from commit f8f8806040)
2023-11-06 19:36:36 +00:00
Tim Donohue
a5e4233f1d Merge pull request #9170 from DSpace/backport-9157-to-dspace-7_x
[Port dspace-7_x] dspace/config: update spider agent list
2023-11-06 09:54:38 -06:00
Alan Orth
38c81b9f0d dspace/config: update spider agent list
Update list of spider user agents from the COUNTER-Robots project.

See: https://github.com/atmire/COUNTER-Robots
(cherry picked from commit 7566a79d90)
2023-11-03 21:32:53 +00:00
Tim Donohue
194a3e57a3 Merge pull request #9169 from DSpace/backport-8980-to-dspace-7_x
[Port dspace-7_x] Improve performance of discovery consumer when there are many items to index
2023-11-03 12:22:32 -05:00
Toni Prieto
6c211ac19c Change class name to ContextIT and correct a test
(cherry picked from commit a5567992bb)
2023-11-03 15:55:45 +00:00
Toni Prieto
ddbba2d125 Add test to check retrieving of policies after changing mode to READ_ONLY
(cherry picked from commit d19a9599b5)
2023-11-03 15:55:45 +00:00
Toni Prieto
1b0e826bba Flush database changes after switching to READONLY mode
(cherry picked from commit 00a65312cc)
2023-11-03 15:55:45 +00:00
Toni Prieto
b194e9c4dd Add functions to do a manual flush of the db session and call flush before change to READ_ONLY mode to be sure we index the current object
(cherry picked from commit c33d3fa87d)
2023-11-03 15:55:45 +00:00
Toni Prieto
e6fa537512 Change the database mode to READ_ONLY during the indexing by discovery consumer (IndexEventConsumer)
(cherry picked from commit 94822b50af)
2023-11-03 15:55:45 +00:00
Tim Donohue
9624347201 Merge pull request #9168 from DSpace/backport-9136-to-dspace-7_x
[Port dspace-7_x] Verify optional request-a-copy message is not missing or a literal "null" value
2023-11-02 17:20:00 -05:00
Tim Donohue
3ded3acd8f Merge pull request #9084 from TexasDigitalLibrary/DS-4414-7_x
[Port dspace-7_x] DS-4414: adds authorization check for license bitstream in OAI import
2023-11-02 16:55:18 -05:00
Tim Donohue
52e965b06a Merge pull request #9167 from DSpace/backport-9126-to-dspace-7_x
[Port dspace-7_x] Allow users with write permission to see hidden metadata
2023-11-02 16:23:08 -05:00
Tim Donohue
551c84dede Verify optional message is not missing or a literal "null" value
(cherry picked from commit 534ee3a699)
2023-11-02 21:21:10 +00:00
Toni Prieto
42959d5db8 Add test to check that user with read rights can see hidden metadata
(cherry picked from commit 03496c36d4)
2023-11-02 19:58:18 +00:00
Toni Prieto
40bb9491a5 Test modification: allow users with write rights to see hidden metadata
(cherry picked from commit df7f6e9f40)
2023-11-02 19:58:18 +00:00
Toni Prieto
686747bbf8 Allow users with write permission to view hidden metadata
(cherry picked from commit 65a17d4390)
2023-11-02 19:58:18 +00:00
Tim Donohue
f8f54719c9 Merge pull request #9166 from DSpace/backport-9078-to-dspace-7_x
[Port dspace-7_x] Improve performance for Groups with many EPerson members. Fix pagination on endpoints
2023-11-02 14:47:13 -05:00
Tim Donohue
6e63e63039 Address feedback. Initialize HashSet sizes to avoid resizing. Correct comment about indeterminante ordering.
(cherry picked from commit f011a5a5db)
2023-11-02 19:09:16 +00:00
Tim Donohue
f6003164c8 Use join instead of subquery as join seems slightly faster.
(cherry picked from commit 9c0bf08cf4)
2023-11-02 19:09:16 +00:00
Tim Donohue
3caa8b26dc Fix bug in logic for determining whether a workflow group will be left empty. Need to check *both* EPerson and subgroup counts.
(cherry picked from commit 9832259aa0)
2023-11-02 19:09:16 +00:00
Tim Donohue
a723018e9a Replace several usages of allMembers() with count methods to avoid performance issues
(cherry picked from commit 2c9165afb0)
2023-11-02 19:09:16 +00:00
Tim Donohue
8b1a0c1dae Add countAllMembers() with tests. Update tests to use try/catch
(cherry picked from commit 58a15b7297)
2023-11-02 19:09:16 +00:00
Tim Donohue
7aca4df6ef Minor unit test fix. Use isEqualCollection to compare list with Hibernate results
(cherry picked from commit cdb68a6fdc)
2023-11-02 19:09:16 +00:00
Tim Donohue
e48b21637a Add basic unit test for new EpersonService methods
(cherry picked from commit c000e54116)
2023-11-02 19:09:16 +00:00
Tim Donohue
22fb4508ee Add pagination to /groups/[uuid]/subgroups endpoint, along with tests
(cherry picked from commit e7c4b9eba2)
2023-11-02 19:09:16 +00:00
Tim Donohue
a4db6d39d7 Add missing pagination test for /groups/[uuid]/epersons
(cherry picked from commit 457dd9ae44)
2023-11-02 19:09:16 +00:00
Tim Donohue
8b748af944 Bug fix. Only use pageSize and offset if >0
(cherry picked from commit 15de2d0074)
2023-11-02 19:09:16 +00:00
Tim Donohue
8aad365496 Add basic pagination to /groups/[uuid]/epersons endpoint
(cherry picked from commit 74c72354b4)
2023-11-02 19:09:16 +00:00
Alan Orth
1ad9a097ee Merge pull request #9160 from DSpace/backport-9106-to-dspace-7_x
[Port dspace-7_x] Clear primary bistream when it's deleted- Fix issue #9099
2023-10-31 10:37:16 +03:00
Paulo Graça
c601ac3475 typo
(cherry picked from commit 74cce86afc)
2023-10-31 06:55:06 +00:00
Paulo Graça
412d62aa43 make comments more clear to understand
(cherry picked from commit c0bbd9d91f)
2023-10-31 06:55:06 +00:00
Paulo Graça
68e8894169 new testDeleteBitstreamAndUnsetPrimaryBitstreamID remove unnecessary stubs
(cherry picked from commit a3e506c7f4)
2023-10-31 06:55:06 +00:00
Paulo Graça
41640bbb65 new testDeleteBitstreamAndUnsetPrimaryBitstreamID test for primary bitstream verification
(cherry picked from commit ad0d22a13a)
2023-10-31 06:55:06 +00:00
Paulo Graça
024c47559e new testDeleteBitstreamAndUnsetPrimaryBitstreamID test for primary bitstream verification
(cherry picked from commit e6d108a94e)
2023-10-31 06:55:06 +00:00
Paulo Graça
09d5f6fcc9 fix style errors
(cherry picked from commit 74605f159a)
2023-10-31 06:55:06 +00:00
Paulo Graça
55eba18a47 add missing head style check
(cherry picked from commit caba4bbb96)
2023-10-31 06:55:06 +00:00
Paulo Graça
6b35f9e449 adding missing bundle REMOVE authorization
(cherry picked from commit 4a05600194)
2023-10-31 06:55:06 +00:00
Paulo Graça
7ab1d39671 add bundle remove authorization
(cherry picked from commit 3255e073fa)
2023-10-31 06:55:06 +00:00
Paulo Graça
7ec5f7ec8a adding sql expression to fix deleted primary bitstreams from bundle
(cherry picked from commit 8a531ad0c7)
2023-10-31 06:55:06 +00:00
Paulo Graça
c96558986a unset primary bitstream on bitstream service
(cherry picked from commit 47ca74bc42)
2023-10-31 06:55:06 +00:00
Paulo Graça
08f361a9cb add test and fix
(cherry picked from commit 48b0b71c63)
2023-10-31 06:55:06 +00:00
Tim Donohue
c0f4d1e219 Merge pull request #9158 from DSpace/backport-9045-to-dspace-7_x
[Port dspace-7_x] OAI-PMH use Templates for compiled XSLT instead of Transformer (thread-safe)
2023-10-30 17:15:11 -05:00
Tim Donohue
3553467f21 Merge pull request #9124 from mwoodiupui/dspace-7_x
Give `authority` Solr core a `_version_` field so it can be loaded
2023-10-30 16:59:14 -05:00
Tim Donohue
448387ccfd Update to newly released XOAI 3.4.0
(cherry picked from commit 160ebbd791)
2023-10-30 21:02:52 +00:00
Christian Bethge
5596cc686d 9043 use Templates for compiled XSLT instead of Transformer - use Templates are thread-safe and NOT Transformer
(cherry picked from commit 1160341cb2)
2023-10-30 21:02:52 +00:00
Alan Orth
0ddc05bffb Merge pull request #9156 from DSpace/backport-9152-to-dspace-7_x
[Port dspace-7_x] Add a null check when assigning ldap groups
2023-10-29 21:11:35 +03:00
wwuck
e597c2afc1 Add a null check when assigning ldap groups
Prevent NullReferenceException by checking if the group list is null

Fixes #8920

(cherry picked from commit bb6498ed5e)
2023-10-29 16:57:18 +00:00
Tim Donohue
bd986a06c4 Merge pull request #9153 from DSpace/backport-9069-to-dspace-7_x
[Port dspace-7_x] Fix "Site cannot be indexed" error which appears in ITs and sometimes in logs
2023-10-27 10:46:11 -05:00
Tim Donohue
e649966cb7 Merge pull request #8984 from uofmsean/fix-8558-set-solr-timezone
Set Solr timezone to UTC when converting local date/time to the stored value that assumes Zulu (Z)
2023-10-27 10:44:52 -05:00
Tim Donohue
b5a1a3b4bd Merge pull request #9150 from DSpace/backport-9001-to-dspace-7_x
[Port dspace-7_x] Make workflow curation tasks actually work.
2023-10-27 10:05:05 -05:00
Tim Donohue
1bc6e1ff71 Fix "Site cannot be indexed" error by ignoring ADD/REMOVE events on Site object
(cherry picked from commit ef7f02fe81)
2023-10-27 14:54:51 +00:00
Mark H. Wood
06f6a41cbf Handle missing role.
(cherry picked from commit 2e62fa3fd1)
2023-10-26 21:23:34 +00:00
Mark H. Wood
7a2b018843 Correct some documentation.
(cherry picked from commit be22790aad)
2023-10-26 21:23:34 +00:00
Mark H. Wood
4b62c9b605 Community request: fake EPerson from configuration.
(cherry picked from commit bb9e88d1bb)
2023-10-26 21:23:34 +00:00
Mark H. Wood
7cdc710895 Make workflow curation tasks actually work.
When curation runs, there was no "current user" and no claimed task,
so the code broke when trying to find people to notify about curation
failures.

(cherry picked from commit a76af35a0c)
2023-10-26 21:23:34 +00:00
Tim Donohue
52dca308ad Merge pull request #9149 from DSpace/backport-9113-to-dspace-7_x
[Port dspace-7_x] fix not resolved thumbnail due to filename issues
2023-10-26 12:16:28 -05:00
Gantner, Florian Klaus
9d099dcf3f extract bitstream thumbnail name pattern into own function
(cherry picked from commit c5466c2249)
2023-10-26 16:10:19 +00:00
Gantner, Florian Klaus
af5632c2f2 check null value of bitstream name before quoting name for regex
(cherry picked from commit a9bcc0c223)
2023-10-26 16:10:18 +00:00
Gantner, Florian Klaus
1c7e9ea1f1 quote Pattern for thumbnail resolution constructed from bitstream filename
(cherry picked from commit a124807468)
2023-10-26 16:10:18 +00:00
Tim Donohue
7e36062c2e Merge pull request #9039 from atmire/backport-9019-to-dspace-7_x
[Port to dspace-7_x] Fix inherit policies at item move
2023-10-25 16:38:36 -05:00
Tim Donohue
21ce7d7580 Merge pull request #9138 from tdonohue/port_8966_to_dspace7x
[Port to dspace-7_x] Reading localized license file.
2023-10-20 17:18:50 -05:00
Tim Donohue
fa01fde364 Applying commit 6108c98d82 2023-10-20 16:35:14 -05:00
damian
b21b5e0096 Reading localized license file. 2023-10-20 16:33:51 -05:00
damian
093785e5e2 Reading localized license file. 2023-10-20 16:30:50 -05:00
Tim Donohue
68e80b92f0 Merge pull request #9137 from DSpace/backport-9135-to-dspace-7_x
[Port dspace-7_x] Bump org.json:json from 20230227 to 20231013 in /dspace-api
2023-10-20 15:55:16 -05:00
dependabot[bot]
ad7f506b2b Bump org.json:json from 20230227 to 20231013 in /dspace-api
Bumps [org.json:json](https://github.com/douglascrockford/JSON-java) from 20230227 to 20231013.
- [Release notes](https://github.com/douglascrockford/JSON-java/releases)
- [Changelog](https://github.com/stleary/JSON-java/blob/master/docs/RELEASES.md)
- [Commits](https://github.com/douglascrockford/JSON-java/commits)

---
updated-dependencies:
- dependency-name: org.json:json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 11a08f1ac0)
2023-10-20 20:16:32 +00:00
Tim Donohue
1e28df7998 Merge pull request #9134 from tdonohue/port_9117
[Port dspace-7_x] Bump org.eclipse.jetty:jetty-http
2023-10-20 09:56:39 -05:00
dependabot[bot]
8028304513 Bump org.eclipse.jetty:jetty-http
Bumps [org.eclipse.jetty:jetty-http](https://github.com/eclipse/jetty.project) from 9.4.52.v20230823 to 9.4.53.v20231009.
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.52.v20230823...jetty-9.4.53.v20231009)

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-http
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 16:48:08 -05:00
Tim Donohue
fb2162b6a0 Merge pull request #9133 from DSpace/backport-9121-to-dspace-7_x
[Port dspace-7_x] oai_openaire.xsl : change resourceTypeGeneral for thesis
2023-10-19 13:51:55 -05:00
Marie-Hélène Vézina
dd976b693a oai_openaire.xsl : change resourceTypeGeneral for thesis
Thesis are "Literature" resource type (resourceTypeGeneral), not "other research product"

ref:
https://github.com/openaire/guidelines-literature-repositories/issues/43#issuecomment-1318262914
and
https://api.openaire.eu/vocabularies/dnet:result_typologies/publication

(cherry picked from commit 669ff34350)
2023-10-19 17:34:06 +00:00
Koen Pauwels
252941046a Merge remote-tracking branch 'dspace/dspace-7_x' into backport-9019-to-dspace-7_x 2023-10-18 15:44:45 +02:00
Alan Orth
807168b77c Merge pull request #9128 from DSpace/backport-9110-to-dspace-7_x
[Port dspace-7_x] #8585 Add submitter information to provenance metadata
2023-10-17 12:52:11 +03:00
Alan Orth
c032f3a041 dspace-api: fix misaligned comment
(cherry picked from commit 4fba787322)
2023-10-17 09:00:26 +00:00
Adán Román Ruiz
0ddebd926f 8585 - added provenance to metadata-import and itemImport
(cherry picked from commit ea6307dcc6)
2023-10-17 09:00:26 +00:00
Adán Román Ruiz
668b5b24df #8585 Add submitter information to provenance metadata
(cherry picked from commit c15ac0eb4a)
2023-10-17 09:00:26 +00:00
Mark H. Wood
c8e4a0fd90 Define _version_ 2023-10-12 16:45:48 -04:00
kshepherd
4a3b9c1e47 Merge pull request #9111 from DSpace/backport-9101-to-dspace-7_x
[Port dspace-7_x] 8968 - request-a-copy email: non ASCII characters are encoded as HTML…
2023-10-10 13:47:06 +13:00
Adán Román Ruiz
d957dc2007 checkstiye
(cherry picked from commit d12fbe2c34)
2023-10-09 23:50:52 +00:00
Adán Román Ruiz
11dc69ac34 8968 - implementated using HtmlUtils scaping
(cherry picked from commit 090beedb6f)
2023-10-09 23:50:52 +00:00
Adán Román Ruiz
36ad3de11f checkstyle
(cherry picked from commit 2c2b3b18dc)
2023-10-09 23:50:52 +00:00
Adán Román Ruiz
8d4fd1ce6c 8968 - added custom StringEscapper
(cherry picked from commit 103c8ee757)
2023-10-09 23:50:52 +00:00
aroman-arvo
e4d54bba27 unused import
(cherry picked from commit bf6e042085)
2023-10-09 23:50:52 +00:00
aroman-arvo
2b25321362 8968 - request-a-copy email: non ASCII characters are encoded as HTML character entity references
(cherry picked from commit db36d5eeae)
2023-10-09 23:50:52 +00:00
Alan Orth
851123b956 Merge pull request #9098 from kshepherd/bugfix/handleprovider_class_cast_7x
Additional Item class cast fixes in handle providers
2023-10-03 13:08:04 +03:00
Tim Donohue
8160f7ccd6 Merge pull request #9102 from DSpace/backport-9100-to-dspace-7_x
[Port dspace-7_x] Remove Oracle script that accidentally made it in via #8800
2023-10-02 12:40:30 -05:00
Tim Donohue
1c1266b855 Remove Oracle script that accidentally made it in via #8800
(cherry picked from commit 5e04edf41e)
2023-10-02 16:56:27 +00:00
Kim Shepherd
33d2ee961d Additional Item class cast fixes in handle providers
DSOs were not properly checked if they were instanceof Item before
attempting the cast in HandleIdentifierProvider and
VersionedHandleIdentifierProviderWithCanonicalHandles
2023-10-02 17:57:08 +13:00
Yana De Pauw
9880e697b6 106812: Add h2 sql file 2023-09-29 15:36:53 +02:00
Yana De Pauw
1cf13e3bfe 106812: Fix old rest resource policy creations 2023-09-29 11:44:29 +02:00
Yana De Pauw
b923e13726 106812: Fix and add new tests 2023-09-29 10:36:43 +02:00
Yana De Pauw
16159f3761 106812: Refactor resource policies to have either group or eperson 2023-09-28 15:07:14 +02:00
Tim Donohue
d6e5074c5b Merge pull request #9090 from DSpace/backport-8926-to-dspace-7_x
[Port dspace-7_x] OAI: add support to extract embargo from bitstreams
2023-09-22 12:37:32 -05:00
Agustina Martinez
572ebb5b27 DefaultAccessStatusHelper: getEmbargoFromItem return null embargo if status than embargo
(cherry picked from commit e05e73a112)
2023-09-22 16:01:17 +00:00
Agustina Martinez
a211edaeb2 Remove currently unused customisation of ItemUtils
(cherry picked from commit 490a982e80)
2023-09-22 16:01:17 +00:00
Agustina Martinez
db733101b6 DefaultAccessStatusHelper: fix logic to take shortest embargo
(cherry picked from commit d17ef09082)
2023-09-22 16:01:17 +00:00
Agustina Martinez
9a51fb8768 uketd_dc.xsl: also expose access-status if embargo or restricted
(cherry picked from commit 4b40872a6d)
2023-09-22 16:01:17 +00:00
Agustina Martinez
08e82ebf28 ItemUtils.java: refactored addEmbargoField
(cherry picked from commit 291afa765d)
2023-09-22 16:01:17 +00:00
Agustina Martinez
d154936a3d Add null check
(cherry picked from commit 0de4c3945e)
2023-09-22 16:01:17 +00:00
Agustina Martinez
31251183f3 Fix style issues
(cherry picked from commit 6e2c8a4ae0)
2023-09-22 16:01:17 +00:00
Agustina Martinez
beaf40dd9b Fix style issues
(cherry picked from commit 724a4ffb0e)
2023-09-22 16:01:17 +00:00
Agustina Martinez
f330e36528 Remove unused imports
(cherry picked from commit 4bd2cfdf0f)
2023-09-22 16:01:17 +00:00
Agustina Martinez
f88207792a Refactored access-status to include embargo date based on the DefaultAccessStatusHelper logic (look at primary or first bitstream)
(cherry picked from commit 895926f021)
2023-09-22 16:01:17 +00:00
Agustina Martinez
3f5bfe4aa4 ItemUtils.java: improved method to account for multiple embargo policies and select the longest embargo
(cherry picked from commit 538be7f09b)
2023-09-22 16:01:17 +00:00
Agustina Martinez
c5ca59f2e5 ItemUtils.java: added method doc
(cherry picked from commit 51e60fbcf9)
2023-09-22 16:01:17 +00:00
Agustina Martinez
c711d2d944 OAI: add support to extract embargo from bitstreams and expose it in OAI metadata
(cherry picked from commit db81d758a9)
2023-09-22 16:01:17 +00:00
Tim Donohue
dd09fd7a7d Merge pull request #9079 from TexasDigitalLibrary/DS-3994-7_x
[Port dspace-7_x] DS-3994: fix logical bug when checking if field is controlled authority
2023-09-21 10:51:38 -05:00
Alan Orth
57fa641105 Merge pull request #9082 from TexasDigitalLibrary/DS-7936-7_x
[Port dspace-7_x] DS-7936: remove optimize option (-o) from oai import
2023-09-20 08:13:15 +03:00
nwoodward
8027d3b305 added authorization check for license bitstream in OAI import 2023-09-19 16:03:22 -05:00
nwoodward
2667b8d187 remove optimize option from oai import 2023-09-19 15:43:29 -05:00
nwoodward
8271c4d07b fix logical bug when checking if field is controlled authority 2023-09-18 15:34:23 -05:00
Tim Donohue
88f4cdafcf Merge pull request #9077 from DSpace/backport-9067-to-dspace-7_x
[Port dspace-7_x] Remove 'cross join' from count query in `update-handle-prefix` script
2023-09-15 09:56:33 -05:00
Tim Donohue
f23fd92928 Merge pull request #9072 from DSpace/backport-9068-to-dspace-7_x
[Port dspace-7_x] Fix ClassCastException (Collection cannot be cast to Item) in some Handle classes which cause random IT failures
2023-09-15 09:55:01 -05:00
Tim Donohue
e757b9d9f4 Remove 'cross join' from count query. Updates "countHandlesByPrefix" to use a query similar to existing "findByPrefix"
(cherry picked from commit 14223bd712)
2023-09-15 14:38:12 +00:00
Hrafn Malmquist
4dedb3cf41 Merge pull request #9073 from DSpace/backport-9041-to-dspace-7_x
[Port dspace-7_x] Avoid double slashes in sitemap paths.
2023-09-15 12:52:59 +01:00
Mark H. Wood
7b2b8db512 Avoid double slashes in sitemap paths.
(cherry picked from commit eae4463eaa)
2023-09-15 09:22:37 +00:00
Tim Donohue
42e2e4b0c8 Fix checkstyle. Correct grammar of comment while doing so.
(cherry picked from commit ffa2683c63)
2023-09-14 18:01:23 +00:00
Tim Donohue
d965057854 Fix ClassCastException (Collection cannot be cast to Item) in Handle identifier classes
(cherry picked from commit 1271374d37)
2023-09-14 18:01:23 +00:00
Tim Donohue
5a91da6f0e Merge pull request #9065 from DSpace/backport-8828-to-dspace-7_x
[Port dspace-7_x] Add a "container friendly" log4j2 cfg and output compose dspace log to console
2023-09-13 09:34:23 -05:00
Mark Cooper
f036467aa3 Add a "container friendly" log4j2 cfg and output compose dspace log to console
(cherry picked from commit 9eefd56cd7)
2023-09-13 01:33:55 +00:00
Alan Orth
36e9a88d9c Merge pull request #9063 from DSpace/backport-9058-to-dspace-7_x
[Port dspace-7_x] Expose OpenSearch configuration properties in the REST API
2023-09-12 12:11:43 +03:00
Hrafn Malmquist
ba197ef611 Add websvc.opensearch.autolink and websvc.opensearch.shortname to exposed REST configuration properties
(cherry picked from commit 80b35c9650)
2023-09-12 08:08:46 +00:00
Tim Donohue
02d347d72f Merge pull request #8948 from toniprieto/disable-hierarchical-browse-indexes
Add a configuration key to disable hierarchical browse indexes
2023-09-08 14:39:05 -05:00
Tim Donohue
ff393fe72d Add note that rebooting Tomcat required 2023-09-08 14:01:25 -05:00
Tim Donohue
6d005e356c Merge pull request #9055 from DSpace/backport-9051-to-dspace-7_x
[Port dspace-7_x] Bump org.eclipse.jetty:jetty-xml from 9.4.51.v20230217 to 9.4.52.v20230823
2023-09-07 13:11:44 -05:00
dependabot[bot]
732314018d Bump org.eclipse.jetty:jetty-xml
Bumps [org.eclipse.jetty:jetty-xml](https://github.com/eclipse/jetty.project) from 9.4.51.v20230217 to 9.4.52.v20230823.
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.51.v20230217...jetty-9.4.52.v20230823)

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-xml
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 2bcc0b38a9)
2023-09-07 17:24:22 +00:00
Tim Donohue
4964eee108 Merge pull request #9054 from DSpace/backport-8924-to-dspace-7_x
[Port dspace-7_x] Rename test suites that are really integration testing.
2023-09-07 11:02:16 -05:00
Mark H. Wood
1b769de42a Rename test suites that are really integration testing.
(cherry picked from commit f66ca33b06)
2023-09-07 15:24:13 +00:00
Tim Donohue
f68856b12c Merge pull request #8949 from atmire/w2p-103837_GA4-exclude-non-content-bitstream-views-7.x
Exclude non-content bitstream view events from Google Analytics 4 (dspace-7_x)
2023-09-06 16:53:45 -05:00
Nona Luypaert
066fd53e98 Merge branch 'w2p-103837_GA4-exclude-non-content-bitstream-views-7.4' into w2p-103837_GA4-exclude-non-content-bitstream-views-7.x 2023-09-06 19:50:19 +02:00
Nona Luypaert
997057f8e4 103837: Fix isContentBitstream() in GoogleAsyncEventListener 2023-09-06 19:48:55 +02:00
Koen Pauwels
5fbc988518 Fix failing IT in BulkAccessControlIT 2023-08-24 14:55:43 +02:00
Koen Pauwels
5703dcb033 104878 Adjust ItemServiceTest to expect correct behavior of bundles when item is migrated 2023-08-24 14:55:43 +02:00
Koen Pauwels
54f174da04 104878 Fix error in ItemServiceTest related to inheriting collection policies upon item move 2023-08-24 14:55:43 +02:00
Koen Pauwels
502230b271 103818 Extend ItemServiceTest#testMoveItemToCollectionWithMoreRestrictiveReadPolicy 2023-08-24 14:55:43 +02:00
Koen Pauwels
8f4505207e 103818 Add boolean parameters to ItemServiceImpl methodds to decide whether to override read policies 2023-08-24 14:55:43 +02:00
Koen Pauwels
03961316dd 103818 Add boolean parameter to ItemServiceImpl#inheritCollectionDefaultPolicies to decide whether to override item read policies 2023-08-24 14:55:43 +02:00
Koen Pauwels
5e627b5ac8 103818 ItemServiceImpl#inheritCollectionDefaultPolicies now clears item READ policies if new parent collection has a default READ policy 2023-08-24 14:55:43 +02:00
Alan Orth
d307727b4f Merge pull request #9037 from DSpace/backport-9018-to-dspace-7_x
[Port dspace-7_x] Fix different CLI commands throw an exception on help argument
2023-08-24 11:40:08 +03:00
Alan Orth
1fc8fc637c dspace-api: remove unnecessary trailing whitespace 2023-08-24 10:57:16 +03:00
Tim Donohue
bd1eb00d2d Enable new skip merge commit feature 2023-08-23 17:03:08 -05:00
Christian Bethge
7f1875c945 remove not necessary else
(cherry picked from commit 064e2caa37)
2023-08-23 21:59:17 +00:00
Christian Bethge
8045f6a014 add DSpaceSkipUnknownArgumentsParser as parser to ignore/skip unknown arguments in cli by help, fix not necessary ParseException in help
(cherry picked from commit 86285d78aa)
2023-08-23 21:59:17 +00:00
Christian Bethge
a1f356ab33 ingore unrecognized arguments on help
(cherry picked from commit 82c9b6fc9b)
2023-08-23 21:59:17 +00:00
Christian Bethge
f776cec837 fix stylecheck
(cherry picked from commit b1377ca1ef)
2023-08-23 21:59:17 +00:00
Christian Bethge
ae2c253082 fix MissingOptionException on help
(cherry picked from commit 8ae5ffbf9b)
2023-08-23 21:59:17 +00:00
Alan Orth
c88a25f16c Merge pull request #9034 from DSpace/backport-9025-to-dspace-7_x
[Port dspace-7_x] 3331 - remove the --optimize feature of 'dspace stats-util'
2023-08-23 15:56:02 +03:00
aroman-arvo
79e47837ae 3331 - remove the --optimize feature of 'dspace stats-util'
(cherry picked from commit 08c650921d)
2023-08-23 12:16:35 +00:00
Alan Orth
785d07087a Merge pull request #9008 from MW3000/fix-8963-remove-deletion-constraint-from-groomer-tool
Fix #8963: Remove deletion constraint from Groomer
2023-08-23 12:48:45 +03:00
Tim Donohue
c2402b1a4f Merge pull request #9032 from DSpace/backport-9016-to-dspace-7_x
[Port dspace-7_x] Avoid requiring git as a build dependency
2023-08-22 16:06:41 -05:00
Hrafn Malmquist
c08f762525 Bump up versions of buildnumber-maven-plugin & build-helper-maven-plugin. add configuration for SCM failure
(cherry picked from commit 78ea9e86df)
2023-08-22 20:24:45 +00:00
Tim Donohue
92a1dddecf Merge pull request #9031 from DSpace/backport-9029-to-dspace-7_x
[Port dspace-7_x] README.md: Fix typo
2023-08-22 10:50:02 -05:00
Christian Clauss
e6829c7b42 README.md: Fix typo
(cherry picked from commit ca8abddff1)
2023-08-22 15:42:55 +00:00
Nona Luypaert
681cfeed4d Merge branch 'w2p-103837_GA4-exclude-non-content-bitstream-views-7.4' into w2p-103837_GA4-exclude-non-content-bitstream-views-7.x 2023-08-17 16:59:12 +02:00
Nona Luypaert
22e209322c 103837: Refactor GA config to list bundles 2023-08-17 16:43:21 +02:00
Tim Donohue
4df8b86217 Merge pull request #9023 from DSpace/backport-9021-to-dspace-7_x
[Port dspace-7_x] Remove useless log.info
2023-08-09 14:50:35 -05:00
Tim Donohue
b5f2f67ead Remove useless log.info
(cherry picked from commit 1f3ad993cc)
2023-08-09 15:17:31 +00:00
Tim Donohue
e3186cbbb1 Merge pull request #9020 from DSpace/backport-8991-to-dspace-7_x
[Port dspace-7_x] On media filter failure log the name of the assetstore file and trace causes of exception
2023-08-09 09:24:36 -05:00
Mark H. Wood
65241b7a3e More description on OutOfMemoryError too.
(cherry picked from commit bbe5df3f7d)
2023-08-08 21:41:26 +00:00
Mark H. Wood
8db2f18143 Report Throwable's type too.
(cherry picked from commit d6b612fc5c)
2023-08-08 21:41:26 +00:00
Mark H. Wood
40ced53032 On failure log the name of the assetstore file and trace causes of exception.
(cherry picked from commit 22974e982c)
2023-08-08 21:41:26 +00:00
Tim Donohue
8f65a46736 Merge pull request #8952 from mwoodiupui/8500-7_x
Missing subject in template-based e-mails 7_x
2023-08-04 13:26:12 -05:00
Tim Donohue
0b5e70369a Merge pull request #9013 from tdonohue/port_8940
[Port dspace-7_x] Fix #8933: Only add the base statistic core if it hasn't already been added
2023-08-04 11:23:16 -05:00
Max Nuding
59f14cf67a Remove duplicate code 2023-08-04 10:39:00 -05:00
max.nuding
a3f2bd0bb7 Fix #8933: Only add the base statistic core if it hasn't already been added 2023-08-04 10:38:52 -05:00
Tim Donohue
df04b6ecf6 Merge pull request #9012 from DSpace/backport-9007-to-dspace-7_x
[Port dspace-7_x] 9006 geoip fix referenced configuration
2023-08-04 09:20:24 -05:00
Alan Orth
5fccd6190f Merge pull request #9011 from DSpace/backport-8936-to-dspace-7_x
[Port dspace-7_x] DS-8935. webui.browse.link CrossLinks - Fix for multiple exact matches
2023-08-04 16:54:17 +03:00
Christian Bethge
dd5c810b0c #9006 fix referenced configuration file (Test)
(cherry picked from commit 309b0b355e)
2023-08-03 21:54:31 +00:00
Christian Bethge
066dfbc849 #9006 fix referenced configuration file
(cherry picked from commit 29a88d7e2d)
2023-08-03 21:54:31 +00:00
David P. Steelman
2180b4e535 DS-8935. webui.browse.link CrossLinks - Fix for multiple exact matches
Fixes #8935 when multiple exact match "webui.browse.link" configuration
entries are present that point to different indexes.

Modified the code to return the index associated with the given
metadata (which is used as the key in the hash map), instead of the key
from the keySet (which may not actually be the metadata value being
searched for).

https://github.com/DSpace/DSpace/issues/8935
(cherry picked from commit b846c53baa)
2023-08-03 21:37:19 +00:00
Tim Donohue
409182a067 Merge pull request #9010 from DSpace/backport-8961-to-dspace-7_x
[Port dspace-7_x] 'null' value is passed to sendErrorResponse instead of actual exception
2023-08-03 14:09:39 -05:00
corrado lombardi
81cbb6692c [DURACOM-179] replaced 'null' value with exception actual value in sendErrorResponse method calls having 'null'
(cherry picked from commit aa35a47add)
2023-08-03 17:31:36 +00:00
Tim Donohue
53222a005b Merge pull request #9009 from DSpace/backport-9004-to-dspace-7_x
[Port dspace-7_x] Enable entity type to submission form mapping by default
2023-08-03 12:08:07 -05:00
Tim Donohue
f803a2acf1 Enable entity type to submission form mapping by default
(cherry picked from commit b71eee89c1)
2023-08-03 16:22:28 +00:00
Martin Walk
e07763b021 Fix #8963: Remove deletion constraint from Groomer 2023-08-03 13:39:43 +02:00
Tim Donohue
eb7cdb1d21 Merge pull request #9003 from DSpace/backport-8983-to-dspace-7_x
[Port dspace-7_x] Remove old webui properties from dspace.cfg
2023-08-02 15:55:08 -05:00
Alan Orth
acf27a5d76 dspace.cfg: remove old webui.itemlist.browse.* property
The webui.itemlist.browse.* properties are no longer used in DSpace
7.

(cherry picked from commit 35f72bc9d0)
2023-08-02 20:15:57 +00:00
Alan Orth
6e4490197b dspace.cfg: remove old webui.browse.thumbnail.show property
The webui.browse.thumbnail.show property is no longer used as of
DSpace 7. Also remove subsequent references to adding thumbnails
to item view columns since these are from legacy DSpace.

(cherry picked from commit 213a546486)
2023-08-02 20:15:57 +00:00
Alan Orth
41c992a231 dspace.cfg: remove old webui.itemlist properties
These properties are no longer used in DSpace 7:

    webui.itemlist.widths
    webui.itemlist.*.widths
    webui.itemlist.tablewidth

(cherry picked from commit 16c46c4979)
2023-08-02 20:15:57 +00:00
Tim Donohue
fadfdc6ed2 Merge pull request #8997 from tdonohue/port_8955
[Port dspace-7_x] Prevent NPE during indexing if bitstream is null
2023-07-28 15:09:27 -05:00
Agustina Martinez
e4c639c905 Update ItemUtils.java
Prevent npe if bitstream is null
2023-07-28 13:57:37 -05:00
Agustina Martinez
7b54dde3a6 Update FullTextContentStreams.java
Add additional NPE checks
2023-07-28 13:57:29 -05:00
Agustina Martinez
06b54d5afa Update FullTextContentStreams.java
Fix NPE if bitstream is null
2023-07-28 13:57:22 -05:00
dependabot[bot]
0ad1998ff5 Bump h2 from 2.1.214 to 2.2.220
Bumps [h2](https://github.com/h2database/h2database) from 2.1.214 to 2.2.220.
- [Release notes](https://github.com/h2database/h2database/releases)
- [Commits](https://github.com/h2database/h2database/compare/version-2.1.214...version-2.2.220)

---
updated-dependencies:
- dependency-name: com.h2database:h2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-28 13:35:16 -05:00
Tim Donohue
8b34195f31 Merge pull request #8996 from DSpace/backport-8995-to-dspace-7_x
[Port dspace-7_x] Fix typo. Config must be a valid regex
2023-07-28 12:23:18 -05:00
Tim Donohue
867331e3af Fix typo. Config must be a valid regex
(cherry picked from commit 799528963e)
2023-07-28 16:55:08 +00:00
Tim Donohue
d1539efe9a Minor update to label_merge_conflicts to ignore any errors (seem random at this time) 2023-07-28 11:41:37 -05:00
Tim Donohue
0162853bb5 Run PR Port action as 'dspace-bot' to allow new PRs to trigger CI checks 2023-07-28 11:41:28 -05:00
Tim Donohue
e45e4f9831 Merge pull request #8992 from DSpace/backport-8988-to-dspace-7_x
[Port dspace-7_x] Add GitHub action to automatically create a port PR (based on label)
2023-07-28 10:51:08 -05:00
Tim Donohue
657312c8f0 Add action to automatically create a port PR when specified
(cherry picked from commit f6a898c3d1)
2023-07-28 15:13:25 +00:00
Sascha Szott
6fe61b4a8e remove obsolete code fragments 2023-07-27 11:52:38 -05:00
Sean Kalynuk
4c329b4319 Fixes #8558 - set Solr UTC timezone
Set the timezone of the Solr date formatter to UTC
2023-07-26 11:27:32 -05:00
Tim Donohue
db2a6d98d7 Merge pull request #8959 from tdonohue/port_8941
Port recent GitHub Actions changes to `dspace-7_x` branch
2023-07-14 16:15:21 -05:00
Tim Donohue
f9b7f780fc Merge pull request #8958 from tdonohue/port_8953
[PORT to 7.x] Add flag Pattern.UNICODE_CHARACTER_CLASS to pattern compilation to recognize unicode characters
2023-07-14 16:01:19 -05:00
Tim Donohue
dd8bfffedb Ensure 'main' code is tagged as 'latest' in DockerHub 2023-07-14 15:35:58 -05:00
Tim Donohue
211529f97f Split docker image builds into separate jobs to allow them to run in parallel. 2023-07-14 15:35:50 -05:00
Tim Donohue
4471a2dc23 Ensure codescan and label_merge_conflicts run on maintenance branches 2023-07-14 15:35:35 -05:00
Tim Donohue
2ebe1d69e4 Enable Pull Request Opened action to assign PRs to their creator 2023-07-14 15:35:26 -05:00
Toni Prieto
69f4829edb Add flag Pattern.UNICODE_CHARACTER_CLASS to pattern compilation to recognize unicode characters 2023-07-14 15:26:43 -05:00
Mark H. Wood
03f24a3339 Simplify and modernize the code. Store content directly in the template. 2023-07-12 12:55:41 -04:00
Mark H. Wood
d9f4ae7a89 Don't clear the list of accepted embedded message header properties.
Why was this cleared?
2023-07-12 12:55:41 -04:00
Mark H. Wood
334a02c2be More and better(?) documentation. 2023-07-12 12:55:41 -04:00
Nona Luypaert
b69201f147 Merge branch 'dspace-7_x' into w2p-103837_GA4-exclude-non-content-bitstream-views-7.x
Conflicts:
	dspace/config/dspace.cfg
2023-07-11 11:42:39 +02:00
Toni Prieto
e55bc87c1a Add a configuration key to disable hierarchical browse indexes 2023-07-10 12:11:45 +02:00
Nona Luypaert
1b94aecb26 103837: Only send GA4 events for ORIGINAL bitstreams + ITs 2023-07-06 16:48:10 +02:00
Tim Donohue
ea4565bd60 [maven-release-plugin] prepare branch dspace-7_x 2023-06-30 14:37:06 -05:00
Alan Orth
1e680009cf Merge pull request #8931 from toniprieto/ignore-vocabulary-index-without-facet
Fix for NullPointerException when enumerating browses for vocabularies without Discovery indexes
2023-06-30 20:56:45 +03:00
Toni Prieto
af55090245 Ignore vocabulary indexes without discovery facet to avoid NPE 2023-06-30 20:21:59 +03:00
Tim Donohue
43a4a79045 Merge pull request #8910 from DSpace/dependabot/maven/dspace-api/io.netty-netty-handler-4.1.94.Final
Bump netty-handler from 4.1.68.Final to 4.1.94.Final in /dspace-api
2023-06-30 10:02:39 -05:00
Alan Orth
e46681fc20 Merge pull request #8928 from toniprieto/improve-performance-auto-reindex
Improve performance of automatic discovery re-index after database changes
2023-06-29 20:46:21 +03:00
Toni Prieto
2b5c4a5f4a Improve performance of automatic discovery re-index after database changes 2023-06-29 13:00:59 +02:00
Tim Donohue
a533704a27 [maven-release-plugin] prepare for next development iteration 2023-06-23 12:10:56 -05:00
Tim Donohue
5a43e6bcf1 [maven-release-plugin] prepare release dspace-7.6 2023-06-23 12:10:53 -05:00
Tim Donohue
01c761281c Update LICENSES_THIRD_PARTY for 7.6 2023-06-23 11:50:12 -05:00
Tim Donohue
da657dbc67 Merge pull request #8905 from 4Science/DURACOM-156
[DURACOM-156] Signposting: feedback after initial deployment
2023-06-23 11:17:14 -05:00
Nikita Krivonosov
df4cff7dd1 [DURACOM-156] Singposting: feedback after initial deployment 2023-06-23 17:24:42 +02:00
Nikita Krivonosov
890f2a15e5 [DURACOM-156] Singposting: feedback after initial deployment 2023-06-23 11:45:07 +02:00
NikitaKr1vonosov
1fe90a236d Merge branch 'main' into DURACOM-156 2023-06-23 09:47:20 +02:00
Nikita Krivonosov
12fe87fc37 [DURACOM-156] Singposting: feedback after initial deployment 2023-06-23 09:46:46 +02:00
Nikita Krivonosov
55bfd4b2e5 [DURACOM-156] Singposting: feedback after initial deployment 2023-06-23 00:47:09 +02:00
Nikita Krivonosov
907c45a455 [DURACOM-156] Singposting: feedback after initial deployment 2023-06-21 17:27:20 +02:00
Tim Donohue
b52a4fb50d Update all Netty dependencies to 4.1.94.Final
Also had to add netty-transport-native-unix-common so that Solr doesn't throw dependency convergence issues.
2023-06-20 13:23:49 -05:00
dependabot[bot]
cf1257f20e Bump netty-handler from 4.1.68.Final to 4.1.94.Final in /dspace-api
Bumps [netty-handler](https://github.com/netty/netty) from 4.1.68.Final to 4.1.94.Final.
- [Commits](https://github.com/netty/netty/compare/netty-4.1.68.Final...netty-4.1.94.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-handler
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 16:35:40 +00:00
Tim Donohue
4ea5426d61 Merge pull request #8854 from tdonohue/disable_dtd_parsing_in_sources
Disable DTD parsing in all external source plugins
2023-06-20 09:22:15 -05:00
Tim Donohue
c5ec38551c Merge pull request #8875 from atmire/w2p-102057_refferer-fix-main
The referrer for a statistics view event is almost always wrong
2023-06-20 09:20:35 -05:00
Tim Donohue
4d4899cc3a Merge pull request #8904 from DSpace/dependabot/maven/com.google.guava-guava-32.0.0-jre
Bump guava from 31.0.1-jre to 32.0.0-jre
2023-06-16 15:58:18 -05:00
dependabot[bot]
7dd34ccc50 Bump guava from 31.0.1-jre to 32.0.0-jre
Bumps [guava](https://github.com/google/guava) from 31.0.1-jre to 32.0.0-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 20:23:12 +00:00
Tim Donohue
4c0b60418d Merge pull request #8813 from sistedes/feature-imagemagick-video
New ImageMagick-based media filter to generate video thumbnails
2023-06-16 15:19:14 -05:00
Tim Donohue
eda2c8811c Merge pull request #8901 from kshepherd/default_bundle_permissions
Fix to adjusting bundle and bitstream policies (item install, embargo lift)
2023-06-16 15:04:57 -05:00
Tim Donohue
fff633690c Merge pull request #8903 from alexandrevryghem/remove-publicdomain-from-cclicence-section
Hide publicdomain by default since it's now the same as CC0
2023-06-16 15:03:36 -05:00
Tim Donohue
b661056118 Merge pull request #8908 from mwoodiupui/8907
Request a Copy sends same email regardless of accept or reject
2023-06-16 12:07:37 -05:00
Tim Donohue
3ff5eb61c0 Fix to adjusting bundle and bitstream policies (item install, embargo lift)
Apply DEFAULT_ITEM_READ to bundles, not DEFAULT_BITSTREAM_READ so that
files can be listed if the item / default item is readable
Co-authored-by: kshepherd <kim@shepherd.nz>
Co-authored-by: tdonohue <tim.donohue@lyrasis.org>
2023-06-16 11:14:51 -05:00
Tim Donohue
240bfbfdc9 Fix to adjusting bundle and bitstream policies (item install, embargo lift)
Apply DEFAULT_ITEM_READ to bundles, not DEFAULT_BITSTREAM_READ so that
files can be listed if the item / default item is readable
2023-06-16 11:00:03 -05:00
Tim Donohue
aec3298da0 Merge pull request #8844 from 4Science/duracom-136_CST-9634
Bulk Access Control Script REST implementation
2023-06-16 10:48:18 -05:00
Yana De Pauw
013b95ea2a 102888: Implement feedback 2023-06-16 14:37:19 +02:00
NikitaKr1vonosov
3bba9979c3 Merge branch 'main' into DURACOM-156 2023-06-16 02:04:24 +02:00
Nikita Krivonosov
55c07e90cd [DURACOM-156] Singposting: feedback after initial deployment 2023-06-16 01:53:48 +02:00
Mark H. Wood
8adb16f945 Invent a rejection letter 2023-06-15 17:01:00 -04:00
Tim Donohue
f216f4c7fc Merge pull request #8891 from atmire/w2p-102124_bitstream-formats-download-attachment-main
Configuration for opening bitstream formats as attachment
2023-06-15 13:07:31 -05:00
Tim Donohue
176e93eb01 Merge pull request #8848 from alexandrevryghem/issue-1671_fix-relationships-not-updating-view-on-submission-form_contribute-main
Adding/removing relationships in the submission form does not update the view automatically
2023-06-15 11:45:01 -05:00
NikitaKr1vonosov
9137689cdc Merge branch 'main' into DURACOM-156 2023-06-15 09:21:46 +02:00
Nona Luypaert
dd951407a7 Merge branch 'w2p-102124_bitstream-formats-download-attachment-7.2' into w2p-102124_bitstream-formats-download-attachment-main
Conflicts:
	dspace-api/src/test/data/dspaceFolder/config/local.cfg
2023-06-15 00:00:42 +02:00
Alexandre Vryghem
1cb60a9018 Hide publicdomain by default since it's now the same as CC0
More info: https://api.creativecommons.org/docs/readme_15.html#changes-since-1-0
2023-06-14 23:48:27 +02:00
Nona Luypaert
7c7f3e2853 102124: Move content-disposition test config from local.cfg to IT itself 2023-06-14 23:47:36 +02:00
Tim Donohue
bbb75df3a1 Disable DTD parsing in all external source plugins to avoid XXEs 2023-06-14 16:12:45 -05:00
Tim Donohue
43f5eeb9ed Merge pull request #8843 from damian-joz/1787-coll-comm-item-counts
Item counters added to Communities and Collections REST API
2023-06-14 14:07:49 -05:00
Tim Donohue
49882a206c Merge pull request #8833 from mwoodiupui/reqitem-response
Get request-copy response email body from backend templates, as with all other emails
2023-06-14 13:18:21 -05:00
Tim Donohue
252bf8fe41 Merge pull request #8876 from atmire/contract-pr-222-primary-bitstream-on-bundle-support
Primary bitstream support for the REST api - Rework
2023-06-14 11:45:08 -05:00
Mark H. Wood
9caba7044b Remove test for removed content. 2023-06-14 10:53:49 -04:00
Mark H. Wood
411ac4a9a2 Clarify template comments. 2023-06-14 10:21:01 -04:00
Mark H. Wood
4abcfc8bf3 Rework message to make it more useful, more businesslike, not expose author's email by default. 2023-06-14 10:17:20 -04:00
damian
ca7c75987e Items count are now disabled by default. Naming changes. 2023-06-13 19:58:42 +02:00
Nikita Krivonosov
63e1519c6e [DURACOM-156] Singposting: feedback after initial deployment 2023-06-13 15:22:21 +02:00
Tim Donohue
e0631e745b Merge pull request #8889 from atmire/fix-issue-8888
[Issue: #8888] Fixing the hostname parsing for the shibboleth auth
2023-06-12 11:31:28 -05:00
Nona Luypaert
c0239cf174 Merge branch 'w2p-102124_bitstream-formats-download-attachment-7.2' into w2p-102124_bitstream-formats-download-attachment-main 2023-06-12 11:42:49 +02:00
Nona Luypaert
af8cf8671b 102124: Update webui.content_disposition_format comment 2023-06-12 11:41:33 +02:00
Tim Donohue
9c6d2bfaa8 Merge pull request #8831 from 4Science/CST-5728
[CST-5728] LYRASIS [Donated]: DSpace7: Implement signposting pattern …
2023-06-09 16:03:03 -05:00
Nona Luypaert
1d484f4a0b 102052: 403 checks for Admin ITs in PrimaryBitstreamControllerIT 2023-06-09 22:23:00 +02:00
Nona Luypaert
504bc1a61b Merge branch 'main' into w2p-102124_bitstream-formats-download-attachment-main 2023-06-09 20:41:35 +02:00
Tim Donohue
a57bca06a2 Merge pull request #8898 from DSpace/dependabot/maven/dspace-api/org.scala-lang-scala-library-2.13.9
Bump scala-library from 2.13.2 to 2.13.9 in /dspace-api
2023-06-09 11:34:02 -05:00
damian
ff504e35d1 Variable naming change. Javadocs addded. 2023-06-09 16:56:26 +02:00
dependabot[bot]
1ab04518a3 Bump scala-library from 2.13.2 to 2.13.9 in /dspace-api
Bumps [scala-library](https://github.com/scala/scala) from 2.13.2 to 2.13.9.
- [Release notes](https://github.com/scala/scala/releases)
- [Commits](https://github.com/scala/scala/compare/v2.13.2...v2.13.9)

---
updated-dependencies:
- dependency-name: org.scala-lang:scala-library
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-09 14:42:46 +00:00
Tim Donohue
056a910f86 Merge pull request #8500 from 4Science/DURACOM-92
Further S3 large file optimization
2023-06-09 09:42:18 -05:00
Yury Bondarenko
1b1830f037 Remove unnecessary DescribeStep change
As far as I can tell this never did anything
  - `relationship.*` is not a valid MDF, so it's unclear what it was supposed to do
  - everything keeps working if I leave this part out
2023-06-09 15:31:50 +02:00
damian
c6cf19d40c Merge branch 'main' into 1787-coll-comm-item-counts
# Conflicts:
#	dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java
#	dspace-api/src/main/java/org/dspace/content/service/CollectionService.java
2023-06-09 12:18:38 +02:00
Francesco Pio Scognamiglio
8764724159 Merge branch 'main' into DURACOM-92 2023-06-09 09:39:31 +02:00
Nona Luypaert
59caeb5875 Merge branch 'main' into contract-pr-222-primary-bitstream-on-bundle-support 2023-06-08 23:09:52 +02:00
Nona Luypaert
c5028f7f1f 102052: Small improvements 2023-06-08 23:08:48 +02:00
Nona Luypaert
1b06c64454 102052: Remove getPrimaryBitstream from PrimaryBitstreamController 2023-06-08 21:49:13 +02:00
Tim Donohue
f55e21e271 Merge pull request #8855 from paulo-graca/enhancement/addressing-#8633
Default submission forms per Entity type
2023-06-08 14:25:45 -05:00
Nona Luypaert
377e22eb65 Merge branch 'w2p-102124_bitstream-formats-download-attachment-7.2' into w2p-102124_bitstream-formats-download-attachment-main 2023-06-08 20:57:26 +02:00
Nona Luypaert
a00dd83a0c 102124: Avoid null pointer when checking disposition 2023-06-08 20:47:27 +02:00
Andrea Bollini
33929fa6bf Merge branch 'main' of https://github.com/DSpace/DSpace into duracom-136_CST-9634 2023-06-08 19:56:22 +02:00
Tim Donohue
4deab95b14 Merge pull request #8894 from 4Science/DURACOM-153
[DURACOM-153] fix validation to use the retrieved zip file on saf import
2023-06-08 11:27:47 -05:00
Francesco Pio Scognamiglio
6794c80afe Merge branch 'main' into DURACOM-153 2023-06-08 17:44:56 +02:00
Tim Donohue
c2ad791bc9 Merge pull request #8830 from 4Science/duracom-136
Allow script execution by user other than admins - starting from the curate script
2023-06-08 10:35:09 -05:00
Francesco Pio Scognamiglio
7757c4e898 [DURACOM-153] fix validation to use the retrieved zip file on saf import 2023-06-08 13:51:25 +02:00
Nikita Krivonosov
39df261411 [CST-5728] LYRASIS [Donated]: DSpace7: Implement signposting pattern in DSpace (REST) 2023-06-08 11:51:48 +02:00
Kristof De Langhe
3f2e2b819a Merge branch 'main' into w2p-102057_refferer-fix-main 2023-06-08 10:08:09 +02:00
NikitaKr1vonosov
44b948e71c Merge branch 'main' into CST-5728 2023-06-08 00:20:29 +02:00
Nikita Krivonosov
f8e3dad234 [CST-5728] LYRASIS [Donated]: DSpace7: Implement signposting pattern in DSpace (REST) 2023-06-08 00:12:14 +02:00
Tim Donohue
13344aabf9 Merge pull request #8869 from paulo-graca/enhancement/xoai-access-status-plugin
new Access Status XOAI plugin
2023-06-07 16:53:35 -05:00
Tim Donohue
7bbb5f438b Merge pull request #8829 from mspalti/iiif-search-plugin-update
Updated IIIF content search solr query params.
2023-06-07 09:40:09 -05:00
Mohamed Saber Eskander
f7ff85bbd5 solved issue of 'could not initialize proxy - no Session' 2023-06-07 12:53:19 +03:00
Paulo Graça
ce9e9fcc95 Merge branch 'main' into enhancement/addressing-#8633 2023-06-07 08:34:23 +01:00
NikitaKr1vonosov
2a1b24a058 Merge branch 'main' into CST-5728 2023-06-07 09:04:02 +02:00
Nikita Krivonosov
11df3b8d63 [CST-5728] LYRASIS [Donated]: DSpace7: Implement signposting pattern in DSpace (REST) 2023-06-07 08:49:47 +02:00
Nona Luypaert
c7375acf39 Merge branch 'main' into w2p-102124_bitstream-formats-download-attachment-main 2023-06-07 08:46:30 +02:00
Nona Luypaert
da48803d3d Merge branch 'w2p-102124_bitstream-formats-download-attachment-7.2' into w2p-102124_bitstream-formats-download-attachment-main 2023-06-07 08:43:45 +02:00
Nona Luypaert
bca98cd8f4 102124: Don't loop over extensions if mimetype was already found 2023-06-07 08:33:51 +02:00
Tim Donohue
bf8df5b1e8 Merge pull request #8758 from alexandrevryghem/w2p-100553_fix-metadata-registry-bugs_contribute-7.4
Added input validation for new metadata field submissions & fixed some other bugs related to metadata fields
2023-06-06 14:33:38 -05:00
Andrea Bollini
5a8c7a397c DURACOM-136 open endpoints to retrieve files of process to the user that has triggered the process 2023-06-06 20:12:23 +02:00
Andrea Bollini
32cd24b753 DURACOM-136 restrict script endpoints to authenticated users, add test to proof that standard script are reseved to site administrator 2023-06-06 19:45:31 +02:00
Tim Donohue
ea7272ec00 Merge pull request #8874 from mwoodiupui/service-lookup
Make service lookup retry log at DEBUG; radically shorten the trace.
2023-06-06 12:26:36 -05:00
eskander
6848ab20bd Merge remote-tracking branch 'origin/main' into duracom-136_CST-9634
# Conflicts:
#	dspace/config/spring/api/discovery.xml
2023-06-06 17:30:53 +03:00
Mohamed Saber Eskander
f2a63d9636 added new test cases
added JavaDocs
refactoring
2023-06-06 17:21:20 +03:00
Andrea Bollini
2b523ba5ac DURACOM-136 improve handling and testing of invalid mimetype 2023-06-06 16:01:47 +02:00
Andrea Bollini
14bb32036c DURACOM-136 add explaination of the commandLineParameters in the javadoc 2023-06-06 16:01:04 +02:00
Paulo Graça
3e6e795c3d Merge branch 'main' into enhancement/xoai-access-status-plugin 2023-06-06 14:03:59 +01:00
Paulo Graça
8bc8efc64e Merge branch 'main' into enhancement/addressing-#8633 2023-06-06 12:44:24 +01:00
Nona Luypaert
04161a0c4d 102124: Fix BitstreamRestController after merge 2023-06-06 11:24:10 +02:00
Kevin Van de Velde
3945d164e6 [Issue: #8888] Fixing the hostname parsing for the shibboleth auth 2023-06-06 08:35:18 +02:00
Tim Donohue
4b3e271468 Merge pull request #8887 from tdonohue/fix_test
Fix test class compilation
2023-06-05 16:40:11 -05:00
Tim Donohue
a0a1844de7 Fix test class compilation 2023-06-05 16:01:31 -05:00
Tim Donohue
333c7da729 Merge pull request #8623 from atmire/discovery-fixes
Fixes for scope based searching and indexing in Discovery
2023-06-05 15:37:21 -05:00
Tim Donohue
58c71bbeab Merge pull request #8485 from atmire/w2p-94299_Multiple_Bitstream_deletion_endpoint
multiple bitstream deletion endpoint
2023-06-05 15:35:45 -05:00
Tim Donohue
61db65ead5 Merge pull request #8826 from atmire/contract-pr-225-browse-by-support-for-controlled-vocabulary-main
Browse by Controlled Vocabulary (hierarchicalBrowse)
2023-06-05 15:31:37 -05:00
Paulo Graça
5d7c26c3d5 Merge branch 'main' into enhancement/xoai-access-status-plugin 2023-06-05 15:45:24 +01:00
Paulo Graça
5dfb49a5a8 Merge branch 'main' into enhancement/addressing-#8633 2023-06-05 15:45:10 +01:00
Nona Luypaert
826f393e33 Merge branch 'w2p-102124_bitstream-formats-download-attachment-7.2' into w2p-102124_bitstream-formats-download-attachment-main
Conflicts:
	dspace-api/src/test/data/dspaceFolder/config/local.cfg
	dspace-server-webapp/src/test/java/org/dspace/app/rest/BitstreamRestControllerIT.java
2023-06-05 16:29:57 +02:00
Nona Luypaert
9a49998ea0 102124: Add config for opening formats as attachment + IT 2023-06-05 16:02:42 +02:00
Alan Orth
ffe6a63780 Merge pull request #8866 from alanorth/crossref-publisher
dspace: capture publisher from CrossRef live import
2023-06-05 16:30:07 +03:00
Alan Orth
a38ff42169 dspace: capture publisher from CrossRef live import
Publisher is a required field on CrossRef so we can always rely on
capturing this information when doing a live import.

See: https://github.com/CrossRef/rest-api-doc/blob/master/api_format.md
2023-06-05 15:52:30 +03:00
Nona Luypaert
d6d6a3e074 102052: Replace 'DELETE' with 'WRITE' on deletePrimaryBitstream + More auth ITs 2023-06-05 09:45:40 +02:00
Paulo Graça
e6f54a97bf Merge branch 'main' into enhancement/addressing-#8633 2023-06-04 23:01:31 +01:00
Paulo Graça
52bc4844bf Merge branch 'main' into enhancement/xoai-access-status-plugin 2023-06-04 09:33:54 +01:00
Tim Donohue
6013c41184 Merge pull request #8870 from TexasDigitalLibrary/DS-8759
DS-8759: check that zip file exists and has correct MIME type; clean up imports directory on failed import
2023-06-02 16:59:21 -05:00
Tim Donohue
4d5e907617 Merge pull request #8856 from kshepherd/item_delete_unlink_doi
Unlink DOI from item on deletion even if no provider is configured
2023-06-02 16:26:29 -05:00
Tim Donohue
9735020c4a Merge pull request #8857 from buithaihai/DS-8837
Fix: default sort option for discovery
2023-06-02 15:55:21 -05:00
Paulo Graça
39283650d0 Merge branch 'main' into DS-8837 2023-06-02 15:44:46 +01:00
Paulo Graça
cd57a0851f Merge branch 'main' into enhancement/addressing-#8633 2023-06-02 15:06:47 +01:00
Paulo Graça
ab5a040a1d Merge branch 'main' into enhancement/xoai-access-status-plugin 2023-06-02 12:05:57 +01:00
Alan Orth
44d038c2a5 Merge pull request #8878 from 4Science/DURACOM-149
[DURACOM-149] correctly handle dates in pubmed live import; added integration tests
2023-06-02 12:38:20 +03:00
Paulo Graça
fa8b6e0280 Merge branch 'main' into enhancement/xoai-access-status-plugin 2023-06-02 09:47:12 +01:00
Paulo Graça
99f2c7c134 Merge branch 'main' into DS-8837 2023-06-02 09:21:51 +01:00
Francesco Pio Scognamiglio
52b02b5d36 Merge branch 'main' into DURACOM-149 2023-06-02 10:11:21 +02:00
Francesco Pio Scognamiglio
7c85b007c0 [DURACOM-149] remove trailing whitespace 2023-06-02 10:10:45 +02:00
Nona Luypaert
7b45ec0e51 Merge branch 'main' into contract-pr-222-primary-bitstream-on-bundle-support 2023-06-02 09:03:00 +02:00
Nona Luypaert
d565cd3e6b 102052: Return 204 status when primaryBitstream is null 2023-06-02 08:33:59 +02:00
Bui Thai Hai
70a7930f63 Tweaks fo test cases. 2023-06-02 09:45:52 +07:00
Andrea Bollini
b93e27e6ee Merge branch 'main' of https://github.com/DSpace/DSpace into duracom-136_CST-9634 2023-06-01 21:07:07 +02:00
Andrea Bollini
1b7af28dd3 CST-9634 remove unnecessary turn off/on auth system 2023-06-01 21:07:00 +02:00
Andrea Bollini
b78ddf2498 CST-9634 make public the validateResourcePolicy method 2023-06-01 19:38:01 +02:00
Andrea Bollini
b29409e08e Merge branch 'duracom-136_CST-9634' of https://bitbucket.org/4Science/dspace-cris into duracom-136_CST-9634 2023-06-01 19:24:47 +02:00
Andrea Bollini
308bae43c7 Merge branch 'main' of https://github.com/DSpace/DSpace into duracom-136_CST-9634 2023-06-01 19:22:34 +02:00
Tim Donohue
379db2a166 Merge pull request #8860 from 4Science/DURACOM-127
[DURACOM-127] check if versioning is enabled for versioned identifier providers
2023-06-01 12:01:49 -05:00
Andrea Bollini
d76bdc6d47 CST-9634 Assure that REST API assumes all dates to be UTC if not specified 2023-06-01 18:47:52 +02:00
Tim Donohue
5be09e375b Merge pull request #8842 from 4Science/DURACOM-126
Fix validation issue with hidden submission's sections
2023-06-01 11:31:39 -05:00
Giuseppe Digilio
cdac4c4459 Merge branch 'main' into DURACOM-126 2023-06-01 17:53:59 +02:00
Alexandre Vryghem
eb224eb809 100553: Added stricter metadata field & schema validation 2023-06-01 17:11:24 +02:00
Francesco Pio Scognamiglio
4e7107f63c Merge branch 'main' into DURACOM-149 2023-06-01 15:12:08 +02:00
Francesco Pio Scognamiglio
0ec27875bc [DURACOM-149] use right formatter for mapping of dc.date.issued in pubmed live import; added integration tests 2023-06-01 15:10:59 +02:00
Giuseppe Digilio
dae8f166e1 [DURACOM-126] add java doc 2023-06-01 14:48:46 +02:00
Giuseppe Digilio
56c8820d31 [DURACOM-126] Improve test in order to check item can be submitted 2023-06-01 14:41:58 +02:00
Nona Luypaert
b0068e3d4e Merge branch 'main' into contract-pr-222-primary-bitstream-on-bundle-support 2023-06-01 12:22:56 +02:00
Mohamed Saber Eskander
f587989726 edited param name 2023-06-01 11:48:45 +03:00
eskander
00576b7fb6 Merge remote-tracking branch 'origin/main' into duracom-136_CST-9634 2023-06-01 10:34:31 +03:00
Mark H. Wood
b272b1fcab Make service lookup retry log at DEBUG; radically shorten the trace. 2023-05-31 17:37:34 -04:00
Tim Donohue
894bc39e8b Merge pull request #8698 from mwoodiupui/embargo-date
Calculate the correct maximum for access condition start and end dates
2023-05-31 11:53:46 -05:00
Tim Donohue
cac0859cb1 Merge pull request #8850 from alanorth/rework-im-thumbnail-filter
Minor improvements to ImageMagick thumbnail filters
2023-05-31 11:03:40 -05:00
Nona Luypaert
2c43270152 102052: Create PrimaryBitstreamController for primaryBitstream endpoint + ITs 2023-05-31 16:53:45 +02:00
Nona Luypaert
99d4a8447e 102052: Add remaining CRUD methods to BundlePrimaryBitstreamLinkRepository 2023-05-31 16:52:04 +02:00
Jens Vannerum
cfb932547c Merge remote-tracking branch 'atmireGithub/w2p-101481_Referrer-fix' into w2p-refferex-fix-main 2023-05-31 13:57:59 +02:00
damian
e31a223882 Item counts are now managable. 2023-05-31 13:53:09 +02:00
Mohamed Saber Eskander
e6daf49f25 added missed configuration 2023-05-31 13:26:28 +03:00
Mohamed Saber Eskander
bfbf17f577 - refactoring and adding new test cases
- update resource polices of derivative bitstreams also
- check authorization when run script
- added some log information
2023-05-31 12:33:56 +03:00
Giuseppe Digilio
54981b0bd2 Merge branch 'main' into DURACOM-126 2023-05-30 09:11:49 +02:00
NikitaKr1vonosov
3ee18f5a6e Merge branch 'main' into CST-5728 2023-05-29 13:05:46 +02:00
Nikita Krivonosov
3ba6db388b Merge remote-tracking branch 'origin/CST-5728' into CST-5728 2023-05-29 12:42:39 +02:00
Nikita Krivonosov
d0d6776810 [CST-5728] LYRASIS [Donated]: DSpace7: Implement signposting pattern in DSpace (REST) 2023-05-29 09:56:07 +02:00
Paulo Graça
c11679c6de removing tailing semicolon 2023-05-27 09:19:15 +01:00
Paulo Graça
c2a5e2ad80 Merge branch 'main' into enhancement/xoai-access-status-plugin 2023-05-27 09:15:59 +01:00
Paulo Graça
a9eab4a254 also add support for access status at bitstream level 2023-05-27 08:23:46 +01:00
Paulo Graça
43ab705568 fixing code style errors 2023-05-26 22:47:02 +01:00
nwoodward
fdef871e69 fix checkstyle 2023-05-26 15:41:14 -05:00
nwoodward
e889abc623 check that zip file exists and has correct MIME type; also make sure that common temp imports directory is not removed 2023-05-26 15:41:14 -05:00
Paulo Graça
4fa51d03d1 adding support for access status xoai plugin 2023-05-26 17:14:10 +01:00
Paulo Graça
b47fd234e8 Merge branch 'main' into enhancement/addressing-#8633 2023-05-26 12:22:38 +01:00
Francesco Pio Scognamiglio
78f91b096b Merge branch 'main' into DURACOM-127 2023-05-26 09:24:17 +02:00
Mark H. Wood
7b720d6521 Merge pull request #8772 from alexandrevryghem/use-variables-in-email-templates_contribute-main
Use variables in email templates contribute main
2023-05-25 13:57:27 -04:00
Tim Donohue
bdcfb8523d Merge pull request #8796 from atmire/w2p-100414_Missing-search-result-statistics-PR
Missing search results statistics
2023-05-25 08:55:07 -05:00
Giuseppe Digilio
ec3cc2dcf1 Merge branch 'main' into duracom-136_CST-9634 2023-05-25 15:49:41 +02:00
Giuseppe Digilio
e3beefadaa Merge remote-tracking branch 'bitbucket4science/DURACOM-126' into DURACOM-126 2023-05-25 14:49:55 +02:00
Giuseppe Digilio
f750f85b17 Merge remote-tracking branch 'origin/main' into DURACOM-126 2023-05-25 14:48:24 +02:00
Yana De Pauw
f3b939e88f 94299: Add rest.patch.operations.limit to config file 2023-05-25 15:34:05 +03:00
Paulo Graça
111b2e4a6a Merge branch 'main' into enhancement/addressing-#8633 2023-05-25 09:42:31 +01:00
Bui Thai Hai
b3a21ebd5a Minor Tweaks 2023-05-25 14:54:46 +07:00
Bui Thai Hai
eb46a99dff Fix: default sort option (lastModified) for discovery 2023-05-25 10:21:44 +07:00
Mark H. Wood
571df9b38a Add a simple test for new TimeHelpers class. 2023-05-24 15:56:03 -04:00
Tim Donohue
c0446d45dc Merge pull request #8783 from kshepherd/LU-30_bitstream_inheritence
Bitstreams should inherit collection DEFAULT_BITSTREAM_READ, falling back to bundle READ
2023-05-24 11:29:43 -05:00
Alexandre Vryghem
01d5276fd7 Replace occurrences of DSpace with the dspace.name variable 2023-05-24 17:53:58 +02:00
Francesco Pio Scognamiglio
4417eddb85 Merge branch 'main' into DURACOM-127 2023-05-24 15:43:14 +02:00
Paulo Graça
2ca723d687 Merge branch 'main' into enhancement/addressing-#8633 2023-05-24 09:36:16 +01:00
Alan Orth
bd36261b20 Merge pull request #8863 from 4Science/DURACOM-148
[DURACOM-148] add crossref metadata processor to manage the date issued field
2023-05-24 10:03:45 +03:00
Tim Donohue
9e5165e626 Merge pull request #8851 from buithaihai/DS-8832
Fix: Collection's admin cannot edit its template item.
2023-05-23 11:48:52 -05:00
Bui Thai Hai
2f59554a5d ADD: Unit Tests for fix 2023-05-23 15:05:34 +07:00
Paulo Graça
50f808a7d0 removing Person test configuration 2023-05-23 08:51:27 +01:00
Francesco Pio Scognamiglio
8980b07f2b [DURACOM-148] fix typo: remove trailing whitespace 2023-05-23 08:51:07 +02:00
Francesco Pio Scognamiglio
8a0645c628 Merge branch 'main' into DURACOM-148 2023-05-23 08:46:30 +02:00
Bui Thai Hai
9bc7edb733 Fix: Collection's admin cannot edit its template item. 2023-05-23 09:14:10 +07:00
Tim Donohue
e0d2248da3 Merge pull request #8859 from alanorth/bump-tika-dep
pom.xml: bump tika from 2.3.0 to 2.5.0
2023-05-22 16:56:26 -05:00
Alexandre Vryghem
05f1714b05 Replace occurrences of DSpace with the dspace.name variable 2023-05-22 23:15:19 +02:00
Tim Donohue
33545667ef Merge pull request #8862 from tdonohue/update_spring_boot
Update to latest Spring Boot
2023-05-22 12:33:13 -05:00
Alan Orth
5357923d28 dspace-api: avoid generation loss in ImageMagickThumbnailFilter
When filtering PDF bitstreams, the ImageMagickThumbnailFilter first
creates an intermediate JPEG and then a "thumbnail" JPEG. These two
operations are both lossy. The ImageMagick usage guide warns against
doing that:

> JPEG losses (sic) information, degrading images when saved.
> Use some other format for intermediate images during processing.
> Only use JPEG format, for the final image, not for further processing.

As our current filter architecture requires writing a temporary file
we must choose one of the following lossless formats to use for the
intermediate: PNG, TIFF, or MIFF. MIFF is ImageMagick's own internal
format and is much faster to write than PNG.

By eliminating the first lossy conversion we gain 1.1% points on the
ssimulacra2 (v2.1) scoring scale of visual quality.

See: https://imagemagick.org/Usage/formats/#jpg
2023-05-22 18:36:11 +03:00
Alan Orth
7ebb5290fc dspace-api: comment ImageMagick filters
Add some comments to document the functionality of the ImageMagick
thumbnail filters. This will help others understand it later when
we need to re-factor them.
2023-05-22 18:36:11 +03:00
Alan Orth
a4105bdcb0 dspace-api: simplify logic in ImageMagickThumbnailFilter
There is no point passing a page parameter here, with a default of
0 no less, because we will *always* use the first page of the PDF
to generate the thumbnail. No other filters use this function and
the page parameter is not configurable so we should just hard code
it.
2023-05-22 18:36:11 +03:00
Alan Orth
7dbfa9a3c5 dspace-api: minor logging fix in ImageMagickThumbnailFilter
Minor standardization to logging (unneccessary capitalization and
excessive spaces).
2023-05-22 18:36:11 +03:00
Alan Orth
c37622cb3f dspace-api: improve logging in ImageMagickThumbnailFilter
Instead of logging the name of the source bitstream, we should be
logging the name of the actual thumbnail bitstream that is being
considered for replacement. For example, instead of this:

  IM Thumbnail manual.pdf matches pattern and is replaceable.

... the message should read:

  IM Thumbnail manual.pdf.jpg matches pattern and is replaceable.

This message is already confusing enough, but this will help.
2023-05-22 18:36:11 +03:00
Alan Orth
7ab5f3b489 dspace-api: fix typo in ImageMagickThumbnailFilter 2023-05-22 18:36:11 +03:00
Tim Donohue
c3dd1f8489 Update to latest Spring Boot 2023-05-22 09:23:21 -05:00
Francesco Pio Scognamiglio
cbfed3e218 [DURACOM-148] add crossref metadata processor to manage the date issued field 2023-05-22 15:44:52 +02:00
Paulo Graça
fc2589464f checkstyle violations fixing and remove unnecessary max rows limit 2023-05-22 12:57:56 +01:00
Francesco Pio Scognamiglio
8ddf4702af [DURACOM-127] check if versioning is enabled for versioned identifier providers 2023-05-22 11:53:03 +02:00
Alan Orth
6018a2b7be pom.xml: bump tika from 2.3.0 to 2.5.0
A handful of bug fixes, improvements to PDF parsing, and updates
to dependencies. This is the highest we can go right now without
hitting dependency convergence issues related to bouncycastle.

See: https://github.com/apache/tika/blob/2.5.0/CHANGES.txt
2023-05-22 11:50:59 +03:00
Paulo Graça
2b3af3a126 checkstyle violations fixing 2023-05-22 08:42:33 +01:00
Kim Shepherd
208cac08d5 modifying unit tests as per CI feedback, stubbings now unnecessary 2023-05-21 15:43:26 +12:00
Kim Shepherd
2ef268380f Unlink DOI from item on deletion even if no provider is configured 2023-05-21 15:43:26 +12:00
Paulo Graça
6fa9e74d90 checkstyle violations fixing 2023-05-20 11:35:27 +01:00
Paulo Graça
687b6216df checkstyle violations fixing 2023-05-20 10:41:51 +01:00
Paulo Graça
cd73d38be8 Merge branch 'enhancement/addressing-#8633' of github.com:paulo-graca/DSpace into enhancement/addressing-#8633 2023-05-20 08:07:58 +01:00
Paulo Graça
32b2b7dacb Merge branch 'main' of github.com:dspace/dspace into enhancement/addressing-#8633 2023-05-20 08:07:29 +01:00
Paulo Graça
0409373b61 handling exceptions 2023-05-20 08:07:05 +01:00
kshepherd
6fd31622ae Merge pull request #8752 from amgciadev/fix-8732-b
Fix for #8732 and #8750
2023-05-20 10:26:45 +12:00
Paulo Graça
30223d6196 Merge branch 'DSpace:main' into enhancement/addressing-#8633 2023-05-19 22:48:34 +01:00
Paulo Graça
d7d7f7c370 support for entity type for collection at input submissions 2023-05-19 22:44:07 +01:00
Tim Donohue
116871d790 Merge pull request #8853 from alanorth/bump-pom-dependencies
pom.xml: bump a handful of dependencies
2023-05-19 12:35:39 -05:00
Alan Orth
564f9fdcf6 pom.xml: bump a handful of dependencies
All minor and patch versions with no breaking changes:

- pdfbox 2.0.28
  - See: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310760&version=12352284
- log4j 2.20.0
  - See: https://logging.apache.org/log4j/2.x/release-notes/2.20.0.html
- rome 1.19.0
  - See: https://github.com/rometools/rome/releases/tag/1.19.0
- slf4j 1.7.36
  - https://www.slf4j.org/news.html
- solr-client 8.11.2
  - https://lucene.apache.org/core/8_11_2/changes/Changes.html
- hibernate 5.6.15.Final
  - See: https://hibernate.org/orm/releases/5.6/#whats-new
- hibernate-validator 6.2.5.Final
  - See: https://hibernate.org/validator/documentation/migration-guide/#6-2-x
- postgresql JDBC driver 42.6.0
2023-05-19 16:43:05 +03:00
NikitaKr1vonosov
9e2b4a1acf Merge branch 'main' into CST-5728 2023-05-19 13:01:38 +02:00
Tim Donohue
95ad0ba927 Merge pull request #8822 from tdonohue/remove_oracle
Remove Oracle Support
2023-05-18 16:43:38 -05:00
Tim Donohue
c1629ff478 Merge pull request #8712 from tdonohue/update_spring_boot
Update Spring & Spring Boot versions
2023-05-18 11:49:37 -05:00
Mark H. Wood
4c00e13b52 Merge branch 'main' into reqitem-response 2023-05-18 08:29:39 -04:00
Giuseppe Digilio
083eb07251 Merge branch 'main' into DURACOM-126 2023-05-18 11:57:30 +02:00
Tim Donohue
d5ac263743 Merge pull request #8795 from arvoConsultores/DS-8636
#8636 Request a Copy's "helpdesk" strategy requires authentication t…
2023-05-17 16:46:42 -05:00
aroman-arvo
9784c6f50d 8636 - checkstyle 2023-05-17 19:26:50 +02:00
aroman-arvo
567e989202 8636 Request a Copy - integration test increased 2023-05-17 19:11:31 +02:00
Tim Donohue
604bcea759 Merge pull request #8847 from saschaszott/patch-6
remove configuration property eperson.subscription.onlynew
2023-05-17 10:43:53 -05:00
Tim Donohue
d3c03efe61 Merge pull request #8799 from uofmsean/fix-8490-preferred-label-lookup
Fix #8490 preferred label lookup
2023-05-16 16:53:37 -05:00
Tim Donohue
c0e62657f6 Merge pull request #8789 from amtuannguyen/main
properly escape ':' in query to address #8490
2023-05-16 16:51:25 -05:00
aroman-arvo
b1bb430ab2 Merge branch 'DS-8636' of https://github.com/arvoConsultores/DSpace into DS-8636 2023-05-16 13:50:02 +02:00
aroman-arvo
5f58e587f3 Security issue fixed: request item token exposed 2023-05-16 13:49:16 +02:00
aroman-arvo
84ac53c7c2 Security issue fixed: request item token exposed 2023-05-16 13:29:45 +02:00
Alexandre Vryghem
3ab0c812a6 Merge remote-tracking branch 'upstream/main' into issue-1671_fix-relationships-not-updating-view-on-submission-form_contribute-main 2023-05-16 12:09:40 +02:00
Sascha Szott
2f1d52bf3f removed eperson.subscription.onlynew 2023-05-16 09:09:17 +02:00
Agustina Martinez
95af5fff41 VersionedDOIIdentifierProvider: add non-fatal check that dso is of type Item 2023-05-15 08:40:57 +01:00
Agustina Martinez
754c0756c4 Merge branch 'main' into fix-8732-b 2023-05-15 08:40:27 +01:00
Tim Donohue
f67f55cb21 Merge pull request #8839 from DSpace/paulo-graca-dspace-submission-fix
Replace invalid dc.terms.references with a proper dcterms.references
2023-05-12 16:22:20 -05:00
Tim Donohue
0504e10dab Merge pull request #8841 from alexandrevryghem/fix-community-page-sorting_contribute-main
Fixed community's sub-communities and collections sort
2023-05-12 15:00:30 -05:00
Tim Donohue
baf1b94962 Merge pull request #8845 from tdonohue/fix_codecov_settings
Fix Codecov settings to notify after one coverage file upload
2023-05-12 11:43:01 -05:00
Tim Donohue
c6b044222d Remove setting to wait on two codecov builds 2023-05-12 10:53:59 -05:00
samuel
f49b6f24ba 99221: Fix minor issues with Relationships in submission - repair relationship error 2023-05-12 15:25:02 +02:00
samuel
2e69ba7f63 96598: Test feedback pt. 3: submission - repair auto-refresh 2023-05-12 15:24:58 +02:00
eskander
2bdb7be422 Merge remote-tracking branch 'origin/duracom-136_CST-9634' into duracom-136_CST-9634 2023-05-12 15:35:52 +03:00
Mohamed Saber Eskander
07fbe15126 refactoring and added new IT class 2023-05-12 15:35:22 +03:00
Agustina Martinez
f844ca347b Improved fix: override missing register method in VersionedDOIIdentifierProvider 2023-05-12 13:24:28 +01:00
Agustina Martinez
1d355b7ed0 Merge branch 'DSpace:main' into fix-8732-b 2023-05-12 13:06:27 +01:00
Giuseppe Digilio
cf0215b029 [CST-9634] add administrativeBulkAccess discovery configuration 2023-05-12 13:15:48 +02:00
Giuseppe Digilio
3f5406df24 [CST-9634] Fix exception message 2023-05-12 13:13:38 +02:00
damian
1cc6fb2f58 Item counters refactor. Removing unnecessary code. 2023-05-12 12:29:22 +02:00
Jens Vannerum
b24f121c76 94299: checkstyle issue after main merge 2023-05-12 10:11:09 +02:00
eskander
27f874a08b refactoring and adding new test cases 2023-05-12 10:58:17 +03:00
Jens Vannerum
81f1eab2ed Merge remote-tracking branch 'DSpace_github/main' into w2p-94299_Multiple_Bitstream_deletion_endpoint
# Conflicts:
#	dspace-api/src/main/resources/Messages.properties
#	dspace-server-webapp/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java
#	dspace-server-webapp/src/test/java/org/dspace/app/rest/BitstreamRestRepositoryIT.java
2023-05-12 09:41:04 +02:00
eskander
fd388620c0 Merge remote-tracking branch 'origin/duracom-136_CST-9634' into duracom-136_CST-9634
# Conflicts:
#	dspace-api/src/main/java/org/dspace/app/bulkaccesscontrol/BulkAccessControl.java
#	dspace-api/src/test/java/org/dspace/app/bulkaccesscontrol/BulkAccessControlIT.java
2023-05-12 09:18:46 +03:00
eskander
44c066d07a refactoring and adding new test cases 2023-05-12 09:12:05 +03:00
Kim Shepherd
6943399938 #8783 checkstyle fixes 2023-05-12 18:03:02 +12:00
Kim Shepherd
b69517da74 #8783 don't inherit DEFAULT_BITSTREAM_READ if item has current embargo 2023-05-12 17:48:27 +12:00
Kim Shepherd
c2575b05b2 #8783 checkstyle fixes for integration test 2023-05-12 17:48:27 +12:00
Kim Shepherd
4a88573dc1 #8783 Strip out unused generateAutomaticPolicies method from AuthorizeService 2023-05-12 17:48:27 +12:00
Kim Shepherd
019d0319dc #8783 New bitstreams inherit DEFAULT_BITSTREAM_READ from owning collection
Otherwise will keep inherited READ from bundle. Does not affect embargos set during submission or workflow, these will always be applied afterwards.
2023-05-12 17:48:27 +12:00
Kim Shepherd
03c39cf6f1 Bitstreams should inherit DEFAULT_BITSTREAM_READ, then DEFAULT_ITEM_READ
When generating automatic policies, bitstream DSOs have always inherited
from DEFAULT_ITEM_READ, even if the collection's DEFAULT_BITSTREAM_READ
policy differs. This bugfix checks DEFAULT_BITSTREAM_READ first, and
uses DEFAULT_ITEM_READ as a fallback.
2023-05-12 17:48:27 +12:00
Adán Román Ruiz
2cf5b290b6 Fix "Simultaneous deletion of multiple bitstreams from the same bundle often compromises the state of the bundle" (#8778)
* DS-8694

* clean imports

* cleaning code

* DS-8694 - re-deletion of bitstream throw exception

* ds-8694 - clean code
2023-05-11 16:59:38 -05:00
Andrea Bollini
50e816f718 CST-9634 fix issues with date timezone and inheritance of default policies 2023-05-11 23:39:34 +02:00
Jens Vannerum
78fba6b579 94299: checkstyle 2023-05-11 21:24:31 +02:00
damian
0231af5867 Item counters added to Communities and Collections REST API 2023-05-11 20:08:32 +02:00
Giuseppe Digilio
2f96696ba5 Merged main into DURACOM-126 2023-05-11 16:38:54 +00:00
Yana De Pauw
c9c055ed67 Merge branch 'discovery-fixes-7.2' into discovery-fixes 2023-05-11 18:02:05 +02:00
Yana De Pauw
7c7824f913 Implement community feedback 2023-05-11 17:57:45 +02:00
Mark H. Wood
a026a8ced0 Fix test broken by new injection plan. 2023-05-11 11:43:54 -04:00
Jens Vannerum
c670251a68 94299: Fix minor issues 2023-05-11 17:13:13 +02:00
Mohamed Saber Eskander
9e013ef97f refactoring BulkAccessControl 2023-05-11 14:10:34 +03:00
Kristof De Langhe
9941ca2b78 Merge branch 'w2p-100414_Missing-search-result-statistics-7.0' into w2p-100414_Missing-search-result-statistics-PR 2023-05-11 11:37:18 +02:00
Kristof De Langhe
0528b4dd30 100414: Missing search result statistics code cleanup + extra test 2023-05-11 11:16:16 +02:00
Mohamed Saber Eskander
4e64afbe3b bulk access controll 2023-05-11 12:04:20 +03:00
Alexandre Vryghem
b01891cfde Merge remote-tracking branch 'upstream/main' into fix-community-page-sorting_contribute-7.4 2023-05-10 23:41:43 +02:00
Mark H. Wood
034fc3317b Fix unconfigured collaborator by not scanning it into two ApplicationContexts.
Minor tidying.
2023-05-10 17:37:36 -04:00
Paulo Graça
ccf9bc2d98 Update submission-forms.xml 2023-05-09 17:20:44 +01:00
eskander
6b40f2eea6 [CST-9634] refactoring 2023-05-09 14:46:37 +03:00
Mohamed Saber Eskander
9a2a8ef4f5 [CST-9634] created new endpoint for bulkAccessConditionOptions configuration 2023-05-09 13:31:37 +03:00
Tim Donohue
a2256ef8ec Merge pull request #8814 from ubks-mp/DSpace-7.5
LDAP Auth extended for many groups
2023-05-08 16:44:40 -05:00
Mark H. Wood
a86235a06b Simplify dependency injection.
To use autowiring via alias to select a grantor strategy is needlessly
complicated and fragile.  Instead, configure the email sender by
explicit constructor injection.  Other collaborators are internal
matters for the class and continue to be autowired.
2023-05-08 15:35:38 -04:00
Mark H. Wood
f8432ac7d4 Include new email template missed in original commit. 2023-05-08 13:15:29 -04:00
Mark H. Wood
6c8bcb334e Fix nonsense class name. 2023-05-08 12:49:43 -04:00
Tim Donohue
568a733d5e Merge pull request #8816 from TexasDigitalLibrary/DS-2175
DS-2175: send "forgot password" email if user tries to register with an existing email address
2023-05-08 11:17:03 -05:00
Mark H. Wood
896cffda7d Get request-copy response email body from backend templates, as with all other emails.
There is a considerable quantity of other changes here which were made to
facilitate testing by making the affected class a bean and injecting the
desired "strategy" class programmatically in the test.
2023-05-08 11:48:56 -04:00
aroman-arvo
6b10fc3783 Fix Style 2023-05-08 09:15:05 +02:00
aroman-arvo
909003bfac Fix style 2023-05-08 09:01:05 +02:00
aroman-arvo
3c37dd4519 ds-8636 - indentation 2023-05-08 08:44:49 +02:00
aroman-arvo
a2ee96809d Merge branch 'DS-8636' of https://github.com/arvoConsultores/DSpace into DS-8636 2023-05-08 08:42:40 +02:00
aroman-arvo
0783f7ff82 DS-8636 - all files option fixed 2023-05-08 08:37:55 +02:00
Alexandre Vryghem
2dfc373ad1 Fixed communities sub-communities and communities collections sorting 2023-05-07 22:06:01 +02:00
Alexandre Vryghem
bc73e312e0 100553: Added test for create metadata schema & field and created test for sort byFieldName 2023-05-07 17:35:10 +02:00
Nikita Krivonosov
7ba68c40ab [CST-5728] LYRASIS [Donated]: DSpace7: Implement signposting pattern in DSpace (REST) 2023-05-07 16:25:27 +02:00
Andrea Bollini
7971887b9a DURACOM-136 allow script execution by user other than admins 2023-05-07 10:58:41 +02:00
Michael W Spalti
5088447111 Updated solr query params. 2023-05-06 11:30:51 -07:00
Nicholas Woodward
29da9cf9c0 Merge branch 'main' into DS-2175 2023-05-05 14:37:37 -05:00
Tim Donohue
2e6085802f Merge pull request #8807 from hardyoyo/fix-cli-container
Add missing unzip command to CLI container
2023-05-05 14:35:45 -05:00
Tim Donohue
346c3e5cd9 Merge pull request #8710 from 4Science/CST-6402
Add SAF import via remote URL
2023-05-05 10:57:11 -05:00
Nona Luypaert
ab240d7f0e 101549: Fix BrowsesResourceControllerIT 2023-05-05 17:47:24 +02:00
Nona Luypaert
8c7f7475eb Merge branch 'contract-pr-225-browse-by-support-for-controlled-vocabulary-7.4' into contract-pr-225-browse-by-support-for-controlled-vocabulary-main
Conflicts:
	dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseIndexRestRepository.java
2023-05-05 16:57:36 +02:00
Nona Luypaert
acb700c887 101549: Fix BrowseIndexMatcher and BrowsesResourceControllerIT 2023-05-05 15:55:49 +02:00
Jens Vannerum
999fb46e8d 94299: Add IT 2023-05-05 15:10:12 +02:00
Nona Luypaert
648b27befb 101549: Make BrowseIndexRestRepository#findAll also return hierarchicalBrowses 2023-05-05 14:52:16 +02:00
Jens Vannerum
80706592aa Revert "94299 Multiple Bitstream deletion endpoint"
This reverts commit 51d8874a
2023-05-05 13:07:47 +02:00
Jens Vannerum
09b56c2d99 94299: Configurable limit on amount of patch operations 2023-05-05 13:05:34 +02:00
Jens Vannerum
8be66c935d 94299: Remove bitstreams in bulk via patch 2023-05-05 12:35:40 +02:00
Marie Verdonck
928a46d30f Merge branch 'main' into contract-pr-225-browse-by-support-for-controlled-vocabulary-main
# Conflicts:
#	dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseIndexRestRepository.java
2023-05-05 10:35:27 +02:00
Marie Verdonck
66eb8a548f Browse-by support for controlled vocabularies
https://github.com/DSpace/RestContract/pull/225
2023-05-04 20:14:44 +02:00
Francesco Pio Scognamiglio
390a6f1b44 Merge branch 'main' into CST-6402 2023-05-04 08:44:21 +02:00
Tim Donohue
dac7ed2f09 Migrate to org.hibernate.type.TextType from our custom LobType 2023-05-03 15:59:01 -05:00
Tim Donohue
7a209d228a Remove oracle specific Java code / comments. 2023-05-03 14:08:05 -05:00
Tim Donohue
140cdc6de0 Remove all oracle-specific migration scripts 2023-05-03 14:08:05 -05:00
Tim Donohue
6fbf97a6b3 Remove oracle mentions from configs / READMEs 2023-05-03 14:08:05 -05:00
Tim Donohue
6b7656f8b8 Remove oracle profiles from POMs 2023-05-03 14:08:05 -05:00
Tim Donohue
53a09a9ba7 Merge pull request #8800 from hutattedonmyarm/8792-fix-long-title-export
Fix #8792, change column type of Process.parameters to TEXT
2023-05-03 14:06:56 -05:00
Nicholas Woodward
980e50b877 Merge branch 'main' into DS-2175 2023-05-03 12:23:17 -05:00
Tim Donohue
22c667e7cd Merge pull request #8766 from Ma-Tador/synced
fix bug: reset password from Admin Panel when Captcha enabled
2023-05-03 10:52:46 -05:00
Ma-Tador
310b7a9b0c Add missing request parameter in RegistrationRestRepositoryIT 2023-05-03 09:01:26 +02:00
Ma-Tador
37e93e278b Merge branch 'DSpace:main' into synced 2023-05-03 08:34:27 +02:00
nwoodward
9cca5ee12a updated tests to reflect that registering with an existing email address no longer throws an unprocessable exception 2023-05-02 15:55:18 -05:00
Kristof De Langhe
12ad2064c4 101481: View events referrer fix 2023-05-02 17:48:32 +02:00
Giuseppe Digilio
ed845cbfa2 Merged main into DURACOM-126 2023-05-02 13:59:46 +00:00
Mohamed Saber Eskander
518cdb7ff0 [DURACOM-126] solved Submission with a validation error on a hidden step can't be submitted 2023-05-02 14:42:33 +03:00
Ma-Tador
603cd9a19b Remove white spaces to comply with DSpace checkstyle 2023-05-02 12:11:44 +02:00
Francesco Pio Scognamiglio
ef138cf76d [CST-6402] fix saf import via remote url: the source param is not used 2023-05-02 09:19:32 +02:00
Francesco Pio Scognamiglio
637003a75e Merge branch 'main' into CST-6402 2023-05-02 08:53:49 +02:00
Tim Donohue
7cebc65a31 Merge pull request #8784 from atmire/w2p-89779_VersionedHandleIdentifierProviderWithCanonicalHandles-fix
Fix for the optional VersionedHandleIdentifierProviderWithCanonicalHandles identifier system
2023-05-01 16:50:22 -05:00
nwoodward
80af0665c1 send "forgot password" email if user tries to register with email address already in eperson table 2023-05-01 15:15:28 -05:00
Tim Donohue
9bbfb8de68 Merge pull request #8776 from CVamsi27/ds-8728
Implement default description for Community/Collection for OpenSearch
2023-05-01 13:22:29 -05:00
Chandaluri Vamsi Krishna
fdf4a4d571 Updated to fetch dynamic default description
Signed-off-by: Chandaluri Vamsi Krishna <cvamsik99@gmail.com>
2023-04-30 22:32:42 +05:30
Chandaluri Vamsi Krishna
da09d4b1f5 Merge branch 'DSpace:main' into ds-8728 2023-04-29 08:51:31 +05:30
Tim Donohue
80cb84433b Merge pull request #8781 from CVamsi27/ds-8671
Removed instances of useProxies
2023-04-28 16:48:50 -05:00
Tim Donohue
05a1a371fa Merge pull request #8745 from alexandrevryghem/w2p-99466_made-import-external-source-date-uniform_contribute-main
Removed timestamp from dc.date.issued when importing from external sources
2023-04-28 16:38:30 -05:00
Tim Donohue
afcc9dc6c5 Merge pull request #8742 from 4Science/duracom-125
MetadataValues' list doesn't respect ordering after been modified
2023-04-28 15:03:22 -05:00
Abel
b656cba343 Merge branch 'dspace-7.5-sistedes' into feature-imagemagick-video 2023-04-28 17:18:01 +02:00
Michael Plate
c919df81fb LDAP Auth extended for many groups 2023-04-28 17:09:55 +02:00
Abel
77f6daf0a3 Change import order 2023-04-28 13:36:20 +02:00
Francesco Pio Scognamiglio
dd1a5188b6 [CST-6402] manage saf import via remote url in CLI mode 2023-04-28 10:28:27 +02:00
Francesco Pio Scognamiglio
1138667f3a [CST-6402] fix saf import via remote url: the url param is a string 2023-04-28 09:51:03 +02:00
Francesco Pio Scognamiglio
80a0e3267a Merge branch 'main' into CST-6402 2023-04-28 08:43:23 +02:00
Abel
f7414f1d58 Add a comment about ImageMagick policies 2023-04-28 04:40:23 +02:00
Abel
413c6f443f Use same defaults than ImageMagickThumbnailFilter 2023-04-28 04:28:38 +02:00
Abel
d256065fc2 Set FRAME_NUMBER using a constant 2023-04-28 04:09:26 +02:00
Abel
43661de74e Add Override annotation 2023-04-28 03:59:00 +02:00
Abel
535edef1b3 Add ImageMagickVideoThumbnailFilter 2023-04-28 03:53:43 +02:00
Tim Donohue
5944c4c1bf Merge pull request #8755 from hutattedonmyarm/main
Change description column in orcid tables to TEXT type
2023-04-27 16:47:33 -05:00
Tim Donohue
42663a3e0e Merge pull request #8762 from atmire/w2p-100302_Pubmed-lookup-too-many-requests-7.5
Fix PubMed lookup too many requests
2023-04-27 14:20:31 -05:00
Tim Donohue
8cd82e5d2e Update to Spring Boot v2.7.11 2023-04-25 17:13:40 -05:00
Tim Donohue
66d7c1bde6 Update to latest spring-boot and spring 2023-04-25 17:13:40 -05:00
Tim Donohue
42f548b17e Remove check for double-encoded param. It is no longer double-encoded after upgrading Spring Boot. 2023-04-25 17:13:40 -05:00
Tim Donohue
a15a41401b Update Spring & Spring Boot versions 2023-04-25 17:13:40 -05:00
Tim Donohue
89c49bf5ae Merge pull request #8793 from tdonohue/update_jetty
Update to latest Jetty v9
2023-04-25 14:48:09 -05:00
Hardy Pottinger
61845da1aa Install unzip in Dockerfile.cli so cli.ingest.yml can work correctly (requires unzip) 2023-04-25 11:17:24 -05:00
Tim Donohue
74e3d10326 Merge pull request #8794 from tdonohue/update_postgres_docker
Update Postgres Docker scripts to build/tag image automatically
2023-04-24 17:14:10 -05:00
Tim Donohue
f1f4fe4cdf Update to Postgres v13 (as v11 images are not being maintained). Add db.restore.yml upgrade script & enhance READMEs 2023-04-21 16:59:47 -05:00
max.nuding
d7c4d35d99 Add H2 and Oracle DB migrations 2023-04-21 11:52:24 +02:00
max.nuding
10d7b352ef Fix #8792, change column type of Process.parameters to TEXT 2023-04-21 07:55:24 +02:00
Sean Kalynuk
98b843668e Fix #8490 preferred label lookup
When the authority key still needs to be generated, skip the lookup for
the preferred label since it does not exist in Solr yet.
2023-04-20 14:08:30 -05:00
Tim Donohue
fea4067464 Merge pull request #8785 from mwoodiupui/event-consumer-doc
Document the need to avoid commit() during event dispatch.
2023-04-20 09:53:42 -05:00
Luca Giamminonni
c4f50c0116 Merge branch 'main' into DURACOM-92 2023-04-20 14:51:35 +02:00
Adán Román Ruiz
daa1a67e8c Merge branch 'main' into DS-8636 2023-04-20 13:30:26 +02:00
aroman-arvo
d9f7e04368 #8636 Request a Copy's "helpdesk" strategy requires authentication to respond 2023-04-20 11:13:28 +02:00
Kristof De Langhe
3154caaae8 Merge branch 'main' into w2p-100414_Missing-search-result-statistics-7.0 2023-04-20 10:21:59 +02:00
Francesco Pio Scognamiglio
9c7012b36b Merge branch 'main' into CST-6402 2023-04-20 09:05:47 +02:00
Tim Donohue
3df54e549f Revert change to alpine linux. Scripts all assume debian. 2023-04-19 15:14:40 -05:00
Tim Donohue
5e013a8a36 Update to latest version of Ant 2023-04-19 14:25:52 -05:00
Tim Donohue
aa7acb5be7 Update Postgres Docker scripts to build/tag images automatically 2023-04-19 14:25:18 -05:00
Tim Donohue
e3fb8bf601 Update to latest Jetty v9 2023-04-19 11:21:13 -05:00
Kristof De Langhe
583b38a2e6 100414: Missing search_result statistics fix 2023-04-19 12:23:26 +02:00
Max Nuding
0dc5a298dc Merge branch 'DSpace:main' into main 2023-04-19 11:32:12 +02:00
Tim Donohue
bcb7142b90 Merge pull request #8779 from DSpace/dependabot/maven/dspace-api/org.json-json-20230227
Bump json from 20180130 to 20230227 in /dspace-api
2023-04-17 16:30:20 -05:00
Tim Donohue
7b4bf36898 Merge pull request #8780 from tdonohue/update_actions
Split Codecov GitHub action to separate job & add retries. Update other actions.
2023-04-17 14:58:33 -05:00
Tuan Nguyen
b48ea37de5 properly escape ':' in query 2023-04-17 15:16:17 -04:00
Mark H. Wood
d5178a7129 Document the need to avoid commit() during event dispatch. 2023-04-17 09:26:49 -04:00
Kevin Van de Velde
090994a378 Merge remote-tracking branch 'upstream/main' into w2p-89779_VersionedHandleIdentifierProviderWithCanonicalHandles-fix 2023-04-17 14:11:25 +02:00
Chandaluri Vamsi Krishna
1ccde8468d Removed useProxies usage
Signed-off-by: Chandaluri Vamsi Krishna <cvamsik99@gmail.com>
2023-04-15 11:42:02 +05:30
Chandaluri Vamsi Krishna
24897cde05 Merge branch 'DSpace:main' into ds-8728 2023-04-15 10:56:10 +05:30
Tim Donohue
9b0f2ed433 Update to latest version of actions 2023-04-14 16:45:52 -05:00
Tim Donohue
e00388995b Split Codecov upload into a separate job. Make it auto-retry up to five times 2023-04-14 16:45:15 -05:00
Tim Donohue
180fb00864 Merge pull request #8717 from amgciadev/fix-1702-b
Fixes "Move item to a different collection is not inheriting policies"
2023-04-14 14:50:21 -05:00
dependabot[bot]
fe5a305264 Bump json from 20180130 to 20230227 in /dspace-api
Bumps [json](https://github.com/douglascrockford/JSON-java) from 20180130 to 20230227.
- [Release notes](https://github.com/douglascrockford/JSON-java/releases)
- [Changelog](https://github.com/stleary/JSON-java/blob/master/docs/RELEASES.md)
- [Commits](https://github.com/douglascrockford/JSON-java/commits)

---
updated-dependencies:
- dependency-name: org.json:json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-14 17:40:58 +00:00
Tim Donohue
d180fc5393 Merge pull request #8756 from 4Science/DURACOM-128
[DURACOM-128] Unable to delete a profile
2023-04-14 11:44:26 -05:00
Tim Donohue
cc6c840cc8 Merge pull request #8735 from TexasDigitalLibrary/DS-8668
DS-8668: adds exception handler for when maximum upload size is exceeded
2023-04-14 11:43:14 -05:00
Tim Donohue
1e14974710 Merge pull request #8718 from 4Science/DSC-968_main
Added pagination on bitstream cleanup
2023-04-14 10:30:21 -05:00
corrado lombardi
b2b4dda243 checkstyle fix 2023-04-13 08:35:38 +02:00
Chandaluri Vamsi Krishna
9a345d3e64 Testing of default description
Signed-off-by: Chandaluri Vamsi Krishna <cvamsik99@gmail.com>
2023-04-13 09:52:14 +05:30
Chandaluri Vamsi Krishna
77d552b029 Added logic for default description
Signed-off-by: Chandaluri Vamsi Krishna <cvamsik99@gmail.com>
2023-04-13 09:50:57 +05:30
corrado lombardi
4685c9fc8d updated test expectation 2023-04-12 19:20:40 +02:00
corrado lombardi
3f0ae31573 Merge remote-tracking branch 'origin/DURACOM-92' into DURACOM-92 2023-04-12 18:51:45 +02:00
corrado lombardi
d8357d77aa used utils.copy to copy input stream content in order to prevent oom problems 2023-04-12 18:45:27 +02:00
corrado lombardi
9ef3794090 updated checksum calculation 2023-04-12 15:29:52 +02:00
Vincenzo Mecca
006f4a5ff7 Merge branch 'main' into duracom-125 2023-04-12 09:28:13 +02:00
Tim Donohue
7a8edb6de2 Merge pull request #8771 from tadeubas/main
Typo fix in dspace.cfg
2023-04-11 14:45:26 -05:00
TS
1c41794ddd Fix typo in dspace.cfg
Fixed typo "cummulative" to "cumulative" in dspace/config/dspace.cfg file
2023-04-11 15:02:24 -03:00
TS
d9cb1e51c4 Typo fix in dspace.cfg
Fixed typo "dermine" to "determine" in `dspace/config/dspace.cfg` file
2023-04-11 14:41:17 -03:00
Vincenzo Mecca
dca82017c4 Merge branch 'main' into duracom-125 2023-04-11 09:38:31 +02:00
Tim Donohue
4b1b9791ca Merge pull request #8679 from mark-cooper/dspace-solr
Build, use, publish dspace/dspace-solr imgs
2023-04-07 11:50:30 -05:00
Yana De Pauw
cf831ed7d5 Fix merge issues 2023-04-07 16:26:12 +02:00
Yana De Pauw
e6b7154204 Merge branch 'discovery-fixes-7.2' into discovery-fixes 2023-04-07 16:01:49 +02:00
Yana De Pauw
09f59b0b73 Merge remote-tracking branch 'upstream/main' into discovery-fixes 2023-04-07 16:00:45 +02:00
Yana De Pauw
e433720cd0 Add test-discovery xml 2023-04-07 15:31:46 +02:00
Yana De Pauw
11bc061ff9 97248: Implement feedback 2023-04-07 15:29:57 +02:00
Mark Cooper
b36e6df9bc Build, use, publish dspace/dspace-solr imgs 2023-04-06 16:48:36 -07:00
Ma-Tador
44e7bef9ca fix bug: reset password from Admin Panel #8765 2023-04-06 11:24:30 +02:00
Vincenzo Mecca
0c6ae1fffc Merge branch 'main' into duracom-125 2023-04-06 09:31:15 +02:00
Tim Donohue
5d14b23e05 Merge pull request #8727 from alexandrevryghem/added-vtt-to-default-supported-bitstream-types
Added WebVTT to default supported bitstream formats
2023-04-04 11:50:06 -05:00
Yana De Pauw
d152a49e4f Merge remote-tracking branch 'upstream/main' into w2p-100302_Pubmed-lookup-too-many-requests-7.5 2023-04-04 10:42:08 +02:00
Max Nuding
c54dc03bf2 Merge branch 'DSpace:main' into main 2023-04-04 10:15:59 +02:00
Alexandre Vryghem
0e0962e3bc Added WebVTT to default supported bitstream formats 2023-04-03 23:56:28 +02:00
Tim Donohue
564184496a Merge pull request #8722 from alanorth/update-bitstream-format-registry
Update bitstream format registry
2023-04-03 16:11:09 -05:00
Alexandre Vryghem
a26f6bc80e 100553: Removed possibility to updated schema name, element and qualifier 2023-04-03 14:12:56 +02:00
Alan Orth
e777142502 dspace-api: Add SQL migration for PNG
Add a Flyway SQL migration to update the description of PNG in the
bitstream format registry.
2023-03-31 20:56:54 +03:00
Alan Orth
f384eaaf91 dspace-server-webapp: Update IT for bitstream format registry
Since we added WebP and AVIF we need to increase the expected numb-
er of formats by two.
2023-03-31 20:56:54 +03:00
Alan Orth
3f8970048b dspace: add WebP and AVIF to bitstream format registry
WebP and AVIF are modern image formats that have been around for a
few years and have become increasingly widely supported.
2023-03-31 20:56:54 +03:00
Alan Orth
00313ad925 dspace.cfg: update name of PNG format
We should use the short description, not the mime type, as with all
other image types.
2023-03-31 20:56:54 +03:00
Alan Orth
855ca64c1e dspace: Change description for image/png to "PNG"
"image/png" is the mime type, not the short description.
2023-03-31 20:56:54 +03:00
Luca Giamminonni
d77125ccb9 Merge remote-tracking branch '4Science-bitbucket/main' into DURACOM-92 2023-03-31 11:37:09 +02:00
Vincenzo Mecca
9154374e4e Merge branch 'main' into duracom-125 2023-03-31 11:33:33 +02:00
max.nuding
d5c001463a Add integration tests for orcid bulk push with long titles 2023-03-31 08:49:53 +02:00
max.nuding
714c4c7fbb Add CLOB column annotations 2023-03-31 08:32:12 +02:00
Max Nuding
877b514882 Merge branch 'DSpace:main' into main 2023-03-31 08:13:16 +02:00
Tim Donohue
2d8b2b72ad Merge pull request #8716 from amgciadev/fix-8715-b
Fix #8714 and #8715
2023-03-30 12:34:54 -05:00
Tim Donohue
3b92ccede2 Merge pull request #8733 from mspalti/pagination-test
Performance improvement for pagination
2023-03-30 11:28:11 -05:00
Tim Donohue
516221b537 Merge pull request #8684 from 4Science/media-filter
CST-8792 remove all thumbnails in force mode
2023-03-30 11:03:21 -05:00
Yana De Pauw
de46faf23e 100302: Add debugging logs for pubmed requests 2023-03-30 17:39:07 +02:00
Alexandre Vryghem
96b2437e24 100553: Added backend validation on schema, element and qualifier to check if they contain dots 2023-03-30 17:26:29 +02:00
Yana De Pauw
f456beadba Merge branch 'w2p-100302_Pubmed-lookup-too-many-requests' into w2p-100302_Pubmed-lookup-too-many-requests-7.5 2023-03-30 16:33:40 +02:00
Yana De Pauw
b43a92062f 100302: Add delays between specific Pubmed calls 2023-03-30 16:28:31 +02:00
Alexandre Vryghem
0f8b9707f0 100553: Fixed the pagination for core/metadatafield/byFieldName rest endpoint 2023-03-30 16:01:57 +02:00
Alexandre Vryghem
a11ed8a0d3 100553: Sort the queried metadata fields ASC to always display exact matches on top (this can otherwise lead to angular errors) 2023-03-30 15:43:21 +02:00
Nikita Krivonosov
3738d21e0d [DURACOM-128] Unable to delete a profile 2023-03-30 09:34:25 +02:00
Agustina Martinez
ca66fc7309 Update VersionedDOIIdentifierProvider.java
Include check for DOI.SCHEME before returning DOI
2023-03-29 21:05:07 +01:00
Agustina Martinez
8989d5ad16 Update VersionedDOIIdentifierProvider.java
getBareDOI method already adds doi: SCHEME
2023-03-29 20:44:34 +01:00
Agustina Martinez
aa45a407ba Fix for #8732 and #8750 2023-03-29 17:30:59 +01:00
max.nuding
db3ebe84bd Change description column in orcid tables to TEXT type 2023-03-29 15:12:07 +02:00
Francesco Pio Scognamiglio
1f209f4782 Merge branch 'main' into CST-6402 2023-03-29 10:08:15 +02:00
Alexandre Vryghem
5976c5c970 Merge remote-tracking branch 'upstream/main' into w2p-99466_made-import-external-source-date-uniform_contribute-main 2023-03-29 09:59:18 +02:00
Vincenzo Mecca
0a4644750a Merge remote-tracking branch 'origin/main' into duracom-125 2023-03-29 09:06:48 +02:00
Tim Donohue
bdb88724ac Merge pull request #8705 from mspalti/jp2-test
Added test and format registry entry for JPEG2000 image
2023-03-28 16:50:30 -05:00
Tim Donohue
89143deb5c Merge pull request #8724 from arvoConsultores/DS-8719
fix #8719 update sequences
2023-03-28 16:15:45 -05:00
Francesco Pio Scognamiglio
c26d3d7104 Merge branch 'main' into CST-6402 2023-03-28 22:42:03 +02:00
Tim Donohue
3ac343b413 Merge pull request #8746 from tdonohue/fix_broken_alert_test
Fix SystemWideAlert date tests to use our DateMatcher
2023-03-28 13:35:14 -05:00
Tim Donohue
c1731f11ee Fix date tests to use our DateMatcher 2023-03-28 11:44:12 -05:00
Alexandre Vryghem
0133be8a49 99466: Fixed ArXiv date not being formatted as a date but just being saved as a plain string 2023-03-28 11:16:18 +02:00
Vincenzo Mecca
692c5b5a99 [DURACOM-125][#8736] Check replace operation correctness
feat:
  - Introduced ITs inside RestRepositories to check correctness of multi replacement with indexes.
2023-03-27 17:57:40 +02:00
Alexandre Vryghem
6a29d01496 99466: Fixed pubmed date not being saved like the dateFormatsToAttempt specified in pubmed-integration.xml 2023-03-27 17:35:50 +02:00
Yana De Pauw
48cf8403c3 Merge remote-tracking branch 'upstream/main' into w2p-100302_Pubmed-lookup-too-many-requests-7.5 2023-03-27 17:22:32 +02:00
Yana De Pauw
56aca5c14f 100302: Fix issue with Pubmed too many requests 2023-03-27 16:44:07 +02:00
Luca Giamminonni
5a32771791 [DURACOM-92] Fixed CheckerCommand if no bitstream was found 2023-03-27 13:25:01 +02:00
Luca Giamminonni
76d90e7d53 Merge remote-tracking branch '4Science-github/main' into DURACOM-92 2023-03-27 12:33:09 +02:00
Francesco Pio Scognamiglio
ae3c9642ff Merge branch 'main' into CST-6402 2023-03-27 09:17:13 +02:00
Michael Spalti
3d0b63e15b Remove unused import 2023-03-24 11:28:30 -07:00
Vincenzo Mecca
b1c1edc7f0 [DURACOM-125][#8736] Preserved order of modified MetadataValues
feat:
  - Introduced new Class with static methods usable to order
`MetadataValue` lists;
  - Introduced ITs also for `PatchMetadata` replace operations;
  - Introduced new method `DspaceObject#getMetadataFieldId`.
ref:
  - Replaced old sort method inside `ItemServiceImpl` with the new one
2023-03-24 17:34:02 +01:00
Vincenzo Mecca
882373faa1 [DURACOM-125][#8736] Failing Test ItemServiceTest
bug:
  - MetadataValue list once modified should respect a similar order of
the `@OrderBy` annotation inside the `DSpaceObject#metadata` field.
2023-03-24 17:14:06 +01:00
nwoodward
d3e70c4a07 added exception handler for when maximum upload size is exceeded 2023-03-24 08:34:45 -05:00
Michael Spalti
2b8c1ac604 minor refactoring 2023-03-23 16:11:50 -07:00
Michael Spalti
73a9fac5e9 Modified converter service 2023-03-23 13:01:18 -07:00
Tim Donohue
b68f03b845 Merge pull request #8707 from shorock/iss-8706
Off-by-one in solr-upgrade-statistics-6x #8706
2023-03-23 14:42:33 -05:00
Michael Spalti
ac48b2d1fd Fixed typo in bean definition 2023-03-20 16:04:37 -07:00
Michael Spalti
71ababf728 Updated bitstream format test 2023-03-20 16:04:37 -07:00
Michael Spalti
e0846452e5 Added test and format registry entry
Added jp2 resource
2023-03-20 16:04:37 -07:00
aroman-arvo
5d52a2a512 DS-8719 - added if exist to drop sequence 2023-03-20 17:11:05 +01:00
aroman-arvo
372b7e3394 fix #8719 update sequences 2023-03-17 11:00:02 +01:00
Francesco Pio Scognamiglio
6970158eba Merge branch 'main' into CST-6402 2023-03-15 10:51:47 +01:00
Agustina Martinez
11d2d5a3c7 Fix Checkstyle issues 2023-03-13 15:07:04 +00:00
Agustina Martinez
f82834bd57 ItemOwningCollectionUpdateRestController: add support for inheritPolicies flag whem moving items 2023-03-13 14:36:57 +00:00
Luca Giamminonni
bdf867541d [DSC-968] Adding pagination on bitstream cleanup 2023-03-13 15:12:01 +01:00
Agustina Martinez
4748163eaf Fix #8714 and #8715 2023-03-11 15:49:02 +00:00
Tom Shorock
39e4ed67ab Off-by-one in solr-upgrade-statistics-6x #8706 2023-03-08 14:40:15 -06:00
Tim Donohue
b956bcd389 Merge pull request #8680 from DSpace/dependabot/maven/commons-fileupload-commons-fileupload-1.5
Bump commons-fileupload from 1.3.3 to 1.5
2023-03-08 14:33:53 -06:00
Tim Donohue
164b449c44 Merge pull request #8701 from TexasDigitalLibrary/DS-4493
DS-4493: prevent empty string assignment for language variable
2023-03-08 11:56:19 -06:00
nwoodward
1cbaf628cf prevent empty string assignment for language variable 2023-03-07 13:07:03 -06:00
Mark H. Wood
ecb1f1747c Guard against null dates. How embarassing. 2023-03-06 16:53:26 -05:00
Mark H. Wood
9675a0e9b1 Move DateMathParser from instance variables to locals, so "now" is current time not startup time.
Clamp access condition dates to midnight UTC.
Add a lot of debug logging and a test main().
2023-03-06 11:41:14 -05:00
Kevin Van de Velde
5ee8def49c Fixing an issue where the REST api wouldn't resolve a handle url 2023-03-02 13:41:27 +01:00
Tim Donohue
ab578dc742 Merge pull request #8632 from mwoodiupui/policy
Improve ResourcePolicy documentation.
2023-03-01 16:09:02 -06:00
Mark H. Wood
0548b83598 Remove obsolete paragraph: we no longer have any unused properties.
Minor re-wrapping so it's easier to read when editing.  No effect on output.
2023-03-01 09:34:46 -05:00
Tim Donohue
9f304b5b16 Merge pull request #8672 from TexasDigitalLibrary/DS-8478
DS-8478: restores member variables used in sharding functions
2023-02-28 12:19:20 -06:00
Kristof De Langhe
b604480e31 89779: VersionedHandleIdentifierProviderTest pt2 & VersionedHandleIdentifierProviderWithCanonicalHandles fix 2023-02-28 13:58:08 +01:00
nwoodward
d7749e2438 removed logging statements that were already elsewhere 2023-02-27 16:51:02 -06:00
Tim Donohue
ec22f121bf Merge pull request #8665 from DSpace/issue-8661-xsl-stylesheet-1.1
Downgrade Creative Commons transformation stylesheet version
2023-02-27 12:47:47 -06:00
Kristof De Langhe
f70a0cdf50 89779: VersionedHandleIdentifierProviderTest pt2 2023-02-27 14:21:57 +01:00
Andrea Bollini
b847d3ff72 CST-8792 remove all thumbnails in force mode 2023-02-26 14:50:05 -05:00
Kristof De Langhe
47fab88c17 89779: VersionedHandleIdentifierProviderWithCanonicalHandles fix pt1 2023-02-24 17:30:28 +01:00
Mark H. Wood
1acdc55104 Improve ResourcePolicy documentation. 2023-02-23 11:23:39 -05:00
dependabot[bot]
b0567aa224 Bump commons-fileupload from 1.3.3 to 1.5
Bumps commons-fileupload from 1.3.3 to 1.5.

---
updated-dependencies:
- dependency-name: commons-fileupload:commons-fileupload
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-22 06:56:19 +00:00
nwoodward
358e2b5b41 restores member variables used in sharding functions 2023-02-17 10:21:34 -06:00
Tim Donohue
3aa3a945af [maven-release-plugin] prepare for next development iteration 2023-02-17 10:12:27 -06:00
Tim Donohue
654520e1bb [maven-release-plugin] prepare release dspace-7.5 2023-02-17 10:12:23 -06:00
Tim Donohue
055e5a3d09 Updates to LICENSES_THIRD_PARTY for 7.5 2023-02-17 09:42:40 -06:00
Francesco Pio Scognamiglio
191d3700bb [CST-6402] manage saf import via remote url 2023-02-17 12:15:03 +01:00
Tim Donohue
b2d64c52e4 Merge pull request #8669 from 4Science/CST-8936
CST-8936 fix permission for bitstream generated by media-filter
2023-02-15 14:51:37 -06:00
Andrea Bollini
9e8276deba CST-8936 fix permission for bitstream generated by media-filter 2023-02-15 19:12:11 +01:00
Tim Donohue
dbbec3c655 Merge pull request #8660 from atmire/w2p-99200_request-copy-bugfix
Fix for Delete items after copies have been requested
2023-02-14 12:38:09 -06:00
Tim Donohue
0be1464829 Merge pull request #8621 from 4Science/CST-7754
Supervision order REST endpoints
2023-02-14 11:11:40 -06:00
jensvannerum
9bf9ba0775 Merge branch 'main' into w2p-99200_request-copy-bugfix 2023-02-14 14:24:30 +01:00
Raf Ponsaerts
a8a886b242 removed the log info 2023-02-14 11:22:13 +01:00
Tim Donohue
9c5a1976a2 Merge pull request #8663 from 4Science/DURACOM-116
[DURACOM-116] process sorted alphabetically
2023-02-13 10:15:01 -06:00
corrado lombardi
58a010d149 Merge branch 'main' into CST-7754
# Conflicts:
#	dspace-api/src/test/java/org/dspace/builder/AbstractBuilder.java
2023-02-13 17:03:30 +01:00
corrado lombardi
c729fc3b38 Merge branch 'main' into CST-7754 2023-02-13 16:57:49 +01:00
Tim Donohue
bcdf493545 Merge pull request #8620 from 4Science/CST-7756-SubscriptionFeature
Subscription feature rest
2023-02-13 09:51:38 -06:00
corrado lombardi
a37403781e [DURACOM-116] moved sorting to service 2023-02-13 12:53:13 +01:00
Mykhaylo
3b1d930c50 [CST-7756] Non-Discoverable and withdrawn items must be excluded from the notification list 2023-02-13 12:36:27 +01:00
Paulo Graça
37cf25c3f9 Merge branch 'main' into issue-8661-xsl-stylesheet-1.1 2023-02-10 23:04:38 +00:00
Mykhaylo
c34c14f807 Merge branch 'main' into CST-7756-SubscriptionFeature 2023-02-10 21:18:38 +01:00
Tim Donohue
37262101a1 Merge pull request #8629 from atmire/w2p-97414_advanced_workflow_actions-main
Advanced workflow - framework, workflows scoreReview and selectSingleReviewer
2023-02-10 13:40:26 -06:00
Marie Verdonck
f788daa45f Merge branch 'main' into w2p-97414_advanced_workflow_actions-main 2023-02-10 19:37:39 +01:00
Tim Donohue
cc15378fc7 Merge pull request #8664 from amgciadev/fix-8649
Bitstream command line cleanup operation - huge running time and potentially missing a DB commit
2023-02-10 11:07:57 -06:00
Mykhaylo
dd6b03bafc Merge branch 'main' into CST-7756-SubscriptionFeature 2023-02-10 17:29:43 +01:00
Paulo Graça
e4fcfdada6 Downgrade stylesheet version
Due to an warning message reported in:  #8661
2023-02-10 15:43:44 +00:00
Paulo Graça
69d124603b Downgrade stylesheet version
Due to an warning message reported in:  #8661
2023-02-10 15:35:54 +00:00
Agustina Martinez
2208a6bc63 Update BitstreamStorageServiceImpl.java
Amend commit log message
2023-02-10 15:17:40 +00:00
Agustina Martinez
f1a43cdaba Merge branch 'main' into fix-8649 2023-02-10 15:14:51 +00:00
corrado lombardi
e1700797d2 Merge branch 'main' into CST-7754
# Conflicts:
#	dspace-api/src/main/java/org/dspace/content/InstallItemServiceImpl.java
2023-02-10 15:21:54 +01:00
Tim Donohue
1a4e203a96 Merge pull request #8423 from the-library-code/TLC-249_identifiers_submission_7x
Show Identifier Step, pre-register identifiers
2023-02-10 06:51:20 -06:00
corrado lombardi
b76df48c0d Merge branch 'main' into CST-7754
# Conflicts:
#	dspace-api/src/test/java/org/dspace/builder/AbstractBuilder.java
2023-02-10 09:54:40 +01:00
Mykhaylo
5c1dbb0fc5 Merge branch 'main' into CST-7756-SubscriptionFeature 2023-02-10 08:33:04 +01:00
Agustina Martinez
86d7902c1a Added missing commit in cleanup method 2023-02-10 05:24:50 +00:00
Tim Donohue
ec514b5aec Merge pull request #8624 from atmire/w2p-97425_System-wide-alerts
System-wide alerts
2023-02-09 17:10:50 -06:00
Pascal-Nicolas Becker
94c5450318 [TLC-249] Ensure property identifiers.item-status.register-doi is set 2023-02-09 21:39:19 +01:00
Pascal-Nicolas Becker
594050070f [TLC-249] Test abandoning of a pending DOI and minting afterwards 2023-02-09 20:57:04 +01:00
Mohamed Saber Eskander
1fcbd6642c [DURACOM-116] process sorted alphabetically 2023-02-09 19:09:14 +01:00
corrado lombardi
2331db335f [CST-7754] supervising user can perform operations on Workspace item only if they have proper permissions 2023-02-09 15:26:30 +01:00
Marie Verdonck
93f328be95 Merge branch 'w2p-97414_advanced_workflow_actions-7.2' into w2p-97414_advanced_workflow_actions-main 2023-02-09 15:00:57 +01:00
Marie Verdonck
d8f5ae91bd Fix for decline when the delete doesn't persist in context before wfi is created again from same item 2023-02-09 14:59:53 +01:00
Marie Verdonck
0bafbb60a4 Alternate way to restart workflow in case of decline 2023-02-09 14:58:01 +01:00
Mykhaylo
27f75e9fb1 [CST-7756] added security check into 'subscription-send' script 2023-02-09 13:07:27 +01:00
Jens Vannerum
c2845e95aa 99200: Delete items after copies have been requested fix 2023-02-09 11:19:47 +01:00
Mykhaylo
9a9dff47fc Merge branch 'main' into CST-7756-SubscriptionFeature 2023-02-09 09:10:47 +01:00
Kim Shepherd
943bdb19e0 [TL-249] Checkstyle fix 2023-02-09 08:21:38 +13:00
Kim Shepherd
c4af5f2bff [TL-249] Javadoc and other small fixes
Including stripping $Revision$ from filter javadoc.
2023-02-09 08:21:38 +13:00
Kim Shepherd
555363e9b7 [TL-249] Javadoc and other small fixes, DOI unit tests 2023-02-09 08:21:38 +13:00
Kim Shepherd
2b957e2bb9 [TL-249] Revert accidental commit to RestResourceController 2023-02-09 08:21:38 +13:00
Kim Shepherd
7efb70a2f8 [TL-249] Fix imports 2023-02-09 08:21:38 +13:00
Kim Shepherd
b156badb68 [TL-249] Add identifiers.cfg and item-filters.xml config to test data 2023-02-09 08:21:38 +13:00
Kim Shepherd
d0c202010d [TL-249] Add always_true_filter to test REST identifier-service.xml config 2023-02-09 08:21:38 +13:00
Kim Shepherd
94cb0c78ec [TL-249] Remove example-doi_filter from config, add singleton attr to TrueFilter 2023-02-09 08:21:38 +13:00
Kim Shepherd
cb3c9b1f20 [TLC-249] Construct canonical handle URL in identifier item link 2023-02-09 08:21:38 +13:00
Kim Shepherd
dd0a7d7a63 [TLC-249] Refactor TrueFilter to get instantiated as singleton 2023-02-09 08:21:38 +13:00
Kim Shepherd
4997954f23 [TLC-249] Update integration tests for IdentifierRestRepository 2023-02-09 08:21:38 +13:00
Kim Shepherd
e63727e39e [TLC-249] Fix category type in IdentifierRest 2023-02-09 08:21:38 +13:00
Kim Shepherd
b13f36148d [TLC-249] return value as id for IdentifierRest 2023-02-09 08:21:38 +13:00
Kim Shepherd
18ea2f864d [TLC-249] Checkstyle fix 2023-02-09 08:21:38 +13:00
Kim Shepherd
b732764dac [TLC-249] Fixes and improvements as per review feedback 2023-02-09 08:21:38 +13:00
Kim Shepherd
c2f0159414 [TLC-249] Throw not implemented for findOne and findAll 2023-02-09 08:21:38 +13:00
Kim Shepherd
074233ce8d [TLC-249] Refactor, include controller 'find DSO' operation 2023-02-09 08:21:38 +13:00
Kim Shepherd
f9ffceb172 [TLC-249] Refactor identifiers create endpoint 2023-02-09 08:21:36 +13:00
Kim Shepherd
0f77f1d3b1 [TLC-249] Update canRegisterDOIFeature to check for cfg enabled 2023-02-09 08:21:09 +13:00
Kim Shepherd
243df364b5 [TLC-249] Fix submission controller IT 2023-02-09 08:21:09 +13:00
Kim Shepherd
7dafb1ec43 [TLC-249] Update integration tests for identifier controller 2023-02-09 08:21:09 +13:00
Kim Shepherd
94f7be0727 [TLC-249] Update identifier section IT 2023-02-09 08:21:09 +13:00
Kim Shepherd
dbcd1b9525 [TLC-249] Remove unused subclass DataIdentifier 2023-02-09 08:21:09 +13:00
Kim Shepherd
9c7729e0ab [TLC-249] Update configuration identifiers.cfg 2023-02-09 08:21:09 +13:00
Kim Shepherd
d376f45e96 [TLC-249] Improve model for identifier step data 2023-02-09 08:21:09 +13:00
Kim Shepherd
6737a218f6 [TLC-249] Lint fixes 2023-02-09 08:21:09 +13:00
Kim Shepherd
e82ff5eeec [TLC-249] Address review feedback
Controller updated to be less DOI-specific in its
registration implementation
item-status.register renamed to registerDOI
display types included in section data, for UI hints
comments / javadoc added
DOI status text sent instead of number in status data

As per tdonohue's revew on 2022-01-18
2023-02-09 08:21:07 +13:00
Kim Shepherd
65952537a0 [TLC-249] Licence header fix 2023-02-09 08:18:15 +13:00
Kim Shepherd
9a956270d3 [TLC-249] Further IT fix for identifiers 2023-02-09 08:18:15 +13:00
Kim Shepherd
03fb419e38 [TLC-249] Fix tests, Refactor things to use a LinkRestRepository for GET, Controller for POST 2023-02-09 08:18:15 +13:00
Kim Shepherd
43c2b20367 [TLC-249] Further checkstyle fixes 2023-02-09 08:18:15 +13:00
Kim Shepherd
abf65cd48c [TLC-249] Licence header fixes 2023-02-09 08:18:15 +13:00
Kim Shepherd
7926021887 [TLC-249] Checkstyle fixes 2023-02-09 08:18:15 +13:00
Kim Shepherd
12dba51b72 [TLC-249] Move GET handling back to ItemIdentifierController 2023-02-09 08:18:15 +13:00
Kim Shepherd
4140470f9d [TLC-249] Integration tests, keep GET handling in controller 2023-02-09 08:18:15 +13:00
Kim Shepherd
3373cf3330 [TLC-249] Better status return for new DOIs, write new integration tests 2023-02-09 08:18:15 +13:00
Kim Shepherd
73406b7ff0 [TLC-249] REST backend for identifier config 2023-02-09 08:18:15 +13:00
Kim Shepherd
dcdbad7d02 [TLC-249] Add and expose config for enabling register DOI 2023-02-09 08:18:14 +13:00
Kim Shepherd
20aeedfdb3 [TLC-249] Refactor to support better filter usage, PENDING and MINTED status 2023-02-09 08:17:47 +13:00
Kim Shepherd
8fcda7f03a [TLC-249] Update section count test in SubmissionDefinitionsControllerIT 2023-02-09 08:17:47 +13:00
Kim Shepherd
ef6af28fb1 [TLC-249] Remove unused import in WorkspaceItemServiceImpl 2023-02-09 08:17:47 +13:00
Kim Shepherd
c93e6e4a9e [TLC-249] Show Identifier Step, pre-register identifiers 2023-02-09 08:17:47 +13:00
Tim Donohue
e7f217210c Merge pull request #8628 from atmire/w2p-94479_issue-1809_restricted-bitstreams
Downloading restricted bitstreams does not work when opening a new tab/window
2023-02-08 13:04:29 -06:00
Marie Verdonck
cef47deddc #8628: Remove GET shortlivedtokens endpoint & related IT 2023-02-08 18:06:24 +01:00
Tim Donohue
1c4a27bcd4 Merge pull request #8619 from atmire/w2p-97298_issue-3281_self-register-issue-main
Self register domains restriction
2023-02-08 10:56:12 -06:00
corrado lombardi
f5dc078d2f Merge branch 'main' into CST-7756-SubscriptionFeature 2023-02-08 13:31:44 +01:00
Mykhaylo
a00295a32d [CST-7756] described beans 2023-02-08 13:22:50 +01:00
Mykhaylo
ae919d6117 [CST-7756] restores security check as was originaly 2023-02-08 12:49:05 +01:00
Tim Donohue
9b0c592fb7 Merge pull request #8653 from toniprieto/remove-status-filter
Fix for "All of DSpace" browse menu has odd behavior for Community/Collection Admins
2023-02-07 16:53:38 -06:00
Marie Verdonck
e1fd7e2876 Merge branch 'w2p-97414_advanced_workflow_actions-7.2' into w2p-97414_advanced_workflow_actions-main 2023-02-07 23:06:46 +01:00
Marie Verdonck
2516460364 Test IT without drop constraint 2023-02-07 23:00:37 +01:00
Marie Verdonck
1e76abdedd Merge branch 'w2p-97414_advanced_workflow_actions-7.2' into w2p-97414_advanced_workflow_actions-main 2023-02-07 22:59:50 +01:00
Marie Verdonck
9aefeebaa3 IT fix: ReviewManagers repository wide group, not collection workflow group 2023-02-07 22:01:41 +01:00
Tim Donohue
b403a01d33 Merge pull request #8589 from the-library-code/TLC-380_browse_link_configuration_PR
Browse links and "by regex" links in item display (REST)
2023-02-07 14:18:27 -06:00
corrado lombardi
6190e337ac [CST-7756] If no crosswalk is defined for the Item's entity type, default generic Item one is applied 2023-02-07 18:52:35 +01:00
corrado lombardi
31bd28e80c [CST-7756] added dissemination for generic DSpace Item 2023-02-07 18:00:26 +01:00
corrado lombardi
3584633516 [CST-7756] added email subject 2023-02-07 18:00:09 +01:00
Mykhaylo
f6967125fb [CST-7756] minor refactoring 2023-02-07 17:16:21 +01:00
Mykhaylo
9286a692c4 [CST-7756] removed 'lastModified_dt' index field 2023-02-07 17:15:37 +01:00
Mykhaylo
4ff1194c88 [CST-7756] updated subscriptions migration scripts 2023-02-07 17:14:10 +01:00
Mykhaylo
951c755943 [CST-7756] renamed a method 2023-02-07 12:12:04 +01:00
Mykhaylo
8e7cf16ccb [CST-7756] added test that proves what happens if an object is access restricted after you have a subscription to it. 2023-02-07 12:10:41 +01:00
Mykhaylo
b4db57ff99 [CST-7756] implemented community feedbacks 2023-02-07 10:41:11 +01:00
Marie Verdonck
da53eba37c Merge branch 'w2p-97414_advanced_workflow_actions-7.2' into w2p-97414_advanced_workflow_actions-main
# Conflicts:
#	dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/SingleUserReviewAction.java
#	dspace/config/dspace.cfg
2023-02-06 17:13:13 +01:00
Marie Verdonck
07bc6d3141 #8629: PR feedback refactor 2023-02-06 16:46:35 +01:00
Marie Verdonck
450956de86 #8629: Make sure temporary worfklow groups of reviewers get deleted 2023-02-06 10:25:41 +01:00
Kim Shepherd
56ed4aadd4 [TLC-380] Remove unused methods, add ITs 2023-02-06 18:09:15 +13:00
Kim Shepherd
18609c0a20 [TLC-380] Fix browse resource byFields IT 2023-02-06 18:09:15 +13:00
Kim Shepherd
1c2a1538fd [TLC-249] Improve 'findByFields' browse refactor 2023-02-06 18:09:15 +13:00
Kim Shepherd
d85de89261 [TLC-380] Refactor browses endpoint for browse link usage 2023-02-06 18:09:15 +13:00
Kim Shepherd
135385816a [TLC-380] Further checkstyle fixes 2023-02-06 18:09:15 +13:00
Kim Shepherd
9f67c6a9f4 [TLC-380] Further checkstyle fixes 2023-02-06 18:09:15 +13:00
Kim Shepherd
14b5f0e343 [TLC-380] Fix checkstyle and duplicate code 2023-02-06 18:09:15 +13:00
Kim Shepherd
3fe4fd192f [TLC-380] Browse links and "by regex" links in item display 2023-02-06 18:09:15 +13:00
corrado lombardi
fc548e6586 Merge branch 'main' into CST-7754 2023-02-03 18:49:57 +01:00
corrado lombardi
a1550f3e5c [CST-7754] moved supervision orders test on workflow items to SupervisionOrderRestRepositoryIT, added test covering the scenario when an admin tries to set a supervision order on a withdrawn item, and when an admin sets a supervision order on a workflow item before sending it back to workspace: supervisor can edit the item only when it goes to workspace status. 2023-02-03 18:41:00 +01:00
corrado lombardi
744748ab66 [CST-7754] withdrawn item should not allow supervision order 2023-02-03 18:38:47 +01:00
corrado lombardi
920b36ec48 [CST-7754] updated comment 2023-02-03 18:38:14 +01:00
corrado lombardi
9558330aea [CST-7754] updated javadoc 2023-02-03 18:37:55 +01:00
Mykhaylo
9fe1953d07 [CST-7756] added missing IT 2023-02-03 17:22:26 +01:00
corrado lombardi
a26790fe4b [CST-7756] removed Items section 2023-02-03 15:10:46 +01:00
corrado lombardi
2c2c037ce0 [CST-7756] code refactoring 2023-02-03 15:10:27 +01:00
corrado lombardi
ad6d514e0e [CST-7756] removed mail template used by previous script 2023-02-03 15:09:45 +01:00
corrado lombardi
dca79c1a20 [CST-7756] renamed test class in order to reflect its actual behavior 2023-02-03 15:09:02 +01:00
corrado lombardi
669442eb03 [CST-7756] code refactoring 2023-02-03 15:08:26 +01:00
Mykhaylo
4fd8eeebb8 [CST-7756] added missing JavaDoc 2023-02-03 12:14:28 +01:00
corrado lombardi
c297e49ed2 Merge remote-tracking branch 'origin/CST-7756-SubscriptionFeature' into CST-7756-SubscriptionFeature
# Conflicts:
#	dspace-api/src/test/java/org/dspace/eperson/SubscribeServiceTest.java
2023-02-03 00:04:58 +01:00
corrado lombardi
611be00481 [CST-7756] extended SubscribeServiceTest in order to use service instance with real (h2) database instead of mocks, so that tests actually store, query and remove subscriptions interacting with database 2023-02-02 23:58:51 +01:00
Mykhaylo
80a7119344 [CST-7756] minor fix 2023-02-02 19:31:13 +01:00
Mykhaylo
00b53923a6 [CST-7756] removed subscriptions for items 2023-02-02 19:23:54 +01:00
Marie Verdonck
98ee5cb44f Reinstate config accidentally deleted, added in 30f923a080 (#8064) - enables RSS/Atom feeds 2023-02-02 19:08:28 +01:00
Alexandre Vryghem
54f6ba9951 99053: Add return_to_pool option to all ProcessingAction except SingleUserReviewAction 2023-02-02 18:57:49 +01:00
corrado lombardi
edcb771ef2 [CST-7756] updated script 2023-02-02 18:04:07 +01:00
corrado lombardi
d3c79bd2cb [CST-7756] extended abstract test 2023-02-02 18:01:24 +01:00
corrado lombardi
0edaba6f3a [CST-7756] after merge checkstyle fix 2023-02-02 17:54:09 +01:00
corrado lombardi
83649f6036 Merge branch 'main' into CST-7756-SubscriptionFeature
# Conflicts:
#	dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java
2023-02-02 17:52:50 +01:00
corrado lombardi
b4f7ebfb8a [CST-7756] added instructions to migrate subscriptions from previous versions 2023-02-02 17:47:08 +01:00
Tim Donohue
8f1ba7b78d Merge pull request #8607 from atmire/w2p-97183_fix-user-authorization-issues-with-admin-sidebar
Fix user authorization issues with admin sidebar
2023-02-02 10:34:49 -06:00
Yana De Pauw
8077139c67 97425: Fix minor issues 2023-02-02 16:23:20 +01:00
corrado lombardi
6069e32353 [CST-7756] updated license header 2023-02-02 16:04:35 +01:00
corrado lombardi
f0acbb9575 [CST-7756] sub-daily command and its referred class removed, as subscriptions are sent by subscription-send command 2023-02-02 15:51:24 +01:00
corrado lombardi
0d872b543c [CST-7756] added unit tests covering methods with business logic 2023-02-02 15:39:24 +01:00
Mykhaylo
de7d1738fc [CST-7756] monor fix 2023-02-02 12:53:57 +01:00
Toni Prieto
7267e151cf Remove statusFilter added to Solr browse indexes queries to solve an issue with the local administrators navigation 2023-02-01 18:58:09 +01:00
Mohamed Saber Eskander
7197767a31 Merge remote-tracking branch 'origin/main' into CST-7754
# Conflicts:
#	dspace-server-webapp/src/test/java/org/dspace/app/rest/DiscoveryRestControllerIT.java
2023-02-01 18:52:41 +02:00
Mykhaylo
22ebb04fcd Merge branch 'main' into CST-7756-SubscriptionFeature 2023-02-01 17:16:42 +01:00
Mykhaylo
6a02994c5b [CST-7756] refactoring 2023-02-01 17:13:42 +01:00
Mohamed Saber Eskander
da2815752c [CST-7754] removed old code of supervision orders
added a new migration script sql
tested that supervisors can edit only workspace items
2023-02-01 18:13:26 +02:00
Mykhaylo
de44d9dbe7 [CST-7756] added template for subscription content email 2023-02-01 17:12:46 +01:00
Mykhaylo
7a807f61a8 [CST-7756] added missing index field 2023-02-01 17:12:04 +01:00
Mykhaylo
0944f5956f [CST-7756] minor update 2023-02-01 17:11:24 +01:00
Yana De Pauw
d470c759b0 Merge remote-tracking branch 'upstream/main' into w2p-97425_System-wide-alerts 2023-01-31 13:26:54 +01:00
Yana De Pauw
659382fa8b 97425: Implement feedback 2023-01-31 12:27:39 +01:00
Tim Donohue
8b739d4b30 Merge pull request #8642 from atmire/w2p-98462_Use-discovery-config-in-browse
Use discovery configurations in browse
2023-01-30 14:20:14 -06:00
Tim Donohue
9354244b7c Merge pull request #8578 from tdonohue/update_bcel
Update Apache Commons BCEL and add "test" scope
2023-01-30 09:19:54 -06:00
Mykhaylo
1593e1a867 [CST-7756] refactored CanSubscribeFeatureIT 2023-01-30 13:30:01 +01:00
Mykhaylo
cb4fd99211 [CST-7756] minor fix 2023-01-27 18:09:50 +01:00
Mykhaylo
f5c1690e0b [CST-7756] renamed some methods & class 2023-01-27 14:53:53 +01:00
Mykhaylo
c59438b936 [CST-7756] added validation logic of params 2023-01-27 12:10:16 +01:00
Mykhaylo
d3c5e7debe [CST-7756] added tests to valid subscription parameters 2023-01-27 11:51:31 +01:00
Mykhaylo
20231fd086 [CST-7756] refactoring 2023-01-26 18:32:45 +01:00
Mykhaylo
9ff712c54f Merge branch 'main' into CST-7756-SubscriptionFeature 2023-01-26 14:28:09 +01:00
Mykhaylo
600a194284 [CST-7756] fixed failed tests 2023-01-26 14:25:06 +01:00
Marie Verdonck
871bac5d84 PR #8619: Removed dependency spring-context-support, not needed in main 2023-01-26 12:15:36 +01:00
Mykhaylo
0867a05e79 [CST-7756] minor refactoring according to the rest contract 2023-01-26 11:54:57 +01:00
Mykhaylo
08259ecb3a [CST-7756] removed unused service bean 2023-01-26 11:53:21 +01:00
Mykhaylo
f4ca5958ac [CST-7756] refactoring & added missing JavaDoc 2023-01-25 18:37:01 +01:00
Marie Verdonck
5a2f2eda10 Merge branch 'w2p-97298_issue-3281_self-register-issue-7.2' into w2p-97298_issue-3281_self-register-issue-main
# Conflicts:
#	dspace-server-webapp/src/test/java/org/dspace/app/rest/RegistrationRestRepositoryIT.java
2023-01-25 16:30:23 +01:00
Marie Verdonck
f1af02c9cc 97061: type request param name change to avoid confusion with rest object type &
error codes endpoint changes + IT:
- missing/wrong query param accountRequestType => 400 bad request
- email not valid domain => 422 unprocessable entity
2023-01-25 15:40:53 +01:00
Yana De Pauw
51424cbb7c 97425: Fix issue with sessions null value 2023-01-23 17:22:32 +01:00
Tim Donohue
536e8cb347 Merge pull request #8613 from atmire/issue-1712_w2p-97080_facet-search-all-words-main
Facet search should search all words, not just the first one
2023-01-20 09:37:06 -06:00
Mykhaylo
1f06e29c25 Implemented community feedbacks 2023-01-20 11:49:29 +01:00
Marie Verdonck
e0e587ce09 Merge branch 'main' into issue-1712_w2p-97080_facet-search-all-words-main 2023-01-20 01:01:21 +01:00
Marie Verdonck
465a15f9a5 Merge branch 'issue-1712_w2p-97080_facet-search-all-words-7.2' into issue-1712_w2p-97080_facet-search-all-words-main 2023-01-20 01:00:30 +01:00
Marie Verdonck
2c155cb8b4 97080: #8613 - Doc for the prefix solr field 2023-01-20 00:53:59 +01:00
Mykhaylo
702ce8128a Merge branch 'main' into CST-7756-SubscriptionFeature 2023-01-19 12:36:45 +01:00
Tim Donohue
3ac5d566a4 Merge pull request #8600 from atmire/issue-815-controlled-vocabulary-hierarchical-facets-7.4
Issue 815 controlled vocabulary hierarchical facets 7.4
2023-01-18 11:48:03 -06:00
Koen Pauwels
9534b7893e 97183 Tests for findItemsWithEdit and countItemsWithEdit methods of ItemServiceImpl 2023-01-17 16:14:42 +01:00
jensvannerum
9d7e9eecc0 Merge branch 'main' into issue-815-controlled-vocabulary-hierarchical-facets-7.4 2023-01-16 14:31:16 +01:00
Tim Donohue
4cd3c3af95 Merge pull request #8319 from mwoodiupui/8304
Enable to answer a request a copy using "helpdesk" strategy
2023-01-13 14:48:25 -06:00
Jens Vannerum
b7626dd884 97538: Alter IT for public vocabulary search method 2023-01-13 13:19:38 +01:00
Jens Vannerum
f83c82e00d 97538: The search rest method should be public 2023-01-13 12:16:35 +01:00
Nona Luypaert
ce9f4ca08b Merge remote-tracking branch 'upstream/main' into issue-1712_w2p-97080_facet-search-all-words-main
Merge remote-tracking branch 'upstream/main' into
issue-1712_w2p-97080_facet-search-all-words-main
2023-01-13 12:10:26 +01:00
jensvannerum
98425b8066 Merge branch 'main' into issue-815-controlled-vocabulary-hierarchical-facets-7.4 2023-01-13 09:58:55 +01:00
Tim Donohue
237cad1f14 Merge pull request #8625 from atmire/Add-Range-CORS-header
Add CORS "Access-Control-Expose-Headers:  Accept-Ranges"  header
2023-01-12 15:09:50 -06:00
Tim Donohue
4e9a6f0800 Merge pull request #8631 from 4Science/DURACOM-113
[DURACOM-113] add jfif extension on bitstream formats
2023-01-12 14:32:56 -06:00
Luca Giamminonni
fc9f692bed [DURACOM-92] Tested and improved S3BitStoreService.about method 2023-01-12 17:22:45 +01:00
Yana De Pauw
d53d3054bd Merge branch 'w2p-98462_Use-discovery-config-in-browse-7.2' into w2p-98462_Use-discovery-config-in-browse 2023-01-12 16:33:42 +01:00
Yana De Pauw
d18120919c 98462: Refactor change and add admin tests 2023-01-12 16:32:51 +01:00
Francesco Pio Scognamiglio
a9c5a2ce31 [DURACOM-113] add jfif extension on bitstream formats 2023-01-12 14:59:52 +01:00
Yana De Pauw
a29b70337e Merge remote-tracking branch 'upstream/main' into w2p-98462_Use-discovery-config-in-browse 2023-01-12 14:07:13 +01:00
Yana De Pauw
902141df36 Merge tag 'dspace-7.4' into w2p-98462_Use-discovery-config-in-browse-7.4
[maven-release-plugin] copy for tag dspace-7.4
2023-01-12 13:52:48 +01:00
Yana De Pauw
3579026694 98462: Use discovery configurations in browse 2023-01-12 13:10:55 +01:00
Mykhaylo
bccd39b3c0 Merge branch 'main' into CST-7756-SubscriptionFeature 2023-01-12 10:26:39 +01:00
Mykhaylo
96ee82af97 [CST-7756] removed unused param 2023-01-12 10:18:21 +01:00
jensvannerum
282d4747e1 Merge branch 'main' into issue-815-controlled-vocabulary-hierarchical-facets-7.4 2023-01-12 10:03:09 +01:00
Luca Giamminonni
1e8c58ef6d Merge branch 'main' into DURACOM-92 2023-01-12 09:59:19 +01:00
Marie Verdonck
d0c507df64 98433: Refactoring SingleUserReviewAction & general refactoring in Actions
- Fix in AutoAssignAction that selected reviewer didn't get registered as new InProgressSubmissionUser
2023-01-12 03:42:45 +01:00
Marie Verdonck
a24d383ab1 98433: IT fixes now that access rights are now moved to selected reviewers in AutoAssignAction 2023-01-12 02:52:16 +01:00
Marie Verdonck
3756b197ba 98433: Refactoring SingleUserReviewAction & general refactoring in Actions
- Fix in AutoAssignAction that selected reviewer didn't get registered as new InProgressSubmissionUser
2023-01-12 02:01:20 +01:00
Tim Donohue
6cdcfb50fd Merge pull request #8626 from 4Science/CST-7604
Configuration updated to highlight Orgunit and Person
2023-01-11 16:36:54 -06:00
Marie Verdonck
fb4fa0d20e Merge branch 'w2p-97414_advanced_workflow_actions-7.2' into w2p-98433_advanced_workflow_actions_SingleUserReviewAction 2023-01-11 22:32:36 +01:00
Marie Verdonck
217ea10114 Merge branch 'w2p-97414_advanced_workflow_actions-7.2' into w2p-97414_advanced_workflow_actions-main 2023-01-11 21:47:30 +01:00
Marie Verdonck
fa1c48b56c 98434: IT fix 2023-01-11 21:46:33 +01:00
Marie Verdonck
c9cf77d77c Merge branch 'main' into w2p-97414_advanced_workflow_actions-main
# Conflicts:
#	dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/SelectReviewerAction.java
#	dspace/config/dspace.cfg
2023-01-11 21:01:56 +01:00
Marie Verdonck
bfed2b7064 98434: Advanced workflow - refactor scoreReview workflow 2023-01-11 20:53:19 +01:00
Tim Donohue
373234fd30 Merge pull request #8593 from johannastaudinger/issue-8564
DataCite plugin for import
2023-01-11 12:36:46 -06:00
Tim Donohue
c4efe41b23 Merge pull request #8611 from tdonohue/add_database_skip
Add "./dspace database skip" command to optionally skip older migrations
2023-01-11 11:54:39 -06:00
Koen Pauwels
4032828342 98433 Reject button mostly works - still triggers a 404 in console though 2023-01-11 18:07:15 +01:00
jensroets
5297f6a60b 98345 SelectReviewerAction, TaskRestRepositoriesIT and h2 migration 2023-01-11 16:26:15 +01:00
jensroets
75cfaaef80 98345 Advanced workflow actions - Parse select reviewers step 2023-01-09 16:45:22 +01:00
Yana De Pauw
f03d5ff0a6 Fix license issues 2023-01-05 17:17:11 +01:00
Yana De Pauw
8bd4ec3b10 Merge remote-tracking branch 'upstream/main' into Add-Range-CORS-header 2023-01-05 16:34:33 +01:00
Yana De Pauw
1004a7c8c4 97735: Add a accept range cors header 2023-01-05 16:27:23 +01:00
corrado lombardi
d1a7fe9a02 [CST-7604] Configuration updated to highlight Orgunit and Person 2023-01-03 13:07:35 +01:00
jensroets
bb6e089ae5 97414 Advanced workflow actions: fixed SelectReviewerAction NullPointerException 2023-01-03 12:40:09 +01:00
jensroets
51c581ed26 97414 Advanced workflow actions: implemented feedback on SelectReviewerAction + WorkflowActionRestRepositoryIT 2023-01-03 11:02:50 +01:00
Yana De Pauw
faea5a1ed2 Merge remote-tracking branch 'upstream/main' into discovery-fixes 2023-01-02 16:05:08 +01:00
Jens Vannerum
de6bccafa3 97538: Remove readability change in IT 2023-01-02 13:36:11 +01:00
Jens Vannerum
bf084d74a1 97538: Remove readability change 2023-01-02 12:28:54 +01:00
Jens Vannerum
00a11c58cb 97538: Unauthorized tests should now be anonymous 2023-01-02 12:21:00 +01:00
Jens Vannerum
e5552ead40 Merge branch 'main' into issue-815-controlled-vocabulary-hierarchical-facets-7.4 2023-01-02 10:11:16 +01:00
Koen Pauwels
7ee46e0cba 97183 Processing PR review feedback 2023-01-02 09:58:31 +01:00
Mohamed Saber Eskander
7a08fe50fe [CST-7754] test supervision order is deleted if workspaceItem or group is deleted. 2023-01-02 10:58:18 +02:00
corrado lombardi
01634d1414 [CST-7754] otherworkspace discovery configuration shows only supervised workspace items, when a supervision order is deleted grants given to supervision groups on an item are revoked. 2022-12-30 15:55:23 +01:00
corrado lombardi
e9af511f26 Merge branch 'main' into CST-7754 2022-12-30 14:20:36 +01:00
corrado lombardi
343ce405f7 Merge branch 'main' into CST-7756-SubscriptionFeature 2022-12-30 11:29:43 +01:00
corrado lombardi
1fd22ee8a9 Merge remote-tracking branch 'origin/CST-7756-SubscriptionFeature' into CST-7756-SubscriptionFeature 2022-12-30 11:20:10 +01:00
corrado lombardi
bca8d6320a [CST-7756] fixed database scripts version number 2022-12-30 11:17:53 +01:00
Giuseppe Digilio
c52042aad5 [CST-7756] Fix checkstyle 2022-12-30 09:22:45 +01:00
Giuseppe Digilio
d5888a8cfd [CST-7756] Rename type property to subscriptionType in the subscriptionType object 2022-12-29 18:36:15 +01:00
Marie Verdonck
f8037d465a 97298: Self-register - test fixes 2022-12-29 17:30:48 +01:00
Marie Verdonck
1cff907a2f Merge branch 'w2p-97298_issue-3281_self-register-issue-7.2' into w2p-97298_issue-3281_self-register-issue-main 2022-12-29 17:30:14 +01:00
Marie Verdonck
2f196624e0 97298: Self-register - test fixes 2022-12-29 17:08:58 +01:00
Marie Verdonck
6a594cb62b 97298: #3281 Self-register - fix, needs existent user for forgot 2022-12-29 16:57:05 +01:00
Marie Verdonck
cd709c5033 Merge branch 'w2p-97298_issue-3281_self-register-issue-7.2' into w2p-97298_issue-3281_self-register-issue-main 2022-12-29 15:31:04 +01:00
Marie Verdonck
3dc98bae78 97298: #3281 Self-register - type param 2022-12-29 15:17:54 +01:00
corrado lombardi
b54bdd1712 [CST - 7754] refactoring and added support for NONE type 2022-12-28 10:09:54 +01:00
jensroets
25ef93ac7b 97414 Advanced workflow actions: javadocs + moved isAdvanced method 2022-12-23 15:18:02 +01:00
Mohamed Saber Eskander
5330c2dc0f [CST-7754] removed unused fields. 2022-12-23 15:29:13 +02:00
Marie Verdonck
37be809eb0 Merge remote-tracking branch 'origin/main' into w2p-97298_issue-3281_self-register-issue-main 2022-12-23 14:26:41 +01:00
Joost
813eb1ef8a Merge branch 'w2p-97298_issue-3281_self-register-issue-7.2' into w2p-97298_issue-3281_self-register-issue-main 2022-12-23 14:26:03 +01:00
Marie Verdonck
845c58f246 Merge remote-tracking branch 'origin/main' into issue-1712_w2p-97080_facet-search-all-words-main 2022-12-23 14:19:38 +01:00
Yana De Pauw
1cabe8e87c 97425: Update names of sessions enum 2022-12-23 12:00:44 +01:00
Yana De Pauw
45e4748482 97425: Create "System Wide Alerts" feature 2022-12-23 10:35:35 +01:00
Mohamed Saber Eskander
dea4b5e17f [CST-7754] LYRASIS: Supervisor orders (REST). 2022-12-22 17:40:43 +02:00
Philipp Rumpf
26f0a42521 Merge pull request #8
* DataCite: use configuration service to set URL + timeout

* DataCite: configure DataCite url + timeout in external-providers.cfg

* DataCite: add DataCite bean to default configuration
2022-12-22 13:42:23 +01:00
jensroets
3cf0be61ef 97414 Advanced workflow actions: SelectReviewerAction advanced info 2022-12-21 16:00:08 +01:00
jensroets
c21eb479f3 97414 Advanced workflow actions: refactor for updated rest contract 2022-12-21 14:05:34 +01:00
Tim Donohue
ba68535d76 Merge pull request #8605 from atmire/w2p-97294_content_migration_contribution
Huge performance improvement on metadata import
2022-12-20 15:59:23 -06:00
Tim Donohue
d50f669a78 Merge pull request #8612 from toniprieto/browse-by-title-with-spaces
Fix Browse by Title cannot filter by multiple words
2022-12-20 15:15:44 -06:00
Tim Donohue
4047235e69 Merge pull request #8562 from mwoodiupui/8561
Option to skip bitstreams on import, like 'export -x'
2022-12-20 14:11:01 -06:00
Kevin Van de Velde
0567e8df03 Adding a sensible default to the "bulkedit.change.commit.count" retrieval 2022-12-20 17:19:44 +01:00
Kevin Van de Velde
167016084d Renaming the resource policy sql file and adding the same file to the H2 so our tests are in sync 2022-12-20 17:14:51 +01:00
Tim Donohue
83cf9e88d4 Merge pull request #8591 from arvoConsultores/DS-8412
#8412 In Submission Form, list collections alphabetically
2022-12-20 10:00:54 -06:00
Tim Donohue
6363b21c84 Merge pull request #8565 from 4Science/main_8563_DURACOM-101
Common Extendend Regex Parser
2022-12-20 09:39:50 -06:00
Adan Roman
027c79e341 Sorting constant moved and renamed 2022-12-20 10:39:30 +01:00
Joost
507189a828 [task 97298] only check for allowed domains on register 2022-12-20 09:35:59 +01:00
Vincenzo Mecca
72813eebaf [8563][DURACOM-101] Multiflag regex tests 2022-12-19 18:40:06 +01:00
Vincenzo Mecca
14b7ac18b0 [8563][DURACOM-101] Improved Regex Tests 2022-12-19 18:14:40 +01:00
Vincenzo Mecca
496f936a7d [8563][DURACOM-101] Removed unreachable branch 2022-12-19 18:14:15 +01:00
Tim Donohue
a7cba3c57b Merge pull request #8522 from qzhao-ulb/patch-6
Item/Collection admin can't create new version item
2022-12-19 10:54:39 -06:00
Vincenzo Mecca
7efc955460 [8563][DURACOM-101] Updated JavaDoc for computePattern method 2022-12-19 17:40:18 +01:00
Tim Donohue
014e671fd6 Remove unnecessary system.out from IT 2022-12-19 10:09:55 -06:00
jensroets
d0a91347c6 97414 Advanced workflow actions 2022-12-19 16:53:49 +01:00
Mykhaylo
9f456c21d5 [CST-7756] porting of SubscribeFeature 2022-12-19 13:51:06 +01:00
qzhao
44e99772e1 Merge branch 'patch-6' of https://github.com/qzhao-ulb/DSpace into patch-6 2022-12-19 13:36:05 +01:00
qzhao
f523420a9b add test method for bugfix "collectin admin can create new version" pull request: dspace/dspace/#8522 2022-12-19 12:59:45 +01:00
Yury Bondarenko
eb28c639a0 Merge branch 'discovery-fixes-7.2' into discovery-fixes 2022-12-19 12:11:12 +01:00
Yury Bondarenko
1300cdc75b 97248: Cache discovery configurations by UUID 2022-12-19 11:20:53 +01:00
QZhao
3240c1c33f Merge branch 'main' into patch-6 2022-12-19 08:56:51 +01:00
Nona Luypaert
c65314db9d Merge remote-tracking branch 'origin' into issue-1712_w2p-97080_facet-search-all-words-main
97080: Facet search box should search all words
2022-12-16 17:06:13 +01:00
Nona Luypaert
32bafed548 97080: Browse values also get indexed with _prefix field 2022-12-16 16:35:27 +01:00
Nona Luypaert
4ff2e2826d 97080: Fix DiscoveryRestControllerIT 2022-12-16 15:54:31 +01:00
Nona Luypaert
6195127e81 97080: Facet search on all words: authorityKey fix + ITs 2022-12-16 12:49:30 +01:00
Adan Roman
193f0a4750 checkstyle 2022-12-16 10:14:01 +01:00
Adan Roman
003a89c8ed Merge branch 'DS-8412' of https://aroman-arvo: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@github.com/arvoConsultores/DSpace.git into DS-8412 2022-12-16 10:06:23 +01:00
aroman-arvo
bc597b710b Merge branch 'DS-8412' of https://github.com/arvoConsultores/DSpace into
DS-8412
2022-12-16 10:05:56 +01:00
aroman-arvo
b4408e5e8a Merge branch 'DS-8412' of https://github.com/arvoConsultores/DSpace into DS-8412 2022-12-16 09:55:12 +01:00
Arvo Consultores y Tecnología. S.L
3e7599dff6 Merge branch 'DSpace:main' into DS-8412 2022-12-16 09:43:28 +01:00
Adan Roman
bc6066523f #8412 In Submission Form, list collections alphabetically - solr
ordering
2022-12-16 09:38:48 +01:00
Mark H. Wood
ea6876f2fe Add option to GUI as well. 2022-12-15 14:22:59 -05:00
Mark H. Wood
0f38f261c2 Rename option to parallel the exporter. 2022-12-15 14:22:25 -05:00
Nona Luypaert
2f546ffafa Merge remote-tracking branch 'atmire/w2p-95912_facet-capital-letter-bugfix' into issue-1712_w2p-97080_facet-search-all-words-7.2
95912: queries should be case-insensitive
2022-12-15 15:50:47 +01:00
Yana De Pauw
69500ad5d5 Fix discovery test config and make ids for relationship profiles unique 2022-12-15 11:55:05 +01:00
Mykhaylo
57f917ae0e [CST-7756] porting of the script for notification of content subscription 2022-12-14 16:14:48 +01:00
Mykhaylo
25b8ba8ead [CST-7756] added tests 2022-12-14 11:10:36 +01:00
Yana De Pauw
38b30c394c Fix openSearchController issue 2022-12-14 10:32:54 +01:00
Tim Donohue
7c68e09486 Add database skip command. Minor refactor of DatabaseUtils to use switch 2022-12-13 15:13:19 -06:00
Yana De Pauw
14534b4eaf Move context to first argument in getDiscoveryConfigurationByNameOrDso 2022-12-13 17:47:35 +01:00
Yana De Pauw
2f8260ec49 Merge branch 'discovery-fixes-7.2' into discovery-fixes 2022-12-13 17:09:37 +01:00
Yana De Pauw
463edac869 Remove local file 2022-12-13 17:08:02 +01:00
Yana De Pauw
eb50fa03eb Merge branch 'discovery-fixes-7.2' into discovery-fixes 2022-12-13 16:38:56 +01:00
Yana De Pauw
c538b9cbed Add docs and remove unused site configuration 2022-12-13 14:27:29 +01:00
Yana De Pauw
82bc777e45 Fix issue with indexing and add tests 2022-12-13 12:32:15 +01:00
Marie Verdonck
fc6ac8e078 97080: #1712 - Refactoring facet search all words 2022-12-13 12:00:00 +01:00
Joost
2378dbbeec Merge remote-tracking branch 'upstream/main' into w2p-97298_issue-3281_self-register-issue-main 2022-12-13 10:38:30 +01:00
Philipp Rumpf
f0cd84ed77 Tests: configure dc.contributor.author, test it 2022-12-12 14:38:53 +00:00
Johanna Staudinger
607e7458e0 Minor fixes:
remove unused class field
avoid potential NPE on invalid JSON
2022-12-12 14:38:53 +00:00
Philipp Rumpf
360bc85ead Merge pull request #5
* DataCite plugin for import

* start copying Crossref test

* use dataCite original JSON

* snapshot

* adjust DataCite mapping to grab all titles

* simplify DataCiteImportMetadataSourceServiceImpl. Avoid GSON, JsonPat…

* rewrite DataCiteImportMetadataSourceServiceIT based on CrossRef IT.
2022-12-12 14:38:53 +00:00
Johanna Staudinger
a9cee40a15 DataCite plugin for import
Plugin for import of external metadata from DataCite for publications.
Code by @johannastaudinger, @floriangantner and @philipprumpf.
2022-12-12 14:38:53 +00:00
Toni Prieto
d906d9463b Add test for filtering browse by title with spaces 2022-12-12 10:50:19 +01:00
Toni Prieto
b0afb15efa Escape special characters in startsWith filter of browse by title 2022-12-12 10:46:39 +01:00
Tim Donohue
ec483fef5b Update BCEL and add correct scope 2022-12-09 10:37:48 -06:00
Kevin Van de Velde
f2d329dc88 Changing a log info to a handler logInfo call 2022-12-09 09:24:00 +01:00
Kevin Van de Velde
c705e3c92c Fixing tests 2022-12-09 09:21:31 +01:00
Kevin Van de Velde
77be5cdc25 Improve performance for metadata imports 2022-12-09 09:21:19 +01:00
jensvannerum
9752677b70 Merge branch 'main' into issue-815-controlled-vocabulary-hierarchical-facets-7.4 2022-12-08 17:06:10 +01:00
jensroets
1a9b1e3e94 89597 Metadata import (Improve performance): edit comment 2022-12-08 13:57:03 +01:00
jensroets
02cb5243a4 89597 Metadata import (Improve performance) 2022-12-08 13:56:34 +01:00
Koen Pauwels
1252a98240 97183 SolrServiceIndexItemEditorsPlugin: fixed logger type 2022-12-08 10:33:31 +01:00
Tim Donohue
ec0853ddad Merge pull request #8579 from TexasDigitalLibrary/DS-8385
DS-8385: Use discovery configuration to get correct sort field type for given …
2022-12-07 15:13:06 -06:00
Tim Donohue
424d691b98 Merge pull request #8571 from TexasDigitalLibrary/DS-4488
DS-4488: Log views statistics even when MaxMind DatabaseReader isn't fully configured
2022-12-07 14:32:59 -06:00
Tim Donohue
cf21da8ce7 Merge pull request #8594 from DSpace/dependabot/maven/org.postgresql-postgresql-42.4.3
Bump postgresql from 42.4.1 to 42.4.3
2022-12-07 12:06:38 -06:00
dependabot[bot]
e8dc1c9a58 Bump postgresql from 42.4.1 to 42.4.3
Bumps [postgresql](https://github.com/pgjdbc/pgjdbc) from 42.4.1 to 42.4.3.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.4.1...REL42.4.3)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-07 17:09:19 +00:00
Vincenzo Mecca
c933cd60ef Merge branch 'main' into main_8563_DURACOM-101 2022-12-07 18:05:04 +01:00
Mykhaylo
9901bcfd55 [CST-7756] minor fix 2022-12-07 17:37:30 +01:00
Tim Donohue
b38cbb0ba0 Merge pull request #8550 from alanorth/imagemagick-cropbox
dspace-api: tell ImageMagick about the PDF CropBox
2022-12-07 10:32:33 -06:00
Mykhaylo
bd6334d9b0 [CST-7565] minor refactoring 2022-12-07 16:45:55 +01:00
Joost
a152b551d4 [task 97298] implemented check for allowed domains during registration' 2022-12-07 16:32:08 +01:00
Mykhaylo
fd7016f14e [CST-7756] refactoring 2022-12-07 14:25:35 +01:00
Nona Luypaert
088bbc8053 97080: Fix facet search box should search all parts (WIP) 2022-12-07 14:23:01 +01:00
Alan Orth
e6693f4232 dspace-api: tell ImageMagick about the PDF CropBox
ImageMagick uses the MediaBox by default when rasterizing PDFs be-
cause the PDF specification says that all PDFs *must* contain one.
This page box is the parent for all other boxes that a PDF *may*
contain, for example a CropBox, ArtBox, etc. In many cases these
are the same, but when they are not the CropBox is used to define
the area displayed to a user when they open the PDF on screen (as
opposed to when printing on paper).

If a PDF has a CropBox that is different to its MediaBox then we
should tell ImageMagick to use it.

Fixes: https://github.com/DSpace/DSpace/issues/8549
2022-12-06 14:00:38 -06:00
Tim Donohue
705f87a826 Merge pull request #8402 from mspalti/canvas-dims-mutiple-bundles
Updates the canvas dimension method to use multiple bundles.
2022-12-06 13:59:56 -06:00
Michael W Spalti
34e6ce3b39 Missing javadoc. 2022-12-06 12:41:15 -06:00
Michael W Spalti
b0f809db05 Added mock to dspace-api tests.
Updated bean configs.
2022-12-06 12:41:15 -06:00
Michael W Spalti
83b1b346c9 Updating to address feedback. 2022-12-06 12:41:15 -06:00
Michael W Spalti
37e89c13b1 New mock and test. 2022-12-06 12:41:15 -06:00
Michael Spalti
d4c03764a6 Added check for image format.
Added logging for error.
2022-12-06 12:41:15 -06:00
Michael Spalti
18ce42c388 Updates the canvas dimension method to use multiple bundles. 2022-12-06 12:41:15 -06:00
Tim Donohue
b5b94b2986 Merge pull request #8548 from tdonohue/enable_github_codeql
Update to use GitHub CodeQL for code scanning
2022-12-06 12:09:38 -06:00
Tim Donohue
9cd358f7b2 Update to use GitHub CodeQL for code scanning 2022-12-06 11:25:30 -06:00
Tim Donohue
7f04d496e5 Merge pull request #8602 from tdonohue/more_contributing
Minor fixes to sync CONTRIBUTING with PR template
2022-12-06 11:08:46 -06:00
Tim Donohue
a501d84092 Minor fixes to sync CONTRIBUTING with PR template 2022-12-06 10:48:42 -06:00
Tim Donohue
9764eefd77 Merge pull request #8568 from tdonohue/add_contributing_docs
Add Contributing docs to GitHub
2022-12-06 09:49:48 -06:00
Koen Pauwels
f928ec71f6 97183 Renamed "canEditItem" feature 2022-12-06 16:12:38 +01:00
Yana De Pauw
3e651af760 97248: Find DSO based configurations recursively through parent objects 2022-12-06 12:37:21 +01:00
Yana De Pauw
8e2ada65b1 97248: Fix File info Solr plugin to allow faceting 2022-12-06 12:36:34 +01:00
Koen Pauwels
ebccac79f7 97183 EditItemFeature integration tests 2022-12-06 09:09:39 +01:00
Tim Donohue
35f65ff5b8 Add Contributing docs 2022-12-05 16:13:09 -06:00
Tim Donohue
0b61d7c738 Merge pull request #8597 from tdonohue/fix_broken_IT
Fix broken OrcidQueueConsumerIT & several other flakey tests
2022-12-05 15:57:17 -06:00
Tim Donohue
17d0fe83c4 Fix flakey tests in ExternalSourcesRestControllerIT 2022-12-05 14:24:52 -06:00
Tim Donohue
ab767ca694 Fix flakey test in CreateMissingIdentifiersIT to ensure new curation task loads immediately 2022-12-05 14:24:52 -06:00
Tim Donohue
072ae5f65e Ensure assigned Handles have a fake prefix so they cannot overlap with incremental, autoassigned Handles 2022-12-05 10:56:44 -06:00
Koen Pauwels
ada0b8c4d1 97183 Added EditItemFeature 2022-12-05 16:49:47 +01:00
Koen Pauwels
36e9f0d4f7 97183 SubmitFeatureIT: renamed some tests 2022-12-05 16:42:26 +01:00
Koen Pauwels
3fe6491975 97183 Integration tests and fixes for SubmitFeature 2022-12-05 16:27:51 +01:00
Tim Donohue
a81dd28a46 Ensure ItemBuilder also cleans up WorkspaceItem if it still exists 2022-12-02 14:49:57 -06:00
Tim Donohue
64e5697d47 Ensure @Before and @After override default methods 2022-12-02 14:37:03 -06:00
Mykhaylo
2c11f7c757 [CST-7756] refactoring 2022-12-02 18:19:37 +01:00
Koen Pauwels
6cbb1630e3 97183 ItemService: added methods to search the index for items for which the current user has editing rights 2022-12-02 16:09:26 +01:00
Jens Vannerum
e902ace5c9 Merge branch 'issue-815-controlled-vocabulary-hierarchical-facets-7.2,' into issue-815-controlled-vocabulary-hierarchical-facets-7.4 2022-12-02 14:17:10 +01:00
Koen Pauwels
f99e876327 97183 IndexingUtils: Changed interface to Lists instead of Streams 2022-12-02 10:50:24 +01:00
Koen Pauwels
31cb37b4a5 97183 Minor fixes to IndexingUtils#findDirectlyAuthorizedGroupAndEPersonPrefixedIds 2022-12-02 09:49:06 +01:00
Tim Donohue
c36d0e2278 Merge pull request #8583 from tdonohue/require_javadoc_methods
Require javadocs for all public methods. Fix checkstyle errors.
2022-12-01 14:59:25 -06:00
Mykhaylo
d08b3cb984 [DSC-183] header licence 2022-12-01 18:58:42 +01:00
Mykhaylo
389cb760e2 [DSC-193] tests added, code review fixes, other fixes in pagination and ordering 2022-12-01 18:57:45 +01:00
Mykhaylo
3ac40b9761 [DSC-183] new paramater of type of dso in findall and pagination usage in query 2022-12-01 18:54:35 +01:00
Mykhaylo
141cde9899 [DSC-183] Fix checkstyle and refactor 2022-12-01 18:51:24 +01:00
Mykhaylo
bdb4bd53dc [DSC-183] New endpoint, IT tests changed 2022-12-01 18:43:42 +01:00
Mykhaylo
b036262514 [DSC-183] fixes 2022-12-01 18:32:11 +01:00
Mykhaylo
40c0c9b7db [DSC-183] Created Subscription_Parameter, Changed Subscription and created entry points components for Subscription 2022-12-01 18:29:19 +01:00
Mykhaylo
c535de90f1 [DSC-183] Created Subscription_Parameter, Changed Subscription and created entry points components for Subscription 2022-12-01 18:25:00 +01:00
Jens Vannerum
f7e7f69f2d 97049: Remove client specific test 2022-12-01 17:49:15 +01:00
Koen Pauwels
6621e57ebd 97183: Added SolrServiceIndexItemEditorsPlugin
Analogous to SolrServiceIndexCollectionSubmittersPlugin, but for Items instead
of Collections, and for WRITE rights instead of ADD rights.

Also refactored SolrServiceIndexCollectionSubmittersPlugin to share code with
the new plugin.
2022-12-01 16:37:03 +01:00
Jens Vannerum
2c7c40876d 97049: Remove client structure 2022-12-01 15:36:38 +01:00
Joost
cfbd7785e5 [task 86387] made findone for vocabularies publicly available 2022-12-01 11:25:07 +01:00
Samuel
f065f12fa7 taskid 85816 Rename vocabularies to match the discovery config 2022-12-01 11:25:06 +01:00
Samuel
188d02c822 taskid 85555 Custom DSpaceControlledVocabulary for WB syntax - permissions 2022-12-01 11:22:55 +01:00
Samuel
a6992efd45 taskid 85555 Custom DSpaceControlledVocabulary for WB syntax 2022-12-01 11:22:53 +01:00
Koen Pauwels
4a7952af15 97183 Added SubmitFeature: checks if eperson has ADD rights to any or specific collection 2022-12-01 08:45:57 +01:00
Vincenzo Mecca
fbb1405776 [8563][DURACOM-101] Fixed regex validation
Fixed:
  - Checks for string emptiness while validating input;

Feat:
  - Saved Compiled pattern using ECMAScript standard inside DCInput.
2022-11-28 10:54:54 +01:00
Arvo Consultores y Tecnología. S.L
9e6434d89b Merge branch 'main' into DS-8412 2022-11-23 11:07:02 +01:00
Adan Roman
ffc15ec54a #8412 In Submission Form, list collections alphabetically 2022-11-16 16:22:36 +01:00
Tim Donohue
f2fa6863d2 Fix broken link in PR template 2022-11-15 16:18:35 -06:00
Tim Donohue
59838e6e29 Add link to REST Contract from PR template 2022-11-15 16:17:51 -06:00
Tim Donohue
ee1f9f047e Require javadocs for all public methods. Fix checkstyle errors. 2022-11-11 16:13:08 -06:00
Luca Giamminonni
da778f3306 [DURACOM-92] Fixed dependency convergence error 2022-11-11 17:17:12 +01:00
Luca Giamminonni
4d085503c9 [DURACOM-92] Fixed dependency convergence error 2022-11-11 17:06:37 +01:00
Luca Giamminonni
ba0819782a [DURACOM-92] Improved S3BitStoreService using embedded S3 2022-11-11 16:43:05 +01:00
Luca Giamminonni
934a4b3b6e Merge remote-tracking branch '4science-bitbucket/main' into DURACOM-92 2022-11-11 10:51:54 +01:00
nwoodward
29b1eaa078 added sort tests 2022-11-10 11:49:45 -06:00
Tim Donohue
2d5eafb384 Merge pull request #8556 from the-library-code/TLC-387_s3_bitstore_registration
[TLC-387] When retrieving S3 bitstream, strip -R from internal ID if bitstream is registered
2022-11-10 10:15:31 -06:00
Tim Donohue
fd6450ca55 Merge pull request #8537 from tdonohue/update_commons-text
Require commons-text 1.10.0 in dependencyManagement
2022-11-10 10:07:08 -06:00
nwoodward
99ecf531ea fix checkstyle errors 2022-11-10 08:02:25 -06:00
Kim Shepherd
196926576d [TLC-387] Add basic unit tests for registered ID handling in S3 bitstore 2022-11-10 11:45:40 +13:00
nwoodward
a152f9baef use discovery configuration to get correct sort field type for given sort field 2022-11-09 15:53:00 -06:00
nwoodward
a350090d76 stop requiring Maxmind DatabaseReader to log views statistics 2022-11-07 16:52:46 -06:00
Vincenzo Mecca
57fcfec276 [8563] [DURACOM-101] Changed method name and visibility 2022-11-04 09:34:22 +01:00
Vincenzo Mecca
d1f61b8acd [8563] [DURACOM-101] Checkstyle fix 2022-11-04 09:30:18 +01:00
Tim Donohue
ccd47b0ddd Merge pull request #8566 from tdonohue/update_actions
Update to the latest version of all GitHub actions
2022-11-03 17:26:38 -05:00
Tim Donohue
279b6785fe Update to the latest version of all GitHub actions 2022-11-03 16:05:11 -05:00
Tim Donohue
d3de602f66 Merge pull request #8547 from toniprieto/translate-cc
Use translations of Creative Commons API
2022-11-03 14:59:16 -05:00
Vincenzo Mecca
ff44d3f591 [8563] [DURACOM-101] Unit tests for RegexPatternUtils 2022-11-03 18:50:27 +01:00
Vincenzo Mecca
8c88b4973c [8563][DURACOM-101] Refactored regex usage
Introduced a new dspace-api Regex-Pattern utility class.
2022-11-03 17:48:07 +01:00
Tim Donohue
e5b5aa5e09 Merge pull request #8545 from toniprieto/cc-jurisdiction
Fix for Creative Commons jurisdiction chosen is ignored (REST API)
2022-11-03 11:07:24 -05:00
Mark H. Wood
035d42c194 Option to skip bitstreams like 'export -x' 2022-11-01 17:15:56 -04:00
Tim Donohue
7fdc3c53b5 Merge pull request #8553 from alanorth/imagemagick-pdf-density
dspace-api: allow overriding ImageMagick density
2022-11-01 11:20:38 -05:00
Tim Donohue
6003cc8151 Merge pull request #8541 from TexasDigitalLibrary/DSpace-8450
DS-8450 Fixes the null subject in the request acceptance email
2022-10-31 15:16:55 -05:00
Tim Donohue
8c9a920cb6 Merge pull request #8551 from TexasDigitalLibrary/DSpace-8298
DS-8298: set last harvested time for successful OAI harvest
2022-10-31 14:31:10 -05:00
Tim Donohue
fff620b682 Merge pull request #8535 from 4Science/DURACOM-98_solr-logging
Enable solr slow query logging
2022-10-31 14:08:54 -05:00
Tim Donohue
9dd3887030 Merge pull request #8529 from atmire/w2p-95912_facet-capital-letter-bugfix-main
Facet search endpoint queries should be case-insensitive
2022-10-31 12:46:03 -05:00
Tim Donohue
6c0f4d1b07 Merge pull request #8559 from sashashura/patch-1
GitHub Workflows security hardening
2022-10-31 10:30:30 -05:00
Alex
07f2cc0e33 build: harden label_merge_conflicts.yml permissions
Signed-off-by: Alex <aleksandrosansan@gmail.com>
2022-10-31 16:55:32 +02:00
Alex
1cf5a5497d build: harden docker.yml permissions
Signed-off-by: Alex <aleksandrosansan@gmail.com>
2022-10-31 16:45:42 +02:00
Alex
6695396d28 build: harden build.yml permissions
Signed-off-by: Alex <aleksandrosansan@gmail.com>
2022-10-31 16:45:18 +02:00
Tim Donohue
a0732efa35 Merge pull request #8532 from atmire/w2p-96097_CreateMissingIdentifiersIT-bugfix
CreateMissingIdentifiersIT affecting other tests fix
2022-10-31 09:09:38 -05:00
Alex
bc41e60b70 build: harden issue_opened.yml permissions
Signed-off-by: Alex <aleksandrosansan@gmail.com>
2022-10-31 15:05:43 +02:00
Kim Shepherd
517daaeea2 [TLC-387] When retrieving S3 bitstream, strip -R from internal ID if bitstream is registered 2022-10-31 12:17:07 +13:00
Tim Donohue
77ea148574 Merge pull request #8523 from J4bbi/ds7-oai-remove-bundles
OAI : Use removeAllBundles, defend against ConcurrentModificationException
2022-10-28 16:16:41 -05:00
Tim Donohue
78cc75e180 Merge pull request #8531 from christian-scheible/refresh_spider_file_bugfix
Fixes #8528, refreshing spider files causes null pointer.
2022-10-28 14:52:54 -05:00
Tim Donohue
0c9ee528f8 Merge pull request #8502 from atmire/Fix-registry-dependent-IT-for-MetadatafieldRestRepository
Fix hardcoded `workflow.score` comparison in MetadatafieldRestRepositoryIT
2022-10-28 14:50:56 -05:00
Tim Donohue
4539c8db60 Merge pull request #8484 from nibou230/copy-request-email-8451
Send email even if copy request is refused
2022-10-28 14:39:07 -05:00
Tim Donohue
616170df7a Ensure label_merge_conflicts never runs on forks 2022-10-28 09:55:53 -05:00
Tim Donohue
7c2aa7f86d Bug fix to label_merge_conflicts GitHub action 2022-10-28 09:43:19 -05:00
Tim Donohue
55334703f3 Merge pull request #8552 from tdonohue/update_merge_conflict_action
Switch GitHub action for labeling merge conflicts
2022-10-28 09:26:20 -05:00
Alan Orth
bf0038182f dspace-api: allow overriding ImageMagick density
Allow users to override ImageMagick's default density of 72 DPI for
creating PDF thumbnails. In this case a density of 144 will perform
a "2x" supersample, which greatly increases the quality of the res-
ulting images at the expense of slightly longer execution time and
higher memory usage.

See: https://imagemagick.org/script/command-line-options.php#density
See: https://stackoverflow.com/questions/49828544/how-to-make-thumbnails-using-imagickresizeimage-appear-sharper-php
Fixes: https://github.com/DSpace/DSpace/issues/8514
2022-10-28 09:28:15 +03:00
Tim Donohue
8aa8518ed8 Switch GitHub action for labeling merge conflicts 2022-10-27 13:35:06 -05:00
nwoodward
e3133460b8 set last harvested time for successful OAI harvest 2022-10-27 13:19:50 -05:00
Toni Prieto
954cf43caf Changes to use the translations of CC API when no default locale is configured and correct language code used for CC metadata 2022-10-26 10:57:29 +02:00
Toni Prieto
fd5dda2f0e Expose configuration key cc.license.jurisdiction and use user-selected jurisdiction if this key is set to none 2022-10-26 09:33:19 +02:00
nwoodward
e49d4c9f54 changed to check that headerValue is not null before setting subject to it 2022-10-24 15:20:31 -05:00
Tim Donohue
5c697c813b Merge pull request #8534 from DSpace/dependabot/maven/com.fasterxml.jackson.core-jackson-databind-2.13.4.1
Bump jackson-databind from 2.12.6.1 to 2.13.4.1
2022-10-24 12:18:20 -05:00
Tim Donohue
ad4a13e7ab Update jackson core alongside databind
Also bumped databind to absolute latest
2022-10-24 11:17:17 -05:00
Tim Donohue
a6e4c7daba Merge branch 'main' into dependabot/maven/com.fasterxml.jackson.core-jackson-databind-2.13.4.1 2022-10-24 10:56:40 -05:00
Tim Donohue
b3ad1d5606 Fix comment 2022-10-21 16:50:05 -05:00
Tim Donohue
21aebee319 Update GitHub token for action 2022-10-21 16:37:30 -05:00
Tim Donohue
79d70be6fb Update action to add issues to new triage board 2022-10-21 16:22:26 -05:00
Tim Donohue
d6cc202e6b Require commons-text 1.10.0 in dependencyManagement. Remove unnecessary references to commons-text elsewhere in POMs 2022-10-19 10:27:01 -05:00
corrado lombardi
64d264a660 [DURACOM-98] enable solr slow query logging 2022-10-19 15:30:28 +02:00
dependabot[bot]
c425da2ffb Bump jackson-databind from 2.12.6.1 to 2.13.4.1
Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.12.6.1 to 2.13.4.1.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-19 05:59:04 +00:00
Tim Donohue
63b1ff825b Merge pull request #8306 from kshepherd/docker-test_remote_debug
Dockerfile.test and docker-compose: expose port 8000, set JDWP java opts
2022-10-18 14:39:08 -05:00
Kristof De Langhe
93e72eff54 96097: CreateMissingIdentifiersIT affecting other tests fix 2022-10-18 11:16:59 +02:00
Christian Scheible
6f02dd502d Fixes #8528, refreshing spider files causes null pointer. 2022-10-18 09:28:59 +02:00
Tim Donohue
2a6b457f5a Merge pull request #8503 from alanorth/update-pdfbox
Update PDFBox dependency to version 2.0.27
2022-10-17 15:28:56 -05:00
Tim Donohue
4789b16511 Merge pull request #8504 from alanorth/update-commons-dbcp2
Update Apache commons-dbcp2 and commons-pool2 dependencies
2022-10-17 15:12:01 -05:00
Jens Vannerum
0ad63f054b Merge branch 'w2p-95912_facet-capital-letter-bufix' 2022-10-17 15:52:26 +02:00
Jens Vannerum
1047dca2fd 95912: queries should be case-insensitive 2022-10-17 15:49:41 +02:00
Hrafn Malmquist
528f1a4ff2 Use removeAllBundles, defend against ConcurrentModificationException 2022-10-15 01:14:30 +01:00
QZhao
d015c4b8e8 Bugfix: item admin can't create new version item 2022-10-14 10:41:43 +02:00
Alan Orth
e65c277779 pom.xml: update DBCP2 dependency
Update commons-dbcp2 and commons-pool2 to latest stable versions.
2022-10-07 10:34:01 +03:00
Alan Orth
75e1c0c27d pom.xml: update pdfbox to 2.0.27
See release notes for versions from the current 2.0.24 until 2.0.27
here:

- 2.0.25: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310760&version=12350196
- 2.0.26: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310760&version=12350925
- 2.0.27: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310760&version=12351648
2022-10-07 10:33:28 +03:00
Tim Donohue
7837fbacd1 [maven-release-plugin] prepare for next development iteration 2022-10-06 12:53:51 -05:00
Tim Donohue
4cdb66267e [maven-release-plugin] prepare release dspace-7.4 2022-10-06 12:53:47 -05:00
Tim Donohue
90bb165eab Minor updates for 7.4 2022-10-06 12:23:54 -05:00
Tim Donohue
70fc220660 Merge pull request #8357 from 4Science/main-duracom-70
Add compatibility for DSpace 7 with the Remote Handle Resolver
2022-10-04 14:48:07 -05:00
Tim Donohue
4067a40f86 Merge pull request #8508 from mwoodiupui/8507
Shorten the classpath in bin/start-handle-server to address inconsistent ClassNotFound
2022-10-04 13:10:01 -05:00
Tim Donohue
bf892262dd Merge pull request #8509 from jeffmorin/main
Fixed start-handle-server.bat (Windows version)
2022-10-04 10:35:29 -05:00
Jean-François Morin
02c2fea8da Cleaned all references to OAI 2022-10-04 10:54:20 -04:00
Tim Donohue
110d577c33 Merge pull request #8482 from 4Science/CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot
New users might be registered in a massive way by a robot
2022-10-04 09:52:56 -05:00
Jean-François Morin
616fe9fb7d Fixed start-handle-server.bat (Windows version) 2022-10-04 10:42:40 -04:00
Mark H. Wood
9c8840f4ce Remove redundant code: 'dspace classpath' already does what we want. 2022-10-04 07:51:18 -04:00
Tim Donohue
dd3a4220ba Merge pull request #8505 from DSpace/dependabot/maven/org.eclipse.jetty.http2-http2-server-9.4.48.v20220622
Bump http2-server from 9.4.44.v20210927 to 9.4.48.v20220622
2022-10-03 16:22:10 -05:00
Mark H. Wood
61f6bd1622 Remove duplication by depending on 'dspace classpath'. 2022-10-03 16:53:01 -04:00
Mark H. Wood
60d41b86f2 Shorten the argument to -classpath by making the JRE enumerate library JARs.
Also fix some incorrect comments and remove insignificant differences
between 'start-handle-server' and 'dspace'.
2022-10-03 16:36:35 -04:00
Mark H. Wood
b8908e533b Ask for (aliased) strategy by name. 2022-10-03 15:58:49 -04:00
Tim Donohue
09d7d12ba1 Fix minor dependency convergence issues 2022-10-03 14:22:21 -05:00
dependabot[bot]
2af9060ceb Bump http2-server from 9.4.44.v20210927 to 9.4.48.v20220622
Bumps http2-server from 9.4.44.v20210927 to 9.4.48.v20220622.

---
updated-dependencies:
- dependency-name: org.eclipse.jetty.http2:http2-server
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 19:08:31 +00:00
Tim Donohue
e396d318bf Merge pull request #8498 from tdonohue/fix_jetty_issues
Fix Jetty dependency issues in DSpace POMs & broken "start-handle-server"
2022-10-03 14:08:03 -05:00
Mykhaylo
b5aacdf967 [CST-6761] restored deleted accidentally properties 2022-10-03 18:04:58 +02:00
Luca Giamminonni
9bc01e8f05 [DURACOM-92] Fixed S3BitStoreServiceTest tests 2022-10-03 12:05:12 +02:00
Mykhaylo
0063b266d5 Merge branch 'main' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-10-03 09:37:46 +02:00
Luca Giamminonni
b13dff9e65 Merge remote-tracking branch '4science-bitbucket/main' into DURACOM-92 2022-10-03 09:20:00 +02:00
Andrea Bollini
66c452bcf9 CST-6950 fix report email 2022-10-03 09:17:09 +02:00
Andrea Bollini
75840c70c6 CST-6950 fix checker report query 2022-10-03 09:16:58 +02:00
Andrea Bollini
70b1ee19f3 CST-6950 fix checksum check 2022-10-03 09:16:46 +02:00
Andrea Bollini
5210aedbf3 CST-6950 fix checksum check and history 2022-10-03 09:16:24 +02:00
Tim Donohue
c318704ccf Merge pull request #8318 from 4Science/CST-5699
Add scripts and ITs for SAF (Simple Archive Format) import and export functionalities
2022-09-30 14:07:51 -05:00
Tim Donohue
ea930f9bf4 Merge pull request #8060 from atmire/shared-feature-s3-download
Change S3Bitstore to use TransferManager to allow larger then 5gb files
2022-09-30 09:43:19 -05:00
Vincenzo Mecca
3d538cb185 [#8357][DURACOM-70] Fixed url parsing for listhandles 2022-09-30 16:16:39 +02:00
Luca Giamminonni
d7d2723d65 [DURACOM-92] Use TransferManager to download files from S3 2022-09-30 16:08:36 +02:00
Andrea Bollini
b05d19ed6c Always use md5 checksum for data integrity check. Send it to S3 to exclude corruption during upload 2022-09-30 16:02:42 +02:00
Yury Bondarenko
980fd0f8ad Fix last expected MDF in findAllPaginationTest 2022-09-30 10:26:05 +02:00
Tim Donohue
41bf4e9956 Fix Jetty dependencies issues by forcing a specific version to be used, instead of via exclusions 2022-09-29 15:58:33 -05:00
Nicolas Boulay
d246fc4a14 Make it possible to allow a silent refusal 2022-09-29 15:16:50 -04:00
Nicolas Boulay
e26f583992 Send email even if copy request is refused 2022-09-29 15:16:50 -04:00
Mykhaylo
965afa0393 [CST-6761] fix version checking 2022-09-29 18:47:17 +02:00
Jens Vannerum
3f7ceab235 94474: Update the s3 tests to use the new TransferManager method 2022-09-29 17:46:41 +02:00
Mykhaylo
6227adc67b Merge branch 'main' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-09-29 17:08:06 +02:00
Mykhaylo
b0fb918796 [CST-6761] fix failed tests 2022-09-29 17:01:44 +02:00
Tim Donohue
1a4e7a82e6 Merge pull request #8486 from 4Science/CST-6751
Update Google Analytics to version 4
2022-09-29 09:47:42 -05:00
Mykhaylo
fdd4bc7226 Merge branch 'main' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-09-29 15:17:27 +02:00
Mykhaylo
c18f5cb7ea [CST-6761] Implemented community feedbacks 2022-09-29 15:14:51 +02:00
Jens Vannerum
0c533c5d1a 94474: Issues after merge 2022-09-29 10:44:56 +02:00
Jens Vannerum
dc6707bc4c Merge branch 'main' into shared-feature-s3-download 2022-09-29 10:41:08 +02:00
Francesco Pio Scognamiglio
a9e23112a3 [CST-5699] clean imports dir; use unique location during import via CLI 2022-09-29 10:29:32 +02:00
Tim Donohue
87cbca439b Merge pull request #8492 from 4Science/CST-6938
Fixed error handling for invalid password during eperson creation
2022-09-28 16:43:47 -05:00
Mykhaylo
f690ac5f43 [CST-6761] fix captcha failed test & added missing java docs 2022-09-28 19:38:07 +02:00
Mykhaylo
0ab2095c3d Merge branch 'main' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-09-28 18:22:31 +02:00
Mykhaylo
e84f284b87 [CST-6761] added IT for captcha 2022-09-28 18:19:14 +02:00
Mykhaylo
d019b1fd6d [CST-6761] refactored captcha feature 2022-09-28 18:16:56 +02:00
Tim Donohue
60ef084177 Merge pull request #8488 from atmire/issue-8479-Regular_search_can_contain_private_withdrawn_items
Issue 8479 regular search can contain private withdrawn items
2022-09-28 10:43:29 -05:00
Tim Donohue
ce7a0d40aa Merge pull request #8356 from 4Science/main-duracom-69
Improvement for the S3 support - IAM Role and support for legacy folder structure
2022-09-28 10:00:34 -05:00
Luca Giamminonni
6b385d14e5 [CST-6938] Fixed EPersonRestRepositoryIT tests 2022-09-28 11:50:33 +02:00
Jens Vannerum
3af51f5c6f Merge branch 'main' into shared-feature-s3-download
# Conflicts:
#	dspace-api/src/main/java/org/dspace/storage/bitstore/S3BitStoreService.java
2022-09-28 10:18:20 +02:00
Tim Donohue
41225650ec Merge pull request #8392 from mspalti/iiif-bundle
TOC exclusion bundle(s)
2022-09-27 16:05:10 -05:00
Tim Donohue
18f3ae1202 Merge pull request #8477 from 4Science/CST-6152
Ask current password to user when setting a new password
2022-09-27 13:08:13 -05:00
Tim Donohue
9c701265c5 Merge pull request #8398 from mspalti/uncache-bitstreams
Uncaching bitstreams to improve performance of iiif-canvas-dimensions
2022-09-27 12:29:24 -05:00
Vincenzo Mecca
b89c54e9f5 [#8356][DURACOM-69] Removed wrong secondary store option 2022-09-27 18:07:40 +02:00
Luca Giamminonni
a41b9bea82 [CST-6751] Improved dspace.cfg 2022-09-27 16:38:47 +02:00
Luca Giamminonni
591e361caf [CST-6938] Removed old password verification on eperson creation 2022-09-27 15:43:02 +02:00
Francesco Pio Scognamiglio
5ddc5c1360 [CST-5699] change test option to validate 2022-09-27 15:26:47 +02:00
Francesco Pio Scognamiglio
1b4f1cb49c [CST-5699] fix duplicate separator on working directories 2022-09-27 15:04:49 +02:00
Samuel Cambien
da6d55cfd5 issue #8479 Regular search can contain private & withdrawn items - additional configurations 2022-09-27 14:08:35 +02:00
Vincenzo Mecca
1600cdca28 [#8356][DURACOM-69] Improved Configuration for S3Store
feat:
	- New Properties to configure primary store;
	- New status for stores that indicates their initialization;
	- New enabled status for stores for disabling them;
	- New secondary index, used as backup for temporary configs.
2022-09-27 13:34:39 +02:00
Francesco Pio Scognamiglio
430a0f0eb3 [CST-5699] minor fix on zip export from CLI; add missing ITs to check if the exported zip exists 2022-09-27 13:17:49 +02:00
Francesco Pio Scognamiglio
81fc5d9910 [CST-5699] use work dirs instead of temp one 2022-09-27 09:43:36 +02:00
Vincenzo Mecca
101b9e833d [#8357][DURACOM-70] Completed behavior Remote-Handle-Resolver
fix:
	- Removed duplicated routes;
	- Renamed from `hdlResolver` to `hdlresolver`.

feat:
	- New routes'behavior
		- listhandles: lists all handle with a target prefix;
		- listprefixes: lists all prefixes mapped in configuration.
	- New ITs for the updated routes.
2022-09-26 16:29:17 +02:00
Davide Negretti
6a57149b80 Merge branch 'main' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-09-26 15:47:01 +02:00
Davide Negretti
7bdb1dc88a [CST-6761] Missing exposed properties 2022-09-26 14:53:33 +02:00
Davide Negretti
b299551717 [CST-6761] Missing exposed properties 2022-09-26 14:53:13 +02:00
Francesco Pio Scognamiglio
d04e75abde [CST-5699] delete temp dirs after SAF import and export 2022-09-24 10:48:45 +02:00
Francesco Pio Scognamiglio
ebe21f59db [CST-5699] fix export of a collection with at least two items on SAF export 2022-09-23 19:39:30 +02:00
Tim Donohue
e9e6fbd216 Merge pull request #8481 from atmire/w2p-94103_Enable-MetadataExportSearchIT_search-core-missing-bug-in-CI
Enable and fix `MetadataExportSearchIT`
2022-09-23 10:27:16 -05:00
Francesco Pio Scognamiglio
e355f49035 [CST-5699] delete temp files when added to process; use handler for logging 2022-09-23 13:58:40 +02:00
Luca Giamminonni
9d6ab36a3c Merge remote-tracking branch '4science-bitbucket/main' into CST-6152 2022-09-23 12:29:59 +02:00
Mykhaylo
65c0115833 Merge branch 'main' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-09-23 10:21:51 +02:00
Tim Donohue
2b4c10b533 Merge pull request #8480 from 4Science/CST-6265
Curation task results are not included in the output file or process output
2022-09-22 16:21:56 -05:00
Francesco Pio Scognamiglio
eb230b10e7 [CST-5699] fix SAF import and export functionality; add ITs for SAF via CLI 2022-09-22 18:34:25 +02:00
Luca Giamminonni
c3a99f6f62 Merge remote-tracking branch '4science-bitbucket/main' into CST-6751 2022-09-22 17:32:34 +02:00
Luca Giamminonni
1e24b50b0b [CST-6751] Improved GoogleAnalyticsClient, dspace.cfg and added tests 2022-09-22 17:31:48 +02:00
Tim Donohue
bf0155f6ce Merge pull request #8404 from 4Science/CST-6108-ValidatePassword
Make password minimum requirements stronger
2022-09-22 08:47:58 -05:00
Michael Spalti
ae1fb9c246 Fixed integration test. 2022-09-21 21:59:08 -07:00
Michael Spalti
574790a087 Minor refactor after merging remote. 2022-09-21 20:27:20 -07:00
Michael Spalti
6a2a0aaf61 Merge branch 'uncache-bitstreams' of https://github.com/mspalti/DSpace into uncache-bitstreams 2022-09-21 20:22:15 -07:00
Michael Spalti
62ef19c548 Merge branch 'main' into uncache-bitstreams 2022-09-21 20:21:03 -07:00
Michael Spalti
4c8a671709 Minor refactor. 2022-09-21 20:17:56 -07:00
Michael Spalti
3e02f855b3 Removed unused constant 2022-09-21 15:05:36 -07:00
Tim Donohue
7b07013e07 Merge pull request #8465 from 4Science/DURACOM-86
DURACOM-86 Add html support to opensearch, fix misconfiguration
2022-09-21 16:32:40 -05:00
Michael Spalti
1e643d0610 Merge branch 'main' into iiif-bundle 2022-09-21 14:00:51 -07:00
Mark H. Wood
4995345387 Merge branch '8304' of github.com:mwoodiupui/DSpace into 8304 2022-09-21 13:04:28 -04:00
Mark H. Wood
24c1d44e94 Autowire by name so alias works. Uncomment all strategies, mark for autowiring and lazy loading.
Also tidy up XML internal documentation.
2022-09-21 13:00:41 -04:00
Tim Donohue
5a27ab74af Merge pull request #8417 from 4Science/DS-4415-main
port #2634 CitationPage curation task mess the bitstream policies to the main branch
2022-09-21 11:19:34 -05:00
Tim Donohue
3ee8470970 Merge pull request #8476 from 4Science/CST-6756
Provide a script to delete old processes
2022-09-21 10:20:40 -05:00
Luca Giamminonni
630fde0f51 [CST-6152] Fixed integration tests 2022-09-21 14:57:32 +02:00
Luca Giamminonni
9938518c66 [DSC-93] Improved dspace.cfg 2022-09-21 11:57:03 +02:00
Andrea Bollini
e28eca8745 Move the citationpage curation task in the right package, add example configuration 2022-09-21 00:01:49 +02:00
Andrea Bollini
228cc31368 Fix checkstyle 2022-09-20 23:54:40 +02:00
Andrea Bollini
46df923c26 Merge branch 'main' of https://github.com/DSpace/DSpace into DS-4415-main 2022-09-20 23:49:09 +02:00
Andrea Bollini
8ccb5918fe DURACOM-86 fix configuration lookup, clenaup configuration and tests 2022-09-20 23:43:37 +02:00
Andrea Bollini
b20caee285 Merge branch 'main' of https://github.com/DSpace/DSpace into DURACOM-86 2022-09-20 22:35:12 +02:00
Mark H. Wood
b4b67c4322 Clean up an unused logger. 2022-09-20 15:40:18 -04:00
Francesco Pio Scognamiglio
c20cab3f6e [CST-5699] minor refactoring 2022-09-20 16:26:43 +02:00
Luca Giamminonni
f2eb9c55b4 [CST-6152] Renamed challenge to currentPassword 2022-09-20 15:29:20 +02:00
Jens Vannerum
74b56d6fe1 94474: Transfer manger should be class wide 2022-09-20 15:19:19 +02:00
Francesco Pio Scognamiglio
b1c9c60cd6 Merge branch 'CST-5699' of github.com:4Science/DSpace into CST-5699 2022-09-20 14:35:47 +02:00
Francesco Pio Scognamiglio
df44b978e0 [CST-5699] refactoring on SAF import and export functionality 2022-09-20 13:50:12 +02:00
Mykhaylo
07934d09f1 minor fix 2022-09-20 11:44:29 +02:00
Francesco Pio Scognamiglio
7c6bf08905 Merge branch 'main' into CST-5699 2022-09-20 09:16:27 +02:00
Francesco Pio Scognamiglio
f606cea1bd Merge branch 'main' into CST-5699 2022-09-20 08:24:15 +02:00
Vincenzo Mecca
97e9379de2 [#8357][DURACOM-70] Added the new property in test configuration 2022-09-19 10:46:06 +02:00
Vincenzo Mecca
ff48afeea4 [#8357][DURACOM-70] Property to disable HdlResolver 2022-09-19 09:42:53 +02:00
Mark H. Wood
b1423de7c1 Noticed in testing: okay not to have a current user. 2022-09-16 14:47:54 -04:00
Mark H. Wood
38946f8de5 Test that unauthenticated session can (dis)approve a request. 2022-09-16 14:47:16 -04:00
Mark H. Wood
fa5aa9c993 Don't test for authNZ failures that can no longer occur. 2022-09-16 11:53:11 -04:00
Mark H. Wood
692fefcbac Don't require authentication to approve/deny a copy request. Possession of the token is sufficient. 2022-09-16 11:08:15 -04:00
Mark H. Wood
a4cb9bd129 Remove more unused code. Caused by removing isAuthorized(). 2022-09-16 10:58:27 -04:00
Samuel Cambien
46bf27748d Merge remote-tracking branch 'DSpace/main' into issue-8479-Regular_search_can_contain_private_withdrawn_items
# Conflicts:
#	dspace/config/spring/api/discovery.xml
2022-09-16 13:42:39 +02:00
Samuel Cambien
7a89c5817c Merge tag 'dspace-7.2' into w2p-94445-Regular_search_can_contain_private_withdrawn_items-7_2
[maven-release-plugin] copy for tag dspace-7.2
2022-09-16 13:39:21 +02:00
Samuel Cambien
1800bf1e7c issue #8479 Regular search can contain private & withdrawn items 2022-09-16 13:27:45 +02:00
Mykhaylo
a31bb4bf61 [CST-6108] implemented community feedbacks 2022-09-16 12:19:06 +02:00
Mykhaylo
2fa27afb6a Merge branch 'main' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-09-16 10:12:08 +02:00
Mykhaylo
a0e633f1d4 Merge branch 'main' into CST-6108-ValidatePassword 2022-09-16 10:11:24 +02:00
Mark H. Wood
f6ab8ba1fb Remove unused 'isAuthorized' methods.
This method was always questionable.  The point of Request a Copy is
to bypass DSpace's authorizations.
2022-09-15 14:18:01 -04:00
Mark H. Wood
d9caeed387 Merge branch 'main' into 8304 2022-09-15 12:53:22 -04:00
Luca Giamminonni
a111152ea0 [DSC-93] Added help to ProcessCleaner 2022-09-15 15:48:04 +02:00
Andrea Bollini
3b23ff95db Merge pull request #2115 from mwoodiupui/DS-3951
[DS-3951] Send Request Copy email to multiple recipients, and some new recipient strategies
2022-09-15 15:38:17 +02:00
Vincenzo Mecca
82f6f6f5b7 [DURACOM-70][#8357] Fixed unsatisfied dependency 2022-09-15 13:13:16 +02:00
Luca Giamminonni
ca8a85489a [CST-6751] Minor fixes 2022-09-15 12:56:54 +02:00
Luca Giamminonni
3a1d298156 [CST-6751] Added api-secret to dspace.cfg 2022-09-14 17:56:39 +02:00
Tim Donohue
6b1fae1464 Merge pull request #8461 from philipprumpf/issue-7969
SplitMetadataContributor.java: new class to split metadata values based on a regex
2022-09-14 10:55:21 -05:00
Luca Giamminonni
e06513a512 [CST-6751] Added ip anonymization 2022-09-14 17:45:24 +02:00
Luca Giamminonni
6805f33468 [CST-6751] Added value for google.analytics.crontab on dspace.cfg 2022-09-14 16:54:18 +02:00
jensroets
4644655601 94299 Multiple Bitstream deletion endpoint: rename items to parents 2022-09-14 15:49:03 +02:00
Luca Giamminonni
5130642415 [CST-6751] Renamed GoogleAnalyticsClientRequestBuilder method 2022-09-14 15:30:17 +02:00
Luca Giamminonni
53fd235841 [CST-6751] Added tests for UniversalAnalyticsClientRequestBuilder and GoogleAnalyticsClientRequestBuilder 2022-09-14 13:27:27 +02:00
Mykhaylo
75d9fb76b5 [CST-6108] refactored password validation exception 2022-09-14 13:15:21 +02:00
Mykhaylo
71599352e6 Merge branch 'main' into CST-6108-ValidatePassword 2022-09-14 11:52:07 +02:00
Philipp Rumpf
c2931bc440 Add integration tests for multiple BibTeX authors 2022-09-14 07:43:53 +00:00
Philipp Rumpf
c2771cbb7e Configure BibTeX authors to be split on "\sand\s" 2022-09-14 07:43:53 +00:00
Philipp Rumpf
e5049b01ef SplitMetadataContributor.java: new class to split metadata values based on a regex rather than a single character
Fixes #7969

Needed for BibTeX's convention of separating author names by " and ".
2022-09-14 07:43:53 +00:00
Luca Giamminonni
23c3a6d7f3 [CST-6751] Refactoring of GoogleAnalyticsClientImpl to send many request 2022-09-13 18:33:30 +02:00
Luca Giamminonni
6e8e85c2d6 [CST-6751] Added integration tests for GoogleAsyncEventListener 2022-09-13 17:46:31 +02:00
Tim Donohue
249fe2f1f7 Merge pull request #8281 from 4Science/CST-5340-OpenAIREFundingDataProvider
Make OpenAIRE Funding connector mapping configurable
2022-09-13 09:23:02 -05:00
Luca Giamminonni
a42dc30a9b [CST-6751] Minor improvements 2022-09-13 15:30:05 +02:00
Luca Giamminonni
b50fa3aaed [CST-6751] Refactoring of GoogleAsyncEventListener 2022-09-12 18:27:43 +02:00
Yury Bondarenko
73ede2f4c1 Merge remote-tracking branch 'origin/main' into w2p-94103_Enable-MetadataExportSearchIT_search-core-missing-bug-in-CI 2022-09-09 09:49:56 +02:00
Vincenzo Mecca
87118257ed [CST-6265] JavaDocs 2022-09-08 18:50:34 +02:00
Vincenzo Mecca
33e6339900 [CST-6265] Fixed message formatting
fix:
	- message formatting for logInfo was done twice
feat:
	- message inside logWarn was not formatted when using handler
2022-09-08 18:45:11 +02:00
jensroets
51d8874a8f 94299 Multiple Bitstream deletion endpoint 2022-09-08 16:50:02 +02:00
Mykhaylo
418afe79b7 fix checkstyle & added x-recaptcha-token into headers 2022-09-08 11:52:37 +02:00
Luca Giamminonni
43066240e8 Merge remote-tracking branch '4science-bitbucket/main' into CST-5340-OpenAIREFundingDataProvider 2022-09-08 10:25:00 +02:00
Luca Giamminonni
04deb6d42c [CST-5340] Removed not used metadata fields in external-openaire.xml 2022-09-08 10:23:53 +02:00
Davide Negretti
a727c96d89 Merge remote-tracking branch 'gh4science/CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-09-07 19:25:59 +02:00
Davide Negretti
6c48a22f40 [CST-6761] Allow header x-recaptcha-token 2022-09-07 19:25:45 +02:00
Tim Donohue
fd4e6116a2 Merge pull request #8473 from 4Science/CST-6739-AIPexports
AIP exports could produce invalid mets.xml file
2022-09-07 12:06:45 -05:00
Mykhaylo
885ff20666 Merge branch 'main' into CST-6761-NewUsersMightBeRegisteredInMassiveWayByRobot 2022-09-07 09:55:17 +02:00
Mykhaylo
0a10e48eba [CST-6761] added missing license 2022-09-07 09:54:56 +02:00
Michael Spalti
dc55f12e64 Moved unchache 2022-09-06 09:39:34 -07:00
Michael Spalti
0481546cc7 Removed unused import. 2022-09-06 09:39:34 -07:00
Michael Spalti
1cf7352166 Using batch edit mode. 2022-09-06 09:39:34 -07:00
Michael Spalti
8a36bdd982 Uncache the item. 2022-09-06 09:39:34 -07:00
Michael Spalti
76314035f9 Uncaching bitstreams to improve performance. 2022-09-06 09:39:34 -07:00
Mykhaylo
a443004547 [CST-6761] added new property google.recaptcha.mode to rest.cfg 2022-09-06 16:38:05 +02:00
Mykhaylo
25438e42fb [CST-6761] added new property google.recaptcha.mode 2022-09-06 16:36:38 +02:00
Mykhaylo
6f8b3e1381 added captcha services 2022-09-06 16:35:03 +02:00
Tim Donohue
5b4a3da0bb Merge pull request #8447 from tdonohue/fix_8351
Update to oclc-harvester2 v1.0.0 and remove Xalan
2022-09-06 09:17:13 -05:00
Mykhaylo
eb7b78d59c [CST-6761] added support for captcha version (v2 and v3). - added new property. 2022-09-06 16:03:18 +02:00
Mykhaylo
1bfec3ab1d [CST-6108] configured param to use angular side 2022-09-05 16:22:04 +02:00
Mykhaylo
c608fd89fb Merge branch 'main' into CST-6108-ValidatePassword 2022-09-05 16:00:39 +02:00
Mykhaylo
9af70628a0 [CST-6108] update tests 2022-09-05 15:58:55 +02:00
eskander
3884007521 [CST-6265] Curation task results are not included in the output file or process output 2022-09-02 15:14:00 +02:00
Tim Donohue
c7692d5517 Merge pull request #8471 from mwoodiupui/upload-autowire
Autowire ConfigurationService in UploadConfiguration instead of requiring explicit configuration
2022-09-01 16:12:17 -05:00
Luca Giamminonni
e96107a6b9 [DSC-93] Added tests for ProcessCleaner 2022-09-01 16:54:44 +02:00
Luca Giamminonni
28bb6f93e0 [CST-6756] Implemented script to delete old processes 2022-09-01 16:24:55 +02:00
Tim Donohue
81a13eed29 Merge pull request #8446 from atmire/w2p-93108_Bitstream-name-missing-on-statistics-page_7.2
W2p 93108 bitstream name missing on statistics page 7.2
2022-08-31 16:37:03 -05:00
Vincenzo Mecca
b9eb369275 [DSpace#8356][DURACOM-69] Change Requests part. 3.1 2022-08-31 16:12:30 +02:00
Vincenzo Mecca
a78d2fa0ab [DSpace#8356][DURACOM-69] Change Requests part. 3 2022-08-31 13:24:47 +02:00
Mark H. Wood
07a464902c [DS-3951] Improve configuration documentation. 2022-08-30 09:29:24 -04:00
Yura Bondarenko
611f610f15 94103: Explicitly clear cached SearchService instance between ITs 2022-08-29 14:16:42 +02:00
Mykhaylo
00f607459d [CST-6739] removed unused imports 2022-08-29 10:16:56 +02:00
Andrea Bollini
5d1f3b6ea1 CST-6739 AIP exports could produce invalid mets.xml file 2022-08-29 10:09:33 +02:00
kshepherd
5254ecf9ff Merge pull request #1857 from mwoodiupui/DS-2670
[DS-2670] Restrospectively create DOIs for all items in archive
2022-08-28 10:01:09 +12:00
Mark H. Wood
91acf0baad [DS-2670] Fail if an incompatible IdentifierProvider is configured.
Added basic integration test to prove the above.
2022-08-26 18:04:34 -04:00
Mark H. Wood
e67e371577 Merge branch 'main' into DS-2670 2022-08-26 14:40:31 -04:00
Mark H. Wood
e4a4737aee [DS-3951] Remove unused import to satisfy Checkstyle. 2022-08-26 12:52:05 -04:00
Mark H. Wood
8f3289e8cd Merge branch 'main' into DS-3951 2022-08-26 11:15:24 -04:00
Mark H. Wood
4f5203b142 Explicit property must be removed from test configuration too.
I changed over from field injection to constructor injection while
diagnosing the failure caused by this problem, and decided to keep
it.  It's a little more verbose, but safer and clearer in the doco.
Really, the *required* properties should also be constructor
parameters.

Also cleaned up some trailing whitespace in the configuration documents.
2022-08-25 16:33:26 -04:00
Mykhaylo
b8136aed8c [CST-6108] fix faled IT 2022-08-25 19:24:12 +02:00
Mykhaylo
906d78b16e [CST-6108] fix failed unit tests 2022-08-25 18:23:50 +02:00
Mykhaylo
3060819a14 Merge branch 'main' into CST-6108-ValidatePassword 2022-08-25 17:11:24 +02:00
Vincenzo Mecca
03ac217a3a [DURACOM-70][DSpace#8357] Applied Second Change Requests 2022-08-25 12:05:57 +02:00
Marie Verdonck
ab3938b34f Issue #8355: enable MetadataExportSearchIT 2022-08-25 12:05:41 +02:00
Vincenzo Mecca
faa1f6284e [DSpace#8356][DURACOM-69] Change Requests part. 2 2022-08-25 10:04:09 +02:00
Tim Donohue
897d9b7d98 Merge pull request #8458 from mwoodiupui/8437
Solr search core initialization is fragile
2022-08-24 12:15:45 -05:00
Mark H. Wood
5e8a4ed397 Document this interface. 2022-08-24 12:32:42 -04:00
Tim Donohue
a40a5a6217 Merge pull request #8456 from philipprumpf/issue-8455
Expose BibTeX document type as PlainMetadataKeyValueItem during import
2022-08-24 11:30:41 -05:00
Mark H. Wood
747a2aeec9 Autowire constant ConfigurationService field instead of making it a parameter. 2022-08-24 12:30:40 -04:00
Tim Donohue
ed96cdcfe2 Merge pull request #8454 from philipprumpf/issue-8453
use org.jbibtex.LaTeXParser to handle BibTeX diacritics
2022-08-24 11:04:13 -05:00
Philipp Rumpf
4c26d2f77c Add integration test for BibTeX type import 2022-08-22 12:57:53 +00:00
Philipp Rumpf
cd65b4483f Configure BibTeX import to provide dc.type (without mapping it) 2022-08-22 12:10:32 +00:00
Philipp Rumpf
2c11d68875 Add integration test for BibTeX/LaTeX diacritics. 2022-08-22 11:11:46 +00:00
Kim Shepherd
13eaaf4ab8 Move JDWP configuration from JAVA_OPTS to CATALINA_OPTS 2022-08-20 10:18:17 +12:00
corrado lombardi
04c8e0d7c4 Merge remote-tracking branch 'bb-cris/CST-6151' into CST-6152 2022-08-19 17:32:04 +02:00
Tim Donohue
0ef8879c15 Merge pull request #8399 from ammanabrolua/main
[DS-3306] bin/dspace create-administrator needs a --help option #6661 #8367
2022-08-18 10:59:32 -05:00
ammanabrolua
15fae257f6 Merge branch 'DSpace:main' into main 2022-08-18 14:10:07 +02:00
Andrea Bollini
ad3ef6046b DURACOM-86 fix checkstyle 2022-08-18 13:11:35 +02:00
Andrea Bollini
d99913cb79 DURACOM-86 Add html support to opensearch, fix misconfiguration 2022-08-18 09:39:02 +02:00
Tim Donohue
62df120b75 Merge pull request #8464 from tdonohue/fix_gendered_lang
Remove/replace gendered language in code comments
2022-08-17 15:00:39 -05:00
Tim Donohue
8aacf54b87 More text replacement 2022-08-17 14:10:25 -05:00
Tim Donohue
9e098f229f Additional replacements of gendered text 2022-08-17 14:03:45 -05:00
Tim Donohue
9a3bd8a188 Fix more gendered language in code comments 2022-08-17 10:59:07 -05:00
Tim Donohue
dfac17e890 Fix descriptions of delegated admin settings in dspace.cfg 2022-08-17 10:41:51 -05:00
Tim Donohue
e6e283a1f2 Replace gendered language in code comments 2022-08-17 10:41:29 -05:00
Vincenzo Mecca
92f43aced3 [#8356][DURACOM-69] Change Requests 2022-08-16 11:37:28 +02:00
Mark H. Wood
ed04558402 Throw a RuntimeException if the Solr server cannot be reached. #8437 2022-08-12 16:17:36 -04:00
Mark H. Wood
80f65ad4ff [DS-2760] Take up a review suggestion. Also replace slf4j with log4j2. 2022-08-12 15:25:30 -04:00
Mark H. Wood
237ffe4af3 [DS-3951] More review comments. 2022-08-12 14:23:45 -04:00
Mark H. Wood
27143d8e56 [DS-3951] Address review comments. 2022-08-12 13:32:10 -04:00
ammanabrolua
6f990a4697 get option values by default 2022-08-11 09:25:33 +02:00
ammanabrolua
f5f0744839 applying deMorgan's Rule 2022-08-11 09:16:42 +02:00
Johanna Staudinger
4d5976b67e Expose BibTeX document type as PlainMetadataKeyValueItem during import 2022-08-10 13:02:26 +00:00
Philipp Rumpf
76467c7cfc use org.jbibtex.LaTeXParser to handle BibTeX diacritics 2022-08-10 09:50:29 +00:00
ammanabrolua
9e0b20fdac Merge branch 'DSpace:main' into main 2022-08-09 20:55:56 +02:00
Tim Donohue
1215992c86 Merge pull request #8452 from philipprumpf/issue-8403
Update jbibtex library to version 1.0.20
2022-08-09 13:53:03 -05:00
Tim Donohue
a74604647b Merge pull request #8435 from toniprieto/strip-diacritics-browse-item
Fix browse by title filter doesn't work with diacritics
2022-08-09 13:17:18 -05:00
Philipp Rumpf
b61aa04f48 Update jbibtex library to version 1.0.20
Fixes #8403
2022-08-09 13:45:10 +00:00
Toni Prieto
9556423e6c Prevent possible NPEs 2022-08-09 14:00:29 +02:00
Mykhaylo
5b6f19c089 Merge branch 'main' into CST-6108-ValidatePassword 2022-08-09 13:10:27 +02:00
Mykhaylo
3eac915dbb [CST-6108] Implemented community feedback 2022-08-09 13:08:14 +02:00
Tim Donohue
f0bcc4e5da Merge pull request #8424 from 4Science/CST-6448_auth_pagination
Pagination support for multiple objects and authorization features endpoint
2022-08-08 15:51:04 -05:00
Tim Donohue
75f7e8463f Merge pull request #8448 from DSpace/dependabot/maven/org.postgresql-postgresql-42.4.1
Bump postgresql from 42.3.3 to 42.4.1
2022-08-08 10:54:26 -05:00
Tim Donohue
1d3506a2c7 Merge pull request #8394 from DSpace/dependabot/maven/org.apache.commons-commons-configuration2-2.8.0
Bump commons-configuration2 from 2.7 to 2.8.0
2022-08-08 10:25:23 -05:00
dependabot[bot]
16b9874097 Bump postgresql from 42.3.3 to 42.4.1
Bumps [postgresql](https://github.com/pgjdbc/pgjdbc) from 42.3.3 to 42.4.1.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.3.3...REL42.4.1)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-06 05:57:35 +00:00
Tim Donohue
ff3c8b6b0b Fix dependency convergence issues via minor upgrades to opencsv and commons-text 2022-08-05 16:52:06 -05:00
Tim Donohue
9afd6ce1da Fix checkstyle violations by correcting order of imports 2022-08-05 16:47:31 -05:00
dependabot[bot]
ca046e5f98 Bump commons-configuration2 from 2.7 to 2.8.0
Bumps commons-configuration2 from 2.7 to 2.8.0.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-configuration2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 21:43:46 +00:00
Tim Donohue
0679fb9703 Update to oclc-harvester2 v1.0.0 and remove xalan 2022-08-05 16:20:25 -05:00
Tim Donohue
91131d9966 Merge pull request #8410 from atmire/w2p-92917_Fix-trusted-IP-ranges_Contribute_PR
proxies.trusted.ipranges fixes
2022-08-05 08:16:33 -05:00
Ben Bosman
227597417b simplify to avoid code duplication 2022-08-04 18:13:14 +02:00
ammanabrolua
16b2353b6f Updated code after first review 2022-08-04 15:31:53 +02:00
Tim Donohue
43b441c4c1 Merge pull request #8407 from DSpace/dependabot/maven/dspace-api/com.amazonaws-aws-java-sdk-s3-1.12.261
Bump aws-java-sdk-s3 from 1.12.116 to 1.12.261 in /dspace-api
2022-08-03 16:38:12 -05:00
Luca Giamminonni
3316aefde4 [CST-6152] Minor changes 2022-08-03 17:28:24 +02:00
Luca Giamminonni
bfb0736ab7 [CST-6152] Password add operation refactoring to include challenge in the value 2022-08-03 17:09:09 +02:00
Luca Giamminonni
edfa9145e7 Merge remote-tracking branch '4science-bitbucket/main' into CST-6152 2022-08-03 16:12:17 +02:00
Luca Giamminonni
505544232d [CST-6108] Removed not used javadoc parameter 2022-08-03 16:06:37 +02:00
Luca Giamminonni
e3528dc098 [CST-6108] Refactoring of ValidatePasswordService 2022-08-03 15:18:40 +02:00
Tim Donohue
68d7508c0f Merge pull request #8400 from atmire/w2p-84011_Fix-originalSubmitterAssignAction_7.x
Fix claimed user on `AssignOriginalSubmitterAction`
2022-08-02 12:03:44 -05:00
Tim Donohue
10afbe7100 Merge pull request #8422 from 4Science/main-8419
Workflow's steps doesn't preserve order
2022-08-02 11:31:07 -05:00
Tim Donohue
2f34e93e0d Merge pull request #8321 from mwoodiupui/8320
Address many long-standing LGTM complaints
2022-08-02 11:29:05 -05:00
Mark H. Wood
89acc8b13b Address requested changes. 2022-08-02 10:04:40 -04:00
Mark H. Wood
77d344a8c7 Merge branch 'main' into 8320 2022-08-02 09:48:58 -04:00
Tim Donohue
cc45de7da1 Merge pull request #2468 from mwoodiupui/DS-4289
[DS-4289] SAF exporter does not write the 'collections' file
2022-08-01 13:43:40 -05:00
Mark H. Wood
8613b278e5 Merge pull request #8421 from kshepherd/fix_abstractcondition_services
Ensure Local Filter services are autowired
2022-07-29 10:45:10 -04:00
Kim Shepherd
b48fa9ea8c #8421 - Remove unused import 2022-07-29 12:00:39 +12:00
Kim Shepherd
73276839e1 #8421 - Set services for constructed (unwired) conditions in unit tests 2022-07-29 11:29:48 +12:00
kshepherd
d1e7bd1b21 Merge pull request #8433 from dataquest-dev/maven-build-speed-up
maven build speed
2022-07-29 10:54:10 +12:00
Kim Shepherd
d10a153ad1 #8421 - Remove explicit service instantiation 2022-07-29 10:49:11 +12:00
Tim Donohue
4d4f129523 Merge pull request #2469 from mwoodiupui/DS-4300
[DS-4300] Optionally apply given Handles when importing community/collection structure
2022-07-28 10:02:05 -05:00
MajoBerger
b4f8e7d69d maven build speed 2022-07-28 07:26:45 +02:00
Tim Donohue
13e5809474 Merge pull request #8383 from 4Science/CST-6201
OAI Import errors when indexing without -c option
2022-07-27 14:37:43 -05:00
Vincenzo Mecca
18ae327996 [DURACOM-70] [#8357] Applied Change Requests
fix:
	- Removed typo;
	- Removed method inside `ItemBuilder`;
feat:
	- Added multiple routes to `HdlResolverRestController`:
	    * `/resolve/`;
	    * `/listhandles/`;
	    * `/listprefixes/`;
	- Added ITs for these new routes.
2022-07-26 18:47:39 +02:00
Toni Prieto
30b8dff95e Merge branch 'strip-diacritics-browse-item' of github.com:toniprieto/DSpace into strip-diacritics-browse-item 2022-07-26 14:05:39 +02:00
Toni Prieto
ca483e2435 Correct comments 2022-07-26 14:04:12 +02:00
Toni Prieto
7159563605 Add test for browsing by title with diacritics 2022-07-26 14:00:21 +02:00
Toni Prieto
77e42631e1 Ignore diacritics in browse by title 2022-07-26 12:10:52 +02:00
corrado lombardi
946ffa998d [CST-6448] checkstyle fix 2022-07-26 09:02:22 +02:00
corrado lombardi
d604ad888b [CST-6448] Pagination handling in /objects endpoint response 2022-07-25 19:09:25 +02:00
Vincenzo Mecca
949796b288 [DS-8419] JavaDoc on Matcher 2022-07-25 11:07:07 +02:00
Vincenzo Mecca
060727ba14 [DS-8419] WorkFlow steps preserve order
fix:
	- Replaced HashMap with LinkedHashMap, to preserve order.
feat:
	- New test to assert steps order;
	- New matcher for check step.
2022-07-25 11:06:56 +02:00
Kim Shepherd
e6620dc88f ensure item and collection services are autowired
(previously disabled due to some unit test conflicts?)
2022-07-25 15:51:30 +12:00
Michael Spalti
323867dd56 Removed unused import. 2022-07-22 14:03:49 -07:00
Michael Spalti
d11e3814d4 Using batch edit mode. 2022-07-22 12:16:07 -07:00
Andrea Bollini
ad7d7e2c83 port #2634 to the main 2022-07-21 18:05:41 +02:00
Michael Spalti
d392d93e29 Uncache the item. 2022-07-19 10:36:47 -07:00
dependabot[bot]
c0fa5ac403 Bump aws-java-sdk-s3 from 1.12.116 to 1.12.261 in /dspace-api
Bumps [aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.12.116 to 1.12.261.
- [Release notes](https://github.com/aws/aws-sdk-java/releases)
- [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-java/compare/1.12.116...1.12.261)

---
updated-dependencies:
- dependency-name: com.amazonaws:aws-java-sdk-s3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-15 21:06:46 +00:00
Mark H. Wood
953f37d4b2 Test with a community with handle not specified. #2469 2022-07-15 11:12:42 -04:00
Mark H. Wood
f8594abf5f Add spot-check for a Collection handle. #2469 2022-07-15 10:38:20 -04:00
Yura Bondarenko
e2216dcc50 Merge tag 'dspace-7.2' into w2p-93108_Bitstream-name-missing-on-statistics-page_7.2
[maven-release-plugin] copy for tag dspace-7.2
2022-07-15 15:18:52 +02:00
Michael Spalti
44ae8c0464 Minor test modification. 2022-07-14 11:05:56 -07:00
Michael Spalti
d5c9c86b11 Updated config file. 2022-07-14 10:52:56 -07:00
Michael Spalti
f6635c6262 Adds new IIIF config paramenter that excludes bundles from TOC generation. 2022-07-14 10:36:29 -07:00
Michael Spalti
84375b0499 Omit "iiif" bundle from toc ranges. 2022-07-14 10:36:29 -07:00
Mark H. Wood
87144496b2 Remove commented-out code. #2469 2022-07-14 11:49:31 -04:00
Yura Bondarenko
3185578d72 93108: Cover usage report point labels in ITs 2022-07-14 15:26:32 +02:00
Yura Bondarenko
2a2214d4c5 93108: Fix id/label mismatch in Bitstream download usage report points 2022-07-14 14:10:13 +02:00
ammanabrolua
5145c5b64d Merge branch 'DSpace:main' into main 2022-07-14 13:10:50 +02:00
Mykhaylo
fd1eec0aad [CST-6108] updated documentation 2022-07-14 12:48:09 +02:00
ammanabrolua
41ac87d42f resolve LGTM alert 2022-07-14 11:52:17 +02:00
ammanabrolua
449dfe0eb0 fixed logic 2022-07-14 10:30:05 +02:00
Tim Donohue
31f706042f Merge pull request #8366 from atmire/w2p-92174_fix-issues-with-test-OpenUrlServiceImplTest-7.2
92174: Refactor OpenUrlServiceImplTest to avoid making http requests
2022-07-13 16:37:11 -05:00
Tim Donohue
59e8c66243 Merge pull request #8361 from atmire/w2p-92174_issue-8360_replace-new-operator-with-autowire
Replace new operator with autowire
2022-07-13 16:13:06 -05:00
Mark H. Wood
41e1d8506b Clean up more warnings. #8320 2022-07-13 16:49:18 -04:00
Mark H. Wood
e9313acd24 Clean up a bunch of warnings. #8320 2022-07-13 14:03:42 -04:00
Mark H. Wood
023fc6a29c Merge branch 'main' into 8320 2022-07-13 12:17:35 -04:00
Mark H. Wood
b0316b4f74 Clean up all recommendations, plus scads of missing Javascript semicolons. 2022-07-13 12:01:51 -04:00
Mykhaylo
9ef9a26ac2 [CST-6108] tests to Validate password robustness 2022-07-13 17:56:48 +02:00
Mykhaylo
5bd8b68200 [CST-6108] Implementation to validate password strength 2022-07-13 17:55:48 +02:00
ammanabrolua
b0a04ce1d0 removed comments and changed flag expression 2022-07-13 15:00:24 +02:00
ammanabrolua
84e6be5bb3 added --help option and fixed code to reflect review 2022-07-13 14:39:23 +02:00
Yura Bondarenko
188cecc0b4 84011: Fix AssignOriginalSubmitterAction claimed user 2022-07-13 13:24:28 +02:00
ammanabrolua
93912118fd added --help option 2022-07-12 20:56:30 +02:00
Yura Bondarenko
93a1ef4809 Merge remote-tracking branch 'upstream/main' into w2p-92917_Fix-trusted-IP-ranges_Contribute_PR 2022-07-12 09:40:09 +02:00
Michael Spalti
7953110c0b Uncaching bitstreams to improve performance. 2022-07-11 14:16:56 -07:00
Yura Bondarenko
01d5bf4f4a 92917: Support implicit ranges & update unit tests 2022-07-11 14:48:24 +02:00
Yura Bondarenko
36748cd27d 92917: Javadocs & minor fixes 2022-07-11 13:47:43 +02:00
Ben Bosman
f9d6091c2c Refactor IPTable 2022-07-11 11:59:23 +02:00
eskander
b5dfcab7ae [CST-6151] removed unused variable. 2022-07-04 15:28:59 +02:00
eskander
957f13f834 [CST-6151] can change password feature must return false if current user is logged in as another. 2022-07-04 15:27:22 +02:00
Tim Donohue
fb691719a3 Merge pull request #8391 from tdonohue/fix_8387
Enhance comments for dspace.server.url and dspace.ui.url to clarify usage
2022-07-01 14:04:05 -05:00
Tim Donohue
7ee727ee9d Enhance comments for dspace.server.url and dspace.ui.url 2022-07-01 12:14:10 -05:00
eskander
aafa2c7d25 [CST-6152] allow password change only if a challenge is resolved. 2022-07-01 14:04:23 +02:00
Vincenzo Mecca
904a643585 Merge remote-tracking branch 'origin/main' into main-duracom-69 2022-06-30 13:38:38 +02:00
Tim Donohue
f32d1ad0b0 Merge pull request #8382 from DSpace/Docker-README-Rewording
Clarify usage of Docker images
2022-06-28 09:47:30 -05:00
Tim Donohue
c1eb19e497 Update warning in other readme 2022-06-28 09:42:41 -05:00
emanuele
1fa7049b7d [CST-6201] fixed checkstyle violations 2022-06-28 16:42:26 +02:00
Tim Donohue
ecb853cea5 Clarify usage of Docker images 2022-06-28 09:39:25 -05:00
emanuele
d1019740db [CST-6201] implemented solr cursors to avoid IndexOutOfBoundsException 2022-06-28 16:19:18 +02:00
emanuele
115460b94d [CST-6201] added NPE checks in getItemsWithPossibleChangesBefore method 2022-06-28 09:14:18 +02:00
Vincenzo Mecca
3646716607 Merge remote-tracking branch 'bit-bucket/main' into main-duracom-70 2022-06-27 15:08:15 +02:00
Vincenzo Mecca
083ce8586f Merge remote-tracking branch 'bit-bucket/main' into main-duracom-70 2022-06-27 15:03:37 +02:00
Tim Donohue
c532d410a2 [maven-release-plugin] prepare for next development iteration 2022-06-24 12:11:54 -05:00
Vincenzo Mecca
6d46995698 Merge remote-tracking branch 'origin/main' into main-duracom-70
Conflicts:
	dspace-api/src/test/java/org/dspace/builder/ItemBuilder.java
2022-06-23 15:54:30 +02:00
Vincenzo Mecca
0f3114745b Merge remote-tracking branch 'bit-bucket/main-duracom-69' into main-duracom-69 2022-06-21 15:33:21 +02:00
Vincenzo Mecca
687d5ca216 [DURACOM-69] Refacored common methods
ref: Introduced abstract common class with utility methods
2022-06-21 15:11:50 +02:00
Vincenzo Mecca
589ddd1a0d [DURACOM-70] Resolved change requests
JavaDoc description on HdlResolverRestController
Replaced Gson with Jackson
Added exception logging and rethrowing
2022-06-21 11:58:54 +02:00
Bruno Roemers
711e50f3b1 92174: Refactor OpenUrlServiceImplTest to avoid making http requests 2022-06-21 11:58:42 +02:00
Francesco Pio Scognamiglio
8fb2f09726 [CST-5699] force to use template to populate dspace.entity.type metadata 2022-06-20 13:27:43 +02:00
Bruno Roemers
c1dd080157 92174: Replace new operator with autowire
Fixes issue 8360.
2022-06-20 11:38:33 +02:00
Francesco Pio Scognamiglio
e882ae75b4 [CST-5699] Merge branch 'main' into CST-5699 2022-06-20 09:01:41 +02:00
Vincenzo Mecca
b2dca9ff6a Merged main into main-duracom-69 2022-06-17 10:37:05 +00:00
Vincenzo Mecca
b350ef8720 [DURACOM-69] Added UnitTest
feat: Added FunctionalUtils that uses Functional Interfaces and declares some utilities
fix & imp: S3BitStoreService fixed some issues and refactored code
test: Added S3BitStoreServiceTest for missing UnitTest
2022-06-17 12:35:04 +02:00
Francesco Pio Scognamiglio
68416def97 [CST-5699] Merge branch 'main' into CST-5699 2022-06-17 11:37:06 +02:00
Luca Giamminonni
8b3ab2427d [DSC-403] Fixed S3 use relative path property name 2022-06-16 11:05:35 +02:00
Mykhaylo
e7e45be3f3 refactored s3bitStore 2022-06-16 11:05:19 +02:00
Mykhaylo
f5f8867a09 added support to use relative path in S3BitStore 2022-06-16 11:04:58 +02:00
Andrea Bollini
4468fccdcd DSC-403 Porting to DSpace-CRIS 7 of the IAM support for S3 2022-06-16 10:58:00 +02:00
Vincenzo Mecca
d4fb343f1e [DSC-611] [DURACOM-70] fix: JavaDoc & Header 2022-06-15 14:47:52 +02:00
Vincenzo Mecca
ed03b107db feature: Added handle in ItemBuilder
Partial porting of [CST-2501] for withHandle method in ItemBuilder
2022-06-15 14:39:13 +02:00
Vincenzo Mecca
e12a626192 [DSC-611] [DURACOM-70] feature: Handle resolver
New REST service for handle resolver
2022-06-15 11:24:14 +02:00
Vincenzo Mecca
135a24df83 feature: DSC-611 - First Integration Test Class 2022-06-15 11:23:42 +02:00
Vincenzo Mecca
7f626577b6 Merged main into main-duracom-70 2022-06-15 09:16:54 +00:00
Toni Prieto
f20d2ca300 Ignore diacritics in browse by title 2022-06-08 23:48:29 +02:00
Francesco Pio Scognamiglio
f9d01b96f8 [CST-5699] add integration tests on zip with bitstream and zip with relationships file 2022-05-31 16:20:01 +02:00
Francesco Pio Scognamiglio
a5c4031cfe [CST-5699] minor fix on spurious javadoc params 2022-05-30 09:10:15 +02:00
Mark H. Wood
c7c174ccf6 Merge branch 'main' into LGTM 2022-05-27 14:13:57 -04:00
Mark H. Wood
a956472684 Satisfy checkstyle. #8304 2022-05-27 12:59:44 -04:00
Mark H. Wood
8fb948d6a8 Devolve authorization to the strategy classes. Add tests. #8304 2022-05-27 12:24:49 -04:00
Francesco Pio Scognamiglio
36ab086721 Merge branch 'main' into CST-5699 2022-05-27 14:44:46 +02:00
Francesco Pio Scognamiglio
e1e599a047 [CST-5699] fix to manage relationships by metadata_relation file on SAF import; clean integration tests 2022-05-27 14:11:13 +02:00
Francesco Pio Scognamiglio
75e9604a6e [CST-5699] add integration test for relationships functionality 2022-05-25 19:45:35 +02:00
Francesco Pio Scognamiglio
4a96d9fc1c [CST-5699] minor fix to manage collections and relationships files when the contents file is missing 2022-05-25 17:06:59 +02:00
Francesco Pio Scognamiglio
504f7fecf3 [CST-5699] add integration tests for import and export via SAF 2022-05-25 09:34:13 +02:00
Francesco Pio Scognamiglio
3443bd5d48 [CST-5699] add scripts for import and export via SAF 2022-05-25 09:33:38 +02:00
Kim Shepherd
e08fa2ec31 Dockerfile.test and docker-compose: expose port 8000, set JDWP java opts
This allows a remote JVM debugger to be connected to port 8000 on the
dspace docker container (test environment).
This may need a documentation note to warn against running the supplied
docker-compose / Dockerfile.test config in production -- already a good
warning but made more important now that the JVM can be exposed to a
debugger for reading memory...
2022-05-25 10:40:18 +12:00
Mark H. Wood
2fdc8d66ab Merge branch 'main' into DS-4300 to correct merge conflicts. 2022-05-05 09:54:38 -04:00
Mykhaylo
da0a23519d Merge branch 'main' into CST-5340-OpenAIREFundingDataProvider 2022-04-11 14:58:28 +02:00
Mykhaylo
13b147a691 [CST-5340] refactored OpenAIREFundingData provider 2022-04-11 14:53:35 +02:00
Tim Donohue
8ee4d9f9ab [maven-release-plugin] prepare for next development iteration 2022-04-01 09:21:58 -05:00
Tim Donohue
e8b92088f1 [maven-release-plugin] prepare release dspace-7.2.1 2022-04-01 09:21:54 -05:00
Tim Donohue
fe9d22a4f6 Change to snapshot version 2022-04-01 09:07:33 -05:00
Tim Donohue
f863866183 Update to Spring v5.2.20. Requires also explicitly specifying version of spring-context-support to avoid dependency convergence issues. 2022-03-31 13:20:28 -05:00
Mark H. Wood
33e501086a Merge branch 'main' into DS-4300 2022-03-31 08:08:46 -04:00
Mark H. Wood
0e98044e95 [DS-4300] Test with specified handles enabled. 2022-03-29 16:06:22 -04:00
Mark H. Wood
2f437b7018 [DS-4300] Refactor for testability. 2022-03-29 16:05:48 -04:00
Mark H. Wood
b29fbbc7f8 Merge remote-tracking branch 'upstream/main' into DS-4300 2022-03-29 14:28:20 -04:00
Mark H. Wood
2312724f5e [DS-3951] Add tests for new strategy classes. 2022-03-28 13:51:38 -04:00
Mark H. Wood
bd80b0e4c7 [DS-3951] Fix another missed usage. 2022-03-28 10:56:37 -04:00
Mark H. Wood
758b02f65c [DS-3951] A new class needs to understand multiple recipients. 2022-03-25 17:00:04 -04:00
Mark H. Wood
f04e26374d Merge branch 'main' into DS-3951 2022-03-25 16:35:29 -04:00
Nathan Buckingham
5ae5398b99 Change to use constant instead of string md5 2021-12-15 14:19:24 -05:00
Nathan Buckingham
b7fa187589 fix up white space and unsused import 2021-12-14 09:28:42 -05:00
Nathan Buckingham
2992660267 Add comment explaining ETag 2021-12-13 16:35:40 -05:00
Nathan Buckingham
6c5e568543 S3 calculated md5 and store bitstream md5 on Multipart upload 2021-12-13 16:18:16 -05:00
Nathan Buckingham
0b95376e5d w2p-85808 S3Bitstore uses TransferManager to allow large file transfer 2021-12-08 16:47:41 -05:00
Mark H. Wood
90a23a000a Fix mismatched getter, setter synchronization. 2021-08-30 16:56:09 -04:00
Mark H. Wood
674c3e2607 Remove unnecessary boxing, unread variables. 2021-08-30 16:54:48 -04:00
Mark H. Wood
134873c98a Replace array with Queue to avoid index-out-of-bounds, make neater. 2021-08-25 15:26:39 -04:00
Mark H. Wood
48d409d87d Formalize more option parsing. 2021-08-25 14:09:37 -04:00
Mark H. Wood
702a72ffab Replace handmade option parsing with Commons CLI to address LGTM array bounds complaints. 2021-08-25 12:58:27 -04:00
Mark H. Wood
81a7235432 Take up many IDE suggestions. 2021-08-25 10:33:50 -04:00
Mark H. Wood
8541d3b05e Merge remote-tracking branch 'upstream/main' into DS-4300 2021-03-14 11:31:57 -04:00
Mark H. Wood
ea8ecdeff2 Merge remote-tracking branch 'upstream/main' into DS-4289 2021-03-14 11:16:38 -04:00
Mark H. Wood
5c6cd3eca3 [DS-3951] Update a newer test to cope with lists of recipients. 2021-03-13 20:22:05 -05:00
Mark H. Wood
80975dfd25 Merge remote-tracking branch 'upstream/main' into DS-3951 2021-03-13 14:53:16 -05:00
Mark H. Wood
d21b019c71 [DS-2670] Fix concompliance with new format rules. 2020-08-04 15:21:27 -04:00
Mark H. Wood
d84795b54f Merge branch 'main' into DS-2670 2020-08-04 15:17:11 -04:00
Mark H. Wood
e02d91122f [DS-4300] Add option to use provided Handles if any. 2019-07-15 12:41:13 -04:00
Mark H. Wood
d28c15dae3 [DS-4289] use a new method to write the 'contents' file. 2019-07-02 14:51:25 -04:00
Mark H. Wood
d6a8002a7c [DS-3951] Change request-copy recipient to a List; add strategies to list collection administrators and to combine other strategies. 2018-11-12 10:41:44 -05:00
Mark H. Wood
d585b3a9f1 [DS-2670] First attempt 2017-10-11 11:43:16 -04:00
1369 changed files with 73363 additions and 26419 deletions

View File

@@ -4,13 +4,6 @@
# Can be validated via instructions at:
# https://docs.codecov.io/docs/codecov-yaml#validate-your-repository-yaml
# Tell Codecov not to send a coverage notification until (at least) 2 builds are completed
# Since we run Unit & Integration tests in parallel, this lets Codecov know that coverage
# needs to be merged across those builds
codecov:
notify:
after_n_builds: 2
# Settings related to code coverage analysis
coverage:
status:

View File

@@ -6,6 +6,5 @@ dspace/modules/*/target/
Dockerfile.*
dspace/src/main/docker/dspace-postgres-pgcrypto
dspace/src/main/docker/dspace-postgres-pgcrypto-curl
dspace/src/main/docker/solr
dspace/src/main/docker/README.md
dspace/src/main/docker-compose/

118
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,118 @@
#-------------------
# DSpace's dependabot rules. Enables maven updates for all dependencies on a weekly basis
# for main and any maintenance branches. Security updates only apply to main.
#-------------------
version: 2
updates:
- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "weekly"
# Allow up to 10 open PRs for dependencies
open-pull-requests-limit: 10
# Group together some upgrades in a single PR
groups:
# Group together all Build Tools in a single PR
build-tools:
applies-to: version-updates
patterns:
- "org.apache.maven.plugins:*"
- "*:*-maven-plugin"
- "*:maven-*-plugin"
- "com.github.spotbugs:spotbugs"
- "com.google.code.findbugs:*"
- "com.google.errorprone:*"
- "com.puppycrawl.tools:checkstyle"
- "org.sonatype.plugins:*"
exclude-patterns:
# Exclude anything from Spring, as that is in a separate group
- "org.springframework.*:*"
update-types:
- "minor"
- "patch"
test-tools:
applies-to: version-updates
patterns:
- "junit:*"
- "com.github.stefanbirker:system-rules"
- "com.h2database:*"
- "io.findify:s3mock*"
- "io.netty:*"
- "org.hamcrest:*"
- "org.mock-server:*"
- "org.mockito:*"
update-types:
- "minor"
- "patch"
# Group together all Apache Commons deps in a single PR
apache-commons:
applies-to: version-updates
patterns:
- "org.apache.commons:*"
- "commons-*:commons-*"
update-types:
- "minor"
- "patch"
# Group together all fasterxml deps in a single PR
fasterxml:
applies-to: version-updates
patterns:
- "com.fasterxml:*"
- "com.fasterxml.*:*"
update-types:
- "minor"
- "patch"
# Group together all Hibernate deps in a single PR
hibernate:
applies-to: version-updates
patterns:
- "org.hibernate.*:*"
update-types:
- "minor"
- "patch"
# Group together all Jakarta deps in a single PR
jakarta:
applies-to: version-updates
patterns:
- "jakarta.*:*"
- "org.eclipse.angus:jakarta.mail"
- "org.glassfish.jaxb:jaxb-runtime"
update-types:
- "minor"
- "patch"
# Group together all Google deps in a single PR
google-apis:
applies-to: version-updates
patterns:
- "com.google.apis:*"
- "com.google.api-client:*"
- "com.google.http-client:*"
- "com.google.oauth-client:*"
update-types:
- "minor"
- "patch"
# Group together all Spring deps in a single PR
spring:
applies-to: version-updates
patterns:
- "org.springframework:*"
- "org.springframework.*:*"
update-types:
- "minor"
- "patch"
# Group together all WebJARs deps in a single PR
webjars:
applies-to: version-updates
patterns:
- "org.webjars:*"
- "org.webjars.*:*"
update-types:
- "minor"
- "patch"
ignore:
# Don't try to auto-update any DSpace dependencies
- dependency-name: "org.dspace:*"
- dependency-name: "org.dspace.*:*"
# Ignore all major version updates for all dependencies. We'll only automate minor/patch updates.
- dependency-name: "*"
update-types: ["version-update:semver-major"]

View File

@@ -1,26 +0,0 @@
# This workflow runs whenever a new pull request is created
# TEMPORARILY DISABLED. Unfortunately this doesn't work for PRs created from forked repositories (which is how we tend to create PRs).
# There is no known workaround yet. See https://github.community/t/how-to-use-github-token-for-prs-from-forks/16818
name: Pull Request opened
# Only run for newly opened PRs against the "main" branch
on:
pull_request:
types: [opened]
branches:
- main
jobs:
automation:
runs-on: ubuntu-latest
steps:
# Assign the PR to whomever created it. This is useful for visualizing assignments on project boards
# See https://github.com/marketplace/actions/pull-request-assigner
- name: Assign PR to creator
uses: thomaseizinger/assign-pr-creator-action@v1.0.0
# Note, this authentication token is created automatically
# See: https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# Ignore errors. It is possible the PR was created by someone who cannot be assigned
continue-on-error: true

View File

@@ -1,7 +1,7 @@
## References
_Add references/links to any related issues or PRs. These may include:_
* Fixes #[issue-number]
* Related to [REST Contract](https://github.com/DSpace/Rest7Contract)
* Fixes #`issue-number` (if this fixes an issue ticket)
* Related to DSpace/RestContract#`pr-number` (if a corresponding REST Contract PR exists)
## Description
Short summary of changes (1-2 sentences).
@@ -22,5 +22,7 @@ _This checklist provides a reminder of what we are going to look for when review
- [ ] My PR passes Checkstyle validation based on the [Code Style Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Style+Guide).
- [ ] My PR includes Javadoc for _all new (or modified) public methods and classes_. It also includes Javadoc for large or complex private methods.
- [ ] My PR passes all tests and includes new/updated Unit or Integration Tests based on the [Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Testing+Guide).
- [ ] If my PR includes new, third-party dependencies (in any `pom.xml`), I've made sure their licenses align with the [DSpace BSD License](https://github.com/DSpace/DSpace/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation.
- [ ] If my PR modifies the REST API, I've linked to the REST Contract page (or open PR) related to this change.
- [ ] If my PR includes new libraries/dependencies (in any `pom.xml`), I've made sure their licenses align with the [DSpace BSD License](https://github.com/DSpace/DSpace/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation.
- [ ] If my PR modifies REST API endpoints, I've opened a separate [REST Contract](https://github.com/DSpace/RestContract/blob/main/README.md) PR related to this change.
- [ ] If my PR includes new configurations, I've provided basic technical documentation in the PR itself.
- [ ] If my PR fixes an issue ticket, I've [linked them together](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue).

View File

@@ -6,6 +6,9 @@ name: Build
# Run this Build for all pushes / PRs to current branch
on: [push, pull_request]
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
tests:
runs-on: ubuntu-latest
@@ -42,24 +45,15 @@ jobs:
steps:
# https://github.com/actions/checkout
- name: Checkout codebase
uses: actions/checkout@v2
uses: actions/checkout@v4
# https://github.com/actions/setup-java
- name: Install JDK ${{ matrix.java }}
uses: actions/setup-java@v2
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
# https://github.com/actions/cache
- name: Cache Maven dependencies
uses: actions/cache@v2
with:
# Cache entire ~/.m2/repository
path: ~/.m2/repository
# Cache key is hash of all pom.xml files. Therefore any changes to POMs will invalidate cache
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-maven-
cache: 'maven'
# Run parallel Maven builds based on the above 'strategy.matrix'
- name: Run Maven ${{ matrix.type }}
@@ -71,11 +65,48 @@ jobs:
# (This artifact is downloadable at the bottom of any job's summary page)
- name: Upload Results of ${{ matrix.type }} to Artifact
if: ${{ failure() }}
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.type }} results
path: ${{ matrix.resultsdir }}
# https://github.com/codecov/codecov-action
# Upload code coverage report to artifact, so that it can be shared with the 'codecov' job (see below)
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.type }} coverage report
path: 'dspace/target/site/jacoco-aggregate/jacoco.xml'
retention-days: 14
# Codecov upload is a separate job in order to allow us to restart this separate from the entire build/test
# job above. This is necessary because Codecov uploads seem to randomly fail at times.
# See https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954
codecov:
# Must run after 'tests' job above
needs: tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# Download artifacts from previous 'tests' job
- name: Download coverage artifacts
uses: actions/download-artifact@v4
# Now attempt upload to Codecov using its action.
# NOTE: We use a retry action to retry the Codecov upload if it fails the first time.
#
# Retry action: https://github.com/marketplace/actions/retry-action
# Codecov action: https://github.com/codecov/codecov-action
- name: Upload coverage to Codecov.io
uses: codecov/codecov-action@v2
uses: Wandalen/wretry.action@v1.3.0
with:
action: codecov/codecov-action@v4
# Ensure codecov-action throws an error when it fails to upload
with: |
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
# Try re-running action 5 times max
attempt_limit: 5
# Run again in 30 seconds
attempt_delay: 30000

63
.github/workflows/codescan.yml vendored Normal file
View File

@@ -0,0 +1,63 @@
# DSpace CodeQL code scanning configuration for GitHub
# https://docs.github.com/en/code-security/code-scanning
#
# NOTE: Code scanning must be run separate from our default build.yml
# because CodeQL requires a fresh build with all tests *disabled*.
name: "Code Scanning"
# Run this code scan for all pushes / PRs to main or maintenance branches. Also run once a week.
on:
push:
branches:
- main
- 'dspace-**'
pull_request:
branches:
- main
- 'dspace-**'
# Don't run if PR is only updating static documentation
paths-ignore:
- '**/*.md'
- '**/*.txt'
schedule:
- cron: "37 0 * * 1"
jobs:
analyze:
name: Analyze Code
runs-on: ubuntu-latest
# Limit permissions of this GitHub action. Can only write to security-events
permissions:
actions: read
contents: read
security-events: write
steps:
# https://github.com/actions/checkout
- name: Checkout repository
uses: actions/checkout@v4
# https://github.com/actions/setup-java
- name: Install JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: 'temurin'
# Initializes the CodeQL tools for scanning.
# https://github.com/github/codeql-action
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
# Codescan Javascript as well since a few JS files exist in REST API's interface
languages: java, javascript
# Autobuild attempts to build any compiled languages
# NOTE: Based on testing, this autobuild process works well for DSpace. A custom
# DSpace build w/caching (like in build.yml) was about the same speed as autobuild.
- name: Autobuild
uses: github/codeql-action/autobuild@v3
# Perform GitHub Code Scanning.
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

View File

@@ -3,6 +3,7 @@ name: Docker images
# Run this Build for all pushes to 'main' or maintenance branches, or tagged releases.
# Also run for PRs to ensure PR doesn't break Docker build process
# NOTE: uses "reusable-docker-build.yml" to actually build each of the Docker images.
on:
push:
branches:
@@ -12,158 +13,249 @@ on:
- 'dspace-**'
pull_request:
permissions:
contents: read # to fetch code (actions/checkout)
packages: write # to write images to GitHub Container Registry (GHCR)
jobs:
docker:
####################################################
# Build/Push the 'dspace/dspace-dependencies' image.
# This image is used by all other DSpace build jobs.
####################################################
dspace-dependencies:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
uses: ./.github/workflows/reusable-docker-build.yml
with:
build_id: dspace-dependencies
image_name: dspace/dspace-dependencies
dockerfile_path: ./Dockerfile.dependencies
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
#######################################
# Build/Push the 'dspace/dspace' image
#######################################
dspace:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
# Must run after 'dspace-dependencies' job above
needs: dspace-dependencies
uses: ./.github/workflows/reusable-docker-build.yml
with:
build_id: dspace-prod
image_name: dspace/dspace
dockerfile_path: ./Dockerfile
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
# Enable redeploy of sandbox & demo if the branch for this image matches the deployment branch of
# these sites as specified in reusable-docker-build.xml
REDEPLOY_SANDBOX_URL: ${{ secrets.REDEPLOY_SANDBOX_URL }}
REDEPLOY_DEMO_URL: ${{ secrets.REDEPLOY_DEMO_URL }}
#############################################################
# Build/Push the 'dspace/dspace' image ('-test' tag)
#############################################################
dspace-test:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
# Must run after 'dspace-dependencies' job above
needs: dspace-dependencies
uses: ./.github/workflows/reusable-docker-build.yml
with:
build_id: dspace-test
image_name: dspace/dspace
dockerfile_path: ./Dockerfile.test
# As this is a test/development image, its tags are all suffixed with "-test". Otherwise, it uses the same
# tagging logic as the primary 'dspace/dspace' image above.
tags_flavor: suffix=-test
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
###########################################
# Build/Push the 'dspace/dspace-cli' image
###########################################
dspace-cli:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
# Must run after 'dspace-dependencies' job above
needs: dspace-dependencies
uses: ./.github/workflows/reusable-docker-build.yml
with:
build_id: dspace-cli
image_name: dspace/dspace-cli
dockerfile_path: ./Dockerfile.cli
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
###########################################
# Build/Push the 'dspace/dspace-solr' image
###########################################
dspace-solr:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
uses: ./.github/workflows/reusable-docker-build.yml
with:
build_id: dspace-solr
image_name: dspace/dspace-solr
dockerfile_path: ./dspace/src/main/docker/dspace-solr/Dockerfile
# Must pass solrconfigs to the Dockerfile so that it can find the required Solr config files
dockerfile_additional_contexts: 'solrconfigs=./dspace/solr/'
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
# Enable redeploy of sandbox & demo SOLR instance whenever dspace-solr image changes for deployed branch.
# These URLs MUST use different secrets than 'dspace/dspace' image build above as they are deployed separately.
REDEPLOY_SANDBOX_URL: ${{ secrets.REDEPLOY_SANDBOX_SOLR_URL }}
REDEPLOY_DEMO_URL: ${{ secrets.REDEPLOY_DEMO_SOLR_URL }}
###########################################################
# Build/Push the 'dspace/dspace-postgres-pgcrypto' image
###########################################################
dspace-postgres-pgcrypto:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
uses: ./.github/workflows/reusable-docker-build.yml
with:
build_id: dspace-postgres-pgcrypto-prod
image_name: dspace/dspace-postgres-pgcrypto
# Must build out of subdirectory to have access to install script for pgcrypto.
# NOTE: this context will build the image based on the Dockerfile in the specified directory
dockerfile_context: ./dspace/src/main/docker/dspace-postgres-pgcrypto/
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
########################################################################
# Build/Push the 'dspace/dspace-postgres-pgcrypto' image (-loadsql tag)
########################################################################
dspace-postgres-pgcrypto-loadsql:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
uses: ./.github/workflows/reusable-docker-build.yml
with:
build_id: dspace-postgres-pgcrypto-loadsql
image_name: dspace/dspace-postgres-pgcrypto
# Must build out of subdirectory to have access to install script for pgcrypto.
# NOTE: this context will build the image based on the Dockerfile in the specified directory
dockerfile_context: ./dspace/src/main/docker/dspace-postgres-pgcrypto-curl/
# Suffix all tags with "-loadsql". Otherwise, it uses the same
# tagging logic as the primary 'dspace/dspace-postgres-pgcrypto' image above.
tags_flavor: suffix=-loadsql
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
#################################################################################
# Test Deployment via Docker to ensure newly built images are working properly
#################################################################################
docker-deploy:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
runs-on: ubuntu-latest
# Must run after all major images are built
needs: [dspace, dspace-test, dspace-cli, dspace-postgres-pgcrypto, dspace-solr]
env:
# Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action)
# For a new commit on default branch (main), use the literal tag 'dspace-7_x' on Docker image.
# For a new commit on other branches, use the branch name as the tag for Docker image.
# For a new tag, copy that tag name as the tag for Docker image.
IMAGE_TAGS: |
type=raw,value=dspace-7_x,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }}
type=ref,event=tag
# Define default tag "flavor" for docker/metadata-action per
# https://github.com/docker/metadata-action#flavor-input
# We turn off 'latest' tag by default.
TAGS_FLAVOR: |
latest=false
# Architectures / Platforms for which we will build Docker images
# If this is a PR, we ONLY build for AMD64. For PRs we only do a sanity check test to ensure Docker builds work.
# If this is NOT a PR (e.g. a tag or merge commit), also build for ARM64. NOTE: The ARM64 build takes MUCH
# longer (around 45mins or so) which is why we only run it when pushing a new Docker image.
PLATFORMS: linux/amd64${{ github.event_name != 'pull_request' && ', linux/arm64' || '' }}
# Override defaults dspace.server.url because backend starts at http://127.0.0.1:8080
dspace__P__server__P__url: http://127.0.0.1:8080/server
# Enable all optional modules / controllers for this test deployment.
# This helps check for errors in deploying these modules via Spring Boot
iiif__P__enabled: true
oai__P__enabled: true
rdf__P__enabled: true
signposting__P__enabled: true
sword__D__server__P__enabled: true
swordv2__D__server__P__enabled: true
# If this is a PR against main (default branch), use "latest".
# Else if this is a PR against a different branch, used the base branch name.
# Else if this is a commit on main (default branch), use the "latest" tag.
# Else, just use the branch name.
# NOTE: DSPACE_VER is used because our docker compose scripts default to using the "-test" image.
DSPACE_VER: ${{ (github.event_name == 'pull_request' && github.event.pull_request.base.ref == github.event.repository.default_branch && 'latest') || (github.event_name == 'pull_request' && github.event.pull_request.base.ref) || (github.ref_name == github.event.repository.default_branch && 'latest') || github.ref_name }}
# Docker Registry to use for Docker compose scripts below.
# We use GitHub's Container Registry to avoid aggressive rate limits at DockerHub.
DOCKER_REGISTRY: ghcr.io
steps:
# https://github.com/actions/checkout
# Checkout our codebase (to get access to Docker Compose scripts)
- name: Checkout codebase
uses: actions/checkout@v2
# https://github.com/docker/setup-buildx-action
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
# https://github.com/docker/setup-qemu-action
- name: Set up QEMU emulation to build for multiple architectures
uses: docker/setup-qemu-action@v2
# https://github.com/docker/login-action
- name: Login to DockerHub
# Only login if not a PR, as PRs only trigger a Docker build and not a push
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
uses: actions/checkout@v4
# Download Docker image artifacts (which were just built by reusable-docker-build.yml)
- name: Download Docker image artifacts
uses: actions/download-artifact@v4
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
####################################################
# Build/Push the 'dspace/dspace-dependencies' image
####################################################
# https://github.com/docker/metadata-action
# Get Metadata for docker_build_deps step below
- name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-dependencies' image
id: meta_build_deps
uses: docker/metadata-action@v3
with:
images: dspace/dspace-dependencies
tags: ${{ env.IMAGE_TAGS }}
flavor: ${{ env.TAGS_FLAVOR }}
# https://github.com/docker/build-push-action
- name: Build and push 'dspace-dependencies' image
id: docker_build_deps
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile.dependencies
platforms: ${{ env.PLATFORMS }}
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build_deps.outputs.tags }}
labels: ${{ steps.meta_build_deps.outputs.labels }}
#######################################
# Build/Push the 'dspace/dspace' image
#######################################
# Get Metadata for docker_build step below
- name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace' image
id: meta_build
uses: docker/metadata-action@v3
with:
images: dspace/dspace
tags: ${{ env.IMAGE_TAGS }}
flavor: ${{ env.TAGS_FLAVOR }}
- name: Build and push 'dspace' image
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: ${{ env.PLATFORMS }}
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build.outputs.tags }}
labels: ${{ steps.meta_build.outputs.labels }}
#####################################################
# Build/Push the 'dspace/dspace' image ('-test' tag)
#####################################################
# Get Metadata for docker_build_test step below
- name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-test' image
id: meta_build_test
uses: docker/metadata-action@v3
with:
images: dspace/dspace
tags: ${{ env.IMAGE_TAGS }}
# As this is a test/development image, its tags are all suffixed with "-test". Otherwise, it uses the same
# tagging logic as the primary 'dspace/dspace' image above.
flavor: ${{ env.TAGS_FLAVOR }}
suffix=-test
- name: Build and push 'dspace-test' image
id: docker_build_test
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile.test
platforms: ${{ env.PLATFORMS }}
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build_test.outputs.tags }}
labels: ${{ steps.meta_build_test.outputs.labels }}
###########################################
# Build/Push the 'dspace/dspace-cli' image
###########################################
# Get Metadata for docker_build_test step below
- name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-cli' image
id: meta_build_cli
uses: docker/metadata-action@v3
with:
images: dspace/dspace-cli
tags: ${{ env.IMAGE_TAGS }}
flavor: ${{ env.TAGS_FLAVOR }}
- name: Build and push 'dspace-cli' image
id: docker_build_cli
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile.cli
platforms: ${{ env.PLATFORMS }}
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build_cli.outputs.tags }}
labels: ${{ steps.meta_build_cli.outputs.labels }}
# Download all amd64 Docker images (TAR files) into the /tmp/docker directory
pattern: docker-image-*-linux-amd64
path: /tmp/docker
merge-multiple: true
# Load each of the images into Docker by calling "docker image load" for each.
# This ensures we are using the images just built & not any prior versions on DockerHub
- name: Load all downloaded Docker images
run: |
find /tmp/docker -type f -name "*.tar" -exec docker image load --input "{}" \;
docker image ls -a
# Start backend using our compose script in the codebase.
- name: Start backend in Docker
run: |
docker compose -f docker-compose.yml up -d
sleep 10
docker container ls
# Create a test admin account. Load test data from a simple set of AIPs as defined in cli.ingest.yml
- name: Load test data into Backend
run: |
docker compose -f docker-compose-cli.yml run --rm dspace-cli create-administrator -e test@test.edu -f admin -l user -p admin -c en
docker compose -f docker-compose-cli.yml -f dspace/src/main/docker-compose/cli.ingest.yml run --rm dspace-cli
# Verify backend started successfully.
# 1. Make sure root endpoint is responding (check for dspace.name defined in docker-compose.yml)
# 2. Also check /collections endpoint to ensure the test data loaded properly (check for a collection name in AIPs)
- name: Verify backend is responding properly
run: |
result=$(wget -O- -q http://127.0.0.1:8080/server/api)
echo "$result"
echo "$result" | grep -oE "\"DSpace Started with Docker Compose\","
result=$(wget -O- -q http://127.0.0.1:8080/server/api/core/collections)
echo "$result"
echo "$result" | grep -oE "\"Dog in Yard\","
# Verify basic backend logging is working.
# 1. Access the top communities list. Verify that the "Before request" INFO statement is logged
# 2. Access an invalid endpoint (and ignore 404 response). Verify that a "status:404" WARN statement is logged
- name: Verify backend is logging properly
run: |
wget -O/dev/null -q http://127.0.0.1:8080/server/api/core/communities/search/top
logs=$(docker compose -f docker-compose.yml logs -n 5 dspace)
echo "$logs"
echo "$logs" | grep -o "Before request \[GET /server/api/core/communities/search/top\]"
wget -O/dev/null -q http://127.0.0.1:8080/server/api/does/not/exist || true
logs=$(docker compose -f docker-compose.yml logs -n 5 dspace)
echo "$logs"
echo "$logs" | grep -o "status:404 exception: The repository type does.not was not found"
# Verify Handle Server can be stared and is working properly
# 1. First generate the "[dspace]/handle-server" folder with the sitebndl.zip
# 2. Start the Handle Server (and wait 20 seconds to let it start up)
# 3. Verify logs do NOT include "Exception" in the text (as that means an error occurred)
# 4. Check that Handle Proxy HTML page is responding on default port (8000)
- name: Verify Handle Server is working properly
run: |
docker exec -i dspace /dspace/bin/make-handle-config
echo "Starting Handle Server..."
docker exec -i dspace /dspace/bin/start-handle-server
sleep 20
echo "Checking for errors in error.log"
result=$(docker exec -i dspace sh -c "cat /dspace/handle-server/logs/error.log* || echo ''")
echo "$result"
echo "$result" | grep -vqz "Exception"
echo "Checking for errors in handle-server.log..."
result=$(docker exec -i dspace cat /dspace/log/handle-server.log)
echo "$result"
echo "$result" | grep -vqz "Exception"
echo "Checking to see if Handle Proxy webpage is available..."
result=$(wget -O- -q http://127.0.0.1:8000/)
echo "$result"
echo "$result" | grep -oE "Handle Proxy"
# Shutdown our containers
- name: Shutdown Docker containers
run: |
docker compose -f docker-compose.yml down

View File

@@ -5,25 +5,22 @@ on:
issues:
types: [opened]
permissions: {}
jobs:
automation:
runs-on: ubuntu-latest
steps:
# Add the new issue to a project board, if it needs triage
# See https://github.com/marketplace/actions/create-project-card-action
- name: Add issue to project board
# See https://github.com/actions/add-to-project
- name: Add issue to triage board
# Only add to project board if issue is flagged as "needs triage" or has no labels
# NOTE: By default we flag new issues as "needs triage" in our issue template
if: (contains(github.event.issue.labels.*.name, 'needs triage') || join(github.event.issue.labels.*.name) == '')
uses: technote-space/create-project-card-action@v1
uses: actions/add-to-project@v1.0.0
# Note, the authentication token below is an ORG level Secret.
# It must be created/recreated manually via a personal access token with "public_repo" and "admin:org" permissions
# It must be created/recreated manually via a personal access token with admin:org, project, public_repo permissions
# See: https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token#permissions-for-the-github_token
# This is necessary because the "DSpace Backlog" project is an org level project (i.e. not repo specific)
with:
GITHUB_TOKEN: ${{ secrets.ORG_PROJECT_TOKEN }}
PROJECT: DSpace Backlog
COLUMN: Triage
CHECK_ORG_PROJECT: true
# Ignore errors.
continue-on-error: true
github-token: ${{ secrets.TRIAGE_PROJECT_TOKEN }}
project-url: https://github.com/orgs/DSpace/projects/24

View File

@@ -1,25 +1,39 @@
# This workflow checks open PRs for merge conflicts and labels them when conflicts are found
name: Check for merge conflicts
# Run whenever the "main" branch is updated
# NOTE: This means merge conflicts are only checked for when a PR is merged to main.
# Run this for all pushes (i.e. merges) to 'main' or maintenance branches
on:
push:
branches:
- main
- 'dspace-**'
# So that the `conflict_label_name` is removed if conflicts are resolved,
# we allow this to run for `pull_request_target` so that github secrets are available.
pull_request_target:
types: [ synchronize ]
permissions: {}
jobs:
triage:
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
if: github.repository == 'dspace/dspace'
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
# See: https://github.com/mschilde/auto-label-merge-conflicts/
# See: https://github.com/prince-chrismc/label-merge-conflicts-action
- name: Auto-label PRs with merge conflicts
uses: mschilde/auto-label-merge-conflicts@v2.0
uses: prince-chrismc/label-merge-conflicts-action@v3
# Ignore any failures -- may occur (randomly?) for older, outdated PRs.
continue-on-error: true
# Add "merge conflict" label if a merge conflict is detected. Remove it when resolved.
# Note, the authentication token is created automatically
# See: https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token
with:
CONFLICT_LABEL_NAME: 'merge conflict'
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Ignore errors
continue-on-error: true
conflict_label_name: 'merge conflict'
github_token: ${{ secrets.GITHUB_TOKEN }}
conflict_comment: |
Hi @${author},
Conflicts have been detected against the base branch.
Please [resolve these conflicts](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts) as soon as you can. Thanks!

View File

@@ -0,0 +1,46 @@
# This workflow will attempt to port a merged pull request to
# the branch specified in a "port to" label (if exists)
name: Port merged Pull Request
# Only run for merged PRs against the "main" or maintenance branches
# We allow this to run for `pull_request_target` so that github secrets are available
# (This is required when the PR comes from a forked repo)
on:
pull_request_target:
types: [ closed ]
branches:
- main
- 'dspace-**'
permissions:
contents: write # so action can add comments
pull-requests: write # so action can create pull requests
jobs:
port_pr:
runs-on: ubuntu-latest
# Don't run on closed *unmerged* pull requests
if: github.event.pull_request.merged
steps:
# Checkout code
- uses: actions/checkout@v4
# Port PR to other branch (ONLY if labeled with "port to")
# See https://github.com/korthout/backport-action
- name: Create backport pull requests
uses: korthout/backport-action@v2
with:
# Trigger based on a "port to [branch]" label on PR
# (This label must specify the branch name to port to)
label_pattern: '^port to ([^ ]+)$'
# Title to add to the (newly created) port PR
pull_title: '[Port ${target_branch}] ${pull_title}'
# Description to add to the (newly created) port PR
pull_description: 'Port of #${pull_number} by @${pull_author} to `${target_branch}`.'
# Copy all labels from original PR to (newly created) port PR
# NOTE: The labels matching 'label_pattern' are automatically excluded
copy_labels_pattern: '.*'
# Skip any merge commits in the ported PR. This means only non-merge commits are cherry-picked to the new PR
merge_commits: 'skip'
# Use a personal access token (PAT) to create PR as 'dspace-bot' user.
# A PAT is required in order for the new PR to trigger its own actions (for CI checks)
github_token: ${{ secrets.PR_PORT_TOKEN }}

View File

@@ -0,0 +1,24 @@
# This workflow runs whenever a new pull request is created
name: Pull Request opened
# Only run for newly opened PRs against the "main" or maintenance branches
# We allow this to run for `pull_request_target` so that github secrets are available
# (This is required to assign a PR back to the creator when the PR comes from a forked repo)
on:
pull_request_target:
types: [ opened ]
branches:
- main
- 'dspace-**'
permissions:
pull-requests: write
jobs:
automation:
runs-on: ubuntu-latest
steps:
# Assign the PR to whomever created it. This is useful for visualizing assignments on project boards
# See https://github.com/toshimaru/auto-author-assign
- name: Assign PR to creator
uses: toshimaru/auto-author-assign@v2.1.0

View File

@@ -0,0 +1,354 @@
#
# DSpace's reusable Docker build/push workflow.
#
# This is used by docker.yml for all Docker image builds
name: Reusable DSpace Docker Build
on:
workflow_call:
# Possible Inputs to this reusable job
inputs:
# Build name/id for this Docker build. Used for digest storage to avoid digest overlap between builds.
build_id:
required: true
type: string
# Requires the image name to build (e.g dspace/dspace-test)
image_name:
required: true
type: string
# Optionally the path to the Dockerfile to use for the build. (Default is [dockerfile_context]/Dockerfile)
dockerfile_path:
required: false
type: string
# Optionally the context directory to build the Dockerfile within. Defaults to "." (current directory)
dockerfile_context:
required: false
type: string
default: '.'
# Optionally a list of "additional_contexts" to pass to Dockerfile. Defaults to empty
dockerfile_additional_contexts:
required: false
type: string
default: ''
# If Docker image should have additional tag flavor details (e.g. a suffix), it may be passed in.
tags_flavor:
required: false
type: string
secrets:
# Requires that Docker login info be passed in as secrets.
DOCKER_USERNAME:
required: true
DOCKER_ACCESS_TOKEN:
required: true
# These URL secrets are optional. When specified & branch checks match, the redeployment code below will trigger.
# Therefore builds which need to trigger redeployment MUST specify these URLs. All others should leave them empty.
REDEPLOY_SANDBOX_URL:
required: false
REDEPLOY_DEMO_URL:
required: false
# Define shared default settings as environment variables
env:
IMAGE_NAME: ${{ inputs.image_name }}
# Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action)
# For a new commit on default branch (main), use the literal tag 'latest' on Docker image.
# For a new commit on other branches, use the branch name as the tag for Docker image.
# For a new tag, copy that tag name as the tag for Docker image.
# For a pull request, use the name of the base branch that the PR was created against or "latest" (for main).
# e.g. PR against 'main' will use "latest". a PR against 'dspace-7_x' will use 'dspace-7_x'.
IMAGE_TAGS: |
type=raw,value=latest,enable=${{ github.ref_name == github.event.repository.default_branch }}
type=ref,event=branch,enable=${{ github.ref_name != github.event.repository.default_branch }}
type=ref,event=tag
type=raw,value=${{ (github.event.pull_request.base.ref == github.event.repository.default_branch && 'latest') || github.event.pull_request.base.ref }},enable=${{ github.event_name == 'pull_request' }}
# Define default tag "flavor" for docker/metadata-action per
# https://github.com/docker/metadata-action#flavor-input
# We manage the 'latest' tag ourselves to the 'main' branch (see settings above)
TAGS_FLAVOR: |
latest=false
${{ inputs.tags_flavor }}
# When these URL variables are specified & required branch matches, then the sandbox or demo site will be redeployed.
# See "Redeploy" steps below for more details.
REDEPLOY_SANDBOX_URL: ${{ secrets.REDEPLOY_SANDBOX_URL }}
REDEPLOY_DEMO_URL: ${{ secrets.REDEPLOY_DEMO_URL }}
# Current DSpace maintenance branch (and architecture) which is deployed to demo.dspace.org / sandbox.dspace.org
# (NOTE: No deployment branch specified for sandbox.dspace.org as it uses the default_branch)
DEPLOY_DEMO_BRANCH: 'dspace-9_x'
DEPLOY_SANDBOX_BRANCH: 'main'
DEPLOY_ARCH: 'linux/amd64'
# Registry used during building of Docker images. (All images are later copied to docker.io registry)
# We use GitHub's Container Registry to avoid aggressive rate limits at DockerHub.
DOCKER_BUILD_REGISTRY: ghcr.io
jobs:
docker-build:
strategy:
matrix:
# Architectures / Platforms for which we will build Docker images
arch: [ 'linux/amd64', 'linux/arm64' ]
isPr:
- ${{ github.event_name == 'pull_request' }}
# If this is a PR, we ONLY build for AMD64. For PRs we only do a sanity check test to ensure Docker builds work.
# The below exclude therefore ensures we do NOT build ARM64 for PRs.
exclude:
- isPr: true
arch: linux/arm64
# If ARM64, then use the Ubuntu ARM64 runner. Otherwise, use the Ubuntu AMD64 runner
runs-on: ${{ matrix.arch == 'linux/arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
steps:
# This step converts the slashes in the "arch" matrix values above into dashes & saves to env.ARCH_NAME
# E.g. "linux/amd64" becomes "linux-amd64"
# This is necessary because all upload artifacts CANNOT have special chars (like slashes)
# NOTE: The regex-like syntax below is Bash Parameter Substitution
- name: Prepare
run: |
platform=${{ matrix.arch }}
echo "ARCH_NAME=${platform//\//-}" >> $GITHUB_ENV
# https://github.com/actions/checkout
- name: Checkout codebase
uses: actions/checkout@v4
# https://github.com/docker/login-action
# NOTE: This login occurs for BOTH non-PRs or PRs. PRs *must* also login to access private images from GHCR
# during the build process
- name: Login to ${{ env.DOCKER_BUILD_REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.DOCKER_BUILD_REGISTRY }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
# https://github.com/docker/setup-buildx-action
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
# https://github.com/docker/metadata-action
# Extract metadata used for Docker images in all build steps below
- name: Extract metadata (tags, labels) from GitHub for Docker image
id: meta_build
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKER_BUILD_REGISTRY }}/${{ env.IMAGE_NAME }}
tags: ${{ env.IMAGE_TAGS }}
flavor: ${{ env.TAGS_FLAVOR }}
#--------------------------------------------------------------------
# First, for all branch commits (non-PRs) we build the image & upload
# to GitHub Container Registry (GHCR). After uploading the image
# to GHCR, we store the image digest in an artifact, so we can
# create a merged manifest later (see 'docker-build_manifest' job).
#
# NOTE: We use GHCR in order to avoid aggressive rate limits at DockerHub.
#--------------------------------------------------------------------
# https://github.com/docker/build-push-action
- name: Build and push image to ${{ env.DOCKER_BUILD_REGISTRY }}
if: ${{ ! matrix.isPr }}
id: docker_build
uses: docker/build-push-action@v5
with:
build-contexts: |
${{ inputs.dockerfile_additional_contexts }}
context: ${{ inputs.dockerfile_context }}
file: ${{ inputs.dockerfile_path }}
# Tell DSpace's Docker files to use the build registry instead of DockerHub
build-args:
DOCKER_REGISTRY=${{ env.DOCKER_BUILD_REGISTRY }}
platforms: ${{ matrix.arch }}
push: true
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build.outputs.tags }}
labels: ${{ steps.meta_build.outputs.labels }}
# Use GitHub cache to load cached Docker images and cache the results of this build
# This decreases the number of images we need to fetch from DockerHub
cache-from: type=gha,scope=${{ inputs.build_id }}
cache-to: type=gha,scope=${{ inputs.build_id }},mode=min
# Export the digest of Docker build locally
- name: Export Docker build digest
if: ${{ ! matrix.isPr }}
run: |
mkdir -p /tmp/digests
digest="${{ steps.docker_build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
# Upload digest to an artifact, so that it can be used in combined manifest below
# (The purpose of the combined manifest is to list both amd64 and arm64 builds under same tag)
- name: Upload Docker build digest to artifact
if: ${{ ! matrix.isPr }}
uses: actions/upload-artifact@v4
with:
name: digests-${{ inputs.build_id }}-${{ env.ARCH_NAME }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
#------------------------------------------------------------------------------
# Second, we build the image again in order to store it in a local TAR file.
# This TAR of the image is cached/saved as an artifact, so that it can be used
# by later jobs to install the brand-new images for automated testing.
# This TAR build is performed BOTH for PRs and for branch commits (non-PRs).
#
# (This approach has the advantage of avoiding having to download the newly built
# image from DockerHub or GHCR during automated testing.)
#
# See the 'docker-deploy' job in docker.yml as an example of where this TAR is used.
#-------------------------------------------------------------------------------
# Build local image (again) and store in a TAR file in /tmp directory
# This step is only done for AMD64, as that's the only image we use in our automated testing (at this time).
# NOTE: This step cannot be combined with the build above as it's a different type of output.
- name: Build and push image to local TAR file
if: ${{ matrix.arch == 'linux/amd64'}}
uses: docker/build-push-action@v5
with:
build-contexts: |
${{ inputs.dockerfile_additional_contexts }}
context: ${{ inputs.dockerfile_context }}
file: ${{ inputs.dockerfile_path }}
# Tell DSpace's Docker files to use the build registry instead of DockerHub
build-args:
DOCKER_REGISTRY=${{ env.DOCKER_BUILD_REGISTRY }}
platforms: ${{ matrix.arch }}
tags: ${{ steps.meta_build.outputs.tags }}
labels: ${{ steps.meta_build.outputs.labels }}
# Use GitHub cache to load cached Docker images and cache the results of this build
# This decreases the number of images we need to fetch from DockerHub
cache-from: type=gha,scope=${{ inputs.build_id }}
cache-to: type=gha,scope=${{ inputs.build_id }},mode=min
# Export image to a local TAR file
outputs: type=docker,dest=/tmp/${{ inputs.build_id }}.tar
# Upload the local docker image (in TAR file) to a build Artifact
# This step is only done for AMD64, as that's the only image we use in our automated testing (at this time).
- name: Upload local image TAR to artifact
if: ${{ matrix.arch == 'linux/amd64'}}
uses: actions/upload-artifact@v4
with:
name: docker-image-${{ inputs.build_id }}-${{ env.ARCH_NAME }}
path: /tmp/${{ inputs.build_id }}.tar
if-no-files-found: error
retention-days: 1
##########################################################################################
# Merge Docker digests (from various architectures) into a single manifest.
# This runs after all Docker builds complete above. The purpose is to include all builds
# under a single manifest for this tag.
# (e.g. both linux/amd64 and linux/arm64 should be listed under the same tagged Docker image)
##########################################################################################
docker-build_manifest:
# Only run if this is NOT a PR
if: ${{ github.event_name != 'pull_request' }}
runs-on: ubuntu-latest
needs:
- docker-build
steps:
- name: Download Docker build digests
uses: actions/download-artifact@v4
with:
path: /tmp/digests
# Download digests for both AMD64 and ARM64 into same directory
pattern: digests-${{ inputs.build_id }}-*
merge-multiple: true
- name: Login to ${{ env.DOCKER_BUILD_REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.DOCKER_BUILD_REGISTRY }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Add Docker metadata for image
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKER_BUILD_REGISTRY }}/${{ env.IMAGE_NAME }}
tags: ${{ env.IMAGE_TAGS }}
flavor: ${{ env.TAGS_FLAVOR }}
- name: Create manifest list from digests and push to ${{ env.DOCKER_BUILD_REGISTRY }}
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.DOCKER_BUILD_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
- name: Inspect manifest in ${{ env.DOCKER_BUILD_REGISTRY }}
run: |
docker buildx imagetools inspect ${{ env.DOCKER_BUILD_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}
##########################################################################################
# Copy images / manifest to DockerHub.
# This MUST run after *both* images (AMD64 and ARM64) are built and uploaded to GitHub
# Container Registry (GHCR). Attempting to run this in parallel to GHCR builds can result
# in a race condition...i.e. the copy to DockerHub may fail if GHCR image has been updated
# at the moment when the copy occurs.
##########################################################################################
docker-copy_to_dockerhub:
# Only run if this is NOT a PR
if: ${{ github.event_name != 'pull_request' }}
runs-on: ubuntu-latest
needs:
- docker-build_manifest
steps:
# 'regctl' is used to more easily copy the image to DockerHub and obtain the digest from DockerHub
# See https://github.com/regclient/regclient/blob/main/docs/regctl.md
- name: Install regctl for Docker registry tools
uses: regclient/actions/regctl-installer@main
with:
release: 'v0.8.0'
# This recreates Docker tags for DockerHub
- name: Add Docker metadata for image
id: meta_dockerhub
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE_NAME }}
tags: ${{ env.IMAGE_TAGS }}
flavor: ${{ env.TAGS_FLAVOR }}
# Login to source registry first, as this is where we are copying *from*
- name: Login to ${{ env.DOCKER_BUILD_REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.DOCKER_BUILD_REGISTRY }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
# Login to DockerHub, since this is where we are copying *to*
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
# Copy the image from source to DockerHub
- name: Copy image from ${{ env.DOCKER_BUILD_REGISTRY }} to docker.io
run: |
regctl image copy ${{ env.DOCKER_BUILD_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta_dockerhub.outputs.version }} docker.io/${{ env.IMAGE_NAME }}:${{ steps.meta_dockerhub.outputs.version }}
#--------------------------------------------------------------------
# Finally, check whether demo.dspace.org or sandbox.dspace.org need
# to be redeployed based on these new DockerHub images.
#--------------------------------------------------------------------
# If this build is for the branch that Sandbox uses and passed in a REDEPLOY_SANDBOX_URL secret,
# Then redeploy https://sandbox.dspace.org
- name: Redeploy sandbox.dspace.org (based on main branch)
if: |
env.REDEPLOY_SANDBOX_URL != '' &&
github.ref_name == env.DEPLOY_SANDBOX_BRANCH
run: |
curl -X POST $REDEPLOY_SANDBOX_URL
# If this build is for the branch that Demo uses and passed in a REDEPLOY_DEMO_URL secret,
# Then redeploy https://demo.dspace.org
- name: Redeploy demo.dspace.org (based on maintenance branch)
if: |
env.REDEPLOY_DEMO_URL != '' &&
github.ref_name == env.DEPLOY_DEMO_BRANCH
run: |
curl -X POST $REDEPLOY_DEMO_URL

1
.gitignore vendored
View File

@@ -10,6 +10,7 @@ tags
.project
.classpath
.checkstyle
.factorypath
## Ignore project files created by IntelliJ IDEA
*.iml

45
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,45 @@
# How to Contribute
DSpace is a community built and supported project. We do not have a centralized development or support team, but have a dedicated group of volunteers who help us improve the software, documentation, resources, etc.
* [Contribute new code via a Pull Request](#contribute-new-code-via-a-pull-request)
* [Contribute documentation](#contribute-documentation)
* [Help others on mailing lists or Slack](#help-others-on-mailing-lists-or-slack)
* [Join a working or interest group](#join-a-working-or-interest-group)
## Contribute new code via a Pull Request
We accept [GitHub Pull Requests (PRs)](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) at any time from anyone.
Contributors to each release are recognized in our [Release Notes](https://wiki.lyrasis.org/display/DSDOC7x/Release+Notes).
Code Contribution Checklist
- [ ] PRs _should_ be smaller in size (ideally less than 1,000 lines of code, not including comments & tests)
- [ ] PRs **must** pass Checkstyle validation based on our [Code Style Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Style+Guide).
- [ ] PRs **must** include Javadoc for _all new/modified public methods and classes_. Larger private methods should also have Javadoc
- [ ] PRs **must** pass all automated tests and include new/updated Unit or Integration tests based on our [Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Testing+Guide).
- [ ] If a PR includes new libraries/dependencies (in any `pom.xml`), then their software licenses **must** align with the [DSpace BSD License](https://github.com/DSpace/DSpace/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation.
- [ ] Basic technical documentation _should_ be provided for any new features or changes to the REST API. REST API changes should be documented in our [Rest Contract](https://github.com/DSpace/RestContract).
- [ ] If a PR fixes an issue ticket, please [link them together](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue).
Additional details on the code contribution process can be found in our [Code Contribution Guidelines](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines)
## Contribute documentation
DSpace Documentation is a collaborative effort in a shared Wiki. The latest documentation is at https://wiki.lyrasis.org/display/DSDOC7x
If you find areas of the DSpace Documentation which you wish to improve, please request a Wiki account by emailing wikihelp@lyrasis.org.
Once you have an account setup, contact @tdonohue (via [Slack](https://wiki.lyrasis.org/display/DSPACE/Slack) or email) for access to edit our Documentation.
## Help others on mailing lists or Slack
DSpace has our own [Slack](https://wiki.lyrasis.org/display/DSPACE/Slack) community and [Mailing Lists](https://wiki.lyrasis.org/display/DSPACE/Mailing+Lists) where discussions take place and questions are answered.
Anyone is welcome to join and help others. We just ask you to follow our [Code of Conduct](https://www.lyrasis.org/about/Pages/Code-of-Conduct.aspx) (adopted via LYRASIS).
## Join a working or interest group
Most of the work in building/improving DSpace comes via [Working Groups](https://wiki.lyrasis.org/display/DSPACE/DSpace+Working+Groups) or [Interest Groups](https://wiki.lyrasis.org/display/DSPACE/DSpace+Interest+Groups).
All working/interest groups are open to anyone to join and participate. A few key groups to be aware of include:
* [DSpace 7 Working Group](https://wiki.lyrasis.org/display/DSPACE/DSpace+7+Working+Group) - This is the main (mostly volunteer) development team. We meet weekly to review our current development [project board](https://github.com/orgs/DSpace/projects), assigning tickets and/or PRs.
* [DSpace Community Advisory Team (DCAT)](https://wiki.lyrasis.org/display/cmtygp/DSpace+Community+Advisory+Team) - This is an interest group for repository managers/administrators. We meet monthly to discuss DSpace, share tips & provide feedback back to developers.

View File

@@ -6,9 +6,14 @@
# This Dockerfile uses JDK11 by default, but has also been tested with JDK17.
# To build with JDK17, use "--build-arg JDK_VERSION=17"
ARG JDK_VERSION=11
# The Docker version tag to build from
ARG DSPACE_VERSION=dspace-7_x
# The Docker registry to use for DSpace images. Defaults to "docker.io"
# NOTE: non-DSpace images are hardcoded to use "docker.io" and are not impacted by this build argument
ARG DOCKER_REGISTRY=docker.io
# Step 1 - Run Maven Build
FROM dspace/dspace-dependencies:dspace-7_x as build
FROM ${DOCKER_REGISTRY}/dspace/dspace-dependencies:${DSPACE_VERSION} AS build
ARG TARGET_DIR=dspace-installer
WORKDIR /app
# The dspace-installer directory will be written to /install
@@ -20,40 +25,46 @@ USER dspace
ADD --chown=dspace . /app/
# Build DSpace (note: this build doesn't include the optional, deprecated "dspace-rest" webapp)
# Copy the dspace-installer directory to /install. Clean up the build to keep the docker image small
RUN mvn --no-transfer-progress package && \
# Maven flags here ensure that we skip building test environment and skip all code verification checks.
# These flags speed up this compilation as much as reasonably possible.
ENV MAVEN_FLAGS="-P-test-environment -Denforcer.skip=true -Dcheckstyle.skip=true -Dlicense.skip=true -Dxml.skip=true"
RUN mvn --no-transfer-progress package ${MAVEN_FLAGS} && \
mv /app/dspace/target/${TARGET_DIR}/* /install && \
mvn clean
# Step 2 - Run Ant Deploy
FROM openjdk:${JDK_VERSION}-slim as ant_build
FROM docker.io/eclipse-temurin:${JDK_VERSION} AS ant_build
ARG TARGET_DIR=dspace-installer
# COPY the /install directory from 'build' container to /dspace-src in this container
COPY --from=build /install /dspace-src
WORKDIR /dspace-src
# Create the initial install deployment using ANT
ENV ANT_VERSION 1.10.12
ENV ANT_HOME /tmp/ant-$ANT_VERSION
ENV PATH $ANT_HOME/bin:$PATH
# Need wget to install ant
RUN apt-get update \
&& apt-get install -y --no-install-recommends wget \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*
ENV ANT_VERSION=1.10.13
ENV ANT_HOME=/tmp/ant-$ANT_VERSION
ENV PATH=$ANT_HOME/bin:$PATH
# Download and install 'ant'
RUN mkdir $ANT_HOME && \
wget -qO- "https://archive.apache.org/dist/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" | tar -zx --strip-components=1 -C $ANT_HOME
curl --silent --show-error --location --fail --retry 5 --output /tmp/apache-ant.tar.gz \
https://archive.apache.org/dist/ant/binaries/apache-ant-${ANT_VERSION}-bin.tar.gz && \
tar -zx --strip-components=1 -f /tmp/apache-ant.tar.gz -C $ANT_HOME && \
rm /tmp/apache-ant.tar.gz
# Run necessary 'ant' deploy scripts
RUN ant init_installation update_configs update_code update_webapps
# Step 3 - Run tomcat
# Create a new tomcat image that does not retain the the build directory contents
FROM tomcat:9-jdk${JDK_VERSION}
FROM docker.io/tomcat:9-jdk${JDK_VERSION}
# NOTE: DSPACE_INSTALL must align with the "dspace.dir" default configuration.
ENV DSPACE_INSTALL=/dspace
# Copy the /dspace directory from 'ant_build' containger to /dspace in this container
# Copy the /dspace directory from 'ant_build' container to /dspace in this container
COPY --from=ant_build /dspace $DSPACE_INSTALL
# Expose Tomcat port and AJP port
EXPOSE 8080 8009
# Need host command for "[dspace]/bin/make-handle-config"
RUN apt-get update \
&& apt-get install -y --no-install-recommends host \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*
# Expose Tomcat port (8080) and AJP port (8009) and Handle Server HTTP port (8000)
EXPOSE 8080 8009 8000
# Give java extra memory (2GB)
ENV JAVA_OPTS=-Xmx2000m

View File

@@ -6,9 +6,14 @@
# This Dockerfile uses JDK11 by default, but has also been tested with JDK17.
# To build with JDK17, use "--build-arg JDK_VERSION=17"
ARG JDK_VERSION=11
# The Docker version tag to build from
ARG DSPACE_VERSION=dspace-7_x
# The Docker registry to use for DSpace images. Defaults to "docker.io"
# NOTE: non-DSpace images are hardcoded to use "docker.io" and are not impacted by this build argument
ARG DOCKER_REGISTRY=docker.io
# Step 1 - Run Maven Build
FROM dspace/dspace-dependencies:dspace-7_x as build
FROM ${DOCKER_REGISTRY}/dspace/dspace-dependencies:${DSPACE_VERSION} AS build
ARG TARGET_DIR=dspace-installer
WORKDIR /app
# The dspace-installer directory will be written to /install
@@ -24,31 +29,34 @@ RUN mvn --no-transfer-progress package && \
mvn clean
# Step 2 - Run Ant Deploy
FROM openjdk:${JDK_VERSION}-slim as ant_build
FROM docker.io/eclipse-temurin:${JDK_VERSION} AS ant_build
ARG TARGET_DIR=dspace-installer
# COPY the /install directory from 'build' container to /dspace-src in this container
COPY --from=build /install /dspace-src
WORKDIR /dspace-src
# Create the initial install deployment using ANT
ENV ANT_VERSION 1.10.12
ENV ANT_HOME /tmp/ant-$ANT_VERSION
ENV PATH $ANT_HOME/bin:$PATH
# Need wget to install ant
RUN apt-get update \
&& apt-get install -y --no-install-recommends wget \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*
ENV ANT_VERSION=1.10.13
ENV ANT_HOME=/tmp/ant-$ANT_VERSION
ENV PATH=$ANT_HOME/bin:$PATH
# Download and install 'ant'
RUN mkdir $ANT_HOME && \
wget -qO- "https://archive.apache.org/dist/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" | tar -zx --strip-components=1 -C $ANT_HOME
curl --silent --show-error --location --fail --retry 5 --output /tmp/apache-ant.tar.gz \
https://archive.apache.org/dist/ant/binaries/apache-ant-${ANT_VERSION}-bin.tar.gz && \
tar -zx --strip-components=1 -f /tmp/apache-ant.tar.gz -C $ANT_HOME && \
rm /tmp/apache-ant.tar.gz
# Run necessary 'ant' deploy scripts
RUN ant init_installation update_configs update_code
# Step 3 - Run jdk
FROM openjdk:${JDK_VERSION}
FROM docker.io/eclipse-temurin:${JDK_VERSION}
# NOTE: DSPACE_INSTALL must align with the "dspace.dir" default configuration.
ENV DSPACE_INSTALL=/dspace
# Copy the /dspace directory from 'ant_build' container to /dspace in this container
COPY --from=ant_build /dspace $DSPACE_INSTALL
# Give java extra memory (1GB)
ENV JAVA_OPTS=-Xmx1000m
# Install unzip for AIPs
RUN apt-get update \
&& apt-get install -y --no-install-recommends unzip \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -6,8 +6,8 @@
# To build with JDK17, use "--build-arg JDK_VERSION=17"
ARG JDK_VERSION=11
# Step 1 - Run Maven Build
FROM maven:3-openjdk-${JDK_VERSION}-slim as build
# Step 1 - Download all Dependencies
FROM docker.io/maven:3-eclipse-temurin-${JDK_VERSION} AS build
ARG TARGET_DIR=dspace-installer
WORKDIR /app
# Create the 'dspace' user account & home directory
@@ -15,22 +15,64 @@ RUN useradd dspace \
&& mkdir -p /home/dspace \
&& chown -Rv dspace: /home/dspace
RUN chown -Rv dspace: /app
# Need git to support buildnumber-maven-plugin, which lets us know what version of DSpace is being run.
RUN apt-get update \
&& apt-get install -y --no-install-recommends git \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*
# Switch to dspace user & run below commands as that user
USER dspace
# Copy the DSpace source code (from local machine) into the workdir (excluding .dockerignore contents)
ADD --chown=dspace . /app/
# This next part may look odd, but it speeds up the build of this image *significantly*.
# Copy ONLY the POMs to this image (from local machine). This will allow us to download all dependencies *without*
# performing any code compilation steps.
# Parent POM
ADD --chown=dspace pom.xml /app/
RUN mkdir -p /app/dspace
# 'dspace' module POM. Includes 'additions' ONLY, as it's the only submodule that is required to exist.
ADD --chown=dspace dspace/pom.xml /app/dspace/
RUN mkdir -p /app/dspace/modules/
ADD --chown=dspace dspace/modules/pom.xml /app/dspace/modules/
RUN mkdir -p /app/dspace/modules/additions
ADD --chown=dspace dspace/modules/additions/pom.xml /app/dspace/modules/additions/
# 'dspace-api' module POM
RUN mkdir -p /app/dspace-api
ADD --chown=dspace dspace-api/pom.xml /app/dspace-api/
# 'dspace-iiif' module POM
RUN mkdir -p /app/dspace-iiif
ADD --chown=dspace dspace-iiif/pom.xml /app/dspace-iiif/
# 'dspace-oai' module POM
RUN mkdir -p /app/dspace-oai
ADD --chown=dspace dspace-oai/pom.xml /app/dspace-oai/
# 'dspace-rdf' module POM
RUN mkdir -p /app/dspace-rdf
ADD --chown=dspace dspace-rdf/pom.xml /app/dspace-rdf/
# 'dspace-server-webapp' module POM
RUN mkdir -p /app/dspace-server-webapp
ADD --chown=dspace dspace-server-webapp/pom.xml /app/dspace-server-webapp/
# 'dspace-services' module POM
RUN mkdir -p /app/dspace-services
ADD --chown=dspace dspace-services/pom.xml /app/dspace-services/
# 'dspace-sword' module POM
RUN mkdir -p /app/dspace-sword
ADD --chown=dspace dspace-sword/pom.xml /app/dspace-sword/
# 'dspace-swordv2' module POM
RUN mkdir -p /app/dspace-swordv2
ADD --chown=dspace dspace-swordv2/pom.xml /app/dspace-swordv2/
# Trigger the installation of all maven dependencies (hide download progress messages)
RUN mvn --no-transfer-progress package
# Maven flags here ensure that we skip final assembly, skip building test environment and skip all code verification checks.
# These flags speed up this installation and skip tasks we cannot perform as we don't have the full source code.
ENV MAVEN_FLAGS="-P-assembly -P-test-environment -Denforcer.skip=true -Dcheckstyle.skip=true -Dlicense.skip=true -Dxjc.skip=true -Dxml.skip=true"
RUN mvn --no-transfer-progress verify ${MAVEN_FLAGS}
# Clear the contents of the /app directory (including all maven builds), so no artifacts remain.
# Clear the contents of the /app directory (including all maven target folders), so no artifacts remain.
# This ensures when dspace:dspace is built, it will use the Maven local cache (~/.m2) for dependencies
USER root
RUN rm -rf /app/*

View File

@@ -8,9 +8,14 @@
# This Dockerfile uses JDK11 by default, but has also been tested with JDK17.
# To build with JDK17, use "--build-arg JDK_VERSION=17"
ARG JDK_VERSION=11
# The Docker version tag to build from
ARG DSPACE_VERSION=dspace-7_x
# The Docker registry to use for DSpace images. Defaults to "docker.io"
# NOTE: non-DSpace images are hardcoded to use "docker.io" and are not impacted by this build argument
ARG DOCKER_REGISTRY=docker.io
# Step 1 - Run Maven Build
FROM dspace/dspace-dependencies:dspace-7_x as build
FROM ${DOCKER_REGISTRY}/dspace/dspace-dependencies:${DSPACE_VERSION} AS build
ARG TARGET_DIR=dspace-installer
WORKDIR /app
# The dspace-installer directory will be written to /install
@@ -27,40 +32,45 @@ RUN mvn --no-transfer-progress package -Pdspace-rest && \
mvn clean
# Step 2 - Run Ant Deploy
FROM openjdk:${JDK_VERSION}-slim as ant_build
FROM docker.io/eclipse-temurin:${JDK_VERSION} AS ant_build
ARG TARGET_DIR=dspace-installer
# COPY the /install directory from 'build' container to /dspace-src in this container
COPY --from=build /install /dspace-src
WORKDIR /dspace-src
# Create the initial install deployment using ANT
ENV ANT_VERSION 1.10.12
ENV ANT_HOME /tmp/ant-$ANT_VERSION
ENV PATH $ANT_HOME/bin:$PATH
# Need wget to install ant
RUN apt-get update \
&& apt-get install -y --no-install-recommends wget \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*
ENV ANT_VERSION=1.10.12
ENV ANT_HOME=/tmp/ant-$ANT_VERSION
ENV PATH=$ANT_HOME/bin:$PATH
# Download and install 'ant'
RUN mkdir $ANT_HOME && \
wget -qO- "https://archive.apache.org/dist/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" | tar -zx --strip-components=1 -C $ANT_HOME
curl --silent --show-error --location --fail --retry 5 --output /tmp/apache-ant.tar.gz \
https://archive.apache.org/dist/ant/binaries/apache-ant-${ANT_VERSION}-bin.tar.gz && \
tar -zx --strip-components=1 -f /tmp/apache-ant.tar.gz -C $ANT_HOME && \
rm /tmp/apache-ant.tar.gz
# Run necessary 'ant' deploy scripts
RUN ant init_installation update_configs update_code update_webapps
# Step 3 - Run tomcat
# Create a new tomcat image that does not retain the the build directory contents
FROM tomcat:9-jdk${JDK_VERSION}
FROM docker.io/tomcat:9-jdk${JDK_VERSION}
ENV DSPACE_INSTALL=/dspace
ENV TOMCAT_INSTALL=/usr/local/tomcat
# Copy the /dspace directory from 'ant_build' containger to /dspace in this container
COPY --from=ant_build /dspace $DSPACE_INSTALL
# Need host command for "[dspace]/bin/make-handle-config"
RUN apt-get update \
&& apt-get install -y --no-install-recommends host \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*
# Enable the AJP connector in Tomcat's server.xml
# NOTE: secretRequired="false" should only be used when AJP is NOT accessible from an external network. But, secretRequired="true" isn't supported by mod_proxy_ajp until Apache 2.5
RUN sed -i '/Service name="Catalina".*/a \\n <Connector protocol="AJP/1.3" port="8009" address="0.0.0.0" redirectPort="8443" URIEncoding="UTF-8" secretRequired="false" />' $TOMCAT_INSTALL/conf/server.xml
# Expose Tomcat port and AJP port
EXPOSE 8080 8009
EXPOSE 8080 8009 8000
# Give java extra memory (2GB)
ENV JAVA_OPTS=-Xmx2000m
# Set up debugging
ENV CATALINA_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:8000
# Link the DSpace 'server' webapp into Tomcat's webapps directory.
# This ensures that when we start Tomcat, it runs from /server path (e.g. http://localhost:8080/server/)

File diff suppressed because it is too large Load Diff

View File

@@ -48,18 +48,7 @@ See [Running DSpace 7 with Docker Compose](dspace/src/main/docker-compose/README
## Contributing
DSpace is a community built and supported project. We do not have a centralized development or support team,
but have a dedicated group of volunteers who help us improve the software, documentation, resources, etc.
We welcome contributions of any type. Here's a few basic guides that provide suggestions for contributing to DSpace:
* [How to Contribute to DSpace](https://wiki.lyrasis.org/display/DSPACE/How+to+Contribute+to+DSpace): How to contribute in general (via code, documentation, bug reports, expertise, etc)
* [Code Contribution Guidelines](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines): How to give back code or contribute features, bug fixes, etc.
* [DSpace Community Advisory Team (DCAT)](https://wiki.lyrasis.org/display/cmtygp/DSpace+Community+Advisory+Team): If you are not a developer, we also have an interest group specifically for repository managers. The DCAT group meets virtually, once a month, and sends open invitations to join their meetings via the [DCAT mailing list](https://groups.google.com/d/forum/DSpaceCommunityAdvisoryTeam).
We also encourage GitHub Pull Requests (PRs) at any time. Please see our [Development with Git](https://wiki.lyrasis.org/display/DSPACE/Development+with+Git) guide for more info.
In addition, a listing of all known contributors to DSpace software can be
found online at: https://wiki.lyrasis.org/display/DSPACE/DSpaceContributors
See [Contributing documentation](CONTRIBUTING.md)
## Getting Help

View File

@@ -7,4 +7,5 @@
<!-- TODO: We should have these turned on. But, currently there's a known bug with indentation checks
on JMockIt Expectations blocks and similar. See https://github.com/checkstyle/checkstyle/issues/3739 -->
<suppress checks="Indentation" files="src[/\\]test[/\\]java"/>
<suppress checks="Regexp" files="DSpaceHttpClientFactory\.java"/>
</suppressions>

View File

@@ -92,9 +92,7 @@ For more information on CheckStyle configurations below, see: http://checkstyle.
<!-- Requirements for Javadocs for methods -->
<module name="JavadocMethod">
<!-- All public methods MUST HAVE Javadocs -->
<!-- <property name="scope" value="public"/> -->
<!-- TODO: Above rule has been disabled because of large amount of missing public method Javadocs -->
<property name="scope" value="nothing"/>
<property name="accessModifiers" value="public"/>
<!-- Allow params, throws and return tags to be optional -->
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
@@ -138,5 +136,22 @@ For more information on CheckStyle configurations below, see: http://checkstyle.
<module name="OneStatementPerLine"/>
<!-- Require that "catch" statements are not empty (must at least contain a comment) -->
<module name="EmptyCatchBlock"/>
<!-- Require to use DSpaceHttpClientFactory.getClient() statement instead of creating directly the client -->
<module name="Regexp">
<property name="format" value="HttpClientBuilder\.create\s*\(\s*\)" />
<property name="message" value="Use DSpaceHttpClientFactory.getClient() instead of HttpClientBuilder.create()" />
<property name="illegalPattern" value="true"/>
<property name="ignoreComments" value="true"/>
</module>
<!-- Require to use DSpaceHttpClientFactory.getClient() statement instead of creating directly the client -->
<module name="Regexp">
<property name="format" value="HttpClients\.createDefault\s*\(\s*\)" />
<property name="message" value="Use DSpaceHttpClientFactory.getClient() instead of HttpClients.createDefault()" />
<property name="illegalPattern" value="true"/>
<property name="ignoreComments" value="true"/>
</module>
</module>
</module>

View File

@@ -1,8 +1,12 @@
version: "3.7"
networks:
# Default to using network named 'dspacenet' from docker-compose.yml.
# Its full name will be prepended with the project name (e.g. "-p d7" means it will be named "d7_dspacenet")
default:
name: ${COMPOSE_PROJECT_NAME}_dspacenet
external: true
services:
dspace-cli:
image: "${DOCKER_OWNER:-dspace}/dspace-cli:${DSPACE_VER:-dspace-7_x}"
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace-cli:${DSPACE_VER:-dspace-7_x}"
container_name: dspace-cli
build:
context: .
@@ -26,13 +30,8 @@ services:
- ./dspace/config:/dspace/config
entrypoint: /dspace/bin/dspace
command: help
networks:
- dspacenet
tty: true
stdin_open: true
volumes:
assetstore:
networks:
dspacenet:

View File

@@ -1,4 +1,3 @@
version: '3.7'
networks:
dspacenet:
ipam:
@@ -28,19 +27,22 @@ services:
# proxies.trusted.ipranges: This setting is required for a REST API running in Docker to trust requests
# from the host machine. This IP range MUST correspond to the 'dspacenet' subnet defined above.
proxies__P__trusted__P__ipranges: '172.23.0'
image: "${DOCKER_OWNER:-dspace}/dspace:${DSPACE_VER:-dspace-7_x-test}"
LOGGING_CONFIG: /dspace/config/log4j2-container.xml
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace:${DSPACE_VER:-dspace-7_x-test}"
build:
context: .
dockerfile: Dockerfile.test
depends_on:
- dspacedb
networks:
dspacenet:
- dspacenet
ports:
- published: 8080
target: 8080
- published: 8009
target: 8009
- published: 8000
target: 8000
stdin_open: true
tty: true
volumes:
@@ -60,13 +62,17 @@ services:
while (!</dev/tcp/dspacedb/5432) > /dev/null 2>&1; do sleep 1; done;
/dspace/bin/dspace database migrate
catalina.sh run
# DSpace database container
# DSpace PostgreSQL database container
dspacedb:
container_name: dspacedb
# Uses a custom Postgres image with pgcrypto installed
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-dspace-7_x}"
build:
# Must build out of subdirectory to have access to install script for pgcrypto
context: ./dspace/src/main/docker/dspace-postgres-pgcrypto/
environment:
PGDATA: /pgdata
# Uses a custom Postgres image with pgcrypto installed
image: dspace/dspace-postgres-pgcrypto
POSTGRES_PASSWORD: dspace
networks:
dspacenet:
ports:
@@ -75,12 +81,19 @@ services:
stdin_open: true
tty: true
volumes:
# Keep Postgres data directory between reboots
- pgdata:/pgdata
# DSpace Solr container
dspacesolr:
container_name: dspacesolr
# Uses official Solr image at https://hub.docker.com/_/solr/
image: solr:8.11-slim
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace-solr:${DSPACE_VER:-dspace-7_x}"
build:
context: ./dspace/src/main/docker/dspace-solr/
# Provide path to Solr configs necessary to build Docker image
additional_contexts:
solrconfigs: ./dspace/solr/
args:
SOLR_VERSION: "${SOLR_VER:-8.11}"
networks:
dspacenet:
ports:
@@ -90,30 +103,25 @@ services:
tty: true
working_dir: /var/solr/data
volumes:
# Mount our local Solr core configs so that they are available as Solr configsets on container
- ./dspace/solr/authority:/opt/solr/server/solr/configsets/authority
- ./dspace/solr/oai:/opt/solr/server/solr/configsets/oai
- ./dspace/solr/search:/opt/solr/server/solr/configsets/search
- ./dspace/solr/statistics:/opt/solr/server/solr/configsets/statistics
# Keep Solr data directory between reboots
- solr_data:/var/solr/data
# Initialize all DSpace Solr cores using the mounted local configsets (see above), then start Solr
# Initialize all DSpace Solr cores then start Solr:
# * First, run precreate-core to create the core (if it doesn't yet exist). If exists already, this is a no-op
# * Second, copy updated configs from mounted configsets to this core. If it already existed, this updates core
# to the latest configs. If it's a newly created core, this is a no-op.
# * Second, copy configsets to this core:
# Updates to Solr configs require the container to be rebuilt/restarted: `docker compose -p d7 up -d --build dspacesolr`
entrypoint:
- /bin/bash
- '-c'
- |
init-var-solr
precreate-core authority /opt/solr/server/solr/configsets/authority
cp -r -u /opt/solr/server/solr/configsets/authority/* authority
cp -r /opt/solr/server/solr/configsets/authority/* authority
precreate-core oai /opt/solr/server/solr/configsets/oai
cp -r -u /opt/solr/server/solr/configsets/oai/* oai
cp -r /opt/solr/server/solr/configsets/oai/* oai
precreate-core search /opt/solr/server/solr/configsets/search
cp -r -u /opt/solr/server/solr/configsets/search/* search
cp -r /opt/solr/server/solr/configsets/search/* search
precreate-core statistics /opt/solr/server/solr/configsets/statistics
cp -r -u /opt/solr/server/solr/configsets/statistics/* statistics
cp -r /opt/solr/server/solr/configsets/statistics/* statistics
exec solr -f
volumes:
assetstore:

View File

@@ -12,7 +12,7 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>7.3</version>
<version>7.6.6-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
@@ -99,24 +99,13 @@
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>maven-version</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<version>3.2.1</version>
<configuration>
<revisionOnScmFailure>UNKNOWN_REVISION</revisionOnScmFailure>
</configuration>
<executions>
<execution>
<phase>validate</phase>
@@ -393,6 +382,13 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<exclusions>
<!-- Spring JCL is unnecessary and conflicts with commons-logging when both are on classpath -->
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
@@ -417,38 +413,15 @@
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</exclusion>
<!-- Newer version of Jetty in our parent POM & via Solr -->
<!-- Excluded BouncyCastle dependencies because we use a later version of BouncyCastle.
Having two versions of BouncyCastle in the classpath can cause Handle Server to throw errors. -->
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-java-server</artifactId>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-deploy</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-xml</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-common</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-server</artifactId>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</exclusion>
</exclusions>
</dependency>
@@ -488,10 +461,6 @@
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
@@ -525,12 +494,6 @@
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<exclusions>
<exclusion>
<artifactId>xom</artifactId>
<groupId>xom</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jdom</groupId>
@@ -548,17 +511,11 @@
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
</dependency>
<!-- Codebase at https://github.com/OCLC-Research/oaiharvester2/ -->
<!-- Codebase at https://github.com/DSpace/oclc-harvester2 -->
<dependency>
<groupId>org.dspace</groupId>
<artifactId>oclc-harvester2</artifactId>
</dependency>
<!-- Xalan is REQUIRED by 'oclc-harvester2' listed above (OAI harvesting fails without it).
Please do NOT use Xalan in DSpace codebase as it is not well maintained. -->
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
</dependency>
<dependency>
<groupId>org.dspace</groupId>
<artifactId>dspace-services</artifactId>
@@ -570,7 +527,7 @@
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<artifactId>hamcrest</artifactId>
<scope>test</scope>
</dependency>
<dependency>
@@ -600,7 +557,7 @@
<dependency>
<groupId>org.jbibtex</groupId>
<artifactId>jbibtex</artifactId>
<version>1.0.10</version>
<version>1.0.20</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
@@ -628,26 +585,6 @@
<artifactId>solr-core</artifactId>
<scope>test</scope>
<version>${solr.client.version}</version>
<exclusions>
<!-- Newer version brought in by opencsv -->
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
</exclusion>
<!-- Newer Jetty version brought in via Parent POM -->
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
@@ -682,7 +619,7 @@
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
<version>2.11.0</version>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
@@ -691,7 +628,7 @@
<dependency>
<groupId>dnsjava</groupId>
<artifactId>dnsjava</artifactId>
<version>2.1.7</version>
<version>3.6.3</version>
</dependency>
<dependency>
@@ -727,7 +664,7 @@
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>8.4.4</version>
<version>8.5.13</version>
</dependency>
<!-- Google Analytics -->
@@ -801,7 +738,7 @@
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.12.116</version>
<version>1.12.792</version>
</dependency>
<dependency>
@@ -835,7 +772,7 @@
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
<version>20231013</version>
</dependency>
<!-- Useful for testing command-line tools -->
@@ -850,7 +787,7 @@
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.2</version>
<version>5.12.0</version>
</dependency>
<!-- Email templating -->
@@ -865,10 +802,11 @@
<scope>test</scope>
</dependency>
<dependency>
<dependency>
<groupId>org.apache.bcel</groupId>
<artifactId>bcel</artifactId>
<version>6.4.0</version>
<version>6.10.0</version>
<scope>test</scope>
</dependency>
<!-- required for openaire api integration -->
@@ -876,12 +814,19 @@
<groupId>eu.openaire</groupId>
<artifactId>funders-model</artifactId>
<version>2.0.0</version>
<exclusions>
<!-- Newer version pulled in via Jersey below -->
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-junit-rule</artifactId>
<version>5.11.2</version>
<version>5.15.0</version>
<scope>test</scope>
<exclusions>
<!-- Exclude snakeyaml to avoid conflicts with: spring-boot-starter-cache -->
@@ -891,52 +836,76 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.findify</groupId>
<artifactId>s3mock_2.13</artifactId>
<version>0.2.6</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>com.amazonawsl</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</exclusion>
<exclusion>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- for mockserver -->
<!-- Solve dependency convergence issues related to
<!-- Solve dependency convergence issues related to Solr and
'mockserver-junit-rule' by selecting the versions we want to use. -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
<version>4.1.68.Final</version>
<version>4.2.6.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport</artifactId>
<version>4.1.68.Final</version>
<version>4.2.6.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-unix-common</artifactId>
<version>4.2.6.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-common</artifactId>
<version>4.1.68.Final</version>
<version>4.2.6.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-handler</artifactId>
<version>4.1.68.Final</version>
<version>4.2.6.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec</artifactId>
<version>4.1.68.Final</version>
<version>4.2.6.Final</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-core</artifactId>
<version>2.8.0</version>
<version>2.10.4</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -955,9 +924,10 @@
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-core</artifactId>
<version>1.6.2</version>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.13.16</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>

View File

@@ -22,9 +22,21 @@ public interface AccessStatusHelper {
*
* @param context the DSpace context
* @param item the item
* @param threshold the embargo threshold date
* @return an access status value
* @throws SQLException An exception that provides information on a database access error or other errors.
*/
public String getAccessStatusFromItem(Context context, Item item, Date threshold)
throws SQLException;
/**
* Retrieve embargo information for the item
*
* @param context the DSpace context
* @param item the item to check for embargo information
* @param threshold the embargo threshold date
* @return an embargo date
* @throws SQLException An exception that provides information on a database access error or other errors.
*/
public String getEmbargoFromItem(Context context, Item item, Date threshold) throws SQLException;
}

View File

@@ -63,4 +63,9 @@ public class AccessStatusServiceImpl implements AccessStatusService {
public String getAccessStatus(Context context, Item item) throws SQLException {
return helper.getAccessStatusFromItem(context, item, forever_date);
}
@Override
public String getEmbargoFromItem(Context context, Item item) throws SQLException {
return helper.getEmbargoFromItem(context, item, forever_date);
}
}

View File

@@ -26,6 +26,7 @@ import org.dspace.content.service.ItemService;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.eperson.Group;
import org.joda.time.LocalDate;
/**
* Default plugin implementation of the access status helper.
@@ -33,6 +34,11 @@ import org.dspace.eperson.Group;
* calculate the access status of an item based on the policies of
* the primary or the first bitstream in the original bundle.
* Users can override this method for enhanced functionality.
*
* The getEmbargoInformationFromItem method provides a simple logic to
* * retrieve embargo information of bitstreams from an item based on the policies of
* * the primary or the first bitstream in the original bundle.
* * Users can override this method for enhanced functionality.
*/
public class DefaultAccessStatusHelper implements AccessStatusHelper {
public static final String EMBARGO = "embargo";
@@ -54,12 +60,12 @@ public class DefaultAccessStatusHelper implements AccessStatusHelper {
/**
* Look at the item's policies to determine an access status value.
* It is also considering a date threshold for embargos and restrictions.
* It is also considering a date threshold for embargoes and restrictions.
*
* If the item is null, simply returns the "unknown" value.
*
* @param context the DSpace context
* @param item the item to embargo
* @param item the item to check for embargoes
* @param threshold the embargo threshold date
* @return an access status value
*/
@@ -86,7 +92,7 @@ public class DefaultAccessStatusHelper implements AccessStatusHelper {
.findFirst()
.orElse(null);
}
return caculateAccessStatusForDso(context, bitstream, threshold);
return calculateAccessStatusForDso(context, bitstream, threshold);
}
/**
@@ -104,7 +110,7 @@ public class DefaultAccessStatusHelper implements AccessStatusHelper {
* @param threshold the embargo threshold date
* @return an access status value
*/
private String caculateAccessStatusForDso(Context context, DSpaceObject dso, Date threshold)
private String calculateAccessStatusForDso(Context context, DSpaceObject dso, Date threshold)
throws SQLException {
if (dso == null) {
return METADATA_ONLY;
@@ -156,4 +162,87 @@ public class DefaultAccessStatusHelper implements AccessStatusHelper {
}
return RESTRICTED;
}
/**
* Look at the policies of the primary (or first) bitstream of the item to retrieve its embargo.
*
* If the item is null, simply returns an empty map with no embargo information.
*
* @param context the DSpace context
* @param item the item to embargo
* @return an access status value
*/
@Override
public String getEmbargoFromItem(Context context, Item item, Date threshold)
throws SQLException {
Date embargoDate;
// If Item status is not "embargo" then return a null embargo date.
String accessStatus = getAccessStatusFromItem(context, item, threshold);
if (item == null || !accessStatus.equals(EMBARGO)) {
return null;
}
// Consider only the original bundles.
List<Bundle> bundles = item.getBundles(Constants.DEFAULT_BUNDLE_NAME);
// Check for primary bitstreams first.
Bitstream bitstream = bundles.stream()
.map(bundle -> bundle.getPrimaryBitstream())
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
if (bitstream == null) {
// If there is no primary bitstream,
// take the first bitstream in the bundles.
bitstream = bundles.stream()
.map(bundle -> bundle.getBitstreams())
.flatMap(List::stream)
.findFirst()
.orElse(null);
}
if (bitstream == null) {
return null;
}
embargoDate = this.retrieveShortestEmbargo(context, bitstream);
return embargoDate != null ? embargoDate.toString() : null;
}
/**
*
*/
private Date retrieveShortestEmbargo(Context context, Bitstream bitstream) throws SQLException {
Date embargoDate = null;
// Only consider read policies.
List<ResourcePolicy> policies = authorizeService
.getPoliciesActionFilter(context, bitstream, Constants.READ);
// Looks at all read policies.
for (ResourcePolicy policy : policies) {
boolean isValid = resourcePolicyService.isDateValid(policy);
Group group = policy.getGroup();
if (group != null && StringUtils.equals(group.getName(), Group.ANONYMOUS)) {
// Only calculate the status for the anonymous group.
if (!isValid) {
// If the policy is not valid there is an active embargo
Date startDate = policy.getStartDate();
if (startDate != null && !startDate.before(LocalDate.now().toDate())) {
// There is an active embargo: aim to take the shortest embargo (account for rare cases where
// more than one resource policy exists)
if (embargoDate == null) {
embargoDate = startDate;
} else {
embargoDate = startDate.before(embargoDate) ? startDate : embargoDate;
}
}
}
}
}
return embargoDate;
}
}

View File

@@ -40,7 +40,18 @@ public interface AccessStatusService {
*
* @param context the DSpace context
* @param item the item
* @return an access status value
* @throws SQLException An exception that provides information on a database access error or other errors.
*/
public String getAccessStatus(Context context, Item item) throws SQLException;
/**
* Retrieve embargo information for the item
*
* @param context the DSpace context
* @param item the item to check for embargo information
* @return an embargo date
* @throws SQLException An exception that provides information on a database access error or other errors.
*/
public String getEmbargoFromItem(Context context, Item item) throws SQLException;
}

View File

@@ -14,6 +14,7 @@ import java.util.Locale;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.lang3.StringUtils;
import org.dspace.core.Context;
@@ -54,14 +55,14 @@ public final class CreateAdministrator {
protected GroupService groupService;
/**
* For invoking via the command line. If called with no command line arguments,
* For invoking via the command line. If called with no command line arguments,
* it will negotiate with the user for the administrator details
*
* @param argv the command line arguments given
* @throws Exception if error
*/
public static void main(String[] argv)
throws Exception {
throws Exception {
CommandLineParser parser = new DefaultParser();
Options options = new Options();
@@ -69,19 +70,41 @@ public final class CreateAdministrator {
options.addOption("e", "email", true, "administrator email address");
options.addOption("f", "first", true, "administrator first name");
options.addOption("h", "help", false, "explain create-administrator options");
options.addOption("l", "last", true, "administrator last name");
options.addOption("c", "language", true, "administrator language");
options.addOption("p", "password", true, "administrator password");
CommandLine line = parser.parse(options, argv);
CommandLine line = null;
try {
line = parser.parse(options, argv);
} catch (Exception e) {
System.out.println(e.getMessage() + "\nTry \"dspace create-administrator -h\" to print help information.");
System.exit(1);
}
if (line.hasOption("e") && line.hasOption("f") && line.hasOption("l") &&
line.hasOption("c") && line.hasOption("p")) {
line.hasOption("c") && line.hasOption("p")) {
ca.createAdministrator(line.getOptionValue("e"),
line.getOptionValue("f"), line.getOptionValue("l"),
line.getOptionValue("c"), line.getOptionValue("p"));
line.getOptionValue("f"), line.getOptionValue("l"),
line.getOptionValue("c"), line.getOptionValue("p"));
} else if (line.hasOption("h")) {
String header = "\nA command-line tool for creating an initial administrator for setting up a" +
" DSpace site. Unless all the required parameters are passed it will" +
" prompt for an e-mail address, last name, first name and password from" +
" standard input.. An administrator group is then created and the data passed" +
" in used to create an e-person in that group.\n\n";
String footer = "\n";
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("dspace create-administrator", header, options, footer, true);
return;
} else {
ca.negotiateAdministratorDetails();
ca.negotiateAdministratorDetails(line);
}
}
@@ -91,8 +114,19 @@ public final class CreateAdministrator {
* @throws Exception if error
*/
protected CreateAdministrator()
throws Exception {
throws Exception {
context = new Context();
try {
context.getDBConfig();
} catch (NullPointerException npr) {
// if database is null, there is no point in continuing. Prior to this exception and catch,
// NullPointerException was thrown, that wasn't very helpful.
throw new IllegalStateException("Problem connecting to database. This " +
"indicates issue with either network or version (or possibly some other). " +
"If you are running this in docker-compose, please make sure dspace-cli was " +
"built from the same sources as running dspace container AND that they are in " +
"the same project/network.");
}
groupService = EPersonServiceFactory.getInstance().getGroupService();
ePersonService = EPersonServiceFactory.getInstance().getEPersonService();
}
@@ -103,20 +137,20 @@ public final class CreateAdministrator {
*
* @throws Exception if error
*/
protected void negotiateAdministratorDetails()
throws Exception {
protected void negotiateAdministratorDetails(CommandLine line)
throws Exception {
Console console = System.console();
System.out.println("Creating an initial administrator account");
boolean dataOK = false;
String email = null;
String firstName = null;
String lastName = null;
char[] password1 = null;
char[] password2 = null;
String email = line.getOptionValue('e');
String firstName = line.getOptionValue('f');
String lastName = line.getOptionValue('l');
String language = I18nUtil.getDefaultLocale().getLanguage();
ConfigurationService cfg = DSpaceServicesFactory.getInstance().getConfigurationService();
boolean flag = line.hasOption('p');
char[] password = null;
boolean dataOK = line.hasOption('f') && line.hasOption('e') && line.hasOption('l');
while (!dataOK) {
System.out.print("E-mail address: ");
@@ -147,8 +181,6 @@ public final class CreateAdministrator {
if (lastName != null) {
lastName = lastName.trim();
}
ConfigurationService cfg = DSpaceServicesFactory.getInstance().getConfigurationService();
if (cfg.hasProperty("webui.supported.locales")) {
System.out.println("Select one of the following languages: "
+ cfg.getProperty("webui.supported.locales"));
@@ -163,46 +195,59 @@ public final class CreateAdministrator {
}
}
System.out.println("Password will not display on screen.");
System.out.print("Password: ");
System.out.print("Is the above data correct? (y or n): ");
System.out.flush();
password1 = console.readPassword();
String s = console.readLine();
System.out.print("Again to confirm: ");
System.out.flush();
password2 = console.readPassword();
//TODO real password validation
if (password1.length > 1 && Arrays.equals(password1, password2)) {
// password OK
System.out.print("Is the above data correct? (y or n): ");
System.out.flush();
String s = console.readLine();
if (s != null) {
s = s.trim();
if (s.toLowerCase().startsWith("y")) {
dataOK = true;
}
if (s != null) {
s = s.trim();
if (s.toLowerCase().startsWith("y")) {
dataOK = true;
}
} else {
System.out.println("Passwords don't match");
}
}
if (!flag) {
password = getPassword(console);
if (password == null) {
return;
}
} else {
password = line.getOptionValue("p").toCharArray();
}
// if we make it to here, we are ready to create an administrator
createAdministrator(email, firstName, lastName, language, String.valueOf(password1));
createAdministrator(email, firstName, lastName, language, String.valueOf(password));
//Cleaning arrays that held password
Arrays.fill(password1, ' ');
Arrays.fill(password2, ' ');
}
private char[] getPassword(Console console) {
char[] password1 = null;
char[] password2 = null;
System.out.println("Password will not display on screen.");
System.out.print("Password: ");
System.out.flush();
password1 = console.readPassword();
System.out.print("Again to confirm: ");
System.out.flush();
password2 = console.readPassword();
// TODO real password validation
if (password1.length > 1 && Arrays.equals(password1, password2)) {
// password OK
Arrays.fill(password2, ' ');
return password1;
} else {
System.out.println("Passwords don't match");
return null;
}
}
/**
* Create the administrator with the given details. If the user
* Create the administrator with the given details. If the user
* already exists then they are simply upped to administrator status
*
* @param email the email for the user
@@ -213,8 +258,8 @@ public final class CreateAdministrator {
* @throws Exception if error
*/
protected void createAdministrator(String email, String first, String last,
String language, String pw)
throws Exception {
String language, String pw)
throws Exception {
// Of course we aren't an administrator yet so we need to
// circumvent authorisation
context.turnOffAuthorisationSystem();

View File

@@ -0,0 +1,140 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.administer;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.cli.ParseException;
import org.apache.commons.lang.time.DateUtils;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.ProcessStatus;
import org.dspace.core.Context;
import org.dspace.scripts.DSpaceRunnable;
import org.dspace.scripts.Process;
import org.dspace.scripts.factory.ScriptServiceFactory;
import org.dspace.scripts.service.ProcessService;
import org.dspace.services.ConfigurationService;
import org.dspace.services.factory.DSpaceServicesFactory;
import org.dspace.utils.DSpace;
/**
* Script to cleanup the old processes in the specified state.
*
* @author Luca Giamminonni (luca.giamminonni at 4science.it)
*
*/
public class ProcessCleaner extends DSpaceRunnable<ProcessCleanerConfiguration<ProcessCleaner>> {
private ConfigurationService configurationService;
private ProcessService processService;
private boolean cleanCompleted = false;
private boolean cleanFailed = false;
private boolean cleanRunning = false;
private boolean help = false;
private Integer days;
@Override
public void setup() throws ParseException {
this.configurationService = DSpaceServicesFactory.getInstance().getConfigurationService();
this.processService = ScriptServiceFactory.getInstance().getProcessService();
this.help = commandLine.hasOption('h');
this.cleanFailed = commandLine.hasOption('f');
this.cleanRunning = commandLine.hasOption('r');
this.cleanCompleted = commandLine.hasOption('c') || (!cleanFailed && !cleanRunning);
this.days = configurationService.getIntProperty("process-cleaner.days", 14);
if (this.days <= 0) {
throw new IllegalStateException("The number of days must be a positive integer.");
}
}
@Override
public void internalRun() throws Exception {
if (help) {
printHelp();
return;
}
Context context = new Context();
try {
context.turnOffAuthorisationSystem();
performDeletion(context);
} finally {
context.restoreAuthSystemState();
context.complete();
}
}
/**
* Delete the processes based on the specified statuses and the configured days
* from their creation.
*/
private void performDeletion(Context context) throws SQLException, IOException, AuthorizeException {
List<ProcessStatus> statuses = getProcessToDeleteStatuses();
Date creationDate = calculateCreationDate();
handler.logInfo("Searching for processes with status: " + statuses);
List<Process> processes = processService.findByStatusAndCreationTimeOlderThan(context, statuses, creationDate);
handler.logInfo("Found " + processes.size() + " processes to be deleted");
for (Process process : processes) {
processService.delete(context, process);
}
handler.logInfo("Process cleanup completed");
}
/**
* Returns the list of Process statuses do be deleted.
*/
private List<ProcessStatus> getProcessToDeleteStatuses() {
List<ProcessStatus> statuses = new ArrayList<ProcessStatus>();
if (cleanCompleted) {
statuses.add(ProcessStatus.COMPLETED);
}
if (cleanFailed) {
statuses.add(ProcessStatus.FAILED);
}
if (cleanRunning) {
statuses.add(ProcessStatus.RUNNING);
}
return statuses;
}
private Date calculateCreationDate() {
return DateUtils.addDays(new Date(), -days);
}
@Override
@SuppressWarnings("unchecked")
public ProcessCleanerConfiguration<ProcessCleaner> getScriptConfiguration() {
return new DSpace().getServiceManager()
.getServiceByName("process-cleaner", ProcessCleanerConfiguration.class);
}
}

View File

@@ -0,0 +1,18 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.administer;
/**
* The {@link ProcessCleaner} for CLI.
*
* @author Luca Giamminonni (luca.giamminonni at 4science.it)
*
*/
public class ProcessCleanerCli extends ProcessCleaner {
}

View File

@@ -0,0 +1,18 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.administer;
/**
* The {@link ProcessCleanerConfiguration} for CLI.
*
* @author Luca Giamminonni (luca.giamminonni at 4science.it)
*
*/
public class ProcessCleanerCliConfiguration extends ProcessCleanerConfiguration<ProcessCleanerCli> {
}

View File

@@ -0,0 +1,53 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.administer;
import org.apache.commons.cli.Options;
import org.dspace.scripts.configuration.ScriptConfiguration;
/**
* The {@link ScriptConfiguration} for the {@link ProcessCleaner} script.
*/
public class ProcessCleanerConfiguration<T extends ProcessCleaner> extends ScriptConfiguration<T> {
private Class<T> dspaceRunnableClass;
@Override
public Options getOptions() {
if (options == null) {
Options options = new Options();
options.addOption("h", "help", false, "help");
options.addOption("r", "running", false, "delete the process with RUNNING status");
options.getOption("r").setType(boolean.class);
options.addOption("f", "failed", false, "delete the process with FAILED status");
options.getOption("f").setType(boolean.class);
options.addOption("c", "completed", false,
"delete the process with COMPLETED status (default if no statuses are specified)");
options.getOption("c").setType(boolean.class);
super.options = options;
}
return options;
}
@Override
public Class<T> getDspaceRunnableClass() {
return dspaceRunnableClass;
}
@Override
public void setDspaceRunnableClass(Class<T> dspaceRunnableClass) {
this.dspaceRunnableClass = dspaceRunnableClass;
}
}

View File

@@ -10,7 +10,6 @@ package org.dspace.administer;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.xpath.XPath;
@@ -18,6 +17,7 @@ import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.dspace.app.util.XMLUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -49,8 +49,9 @@ public class RegistryImporter {
*/
public static Document loadXML(String filename)
throws IOException, ParserConfigurationException, SAXException {
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
// This XML builder will *not* disable external entities as XML
// registries are considered trusted content
DocumentBuilder builder = XMLUtils.getTrustedDocumentBuilder();
Document document = builder.parse(new File(filename));

View File

@@ -13,7 +13,6 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.xpath.XPath;
@@ -21,7 +20,15 @@ import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.Logger;
import org.dspace.app.util.XMLUtils;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.BitstreamFormat;
import org.dspace.content.factory.ContentServiceFactory;
@@ -41,7 +48,7 @@ import org.xml.sax.SAXException;
* <P>
* <code>RegistryLoader -bitstream bitstream-formats.xml</code>
* <P>
* <code>RegistryLoader -dc dc-types.xml</code>
* <code>RegistryLoader -metadata dc-types.xml</code>
*
* @author Robert Tansley
* @version $Revision$
@@ -50,7 +57,7 @@ public class RegistryLoader {
/**
* log4j category
*/
private static Logger log = org.apache.logging.log4j.LogManager.getLogger(RegistryLoader.class);
private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RegistryLoader.class);
protected static BitstreamFormatService bitstreamFormatService = ContentServiceFactory.getInstance()
.getBitstreamFormatService();
@@ -67,50 +74,99 @@ public class RegistryLoader {
* @throws Exception if error
*/
public static void main(String[] argv) throws Exception {
String usage = "Usage: " + RegistryLoader.class.getName()
+ " (-bitstream | -metadata) registry-file.xml";
Context context = null;
// Set up command-line options and parse arguments
CommandLineParser parser = new DefaultParser();
Options options = createCommandLineOptions();
try {
context = new Context();
CommandLine line = parser.parse(options, argv);
// Check if help option was entered or no options provided
if (line.hasOption('h') || line.getOptions().length == 0) {
printHelp(options);
System.exit(0);
}
Context context = new Context();
// Can't update registries anonymously, so we need to turn off
// authorisation
context.turnOffAuthorisationSystem();
// Work out what we're loading
if (argv[0].equalsIgnoreCase("-bitstream")) {
RegistryLoader.loadBitstreamFormats(context, argv[1]);
} else if (argv[0].equalsIgnoreCase("-metadata")) {
// Call MetadataImporter, as it handles Metadata schema updates
MetadataImporter.loadRegistry(argv[1], true);
} else {
System.err.println(usage);
try {
// Work out what we're loading
if (line.hasOption('b')) {
String filename = line.getOptionValue('b');
if (StringUtils.isEmpty(filename)) {
System.err.println("No file path provided for bitstream format registry");
printHelp(options);
System.exit(1);
}
RegistryLoader.loadBitstreamFormats(context, filename);
} else if (line.hasOption('m')) {
String filename = line.getOptionValue('m');
if (StringUtils.isEmpty(filename)) {
System.err.println("No file path provided for metadata registry");
printHelp(options);
System.exit(1);
}
// Call MetadataImporter, as it handles Metadata schema updates
MetadataImporter.loadRegistry(filename, true);
} else {
System.err.println("No registry type specified");
printHelp(options);
System.exit(1);
}
// Commit changes and close Context
context.complete();
System.exit(0);
} catch (Exception e) {
log.fatal(LogHelper.getHeader(context, "error_loading_registries", ""), e);
System.err.println("Error: \n - " + e.getMessage());
System.exit(1);
} finally {
// Clean up our context, if it still exists & it was never completed
if (context != null && context.isValid()) {
context.abort();
}
}
// Commit changes and close Context
context.complete();
System.exit(0);
} catch (ArrayIndexOutOfBoundsException ae) {
System.err.println(usage);
} catch (ParseException e) {
System.err.println("Error parsing command-line arguments: " + e.getMessage());
printHelp(options);
System.exit(1);
} catch (Exception e) {
log.fatal(LogHelper.getHeader(context, "error_loading_registries",
""), e);
System.err.println("Error: \n - " + e.getMessage());
System.exit(1);
} finally {
// Clean up our context, if it still exists & it was never completed
if (context != null && context.isValid()) {
context.abort();
}
}
}
/**
* Create the command-line options
* @return the command-line options
*/
private static Options createCommandLineOptions() {
Options options = new Options();
options.addOption("b", "bitstream", true, "load bitstream format registry from specified file");
options.addOption("m", "metadata", true, "load metadata registry from specified file");
options.addOption("h", "help", false, "print this help message");
return options;
}
/**
* Print the help message
* @param options the command-line options
*/
private static void printHelp(Options options) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("RegistryLoader",
"Load bitstream format or metadata registries into the database\n",
options,
"\nExamples:\n" +
" RegistryLoader -b bitstream-formats.xml\n" +
" RegistryLoader -m dc-types.xml",
true);
}
/**
* Load Bitstream Format metadata
*
@@ -210,8 +266,9 @@ public class RegistryLoader {
*/
private static Document loadXML(String filename) throws IOException,
ParserConfigurationException, SAXException {
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
// This XML builder will *not* disable external entities as XML
// registries are considered trusted content
DocumentBuilder builder = XMLUtils.getTrustedDocumentBuilder();
return builder.parse(new File(filename));
}
@@ -221,7 +278,7 @@ public class RegistryLoader {
* contains:
* <P>
* <code>
* &lt;foo&gt;&lt;mimetype&gt;application/pdf&lt;/mimetype&gt;&lt;/foo&gt;
* <foo><mimetype>application/pdf</mimetype></foo>
* </code>
* passing this the <code>foo</code> node and <code>mimetype</code> will
* return <code>application/pdf</code>.
@@ -262,10 +319,10 @@ public class RegistryLoader {
* document contains:
* <P>
* <code>
* &lt;foo&gt;
* &lt;bar&gt;val1&lt;/bar&gt;
* &lt;bar&gt;val2&lt;/bar&gt;
* &lt;/foo&gt;
* <foo>
* <bar>val1</bar>
* <bar>val2</bar>
* </foo>
* </code>
* passing this the <code>foo</code> node and <code>bar</code> will
* return <code>val1</code> and <code>val2</code>.

View File

@@ -27,7 +27,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.xpath.XPath;
@@ -42,6 +41,8 @@ import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.lang3.StringUtils;
import org.dspace.app.util.XMLUtils;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Collection;
import org.dspace.content.Community;
@@ -55,6 +56,8 @@ import org.dspace.content.service.CommunityService;
import org.dspace.core.Context;
import org.dspace.eperson.factory.EPersonServiceFactory;
import org.dspace.eperson.service.EPersonService;
import org.dspace.handle.factory.HandleServiceFactory;
import org.dspace.handle.service.HandleService;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
@@ -79,6 +82,7 @@ import org.xml.sax.SAXException;
* </community>
* </import_structure>
* }</pre>
*
* <p>
* It can be arbitrarily deep, and supports all the metadata elements
* that make up the community and collection metadata. See the system
@@ -107,12 +111,14 @@ public class StructBuilder {
*/
private static final Map<String, MetadataFieldName> communityMap = new HashMap<>();
protected static CommunityService communityService
protected static final CommunityService communityService
= ContentServiceFactory.getInstance().getCommunityService();
protected static CollectionService collectionService
protected static final CollectionService collectionService
= ContentServiceFactory.getInstance().getCollectionService();
protected static EPersonService ePersonService
protected static final EPersonService ePersonService
= EPersonServiceFactory.getInstance().getEPersonService();
protected static final HandleService handleService
= HandleServiceFactory.getInstance().getHandleService();
/**
* Default constructor
@@ -138,6 +144,7 @@ public class StructBuilder {
* @throws SQLException passed through.
* @throws FileNotFoundException if input or output could not be opened.
* @throws TransformerException if the input document is invalid.
* @throws XPathExpressionException passed through.
*/
public static void main(String[] argv)
throws ParserConfigurationException, SQLException,
@@ -148,6 +155,7 @@ public class StructBuilder {
options.addOption("h", "help", false, "Print this help message.");
options.addOption("?", "help");
options.addOption("x", "export", false, "Export the current structure as XML.");
options.addOption("k", "keep-handles", false, "Apply Handles from input document.");
options.addOption(Option.builder("e").longOpt("eperson")
.desc("User who is manipulating the repository's structure.")
@@ -209,6 +217,7 @@ public class StructBuilder {
// Export? Import?
if (line.hasOption('x')) { // export
exportStructure(context, outputStream);
outputStream.close();
} else { // Must be import
String input = line.getOptionValue('f');
if (null == input) {
@@ -223,7 +232,12 @@ public class StructBuilder {
inputStream = new FileInputStream(input);
}
importStructure(context, inputStream, outputStream);
boolean keepHandles = options.hasOption("k");
importStructure(context, inputStream, outputStream, keepHandles);
inputStream.close();
outputStream.close();
// save changes from import
context.complete();
}
@@ -236,14 +250,17 @@ public class StructBuilder {
* @param context
* @param input XML which describes the new communities and collections.
* @param output input, annotated with the new objects' identifiers.
* @param keepHandles true if Handles should be set from input.
* @throws IOException
* @throws ParserConfigurationException
* @throws SAXException
* @throws TransformerException
* @throws SQLException
*/
static void importStructure(Context context, InputStream input, OutputStream output)
throws IOException, ParserConfigurationException, SQLException, TransformerException, XPathExpressionException {
static void importStructure(Context context, InputStream input,
OutputStream output, boolean keepHandles)
throws IOException, ParserConfigurationException, SQLException,
TransformerException, XPathExpressionException {
// load the XML
Document document = null;
@@ -271,7 +288,19 @@ public class StructBuilder {
NodeList identifierNodes = (NodeList) xPath.compile("//*[@identifier]")
.evaluate(document, XPathConstants.NODESET);
if (identifierNodes.getLength() > 0) {
System.err.println("The input document has 'identifier' attributes, which will be ignored.");
if (!keepHandles) {
System.err.println("The input document has 'identifier' attributes, which will be ignored.");
} else {
for (int i = 0; i < identifierNodes.getLength() ; i++) {
String identifier = identifierNodes.item(i).getAttributes().item(0).getTextContent();
if (handleService.resolveToURL(context, identifier) != null) {
System.err.printf("The input document contains handle %s,"
+ " which is in use already. Aborting...%n",
identifier);
System.exit(1);
}
}
}
}
// load the mappings into the member variable hashmaps
@@ -296,7 +325,7 @@ public class StructBuilder {
.evaluate(document, XPathConstants.NODESET);
// run the import starting with the top level communities
elements = handleCommunities(context, first, null);
elements = handleCommunities(context, first, null, keepHandles);
} catch (TransformerException ex) {
System.err.format("Input content not understood: %s%n", ex.getMessage());
System.exit(1);
@@ -584,8 +613,8 @@ public class StructBuilder {
*/
private static org.w3c.dom.Document loadXML(InputStream input)
throws IOException, ParserConfigurationException, SAXException {
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
// This builder factory does not disable external DTD, entities, etc.
DocumentBuilder builder = XMLUtils.getTrustedDocumentBuilder();
org.w3c.dom.Document document = builder.parse(input);
@@ -619,23 +648,29 @@ public class StructBuilder {
* @param context the context of the request
* @param communities a nodelist of communities to create along with their sub-structures
* @param parent the parent community of the nodelist of communities to create
* @param keepHandles use Handles from input.
* @return an element array containing additional information regarding the
* created communities (e.g. the handles they have been assigned)
*/
private static Element[] handleCommunities(Context context, NodeList communities, Community parent)
throws TransformerException, SQLException, AuthorizeException, XPathExpressionException {
private static Element[] handleCommunities(Context context, NodeList communities,
Community parent, boolean keepHandles)
throws TransformerException, SQLException, AuthorizeException,
XPathExpressionException {
Element[] elements = new Element[communities.getLength()];
XPath xPath = XPathFactory.newInstance().newXPath();
for (int i = 0; i < communities.getLength(); i++) {
Community community;
Element element = new Element("community");
Node tn = communities.item(i);
Node identifier = tn.getAttributes().getNamedItem("identifier");
// create the community or sub community
if (parent != null) {
Community community;
if (null == identifier
|| StringUtils.isBlank(identifier.getNodeValue())
|| !keepHandles) {
community = communityService.create(parent, context);
} else {
community = communityService.create(null, context);
community = communityService.create(parent, context, identifier.getNodeValue());
}
// default the short description to be an empty string
@@ -643,7 +678,6 @@ public class StructBuilder {
MD_SHORT_DESCRIPTION, null, " ");
// now update the metadata
Node tn = communities.item(i);
for (Map.Entry<String, MetadataFieldName> entry : communityMap.entrySet()) {
NodeList nl = (NodeList) xPath.compile(entry.getKey()).evaluate(tn, XPathConstants.NODESET);
if (nl.getLength() == 1) {
@@ -669,6 +703,7 @@ public class StructBuilder {
// but it's here to keep it separate from the create process in
// case
// we want to move it or make it switchable later
Element element = new Element("community");
element.setAttribute("identifier", community.getHandle());
Element nameElement = new Element("name");
@@ -711,12 +746,16 @@ public class StructBuilder {
}
// handle sub communities
NodeList subCommunities = (NodeList) xPath.compile("community").evaluate(tn, XPathConstants.NODESET);
Element[] subCommunityElements = handleCommunities(context, subCommunities, community);
NodeList subCommunities = (NodeList) xPath.compile("community")
.evaluate(tn, XPathConstants.NODESET);
Element[] subCommunityElements = handleCommunities(context,
subCommunities, community, keepHandles);
// handle collections
NodeList collections = (NodeList) xPath.compile("collection").evaluate(tn, XPathConstants.NODESET);
Element[] collectionElements = handleCollections(context, collections, community);
NodeList collections = (NodeList) xPath.compile("collection")
.evaluate(tn, XPathConstants.NODESET);
Element[] collectionElements = handleCollections(context,
collections, community, keepHandles);
int j;
for (j = 0; j < subCommunityElements.length; j++) {
@@ -741,21 +780,31 @@ public class StructBuilder {
* @return an Element array containing additional information about the
* created collections (e.g. the handle)
*/
private static Element[] handleCollections(Context context, NodeList collections, Community parent)
private static Element[] handleCollections(Context context,
NodeList collections, Community parent, boolean keepHandles)
throws SQLException, AuthorizeException, XPathExpressionException {
Element[] elements = new Element[collections.getLength()];
XPath xPath = XPathFactory.newInstance().newXPath();
for (int i = 0; i < collections.getLength(); i++) {
Element element = new Element("collection");
Collection collection = collectionService.create(context, parent);
Node tn = collections.item(i);
Node identifier = tn.getAttributes().getNamedItem("identifier");
// Create the Collection.
Collection collection;
if (null == identifier
|| StringUtils.isBlank(identifier.getNodeValue())
|| !keepHandles) {
collection = collectionService.create(context, parent);
} else {
collection = collectionService.create(context, parent, identifier.getNodeValue());
}
// default the short description to the empty string
collectionService.setMetadataSingleValue(context, collection,
MD_SHORT_DESCRIPTION, Item.ANY, " ");
MD_SHORT_DESCRIPTION, null, " ");
// import the rest of the metadata
Node tn = collections.item(i);
for (Map.Entry<String, MetadataFieldName> entry : collectionMap.entrySet()) {
NodeList nl = (NodeList) xPath.compile(entry.getKey()).evaluate(tn, XPathConstants.NODESET);
if (nl.getLength() == 1) {
@@ -766,6 +815,7 @@ public class StructBuilder {
collectionService.update(context, collection);
Element element = new Element("collection");
element.setAttribute("identifier", collection.getHandle());
Element nameElement = new Element("name");

View File

@@ -0,0 +1,54 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.alerts;
/**
* Enum representing the options for allowing sessions:
* ALLOW_ALL_SESSIONS - Will allow all users to log in and continue their sessions
* ALLOW_CURRENT_SESSIONS_ONLY - Will prevent non admin users from logging in, however logged-in users
* will remain logged in
* ALLOW_ADMIN_SESSIONS_ONLY - Only admin users can log in, non admin sessions will be interrupted
*
* NOTE: This functionality can be stored in the database, but no support is present right now to interrupt and prevent
* sessions.
*/
public enum AllowSessionsEnum {
ALLOW_ALL_SESSIONS("all"),
ALLOW_CURRENT_SESSIONS_ONLY("current"),
ALLOW_ADMIN_SESSIONS_ONLY("admin");
private String allowSessionsType;
AllowSessionsEnum(String allowSessionsType) {
this.allowSessionsType = allowSessionsType;
}
public String getValue() {
return allowSessionsType;
}
public static AllowSessionsEnum fromString(String alertAllowSessionType) {
if (alertAllowSessionType == null) {
return AllowSessionsEnum.ALLOW_ALL_SESSIONS;
}
switch (alertAllowSessionType) {
case "all":
return AllowSessionsEnum.ALLOW_ALL_SESSIONS;
case "current":
return AllowSessionsEnum.ALLOW_CURRENT_SESSIONS_ONLY;
case "admin" :
return AllowSessionsEnum.ALLOW_ADMIN_SESSIONS_ONLY;
default:
throw new IllegalArgumentException("No corresponding enum value for provided string: "
+ alertAllowSessionType);
}
}
}

View File

@@ -0,0 +1,179 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.alerts;
import java.util.Date;
import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.dspace.core.ReloadableEntity;
import org.hibernate.annotations.CacheConcurrencyStrategy;
/**
* Database object representing system-wide alerts
*/
@Entity
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, include = "non-lazy")
@Table(name = "systemwidealert")
public class SystemWideAlert implements ReloadableEntity<Integer> {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "alert_id_seq")
@SequenceGenerator(name = "alert_id_seq", sequenceName = "alert_id_seq", allocationSize = 1)
@Column(name = "alert_id", unique = true, nullable = false)
private Integer alertId;
@Column(name = "message", nullable = false)
private String message;
@Column(name = "allow_sessions")
private String allowSessions;
@Column(name = "countdown_to")
@Temporal(TemporalType.TIMESTAMP)
private Date countdownTo;
@Column(name = "active")
private boolean active;
protected SystemWideAlert() {
}
/**
* This method returns the ID that the system-wide alert holds within the database
*
* @return The ID that the system-wide alert holds within the database
*/
@Override
public Integer getID() {
return alertId;
}
/**
* Set the ID for the system-wide alert
*
* @param alertID The ID to set
*/
public void setID(final Integer alertID) {
this.alertId = alertID;
}
/**
* Retrieve the message of the system-wide alert
*
* @return the message of the system-wide alert
*/
public String getMessage() {
return message;
}
/**
* Set the message of the system-wide alert
*
* @param message The message to set
*/
public void setMessage(final String message) {
this.message = message;
}
/**
* Retrieve what kind of sessions are allowed while the system-wide alert is active
*
* @return what kind of sessions are allowed while the system-wide alert is active
*/
public AllowSessionsEnum getAllowSessions() {
return AllowSessionsEnum.fromString(allowSessions);
}
/**
* Set what kind of sessions are allowed while the system-wide alert is active
*
* @param allowSessions Integer representing what kind of sessions are allowed
*/
public void setAllowSessions(AllowSessionsEnum allowSessions) {
this.allowSessions = allowSessions.getValue();
}
/**
* Retrieve the date to which will be count down when the system-wide alert is active
*
* @return the date to which will be count down when the system-wide alert is active
*/
public Date getCountdownTo() {
return countdownTo;
}
/**
* Set the date to which will be count down when the system-wide alert is active
*
* @param countdownTo The date to which will be count down
*/
public void setCountdownTo(final Date countdownTo) {
this.countdownTo = countdownTo;
}
/**
* Retrieve whether the system-wide alert is active
*
* @return whether the system-wide alert is active
*/
public boolean isActive() {
return active;
}
/**
* Set whether the system-wide alert is active
*
* @param active Whether the system-wide alert is active
*/
public void setActive(final boolean active) {
this.active = active;
}
/**
* Return <code>true</code> if <code>other</code> is the same SystemWideAlert
* as this object, <code>false</code> otherwise
*
* @param other object to compare to
* @return <code>true</code> if object passed in represents the same
* system-wide alert as this object
*/
@Override
public boolean equals(Object other) {
return (other instanceof SystemWideAlert &&
new EqualsBuilder().append(this.getID(), ((SystemWideAlert) other).getID())
.append(this.getMessage(), ((SystemWideAlert) other).getMessage())
.append(this.getAllowSessions(), ((SystemWideAlert) other).getAllowSessions())
.append(this.getCountdownTo(), ((SystemWideAlert) other).getCountdownTo())
.append(this.isActive(), ((SystemWideAlert) other).isActive())
.isEquals());
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.append(this.getID())
.append(this.getMessage())
.append(this.getAllowSessions())
.append(this.getCountdownTo())
.append(this.isActive())
.toHashCode();
}
}

View File

@@ -0,0 +1,129 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.alerts;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import org.apache.logging.log4j.Logger;
import org.dspace.alerts.dao.SystemWideAlertDAO;
import org.dspace.alerts.service.SystemWideAlertService;
import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.core.Context;
import org.dspace.core.LogHelper;
import org.dspace.eperson.EPerson;
import org.springframework.beans.factory.annotation.Autowired;
/**
* The implementation for the {@link SystemWideAlertService} class
*/
public class SystemWideAlertServiceImpl implements SystemWideAlertService {
private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SystemWideAlertService.class);
@Autowired
private SystemWideAlertDAO systemWideAlertDAO;
@Autowired
private AuthorizeService authorizeService;
@Override
public SystemWideAlert create(final Context context, final String message,
final AllowSessionsEnum allowSessionsType,
final Date countdownTo, final boolean active) throws SQLException,
AuthorizeException {
if (!authorizeService.isAdmin(context)) {
throw new AuthorizeException(
"Only administrators can create a system-wide alert");
}
SystemWideAlert systemWideAlert = new SystemWideAlert();
systemWideAlert.setMessage(message);
systemWideAlert.setAllowSessions(allowSessionsType);
systemWideAlert.setCountdownTo(countdownTo);
systemWideAlert.setActive(active);
SystemWideAlert createdAlert = systemWideAlertDAO.create(context, systemWideAlert);
log.info(LogHelper.getHeader(context, "system_wide_alert_create",
"System Wide Alert has been created with message: '" + message + "' and ID "
+ createdAlert.getID() + " and allowSessionsType " + allowSessionsType +
" and active set to " + active));
return createdAlert;
}
@Override
public SystemWideAlert find(final Context context, final int alertId) throws SQLException {
return systemWideAlertDAO.findByID(context, SystemWideAlert.class, alertId);
}
@Override
public List<SystemWideAlert> findAll(final Context context) throws SQLException {
return systemWideAlertDAO.findAll(context, SystemWideAlert.class);
}
@Override
public List<SystemWideAlert> findAll(final Context context, final int limit, final int offset) throws SQLException {
return systemWideAlertDAO.findAll(context, limit, offset);
}
@Override
public List<SystemWideAlert> findAllActive(final Context context, final int limit, final int offset)
throws SQLException {
return systemWideAlertDAO.findAllActive(context, limit, offset);
}
@Override
public void delete(final Context context, final SystemWideAlert systemWideAlert)
throws SQLException, IOException, AuthorizeException {
if (!authorizeService.isAdmin(context)) {
throw new AuthorizeException(
"Only administrators can create a system-wide alert");
}
systemWideAlertDAO.delete(context, systemWideAlert);
log.info(LogHelper.getHeader(context, "system_wide_alert_create",
"System Wide Alert with ID " + systemWideAlert.getID() + " has been deleted"));
}
@Override
public void update(final Context context, final SystemWideAlert systemWideAlert)
throws SQLException, AuthorizeException {
if (!authorizeService.isAdmin(context)) {
throw new AuthorizeException(
"Only administrators can create a system-wide alert");
}
systemWideAlertDAO.save(context, systemWideAlert);
}
@Override
public boolean canNonAdminUserLogin(Context context) throws SQLException {
List<SystemWideAlert> active = findAllActive(context, 1, 0);
if (active == null || active.isEmpty()) {
return true;
}
return active.get(0).getAllowSessions() == AllowSessionsEnum.ALLOW_ALL_SESSIONS;
}
@Override
public boolean canUserMaintainSession(Context context, EPerson ePerson) throws SQLException {
if (authorizeService.isAdmin(context, ePerson)) {
return true;
}
List<SystemWideAlert> active = findAllActive(context, 1, 0);
if (active == null || active.isEmpty()) {
return true;
}
return active.get(0).getAllowSessions() != AllowSessionsEnum.ALLOW_ADMIN_SESSIONS_ONLY;
}
}

View File

@@ -0,0 +1,45 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.alerts.dao;
import java.sql.SQLException;
import java.util.List;
import org.dspace.alerts.SystemWideAlert;
import org.dspace.core.Context;
import org.dspace.core.GenericDAO;
/**
* This is the Data Access Object for the {@link SystemWideAlert} object
*/
public interface SystemWideAlertDAO extends GenericDAO<SystemWideAlert> {
/**
* Returns a list of all SystemWideAlert objects in the database
*
* @param context The relevant DSpace context
* @param limit The limit for the amount of SystemWideAlerts returned
* @param offset The offset for the Processes to be returned
* @return The list of all SystemWideAlert objects in the Database
* @throws SQLException If something goes wrong
*/
List<SystemWideAlert> findAll(Context context, int limit, int offset) throws SQLException;
/**
* Returns a list of all active SystemWideAlert objects in the database
*
* @param context The relevant DSpace context
* @param limit The limit for the amount of SystemWideAlerts returned
* @param offset The offset for the Processes to be returned
* @return The list of all SystemWideAlert objects in the Database
* @throws SQLException If something goes wrong
*/
List<SystemWideAlert> findAllActive(Context context, int limit, int offset) throws SQLException;
}

View File

@@ -0,0 +1,48 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.alerts.dao.impl;
import java.sql.SQLException;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import org.dspace.alerts.SystemWideAlert;
import org.dspace.alerts.SystemWideAlert_;
import org.dspace.alerts.dao.SystemWideAlertDAO;
import org.dspace.core.AbstractHibernateDAO;
import org.dspace.core.Context;
/**
* Implementation class for the {@link SystemWideAlertDAO}
*/
public class SystemWideAlertDAOImpl extends AbstractHibernateDAO<SystemWideAlert> implements SystemWideAlertDAO {
public List<SystemWideAlert> findAll(final Context context, final int limit, final int offset) throws SQLException {
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, SystemWideAlert.class);
Root<SystemWideAlert> alertRoot = criteriaQuery.from(SystemWideAlert.class);
criteriaQuery.select(alertRoot);
return list(context, criteriaQuery, false, SystemWideAlert.class, limit, offset);
}
public List<SystemWideAlert> findAllActive(final Context context, final int limit, final int offset)
throws SQLException {
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, SystemWideAlert.class);
Root<SystemWideAlert> alertRoot = criteriaQuery.from(SystemWideAlert.class);
criteriaQuery.select(alertRoot);
criteriaQuery.where(criteriaBuilder.equal(alertRoot.get(SystemWideAlert_.active), true));
return list(context, criteriaQuery, false, SystemWideAlert.class, limit, offset);
}
}

View File

@@ -0,0 +1,118 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.alerts.service;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import org.dspace.alerts.AllowSessionsEnum;
import org.dspace.alerts.SystemWideAlert;
import org.dspace.authorize.AuthorizeException;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
/**
* An interface for the SystemWideAlertService with methods regarding the SystemWideAlert workload
*/
public interface SystemWideAlertService {
/**
* This method will create a SystemWideAlert object in the database
*
* @param context The relevant DSpace context
* @param message The message of the system-wide alert
* @param allowSessionsType Which sessions need to be allowed for the system-wide alert
* @param countdownTo The date to which to count down to when the system-wide alert is active
* @param active Whether the system-wide alert os active
* @return The created SystemWideAlert object
* @throws SQLException If something goes wrong
*/
SystemWideAlert create(Context context, String message, AllowSessionsEnum allowSessionsType,
Date countdownTo, boolean active
) throws SQLException, AuthorizeException;
/**
* This method will retrieve a SystemWideAlert object from the Database with the given ID
*
* @param context The relevant DSpace context
* @param alertId The alert id on which we'll search for in the database
* @return The system-wide alert that holds the given alert id
* @throws SQLException If something goes wrong
*/
SystemWideAlert find(Context context, int alertId) throws SQLException;
/**
* Returns a list of all SystemWideAlert objects in the database
*
* @param context The relevant DSpace context
* @return The list of all SystemWideAlert objects in the Database
* @throws SQLException If something goes wrong
*/
List<SystemWideAlert> findAll(Context context) throws SQLException;
/**
* Returns a list of all SystemWideAlert objects in the database
*
* @param context The relevant DSpace context
* @param limit The limit for the amount of system-wide alerts returned
* @param offset The offset for the system-wide alerts to be returned
* @return The list of all SystemWideAlert objects in the Database
* @throws SQLException If something goes wrong
*/
List<SystemWideAlert> findAll(Context context, int limit, int offset) throws SQLException;
/**
* Returns a list of all active SystemWideAlert objects in the database
*
* @param context The relevant DSpace context
* @return The list of all active SystemWideAlert objects in the database
* @throws SQLException If something goes wrong
*/
List<SystemWideAlert> findAllActive(Context context, int limit, int offset) throws SQLException;
/**
* This method will delete the given SystemWideAlert object from the database
*
* @param context The relevant DSpace context
* @param systemWideAlert The SystemWideAlert object to be deleted
* @throws SQLException If something goes wrong
*/
void delete(Context context, SystemWideAlert systemWideAlert)
throws SQLException, IOException, AuthorizeException;
/**
* This method will be used to update the given SystemWideAlert object in the database
*
* @param context The relevant DSpace context
* @param systemWideAlert The SystemWideAlert object to be updated
* @throws SQLException If something goes wrong
*/
void update(Context context, SystemWideAlert systemWideAlert) throws SQLException, AuthorizeException;
/**
* Verifies if the user connected to the current context can retain its session
*
* @param context The relevant DSpace context
* @return if the user connected to the current context can retain its session
*/
boolean canUserMaintainSession(Context context, EPerson ePerson) throws SQLException;
/**
* Verifies if a non admin user can log in
*
* @param context The relevant DSpace context
* @return if a non admin user can log in
*/
boolean canNonAdminUserLogin(Context context) throws SQLException;
}

View File

@@ -0,0 +1,690 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol;
import static org.apache.commons.collections4.CollectionUtils.isEmpty;
import static org.apache.commons.collections4.CollectionUtils.isNotEmpty;
import static org.dspace.authorize.ResourcePolicy.TYPE_CUSTOM;
import static org.dspace.authorize.ResourcePolicy.TYPE_INHERITED;
import static org.dspace.core.Constants.CONTENT_BUNDLE_NAME;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.ZoneOffset;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.TimeZone;
import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.cli.ParseException;
import org.apache.commons.lang3.StringUtils;
import org.dspace.app.bulkaccesscontrol.exception.BulkAccessControlException;
import org.dspace.app.bulkaccesscontrol.model.AccessCondition;
import org.dspace.app.bulkaccesscontrol.model.AccessConditionBitstream;
import org.dspace.app.bulkaccesscontrol.model.AccessConditionItem;
import org.dspace.app.bulkaccesscontrol.model.BulkAccessConditionConfiguration;
import org.dspace.app.bulkaccesscontrol.model.BulkAccessControlInput;
import org.dspace.app.bulkaccesscontrol.service.BulkAccessConditionConfigurationService;
import org.dspace.app.mediafilter.factory.MediaFilterServiceFactory;
import org.dspace.app.mediafilter.service.MediaFilterService;
import org.dspace.app.util.DSpaceObjectUtilsImpl;
import org.dspace.app.util.service.DSpaceObjectUtils;
import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.factory.AuthorizeServiceFactory;
import org.dspace.authorize.service.ResourcePolicyService;
import org.dspace.content.Bitstream;
import org.dspace.content.Collection;
import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
import org.dspace.content.factory.ContentServiceFactory;
import org.dspace.content.service.ItemService;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.discovery.DiscoverQuery;
import org.dspace.discovery.SearchService;
import org.dspace.discovery.SearchServiceException;
import org.dspace.discovery.SearchUtils;
import org.dspace.discovery.indexobject.IndexableItem;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.factory.EPersonServiceFactory;
import org.dspace.eperson.service.EPersonService;
import org.dspace.scripts.DSpaceRunnable;
import org.dspace.services.ConfigurationService;
import org.dspace.services.factory.DSpaceServicesFactory;
import org.dspace.submit.model.AccessConditionOption;
import org.dspace.utils.DSpace;
/**
* Implementation of {@link DSpaceRunnable} to perform a bulk access control via json file.
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*
*/
public class BulkAccessControl extends DSpaceRunnable<BulkAccessControlScriptConfiguration<BulkAccessControl>> {
private DSpaceObjectUtils dSpaceObjectUtils;
private SearchService searchService;
private ItemService itemService;
private String filename;
private List<String> uuids;
private Context context;
private BulkAccessConditionConfigurationService bulkAccessConditionConfigurationService;
private ResourcePolicyService resourcePolicyService;
protected EPersonService epersonService;
private ConfigurationService configurationService;
private MediaFilterService mediaFilterService;
private Map<String, AccessConditionOption> itemAccessConditions;
private Map<String, AccessConditionOption> uploadAccessConditions;
private final String ADD_MODE = "add";
private final String REPLACE_MODE = "replace";
private boolean help = false;
protected String eperson = null;
@Override
@SuppressWarnings("unchecked")
public void setup() throws ParseException {
this.searchService = SearchUtils.getSearchService();
this.itemService = ContentServiceFactory.getInstance().getItemService();
this.resourcePolicyService = AuthorizeServiceFactory.getInstance().getResourcePolicyService();
this.epersonService = EPersonServiceFactory.getInstance().getEPersonService();
this.configurationService = DSpaceServicesFactory.getInstance().getConfigurationService();
mediaFilterService = MediaFilterServiceFactory.getInstance().getMediaFilterService();
mediaFilterService.setLogHandler(handler);
this.bulkAccessConditionConfigurationService = new DSpace().getServiceManager().getServiceByName(
"bulkAccessConditionConfigurationService", BulkAccessConditionConfigurationService.class);
this.dSpaceObjectUtils = new DSpace().getServiceManager().getServiceByName(
DSpaceObjectUtilsImpl.class.getName(), DSpaceObjectUtilsImpl.class);
BulkAccessConditionConfiguration bulkAccessConditionConfiguration =
bulkAccessConditionConfigurationService.getBulkAccessConditionConfiguration("default");
itemAccessConditions = bulkAccessConditionConfiguration
.getItemAccessConditionOptions()
.stream()
.collect(Collectors.toMap(AccessConditionOption::getName, Function.identity()));
uploadAccessConditions = bulkAccessConditionConfiguration
.getBitstreamAccessConditionOptions()
.stream()
.collect(Collectors.toMap(AccessConditionOption::getName, Function.identity()));
help = commandLine.hasOption('h');
filename = commandLine.getOptionValue('f');
uuids = commandLine.hasOption('u') ? Arrays.asList(commandLine.getOptionValues('u')) : null;
}
@Override
public void internalRun() throws Exception {
if (help) {
printHelp();
return;
}
ObjectMapper mapper = new ObjectMapper();
mapper.setTimeZone(TimeZone.getTimeZone(ZoneOffset.UTC));
BulkAccessControlInput accessControl;
context = new Context(Context.Mode.BATCH_EDIT);
setEPerson(context);
if (!isAuthorized(context)) {
handler.logError("Current user is not eligible to execute script bulk-access-control");
throw new AuthorizeException("Current user is not eligible to execute script bulk-access-control");
}
if (uuids == null || uuids.size() == 0) {
handler.logError("A target uuid must be provided with at least on uuid (run with -h flag for details)");
throw new IllegalArgumentException("At least one target uuid must be provided");
}
InputStream inputStream = handler.getFileStream(context, filename)
.orElseThrow(() -> new IllegalArgumentException("Error reading file, the file couldn't be "
+ "found for filename: " + filename));
try {
accessControl = mapper.readValue(inputStream, BulkAccessControlInput.class);
} catch (IOException e) {
handler.logError("Error parsing json file " + e.getMessage());
throw new IllegalArgumentException("Error parsing json file", e);
}
try {
validate(accessControl);
updateItemsAndBitstreamsPolices(accessControl);
context.complete();
} catch (Exception e) {
handler.handleException(e);
context.abort();
}
}
/**
* check the validation of mapped json data, it must
* provide item or bitstream information or both of them
* and check the validation of item node if provided,
* and check the validation of bitstream node if provided.
*
* @param accessControl mapped json data
* @throws SQLException if something goes wrong in the database
* @throws BulkAccessControlException if accessControl is invalid
*/
private void validate(BulkAccessControlInput accessControl) throws SQLException {
AccessConditionItem item = accessControl.getItem();
AccessConditionBitstream bitstream = accessControl.getBitstream();
if (Objects.isNull(item) && Objects.isNull(bitstream)) {
handler.logError("item or bitstream node must be provided");
throw new BulkAccessControlException("item or bitstream node must be provided");
}
if (Objects.nonNull(item)) {
validateItemNode(item);
}
if (Objects.nonNull(bitstream)) {
validateBitstreamNode(bitstream);
}
}
/**
* check the validation of item node, the item mode
* must be provided with value 'add' or 'replace'
* if mode equals to add so the information
* of accessCondition must be provided,
* also checking that accessConditions information are valid.
*
* @param item the item node
* @throws BulkAccessControlException if item node is invalid
*/
private void validateItemNode(AccessConditionItem item) {
String mode = item.getMode();
List<AccessCondition> accessConditions = item.getAccessConditions();
if (StringUtils.isEmpty(mode)) {
handler.logError("item mode node must be provided");
throw new BulkAccessControlException("item mode node must be provided");
} else if (!(StringUtils.equalsAny(mode, ADD_MODE, REPLACE_MODE))) {
handler.logError("wrong value for item mode<" + mode + ">");
throw new BulkAccessControlException("wrong value for item mode<" + mode + ">");
} else if (ADD_MODE.equals(mode) && isEmpty(accessConditions)) {
handler.logError("accessConditions of item must be provided with mode<" + ADD_MODE + ">");
throw new BulkAccessControlException(
"accessConditions of item must be provided with mode<" + ADD_MODE + ">");
}
for (AccessCondition accessCondition : accessConditions) {
validateAccessCondition(accessCondition);
}
}
/**
* check the validation of bitstream node, the bitstream mode
* must be provided with value 'add' or 'replace'
* if mode equals to add so the information of accessConditions
* must be provided,
* also checking that constraint information is valid,
* also checking that accessConditions information are valid.
*
* @param bitstream the bitstream node
* @throws SQLException if something goes wrong in the database
* @throws BulkAccessControlException if bitstream node is invalid
*/
private void validateBitstreamNode(AccessConditionBitstream bitstream) throws SQLException {
String mode = bitstream.getMode();
List<AccessCondition> accessConditions = bitstream.getAccessConditions();
if (StringUtils.isEmpty(mode)) {
handler.logError("bitstream mode node must be provided");
throw new BulkAccessControlException("bitstream mode node must be provided");
} else if (!(StringUtils.equalsAny(mode, ADD_MODE, REPLACE_MODE))) {
handler.logError("wrong value for bitstream mode<" + mode + ">");
throw new BulkAccessControlException("wrong value for bitstream mode<" + mode + ">");
} else if (ADD_MODE.equals(mode) && isEmpty(accessConditions)) {
handler.logError("accessConditions of bitstream must be provided with mode<" + ADD_MODE + ">");
throw new BulkAccessControlException(
"accessConditions of bitstream must be provided with mode<" + ADD_MODE + ">");
}
validateConstraint(bitstream);
for (AccessCondition accessCondition : bitstream.getAccessConditions()) {
validateAccessCondition(accessCondition);
}
}
/**
* check the validation of constraint node if provided,
* constraint isn't supported when multiple uuids are provided
* or when uuid isn't an Item
*
* @param bitstream the bitstream node
* @throws SQLException if something goes wrong in the database
* @throws BulkAccessControlException if constraint node is invalid
*/
private void validateConstraint(AccessConditionBitstream bitstream) throws SQLException {
if (uuids.size() > 1 && containsConstraints(bitstream)) {
handler.logError("constraint isn't supported when multiple uuids are provided");
throw new BulkAccessControlException("constraint isn't supported when multiple uuids are provided");
} else if (uuids.size() == 1 && containsConstraints(bitstream)) {
DSpaceObject dso =
dSpaceObjectUtils.findDSpaceObject(context, UUID.fromString(uuids.get(0)));
if (Objects.nonNull(dso) && dso.getType() != Constants.ITEM) {
handler.logError("constraint is not supported when uuid isn't an Item");
throw new BulkAccessControlException("constraint is not supported when uuid isn't an Item");
}
}
}
/**
* check the validation of access condition,
* the access condition name must equal to one of configured access conditions,
* then call {@link AccessConditionOption#validateResourcePolicy(
* Context, String, Date, Date)} if exception happens so, it's invalid.
*
* @param accessCondition the accessCondition
* @throws BulkAccessControlException if the accessCondition is invalid
*/
private void validateAccessCondition(AccessCondition accessCondition) {
if (!itemAccessConditions.containsKey(accessCondition.getName())) {
handler.logError("wrong access condition <" + accessCondition.getName() + ">");
throw new BulkAccessControlException("wrong access condition <" + accessCondition.getName() + ">");
}
try {
itemAccessConditions.get(accessCondition.getName()).validateResourcePolicy(
context, accessCondition.getName(), accessCondition.getStartDate(), accessCondition.getEndDate());
} catch (Exception e) {
handler.logError("invalid access condition, " + e.getMessage());
handler.handleException(e);
}
}
/**
* find all items of provided {@link #uuids} from solr,
* then update the resource policies of items
* or bitstreams of items (only bitstreams of ORIGINAL bundles)
* and derivative bitstreams, or both of them.
*
* @param accessControl the access control input
* @throws SQLException if something goes wrong in the database
* @throws SearchServiceException if a search error occurs
* @throws AuthorizeException if an authorization error occurs
*/
private void updateItemsAndBitstreamsPolices(BulkAccessControlInput accessControl)
throws SQLException, SearchServiceException, AuthorizeException {
int counter = 0;
int start = 0;
int limit = 20;
String query = buildSolrQuery(uuids);
Iterator<Item> itemIterator = findItems(query, start, limit);
while (itemIterator.hasNext()) {
Item item = context.reloadEntity(itemIterator.next());
if (Objects.nonNull(accessControl.getItem())) {
updateItemPolicies(item, accessControl);
}
if (Objects.nonNull(accessControl.getBitstream())) {
updateBitstreamsPolicies(item, accessControl);
}
context.commit();
context.uncacheEntity(item);
counter++;
if (counter == limit) {
counter = 0;
start += limit;
itemIterator = findItems(query, start, limit);
}
}
}
private String buildSolrQuery(List<String> uuids) throws SQLException {
String [] query = new String[uuids.size()];
for (int i = 0 ; i < query.length ; i++) {
DSpaceObject dso = dSpaceObjectUtils.findDSpaceObject(context, UUID.fromString(uuids.get(i)));
if (dso.getType() == Constants.COMMUNITY) {
query[i] = "location.comm:" + dso.getID();
} else if (dso.getType() == Constants.COLLECTION) {
query[i] = "location.coll:" + dso.getID();
} else if (dso.getType() == Constants.ITEM) {
query[i] = "search.resourceid:" + dso.getID();
}
}
return StringUtils.joinWith(" OR ", query);
}
private Iterator<Item> findItems(String query, int start, int limit)
throws SearchServiceException {
DiscoverQuery discoverQuery = buildDiscoveryQuery(query, start, limit);
return searchService.search(context, discoverQuery)
.getIndexableObjects()
.stream()
.map(indexableObject ->
((IndexableItem) indexableObject).getIndexedObject())
.collect(Collectors.toList())
.iterator();
}
private DiscoverQuery buildDiscoveryQuery(String query, int start, int limit) {
DiscoverQuery discoverQuery = new DiscoverQuery();
discoverQuery.setDSpaceObjectFilter(IndexableItem.TYPE);
discoverQuery.setQuery(query);
discoverQuery.setStart(start);
discoverQuery.setMaxResults(limit);
discoverQuery.setSortField("search.resourceid", DiscoverQuery.SORT_ORDER.asc);
return discoverQuery;
}
/**
* update the item resource policies,
* when mode equals to 'replace' will remove
* all current resource polices of types 'TYPE_CUSTOM'
* and 'TYPE_INHERITED' then, set the new resource policies.
*
* @param item the item
* @param accessControl the access control input
* @throws SQLException if something goes wrong in the database
* @throws AuthorizeException if an authorization error occurs
*/
private void updateItemPolicies(Item item, BulkAccessControlInput accessControl)
throws SQLException, AuthorizeException {
AccessConditionItem acItem = accessControl.getItem();
if (REPLACE_MODE.equals(acItem.getMode())) {
removeReadPolicies(item, TYPE_CUSTOM);
removeReadPolicies(item, TYPE_INHERITED);
}
setItemPolicies(item, accessControl);
logInfo(acItem.getAccessConditions(), acItem.getMode(), item);
}
/**
* create the new resource policies of item.
* then, call {@link ItemService#adjustItemPolicies(
* Context, Item, Collection)} to adjust item's default policies.
*
* @param item the item
* @param accessControl the access control input
* @throws SQLException if something goes wrong in the database
* @throws AuthorizeException if an authorization error occurs
*/
private void setItemPolicies(Item item, BulkAccessControlInput accessControl)
throws SQLException, AuthorizeException {
accessControl
.getItem()
.getAccessConditions()
.forEach(accessCondition -> createResourcePolicy(item, accessCondition,
itemAccessConditions.get(accessCondition.getName())));
itemService.adjustItemPolicies(context, item, item.getOwningCollection(), false);
}
/**
* update the resource policies of all item's bitstreams
* or bitstreams specified into constraint node,
* and derivative bitstreams.
*
* <strong>NOTE:</strong> only bitstreams of ORIGINAL bundles
*
* @param item the item contains bitstreams
* @param accessControl the access control input
*/
private void updateBitstreamsPolicies(Item item, BulkAccessControlInput accessControl) {
AccessConditionBitstream.Constraint constraints = accessControl.getBitstream().getConstraints();
// look over all the bundles and force initialization of bitstreams collection
// to avoid lazy initialization exception
long count = item.getBundles()
.stream()
.flatMap(bundle ->
bundle.getBitstreams().stream())
.count();
item.getBundles(CONTENT_BUNDLE_NAME).stream()
.flatMap(bundle -> bundle.getBitstreams().stream())
.filter(bitstream -> constraints == null ||
constraints.getUuid() == null ||
constraints.getUuid().size() == 0 ||
constraints.getUuid().contains(bitstream.getID().toString()))
.forEach(bitstream -> updateBitstreamPolicies(bitstream, item, accessControl));
}
/**
* check that the bitstream node is existed,
* and contains constraint node,
* and constraint contains uuids.
*
* @param bitstream the bitstream node
* @return true when uuids of constraint of bitstream is not empty,
* otherwise false
*/
private boolean containsConstraints(AccessConditionBitstream bitstream) {
return Objects.nonNull(bitstream) &&
Objects.nonNull(bitstream.getConstraints()) &&
isNotEmpty(bitstream.getConstraints().getUuid());
}
/**
* update the bitstream resource policies,
* when mode equals to replace will remove
* all current resource polices of types 'TYPE_CUSTOM'
* and 'TYPE_INHERITED' then, set the new resource policies.
*
* @param bitstream the bitstream
* @param item the item of bitstream
* @param accessControl the access control input
* @throws RuntimeException if something goes wrong in the database
* or an authorization error occurs
*/
private void updateBitstreamPolicies(Bitstream bitstream, Item item, BulkAccessControlInput accessControl) {
AccessConditionBitstream acBitstream = accessControl.getBitstream();
if (REPLACE_MODE.equals(acBitstream.getMode())) {
removeReadPolicies(bitstream, TYPE_CUSTOM);
removeReadPolicies(bitstream, TYPE_INHERITED);
}
try {
setBitstreamPolicies(bitstream, item, accessControl);
logInfo(acBitstream.getAccessConditions(), acBitstream.getMode(), bitstream);
} catch (SQLException | AuthorizeException e) {
throw new RuntimeException(e);
}
}
/**
* remove dspace object's read policies.
*
* @param dso the dspace object
* @param type resource policy type
* @throws BulkAccessControlException if something goes wrong
* in the database or an authorization error occurs
*/
private void removeReadPolicies(DSpaceObject dso, String type) {
try {
resourcePolicyService.removePolicies(context, dso, type, Constants.READ);
} catch (SQLException | AuthorizeException e) {
throw new BulkAccessControlException(e);
}
}
/**
* create the new resource policies of bitstream.
* then, call {@link ItemService#adjustItemPolicies(
* Context, Item, Collection)} to adjust bitstream's default policies.
* and also update the resource policies of its derivative bitstreams.
*
* @param bitstream the bitstream
* @param item the item of bitstream
* @param accessControl the access control input
* @throws SQLException if something goes wrong in the database
* @throws AuthorizeException if an authorization error occurs
*/
private void setBitstreamPolicies(Bitstream bitstream, Item item, BulkAccessControlInput accessControl)
throws SQLException, AuthorizeException {
accessControl.getBitstream()
.getAccessConditions()
.forEach(accessCondition -> createResourcePolicy(bitstream, accessCondition,
uploadAccessConditions.get(accessCondition.getName())));
itemService.adjustBitstreamPolicies(context, item, item.getOwningCollection(), bitstream);
mediaFilterService.updatePoliciesOfDerivativeBitstreams(context, item, bitstream);
}
/**
* create the resource policy from the information
* comes from the access condition.
*
* @param obj the dspace object
* @param accessCondition the access condition
* @param accessConditionOption the access condition option
* @throws BulkAccessControlException if an exception occurs
*/
private void createResourcePolicy(DSpaceObject obj, AccessCondition accessCondition,
AccessConditionOption accessConditionOption) {
String name = accessCondition.getName();
String description = accessCondition.getDescription();
Date startDate = accessCondition.getStartDate();
Date endDate = accessCondition.getEndDate();
try {
accessConditionOption.createResourcePolicy(context, obj, name, description, startDate, endDate);
} catch (Exception e) {
throw new BulkAccessControlException(e);
}
}
/**
* Set the eperson in the context
*
* @param context the context
* @throws SQLException if database error
*/
protected void setEPerson(Context context) throws SQLException {
EPerson myEPerson = epersonService.find(context, this.getEpersonIdentifier());
if (myEPerson == null) {
handler.logError("EPerson cannot be found: " + this.getEpersonIdentifier());
throw new UnsupportedOperationException("EPerson cannot be found: " + this.getEpersonIdentifier());
}
context.setCurrentUser(myEPerson);
}
private void logInfo(List<AccessCondition> accessConditions, String mode, DSpaceObject dso) {
String type = dso.getClass().getSimpleName();
if (REPLACE_MODE.equals(mode) && isEmpty(accessConditions)) {
handler.logInfo("Cleaning " + type + " {" + dso.getID() + "} policies");
handler.logInfo("Inheriting policies from owning Collection in " + type + " {" + dso.getID() + "}");
return;
}
StringBuilder message = new StringBuilder();
message.append(mode.equals(ADD_MODE) ? "Adding " : "Replacing ")
.append(type)
.append(" {")
.append(dso.getID())
.append("} policy")
.append(mode.equals(ADD_MODE) ? " with " : " to ")
.append("access conditions:");
AppendAccessConditionsInfo(message, accessConditions);
handler.logInfo(message.toString());
if (REPLACE_MODE.equals(mode) && isAppendModeEnabled()) {
handler.logInfo("Inheriting policies from owning Collection in " + type + " {" + dso.getID() + "}");
}
}
private void AppendAccessConditionsInfo(StringBuilder message, List<AccessCondition> accessConditions) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
message.append("{");
for (int i = 0; i < accessConditions.size(); i++) {
message.append(accessConditions.get(i).getName());
Optional.ofNullable(accessConditions.get(i).getStartDate())
.ifPresent(date -> message.append(", start_date=" + dateFormat.format(date)));
Optional.ofNullable(accessConditions.get(i).getEndDate())
.ifPresent(date -> message.append(", end_date=" + dateFormat.format(date)));
if (i != accessConditions.size() - 1) {
message.append(", ");
}
}
message.append("}");
}
private boolean isAppendModeEnabled() {
return configurationService.getBooleanProperty("core.authorization.installitem.inheritance-read.append-mode");
}
protected boolean isAuthorized(Context context) {
return true;
}
@Override
@SuppressWarnings("unchecked")
public BulkAccessControlScriptConfiguration<BulkAccessControl> getScriptConfiguration() {
return new DSpace().getServiceManager()
.getServiceByName("bulk-access-control", BulkAccessControlScriptConfiguration.class);
}
}

View File

@@ -0,0 +1,66 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.scripts.DSpaceCommandLineParameter;
/**
* Extension of {@link BulkAccessControl} for CLI.
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*
*/
public class BulkAccessControlCli extends BulkAccessControl {
@Override
protected void setEPerson(Context context) throws SQLException {
EPerson myEPerson;
eperson = commandLine.getOptionValue('e');
if (eperson == null) {
handler.logError("An eperson to do the the Bulk Access Control must be specified " +
"(run with -h flag for details)");
throw new UnsupportedOperationException("An eperson to do the Bulk Access Control must be specified");
}
if (StringUtils.contains(eperson, '@')) {
myEPerson = epersonService.findByEmail(context, eperson);
} else {
myEPerson = epersonService.find(context, UUID.fromString(eperson));
}
if (myEPerson == null) {
handler.logError("EPerson cannot be found: " + eperson + " (run with -h flag for details)");
throw new UnsupportedOperationException("EPerson cannot be found: " + eperson);
}
context.setCurrentUser(myEPerson);
}
@Override
protected boolean isAuthorized(Context context) {
if (context.getCurrentUser() == null) {
return false;
}
return getScriptConfiguration().isAllowedToExecute(context,
Arrays.stream(commandLine.getOptions())
.map(option ->
new DSpaceCommandLineParameter("-" + option.getOpt(), option.getValue()))
.collect(Collectors.toList()));
}
}

View File

@@ -0,0 +1,42 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol;
import java.io.InputStream;
import org.apache.commons.cli.Options;
/**
* Extension of {@link BulkAccessControlScriptConfiguration} for CLI.
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*
*/
public class BulkAccessControlCliScriptConfiguration<T extends BulkAccessControlCli>
extends BulkAccessControlScriptConfiguration<T> {
@Override
public Options getOptions() {
Options options = new Options();
options.addOption("u", "uuid", true, "target uuids of communities/collections/items");
options.getOption("u").setType(String.class);
options.getOption("u").setRequired(true);
options.addOption("f", "file", true, "source json file");
options.getOption("f").setType(InputStream.class);
options.getOption("f").setRequired(true);
options.addOption("e", "eperson", true, "email of EPerson used to perform actions");
options.getOption("e").setRequired(true);
options.addOption("h", "help", false, "help");
return options;
}
}

View File

@@ -0,0 +1,110 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.commons.cli.Options;
import org.dspace.app.util.DSpaceObjectUtilsImpl;
import org.dspace.app.util.service.DSpaceObjectUtils;
import org.dspace.content.DSpaceObject;
import org.dspace.core.Context;
import org.dspace.scripts.DSpaceCommandLineParameter;
import org.dspace.scripts.configuration.ScriptConfiguration;
import org.dspace.utils.DSpace;
/**
* Script configuration for {@link BulkAccessControl}.
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*
* @param <T> the {@link BulkAccessControl} type
*/
public class BulkAccessControlScriptConfiguration<T extends BulkAccessControl> extends ScriptConfiguration<T> {
private Class<T> dspaceRunnableClass;
@Override
public boolean isAllowedToExecute(Context context, List<DSpaceCommandLineParameter> commandLineParameters) {
try {
if (Objects.isNull(commandLineParameters)) {
return authorizeService.isAdmin(context) || authorizeService.isComColAdmin(context)
|| authorizeService.isItemAdmin(context);
} else {
List<String> dspaceObjectIDs =
commandLineParameters.stream()
.filter(parameter -> "-u".equals(parameter.getName()))
.map(DSpaceCommandLineParameter::getValue)
.collect(Collectors.toList());
DSpaceObjectUtils dSpaceObjectUtils = new DSpace().getServiceManager().getServiceByName(
DSpaceObjectUtilsImpl.class.getName(), DSpaceObjectUtilsImpl.class);
for (String dspaceObjectID : dspaceObjectIDs) {
DSpaceObject dso = dSpaceObjectUtils.findDSpaceObject(context, UUID.fromString(dspaceObjectID));
if (Objects.isNull(dso)) {
throw new IllegalArgumentException();
}
if (!authorizeService.isAdmin(context, dso)) {
return false;
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return true;
}
@Override
public Options getOptions() {
if (options == null) {
Options options = new Options();
options.addOption("u", "uuid", true, "target uuids of communities/collections/items");
options.getOption("u").setType(String.class);
options.getOption("u").setRequired(true);
options.addOption("f", "file", true, "source json file");
options.getOption("f").setType(InputStream.class);
options.getOption("f").setRequired(true);
options.addOption("h", "help", false, "help");
super.options = options;
}
return options;
}
@Override
public Class<T> getDspaceRunnableClass() {
return dspaceRunnableClass;
}
/**
* Generic setter for the dspaceRunnableClass
*
* @param dspaceRunnableClass The dspaceRunnableClass to be set on this
* BulkImportScriptConfiguration
*/
@Override
public void setDspaceRunnableClass(Class<T> dspaceRunnableClass) {
this.dspaceRunnableClass = dspaceRunnableClass;
}
}

View File

@@ -0,0 +1,48 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol.exception;
/**
* Exception for errors that occurs during the bulk access control
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*
*/
public class BulkAccessControlException extends RuntimeException {
private static final long serialVersionUID = -74730626862418515L;
/**
* Constructor with error message and cause.
*
* @param message the error message
* @param cause the error cause
*/
public BulkAccessControlException(String message, Throwable cause) {
super(message, cause);
}
/**
* Constructor with error message.
*
* @param message the error message
*/
public BulkAccessControlException(String message) {
super(message);
}
/**
* Constructor with error cause.
*
* @param cause the error cause
*/
public BulkAccessControlException(Throwable cause) {
super(cause);
}
}

View File

@@ -0,0 +1,59 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol.model;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.dspace.app.bulkaccesscontrol.BulkAccessControl;
import org.dspace.util.MultiFormatDateDeserializer;
/**
* Class that model the values of an Access Condition as expressed in the {@link BulkAccessControl} input file
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*/
public class AccessCondition {
private String name;
private String description;
@JsonDeserialize(using = MultiFormatDateDeserializer.class)
private Date startDate;
@JsonDeserialize(using = MultiFormatDateDeserializer.class)
private Date endDate;
public AccessCondition() {
}
public AccessCondition(String name, String description, Date startDate, Date endDate) {
this.name = name;
this.description = description;
this.startDate = startDate;
this.endDate = endDate;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public Date getStartDate() {
return startDate;
}
public Date getEndDate() {
return endDate;
}
}

View File

@@ -0,0 +1,69 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol.model;
import java.util.ArrayList;
import java.util.List;
import org.dspace.app.bulkaccesscontrol.BulkAccessControl;
/**
* Class that model the value of bitstream node
* from json file of the {@link BulkAccessControl}
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*/
public class AccessConditionBitstream {
private String mode;
private Constraint constraints;
private List<AccessCondition> accessConditions;
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public Constraint getConstraints() {
return constraints;
}
public void setConstraints(Constraint constraints) {
this.constraints = constraints;
}
public List<AccessCondition> getAccessConditions() {
if (accessConditions == null) {
return new ArrayList<>();
}
return accessConditions;
}
public void setAccessConditions(List<AccessCondition> accessConditions) {
this.accessConditions = accessConditions;
}
public class Constraint {
private List<String> uuid;
public List<String> getUuid() {
return uuid;
}
public void setUuid(List<String> uuid) {
this.uuid = uuid;
}
}
}

View File

@@ -0,0 +1,45 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol.model;
import java.util.ArrayList;
import java.util.List;
import org.dspace.app.bulkaccesscontrol.BulkAccessControl;
/**
* Class that model the value of item node
* from json file of the {@link BulkAccessControl}
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*/
public class AccessConditionItem {
String mode;
List<AccessCondition> accessConditions;
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public List<AccessCondition> getAccessConditions() {
if (accessConditions == null) {
return new ArrayList<>();
}
return accessConditions;
}
public void setAccessConditions(List<AccessCondition> accessConditions) {
this.accessConditions = accessConditions;
}
}

View File

@@ -0,0 +1,50 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol.model;
import java.util.List;
import org.dspace.submit.model.AccessConditionOption;
/**
* A collection of conditions to be met when bulk access condition.
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*/
public class BulkAccessConditionConfiguration {
private String name;
private List<AccessConditionOption> itemAccessConditionOptions;
private List<AccessConditionOption> bitstreamAccessConditionOptions;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<AccessConditionOption> getItemAccessConditionOptions() {
return itemAccessConditionOptions;
}
public void setItemAccessConditionOptions(
List<AccessConditionOption> itemAccessConditionOptions) {
this.itemAccessConditionOptions = itemAccessConditionOptions;
}
public List<AccessConditionOption> getBitstreamAccessConditionOptions() {
return bitstreamAccessConditionOptions;
}
public void setBitstreamAccessConditionOptions(
List<AccessConditionOption> bitstreamAccessConditionOptions) {
this.bitstreamAccessConditionOptions = bitstreamAccessConditionOptions;
}
}

View File

@@ -0,0 +1,72 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol.model;
import org.dspace.app.bulkaccesscontrol.BulkAccessControl;
/**
* Class that model the content of the JSON file used as input for the {@link BulkAccessControl}
*
* <code> <br/>
* { <br/>
* item: { <br/>
* mode: "replace", <br/>
* accessConditions: [ <br/>
* { <br/>
* "name": "openaccess" <br/>
* } <br/>
* ] <br/>
* }, <br/>
* bitstream: { <br/>
* constraints: { <br/>
* uuid: [bit-uuid1, bit-uuid2, ..., bit-uuidN], <br/>
* }, <br/>
* mode: "add", <br/>
* accessConditions: [ <br/>
* { <br/>
* "name": "embargo", <br/>
* "startDate": "2024-06-24T23:59:59.999+0000" <br/>
* } <br/>
* ] <br/>
* } <br/>
* }
* </code>
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*/
public class BulkAccessControlInput {
AccessConditionItem item;
AccessConditionBitstream bitstream;
public BulkAccessControlInput() {
}
public BulkAccessControlInput(AccessConditionItem item,
AccessConditionBitstream bitstream) {
this.item = item;
this.bitstream = bitstream;
}
public AccessConditionItem getItem() {
return item;
}
public void setItem(AccessConditionItem item) {
this.item = item;
}
public AccessConditionBitstream getBitstream() {
return bitstream;
}
public void setBitstream(AccessConditionBitstream bitstream) {
this.bitstream = bitstream;
}
}

View File

@@ -0,0 +1,45 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.bulkaccesscontrol.service;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.dspace.app.bulkaccesscontrol.model.BulkAccessConditionConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Simple bean to manage different Bulk Access Condition configurations
*
* @author Mohamed Eskander (mohamed.eskander at 4science.it)
*/
public class BulkAccessConditionConfigurationService {
@Autowired
private List<BulkAccessConditionConfiguration> bulkAccessConditionConfigurations;
public List<BulkAccessConditionConfiguration> getBulkAccessConditionConfigurations() {
if (CollectionUtils.isEmpty(bulkAccessConditionConfigurations)) {
return new ArrayList<>();
}
return bulkAccessConditionConfigurations;
}
public BulkAccessConditionConfiguration getBulkAccessConditionConfiguration(String name) {
return getBulkAccessConditionConfigurations().stream()
.filter(x -> name.equals(x.getName()))
.findFirst()
.orElse(null);
}
public void setBulkAccessConditionConfigurations(
List<BulkAccessConditionConfiguration> bulkAccessConditionConfigurations) {
this.bulkAccessConditionConfigurations = bulkAccessConditionConfigurations;
}
}

View File

@@ -188,6 +188,15 @@ public class DSpaceCSV implements Serializable {
// Verify that the heading is valid in the metadata registry
String[] clean = element.split("\\[");
String[] parts = clean[0].split("\\.");
// Check language if present, if it's ANY then throw an exception
if (clean.length > 1 && clean[1].equals(Item.ANY + "]")) {
throw new MetadataImportInvalidHeadingException("Language ANY (*) was found in the heading " +
"of the metadata value to import, " +
"this should never be the case",
MetadataImportInvalidHeadingException.ENTRY,
columnCounter);
}
if (parts.length < 2) {
throw new MetadataImportInvalidHeadingException(element,
@@ -223,6 +232,15 @@ public class DSpaceCSV implements Serializable {
}
}
// Verify there isnt already a header that is the same; if it already exists,
// throw MetadataImportInvalidHeadingException
String header = authorityPrefix + element;
if (headings.contains(header)) {
throw new MetadataImportInvalidHeadingException("Duplicate heading found: " + header,
MetadataImportInvalidHeadingException.ENTRY,
columnCounter);
}
// Store the heading
headings.add(authorityPrefix + element);
}

View File

@@ -7,33 +7,16 @@
*/
package org.dspace.app.bulkedit;
import java.sql.SQLException;
import org.apache.commons.cli.Options;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.core.Context;
import org.dspace.scripts.configuration.ScriptConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
/**
* The {@link ScriptConfiguration} for the {@link MetadataDeletion} script.
*/
public class MetadataDeletionScriptConfiguration<T extends MetadataDeletion> extends ScriptConfiguration<T> {
@Autowired
private AuthorizeService authorizeService;
private Class<T> dspaceRunnableClass;
@Override
public boolean isAllowedToExecute(Context context) {
try {
return authorizeService.isAdmin(context);
} catch (SQLException e) {
throw new RuntimeException("SQLException occurred when checking if the current user is an admin", e);
}
}
@Override
public Options getOptions() {
if (options == null) {

View File

@@ -7,22 +7,14 @@
*/
package org.dspace.app.bulkedit;
import java.sql.SQLException;
import org.apache.commons.cli.Options;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.core.Context;
import org.dspace.scripts.configuration.ScriptConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
/**
* The {@link ScriptConfiguration} for the {@link MetadataExport} script
*/
public class MetadataExportScriptConfiguration<T extends MetadataExport> extends ScriptConfiguration<T> {
@Autowired
private AuthorizeService authorizeService;
private Class<T> dspaceRunnableClass;
@Override
@@ -39,15 +31,6 @@ public class MetadataExportScriptConfiguration<T extends MetadataExport> extends
this.dspaceRunnableClass = dspaceRunnableClass;
}
@Override
public boolean isAllowedToExecute(Context context) {
try {
return authorizeService.isAdmin(context);
} catch (SQLException e) {
throw new RuntimeException("SQLException occurred when checking if the current user is an admin", e);
}
}
@Override
public Options getOptions() {
if (options == null) {

View File

@@ -14,6 +14,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.DefaultParser.Builder;
import org.apache.commons.cli.ParseException;
import org.dspace.content.Item;
import org.dspace.content.MetadataDSpaceCsvExportServiceImpl;
@@ -143,7 +145,7 @@ public class MetadataExportSearch extends DSpaceRunnable<MetadataExportSearchScr
Iterator<Item> itemIterator = searchService.iteratorSearch(context, dso, discoverQuery);
handler.logDebug("creating dspacecsv");
DSpaceCSV dSpaceCSV = metadataDSpaceCsvExportService.export(context, itemIterator, true);
DSpaceCSV dSpaceCSV = metadataDSpaceCsvExportService.export(context, itemIterator, true, handler);
handler.logDebug("writing to file " + getFileNameOrExportFile());
handler.writeFilestream(context, getFileNameOrExportFile(), dSpaceCSV.getInputStream(), EXPORT_CSV);
context.restoreAuthSystemState();
@@ -167,4 +169,14 @@ public class MetadataExportSearch extends DSpaceRunnable<MetadataExportSearchScr
}
return scopeObj;
}
@Override
protected StepResult parse(String[] args) throws ParseException {
commandLine = new DefaultParser().parse(getScriptConfiguration().getOptions(), args);
Builder builder = new DefaultParser().builder();
builder.setStripLeadingAndTrailingQuotes(false);
commandLine = builder.build().parse(getScriptConfiguration().getOptions(), args);
setup();
return StepResult.Continue;
}
}

View File

@@ -9,7 +9,6 @@
package org.dspace.app.bulkedit;
import org.apache.commons.cli.Options;
import org.dspace.core.Context;
import org.dspace.scripts.configuration.ScriptConfiguration;
/**
@@ -29,11 +28,6 @@ public class MetadataExportSearchScriptConfiguration<T extends MetadataExportSea
this.dspaceRunnableclass = dspaceRunnableClass;
}
@Override
public boolean isAllowedToExecute(Context context) {
return true;
}
@Override
public Options getOptions() {
if (options == null) {

View File

@@ -494,7 +494,7 @@ public class MetadataImport extends DSpaceRunnable<MetadataImportScriptConfigura
// Check it has an owning collection
List<String> collections = line.get("collection");
if (collections == null) {
if (collections == null || collections.isEmpty()) {
throw new MetadataImportException(
"New items must have a 'collection' assigned in the form of a handle");
}
@@ -578,6 +578,10 @@ public class MetadataImport extends DSpaceRunnable<MetadataImportScriptConfigura
wfItem = workflowService.startWithoutNotify(c, wsItem);
}
} else {
// Add provenance info
String provenance = installItemService.getSubmittedByProvenanceMessage(c, wsItem.getItem());
itemService.addMetadata(c, item, MetadataSchemaEnum.DC.getName(),
"description", "provenance", "en", provenance);
// Install the item
installItemService.installItem(c, wsItem);
}
@@ -598,18 +602,19 @@ public class MetadataImport extends DSpaceRunnable<MetadataImportScriptConfigura
changes.add(whatHasChanged);
}
if (change) {
//only clear cache if changes have been made.
c.uncacheEntity(wsItem);
c.uncacheEntity(wfItem);
c.uncacheEntity(item);
if (change && (rowCount % configurationService.getIntProperty("bulkedit.change.commit.count", 100) == 0)) {
c.commit();
handler.logInfo(LogHelper.getHeader(c, "metadata_import_commit", "lineNumber=" + rowCount));
}
populateRefAndRowMap(line, item == null ? null : item.getID());
// keep track of current rows processed
rowCount++;
}
if (change) {
c.commit();
}
c.setMode(originalMode);
c.setMode(Context.Mode.READ_ONLY);
// Return the changes
@@ -820,8 +825,10 @@ public class MetadataImport extends DSpaceRunnable<MetadataImportScriptConfigura
addRelationships(c, item, element, values);
} else {
itemService.clearMetadata(c, item, schema, element, qualifier, language);
itemService.addMetadata(c, item, schema, element, qualifier,
language, values, authorities, confidences);
if (!values.isEmpty()) {
itemService.addMetadata(c, item, schema, element, qualifier,
language, values, authorities, confidences);
}
itemService.update(c, item);
}
}
@@ -1116,8 +1123,8 @@ public class MetadataImport extends DSpaceRunnable<MetadataImportScriptConfigura
.getAuthoritySeparator() + dcv.getConfidence();
}
// Add it
if ((value != null) && (!"".equals(value))) {
// Add it, if value is not blank
if (value != null && StringUtils.isNotBlank(value)) {
changes.registerAdd(dcv);
}
}
@@ -1362,7 +1369,7 @@ public class MetadataImport extends DSpaceRunnable<MetadataImportScriptConfigura
* is the field is defined as authority controlled
*/
private static boolean isAuthorityControlledField(String md) {
String mdf = StringUtils.substringAfter(md, ":");
String mdf = md.contains(":") ? StringUtils.substringAfter(md, ":") : md;
mdf = StringUtils.substringBefore(mdf, "[");
return authorityControlled.contains(mdf);
}

View File

@@ -8,22 +8,15 @@
package org.dspace.app.bulkedit;
import java.io.InputStream;
import java.sql.SQLException;
import org.apache.commons.cli.Options;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.core.Context;
import org.dspace.scripts.configuration.ScriptConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
/**
* The {@link ScriptConfiguration} for the {@link MetadataImport} script
*/
public class MetadataImportScriptConfiguration<T extends MetadataImport> extends ScriptConfiguration<T> {
@Autowired
private AuthorizeService authorizeService;
private Class<T> dspaceRunnableClass;
@Override
@@ -40,15 +33,6 @@ public class MetadataImportScriptConfiguration<T extends MetadataImport> extends
this.dspaceRunnableClass = dspaceRunnableClass;
}
@Override
public boolean isAllowedToExecute(Context context) {
try {
return authorizeService.isAdmin(context);
} catch (SQLException e) {
throw new RuntimeException("SQLException occurred when checking if the current user is an admin", e);
}
}
@Override
public Options getOptions() {
if (options == null) {

View File

@@ -0,0 +1,152 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.client;
import static org.apache.commons.collections4.ListUtils.emptyIfNull;
import java.util.List;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.HttpResponseInterceptor;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.dspace.services.ConfigurationService;
import org.dspace.utils.DSpace;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Factory of {@link HttpClient} with common configurations.
*
* @author Luca Giamminonni (luca.giamminonni at 4science.it)
*
*/
public class DSpaceHttpClientFactory {
@Autowired
private ConfigurationService configurationService;
@Autowired
private DSpaceProxyRoutePlanner proxyRoutePlanner;
@Autowired(required = false)
private List<HttpRequestInterceptor> requestInterceptors;
@Autowired(required = false)
private List<HttpResponseInterceptor> responseInterceptors;
/**
* Get an instance of {@link DSpaceHttpClientFactory} from the Spring context.
* @return the bean instance
*/
public static DSpaceHttpClientFactory getInstance() {
return new DSpace().getSingletonService(DSpaceHttpClientFactory.class);
}
/**
* Build an instance of {@link HttpClient} setting the proxy if configured.
*
* @return the client
*/
public CloseableHttpClient build() {
return build(HttpClientBuilder.create(), true);
}
/**
* return a Builder if an instance of {@link HttpClient} pre-setting the proxy if configured.
*
* @return the client
*/
public HttpClientBuilder builder(boolean setProxy) {
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
if (setProxy) {
clientBuilder.setRoutePlanner(proxyRoutePlanner);
}
getRequestInterceptors().forEach(clientBuilder::addInterceptorLast);
getResponseInterceptors().forEach(clientBuilder::addInterceptorLast);
return clientBuilder;
}
/**
* Build an instance of {@link HttpClient} without setting the proxy, even if
* configured.
*
* @return the client
*/
public CloseableHttpClient buildWithoutProxy() {
return build(HttpClientBuilder.create(), false);
}
/**
* Build an instance of {@link HttpClient} setting the proxy if configured,
* disabling automatic retries and setting the maximum total connection.
*
* @param maxConnTotal the maximum total connection value
* @return the client
*/
public CloseableHttpClient buildWithoutAutomaticRetries(int maxConnTotal) {
HttpClientBuilder clientBuilder = HttpClientBuilder.create()
.disableAutomaticRetries()
.setMaxConnTotal(maxConnTotal);
return build(clientBuilder, true);
}
/**
* Build an instance of {@link HttpClient} setting the proxy if configured with
* the given request configuration.
* @param requestConfig the request configuration
* @return the client
*/
public CloseableHttpClient buildWithRequestConfig(RequestConfig requestConfig) {
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create()
.setDefaultRequestConfig(requestConfig);
return build(httpClientBuilder, true);
}
private CloseableHttpClient build(HttpClientBuilder clientBuilder, boolean setProxy) {
if (setProxy) {
clientBuilder.setRoutePlanner(proxyRoutePlanner);
}
getRequestInterceptors().forEach(clientBuilder::addInterceptorLast);
getResponseInterceptors().forEach(clientBuilder::addInterceptorLast);
return clientBuilder.build();
}
public ConfigurationService getConfigurationService() {
return configurationService;
}
public void setConfigurationService(ConfigurationService configurationService) {
this.configurationService = configurationService;
}
public List<HttpRequestInterceptor> getRequestInterceptors() {
return emptyIfNull(requestInterceptors);
}
public void setRequestInterceptors(List<HttpRequestInterceptor> requestInterceptors) {
this.requestInterceptors = requestInterceptors;
}
public List<HttpResponseInterceptor> getResponseInterceptors() {
return emptyIfNull(responseInterceptors);
}
public void setResponseInterceptors(List<HttpResponseInterceptor> responseInterceptors) {
this.responseInterceptors = responseInterceptors;
}
public DSpaceProxyRoutePlanner getProxyRoutePlanner() {
return proxyRoutePlanner;
}
public void setProxyRoutePlanner(DSpaceProxyRoutePlanner proxyRoutePlanner) {
this.proxyRoutePlanner = proxyRoutePlanner;
}
}

View File

@@ -0,0 +1,73 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.client;
import java.util.Arrays;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpException;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.impl.conn.DefaultRoutePlanner;
import org.apache.http.protocol.HttpContext;
import org.dspace.services.ConfigurationService;
/**
* Extension of {@link DefaultRoutePlanner} that determine the proxy based on
* the configuration service, ignoring configured hosts.
*
* @author Luca Giamminonni (luca.giamminonni at 4science.it)
*
*/
public class DSpaceProxyRoutePlanner extends DefaultRoutePlanner {
private ConfigurationService configurationService;
public DSpaceProxyRoutePlanner(ConfigurationService configurationService) {
super(null);
this.configurationService = configurationService;
}
@Override
protected HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context) throws HttpException {
if (isTargetHostConfiguredToBeIgnored(target)) {
return null;
}
String proxyHost = configurationService.getProperty("http.proxy.host");
String proxyPort = configurationService.getProperty("http.proxy.port");
if (StringUtils.isAnyBlank(proxyHost, proxyPort)) {
return null;
}
try {
return new HttpHost(proxyHost, Integer.parseInt(proxyPort), "http");
} catch (NumberFormatException e) {
throw new RuntimeException("Invalid proxy port configuration: " + proxyPort);
}
}
private boolean isTargetHostConfiguredToBeIgnored(HttpHost target) {
String[] hostsToIgnore = configurationService.getArrayProperty("http.proxy.hosts-to-ignore");
if (ArrayUtils.isEmpty(hostsToIgnore)) {
return false;
}
return Arrays.stream(hostsToIgnore)
.anyMatch(host -> matchesHost(host, target.getHostName()));
}
private boolean matchesHost(String hostPattern, String hostName) {
if (hostName.equals(hostPattern)) {
return true;
} else if (hostPattern.startsWith("*")) {
return hostName.endsWith(StringUtils.removeStart(hostPattern, "*"));
} else if (hostPattern.endsWith("*")) {
return hostName.startsWith(StringUtils.removeEnd(hostPattern, "*"));
}
return false;
}
}

View File

@@ -7,18 +7,11 @@
*/
package org.dspace.app.harvest;
import java.sql.SQLException;
import org.apache.commons.cli.Options;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.core.Context;
import org.dspace.scripts.configuration.ScriptConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
public class HarvestScriptConfiguration<T extends Harvest> extends ScriptConfiguration<T> {
@Autowired
private AuthorizeService authorizeService;
private Class<T> dspaceRunnableClass;
@@ -32,13 +25,6 @@ public class HarvestScriptConfiguration<T extends Harvest> extends ScriptConfigu
this.dspaceRunnableClass = dspaceRunnableClass;
}
public boolean isAllowedToExecute(final Context context) {
try {
return authorizeService.isAdmin(context);
} catch (SQLException e) {
throw new RuntimeException("SQLException occurred when checking if the current user is an admin", e);
}
}
public Options getOptions() {
Options options = new Options();

View File

@@ -0,0 +1,264 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemexport;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.nio.file.Path;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import org.apache.commons.cli.ParseException;
import org.apache.commons.io.file.PathUtils;
import org.dspace.app.itemexport.factory.ItemExportServiceFactory;
import org.dspace.app.itemexport.service.ItemExportService;
import org.dspace.content.Collection;
import org.dspace.content.Item;
import org.dspace.content.factory.ContentServiceFactory;
import org.dspace.content.service.CollectionService;
import org.dspace.content.service.ItemService;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.factory.EPersonServiceFactory;
import org.dspace.eperson.service.EPersonService;
import org.dspace.handle.factory.HandleServiceFactory;
import org.dspace.handle.service.HandleService;
import org.dspace.scripts.DSpaceRunnable;
import org.dspace.utils.DSpace;
/**
* Item exporter to create simple AIPs for DSpace content. Currently exports
* individual items, or entire collections. For instructions on use, see
* printUsage() method.
* <P>
* ItemExport creates the simple AIP package that the importer also uses. It
* consists of:
* <P>
* /exportdir/42/ (one directory per item) / dublin_core.xml - qualified dublin
* core in RDF schema / contents - text file, listing one file per line / file1
* - files contained in the item / file2 / ...
* <P>
* issues -doesn't handle special characters in metadata (needs to turn {@code &'s} into
* {@code &amp;}, etc.)
* <P>
* Modified by David Little, UCSD Libraries 12/21/04 to allow the registration
* of files (bitstreams) into DSpace.
*
* @author David Little
* @author Jay Paz
*/
public class ItemExport extends DSpaceRunnable<ItemExportScriptConfiguration> {
public static final String TEMP_DIR = "exportSAF";
public static final String ZIP_NAME = "exportSAFZip";
public static final String ZIP_FILENAME = "saf-export";
public static final String ZIP_EXT = "zip";
protected String typeString = null;
protected String destDirName = null;
protected String idString = null;
protected int seqStart = -1;
protected int type = -1;
protected Item item = null;
protected Collection collection = null;
protected boolean migrate = false;
protected boolean zip = false;
protected String zipFileName = "";
protected boolean excludeBitstreams = false;
protected boolean help = false;
protected static HandleService handleService = HandleServiceFactory.getInstance().getHandleService();
protected static ItemService itemService = ContentServiceFactory.getInstance().getItemService();
protected static CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService();
protected static final EPersonService epersonService =
EPersonServiceFactory.getInstance().getEPersonService();
@Override
public ItemExportScriptConfiguration getScriptConfiguration() {
return new DSpace().getServiceManager()
.getServiceByName("export", ItemExportScriptConfiguration.class);
}
@Override
public void setup() throws ParseException {
help = commandLine.hasOption('h');
if (commandLine.hasOption('t')) { // type
typeString = commandLine.getOptionValue('t');
if ("ITEM".equals(typeString)) {
type = Constants.ITEM;
} else if ("COLLECTION".equals(typeString)) {
type = Constants.COLLECTION;
}
}
if (commandLine.hasOption('i')) { // id
idString = commandLine.getOptionValue('i');
}
setNumber();
if (commandLine.hasOption('m')) { // number
migrate = true;
}
if (commandLine.hasOption('x')) {
excludeBitstreams = true;
}
}
@Override
public void internalRun() throws Exception {
if (help) {
printHelp();
return;
}
validate();
Context context = new Context();
context.turnOffAuthorisationSystem();
if (type == Constants.ITEM) {
// first, is myIDString a handle?
if (idString.indexOf('/') != -1) {
item = (Item) handleService.resolveToObject(context, idString);
if ((item == null) || (item.getType() != Constants.ITEM)) {
item = null;
}
} else {
item = itemService.find(context, UUID.fromString(idString));
}
if (item == null) {
handler.logError("The item cannot be found: " + idString + " (run with -h flag for details)");
throw new UnsupportedOperationException("The item cannot be found: " + idString);
}
} else {
if (idString.indexOf('/') != -1) {
// has a / must be a handle
collection = (Collection) handleService.resolveToObject(context,
idString);
// ensure it's a collection
if ((collection == null)
|| (collection.getType() != Constants.COLLECTION)) {
collection = null;
}
} else {
collection = collectionService.find(context, UUID.fromString(idString));
}
if (collection == null) {
handler.logError("The collection cannot be found: " + idString + " (run with -h flag for details)");
throw new UnsupportedOperationException("The collection cannot be found: " + idString);
}
}
ItemExportService itemExportService = ItemExportServiceFactory.getInstance()
.getItemExportService();
try {
itemExportService.setHandler(handler);
process(context, itemExportService);
context.complete();
} catch (Exception e) {
context.abort();
throw new Exception(e);
}
}
/**
* Validate the options
*/
protected void validate() {
if (type == -1) {
handler.logError("The type must be either COLLECTION or ITEM (run with -h flag for details)");
throw new UnsupportedOperationException("The type must be either COLLECTION or ITEM");
}
if (idString == null) {
handler.logError("The ID must be set to either a database ID or a handle (run with -h flag for details)");
throw new UnsupportedOperationException("The ID must be set to either a database ID or a handle");
}
}
/**
* Process the export
* @param context
* @throws Exception
*/
protected void process(Context context, ItemExportService itemExportService) throws Exception {
setEPerson(context);
setDestDirName(context, itemExportService);
setZip(context);
Iterator<Item> items;
if (item != null) {
List<Item> myItems = new ArrayList<>();
myItems.add(item);
items = myItems.iterator();
} else {
handler.logInfo("Exporting from collection: " + idString);
items = itemService.findByCollection(context, collection);
}
itemExportService.exportAsZip(context, items, destDirName, zipFileName,
seqStart, migrate, excludeBitstreams);
File zip = new File(destDirName + System.getProperty("file.separator") + zipFileName);
try (InputStream is = new FileInputStream(zip)) {
// write input stream on handler
handler.writeFilestream(context, ZIP_FILENAME + "." + ZIP_EXT, is, ZIP_NAME);
} finally {
PathUtils.deleteDirectory(Path.of(destDirName));
}
}
/**
* Set the destination directory option
*/
protected void setDestDirName(Context context, ItemExportService itemExportService) throws Exception {
destDirName = itemExportService.getExportWorkDirectory() + File.separator + TEMP_DIR;
}
/**
* Set the zip option
*/
protected void setZip(Context context) {
zip = true;
zipFileName = ZIP_FILENAME + "-" + context.getCurrentUser().getID() + "." + ZIP_EXT;
}
/**
* Set the number option
*/
protected void setNumber() {
seqStart = 1;
if (commandLine.hasOption('n')) { // number
seqStart = Integer.parseInt(commandLine.getOptionValue('n'));
}
}
private void setEPerson(Context context) throws SQLException {
EPerson myEPerson = epersonService.find(context, this.getEpersonIdentifier());
// check eperson
if (myEPerson == null) {
handler.logError("EPerson cannot be found: " + this.getEpersonIdentifier());
throw new UnsupportedOperationException("EPerson cannot be found: " + this.getEpersonIdentifier());
}
context.setCurrentUser(myEPerson);
}
}

View File

@@ -0,0 +1,96 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemexport;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.dspace.app.itemexport.service.ItemExportService;
import org.dspace.content.Item;
import org.dspace.core.Context;
/**
* CLI variant for the {@link ItemExport} class.
* This was done to specify the specific behaviors for the CLI.
*
* @author Francesco Pio Scognamiglio (francescopio.scognamiglio at 4science.com)
*/
public class ItemExportCLI extends ItemExport {
@Override
protected void validate() {
super.validate();
setDestDirName();
if (destDirName == null) {
handler.logError("The destination directory must be set (run with -h flag for details)");
throw new UnsupportedOperationException("The destination directory must be set");
}
if (seqStart == -1) {
handler.logError("The sequence start number must be set (run with -h flag for details)");
throw new UnsupportedOperationException("The sequence start number must be set");
}
}
@Override
protected void process(Context context, ItemExportService itemExportService) throws Exception {
setZip(context);
if (zip) {
Iterator<Item> items;
if (item != null) {
List<Item> myItems = new ArrayList<>();
myItems.add(item);
items = myItems.iterator();
} else {
handler.logInfo("Exporting from collection: " + idString);
items = itemService.findByCollection(context, collection);
}
itemExportService.exportAsZip(context, items, destDirName, zipFileName,
seqStart, migrate, excludeBitstreams);
} else {
if (item != null) {
// it's only a single item
itemExportService
.exportItem(context, Collections.singletonList(item).iterator(), destDirName,
seqStart, migrate, excludeBitstreams);
} else {
handler.logInfo("Exporting from collection: " + idString);
// it's a collection, so do a bunch of items
Iterator<Item> i = itemService.findByCollection(context, collection);
itemExportService.exportItem(context, i, destDirName, seqStart, migrate, excludeBitstreams);
}
}
}
protected void setDestDirName() {
if (commandLine.hasOption('d')) { // dest
destDirName = commandLine.getOptionValue('d');
}
}
@Override
protected void setZip(Context context) {
if (commandLine.hasOption('z')) {
zip = true;
zipFileName = commandLine.getOptionValue('z');
}
}
@Override
protected void setNumber() {
if (commandLine.hasOption('n')) { // number
seqStart = Integer.parseInt(commandLine.getOptionValue('n'));
}
}
}

View File

@@ -0,0 +1,56 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemexport;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.dspace.scripts.configuration.ScriptConfiguration;
/**
* The {@link ScriptConfiguration} for the {@link ItemExportCLI} script
*
* @author Francesco Pio Scognamiglio (francescopio.scognamiglio at 4science.com)
*/
public class ItemExportCLIScriptConfiguration extends ItemExportScriptConfiguration<ItemExportCLI> {
@Override
public Options getOptions() {
Options options = new Options();
options.addOption(Option.builder("t").longOpt("type")
.desc("type: COLLECTION or ITEM")
.hasArg().required().build());
options.addOption(Option.builder("i").longOpt("id")
.desc("ID or handle of thing to export")
.hasArg().required().build());
options.addOption(Option.builder("d").longOpt("dest")
.desc("destination where you want items to go")
.hasArg().required().build());
options.addOption(Option.builder("n").longOpt("number")
.desc("sequence number to begin exporting items with")
.hasArg().required().build());
options.addOption(Option.builder("z").longOpt("zip")
.desc("export as zip file (specify filename e.g. export.zip)")
.hasArg().required(false).build());
options.addOption(Option.builder("m").longOpt("migrate")
.desc("export for migration (remove handle and metadata that will be re-created in new system)")
.hasArg(false).required(false).build());
// as pointed out by Peter Dietz this provides similar functionality to export metadata
// but it is needed since it directly exports to Simple Archive Format (SAF)
options.addOption(Option.builder("x").longOpt("exclude-bitstreams")
.desc("do not export bitstreams")
.hasArg(false).required(false).build());
options.addOption(Option.builder("h").longOpt("help")
.desc("help")
.hasArg(false).required(false).build());
return options;
}
}

View File

@@ -1,246 +0,0 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemexport;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.dspace.app.itemexport.factory.ItemExportServiceFactory;
import org.dspace.app.itemexport.service.ItemExportService;
import org.dspace.content.Collection;
import org.dspace.content.Item;
import org.dspace.content.factory.ContentServiceFactory;
import org.dspace.content.service.CollectionService;
import org.dspace.content.service.ItemService;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.handle.factory.HandleServiceFactory;
import org.dspace.handle.service.HandleService;
/**
* Item exporter to create simple AIPs for DSpace content. Currently exports
* individual items, or entire collections. For instructions on use, see
* printUsage() method.
* <P>
* ItemExport creates the simple AIP package that the importer also uses. It
* consists of:
* <P>
* /exportdir/42/ (one directory per item) / dublin_core.xml - qualified dublin
* core in RDF schema / contents - text file, listing one file per line / file1
* - files contained in the item / file2 / ...
* <P>
* issues -doesn't handle special characters in metadata (needs to turn {@code &'s} into
* {@code &amp;}, etc.)
* <P>
* Modified by David Little, UCSD Libraries 12/21/04 to allow the registration
* of files (bitstreams) into DSpace.
*
* @author David Little
* @author Jay Paz
*/
public class ItemExportCLITool {
protected static ItemExportService itemExportService = ItemExportServiceFactory.getInstance()
.getItemExportService();
protected static HandleService handleService = HandleServiceFactory.getInstance().getHandleService();
protected static ItemService itemService = ContentServiceFactory.getInstance().getItemService();
protected static CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService();
/**
* Default constructor
*/
private ItemExportCLITool() { }
/*
*
*/
public static void main(String[] argv) throws Exception {
// create an options object and populate it
CommandLineParser parser = new DefaultParser();
Options options = new Options();
options.addOption("t", "type", true, "type: COLLECTION or ITEM");
options.addOption("i", "id", true, "ID or handle of thing to export");
options.addOption("d", "dest", true,
"destination where you want items to go");
options.addOption("m", "migrate", false,
"export for migration (remove handle and metadata that will be re-created in new system)");
options.addOption("n", "number", true,
"sequence number to begin exporting items with");
options.addOption("z", "zip", true, "export as zip file (specify filename e.g. export.zip)");
options.addOption("h", "help", false, "help");
// as pointed out by Peter Dietz this provides similar functionality to export metadata
// but it is needed since it directly exports to Simple Archive Format (SAF)
options.addOption("x", "exclude-bitstreams", false, "do not export bitstreams");
CommandLine line = parser.parse(options, argv);
String typeString = null;
String destDirName = null;
String myIDString = null;
int seqStart = -1;
int myType = -1;
Item myItem = null;
Collection mycollection = null;
if (line.hasOption('h')) {
HelpFormatter myhelp = new HelpFormatter();
myhelp.printHelp("ItemExport\n", options);
System.out
.println("\nfull collection: ItemExport -t COLLECTION -i ID -d dest -n number");
System.out
.println("singleitem: ItemExport -t ITEM -i ID -d dest -n number");
System.exit(0);
}
if (line.hasOption('t')) { // type
typeString = line.getOptionValue('t');
if ("ITEM".equals(typeString)) {
myType = Constants.ITEM;
} else if ("COLLECTION".equals(typeString)) {
myType = Constants.COLLECTION;
}
}
if (line.hasOption('i')) { // id
myIDString = line.getOptionValue('i');
}
if (line.hasOption('d')) { // dest
destDirName = line.getOptionValue('d');
}
if (line.hasOption('n')) { // number
seqStart = Integer.parseInt(line.getOptionValue('n'));
}
boolean migrate = false;
if (line.hasOption('m')) { // number
migrate = true;
}
boolean zip = false;
String zipFileName = "";
if (line.hasOption('z')) {
zip = true;
zipFileName = line.getOptionValue('z');
}
boolean excludeBitstreams = false;
if (line.hasOption('x')) {
excludeBitstreams = true;
}
// now validate the args
if (myType == -1) {
System.out
.println("type must be either COLLECTION or ITEM (-h for help)");
System.exit(1);
}
if (destDirName == null) {
System.out
.println("destination directory must be set (-h for help)");
System.exit(1);
}
if (seqStart == -1) {
System.out
.println("sequence start number must be set (-h for help)");
System.exit(1);
}
if (myIDString == null) {
System.out
.println("ID must be set to either a database ID or a handle (-h for help)");
System.exit(1);
}
Context c = new Context(Context.Mode.READ_ONLY);
c.turnOffAuthorisationSystem();
if (myType == Constants.ITEM) {
// first, is myIDString a handle?
if (myIDString.indexOf('/') != -1) {
myItem = (Item) handleService.resolveToObject(c, myIDString);
if ((myItem == null) || (myItem.getType() != Constants.ITEM)) {
myItem = null;
}
} else {
myItem = itemService.find(c, UUID.fromString(myIDString));
}
if (myItem == null) {
System.out
.println("Error, item cannot be found: " + myIDString);
}
} else {
if (myIDString.indexOf('/') != -1) {
// has a / must be a handle
mycollection = (Collection) handleService.resolveToObject(c,
myIDString);
// ensure it's a collection
if ((mycollection == null)
|| (mycollection.getType() != Constants.COLLECTION)) {
mycollection = null;
}
} else if (myIDString != null) {
mycollection = collectionService.find(c, UUID.fromString(myIDString));
}
if (mycollection == null) {
System.out.println("Error, collection cannot be found: "
+ myIDString);
System.exit(1);
}
}
if (zip) {
Iterator<Item> items;
if (myItem != null) {
List<Item> myItems = new ArrayList<>();
myItems.add(myItem);
items = myItems.iterator();
} else {
System.out.println("Exporting from collection: " + myIDString);
items = itemService.findByCollection(c, mycollection);
}
itemExportService.exportAsZip(c, items, destDirName, zipFileName, seqStart, migrate, excludeBitstreams);
} else {
if (myItem != null) {
// it's only a single item
itemExportService
.exportItem(c, Collections.singletonList(myItem).iterator(), destDirName, seqStart, migrate,
excludeBitstreams);
} else {
System.out.println("Exporting from collection: " + myIDString);
// it's a collection, so do a bunch of items
Iterator<Item> i = itemService.findByCollection(c, mycollection);
itemExportService.exportItem(c, i, destDirName, seqStart, migrate, excludeBitstreams);
}
}
c.complete();
}
}

View File

@@ -0,0 +1,62 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemexport;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.dspace.scripts.configuration.ScriptConfiguration;
/**
* The {@link ScriptConfiguration} for the {@link ItemExport} script
*
* @author Francesco Pio Scognamiglio (francescopio.scognamiglio at 4science.com)
*/
public class ItemExportScriptConfiguration<T extends ItemExport> extends ScriptConfiguration<T> {
private Class<T> dspaceRunnableClass;
@Override
public Class<T> getDspaceRunnableClass() {
return dspaceRunnableClass;
}
@Override
public void setDspaceRunnableClass(Class<T> dspaceRunnableClass) {
this.dspaceRunnableClass = dspaceRunnableClass;
}
@Override
public Options getOptions() {
Options options = new Options();
options.addOption(Option.builder("t").longOpt("type")
.desc("type: COLLECTION or ITEM")
.hasArg().required().build());
options.addOption(Option.builder("i").longOpt("id")
.desc("ID or handle of thing to export")
.hasArg().required().build());
options.addOption(Option.builder("n").longOpt("number")
.desc("sequence number to begin exporting items with")
.hasArg().required(false).build());
options.addOption(Option.builder("m").longOpt("migrate")
.desc("export for migration (remove handle and metadata that will be re-created in new system)")
.hasArg(false).required(false).build());
// as pointed out by Peter Dietz this provides similar functionality to export metadata
// but it is needed since it directly exports to Simple Archive Format (SAF)
options.addOption(Option.builder("x").longOpt("exclude-bitstreams")
.desc("do not export bitstreams")
.hasArg(false).required(false).build());
options.addOption(Option.builder("h").longOpt("help")
.desc("help")
.hasArg(false).required(false).build());
return options;
}
}

View File

@@ -57,6 +57,7 @@ import org.dspace.core.Utils;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.service.EPersonService;
import org.dspace.handle.service.HandleService;
import org.dspace.scripts.handler.DSpaceRunnableHandler;
import org.dspace.services.ConfigurationService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -64,17 +65,21 @@ import org.springframework.beans.factory.annotation.Autowired;
* Item exporter to create simple AIPs for DSpace content. Currently exports
* individual items, or entire collections. For instructions on use, see
* printUsage() method.
* <P>
* <p>
* ItemExport creates the simple AIP package that the importer also uses. It
* consists of:
* <P>
* /exportdir/42/ (one directory per item) / dublin_core.xml - qualified dublin
* core in RDF schema / contents - text file, listing one file per line / file1
* - files contained in the item / file2 / ...
* <P>
* <pre>{@code
* /exportdir/42/ (one directory per item)
* / dublin_core.xml - qualified dublin core in RDF schema
* / contents - text file, listing one file per line
* / file1 - files contained in the item
* / file2
* / ...
* }</pre>
* <p>
* issues -doesn't handle special characters in metadata (needs to turn {@code &'s} into
* {@code &amp;}, etc.)
* <P>
* <p>
* Modified by David Little, UCSD Libraries 12/21/04 to allow the registration
* of files (bitstreams) into DSpace.
*
@@ -97,11 +102,12 @@ public class ItemExportServiceImpl implements ItemExportService {
@Autowired(required = true)
protected ConfigurationService configurationService;
/**
* log4j logger
*/
private final Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemExportServiceImpl.class);
private final Logger log = org.apache.logging.log4j.LogManager.getLogger();
private DSpaceRunnableHandler handler;
protected ItemExportServiceImpl() {
@@ -126,7 +132,7 @@ public class ItemExportServiceImpl implements ItemExportService {
}
}
System.out.println("Beginning export");
logInfo("Beginning export");
while (i.hasNext()) {
if (SUBDIR_LIMIT > 0 && ++counter == SUBDIR_LIMIT) {
@@ -139,7 +145,7 @@ public class ItemExportServiceImpl implements ItemExportService {
}
}
System.out.println("Exporting item to " + mySequenceNumber);
logInfo("Exporting item to " + mySequenceNumber);
Item item = i.next();
exportItem(c, item, fullPath, mySequenceNumber, migrate, excludeBitstreams);
c.uncacheEntity(item);
@@ -155,7 +161,7 @@ public class ItemExportServiceImpl implements ItemExportService {
// now create a subdirectory
File itemDir = new File(destDir + "/" + seqStart);
System.out.println("Exporting Item " + myItem.getID() +
logInfo("Exporting Item " + myItem.getID() +
(myItem.getHandle() != null ? ", handle " + myItem.getHandle() : "") +
" to " + itemDir);
@@ -168,6 +174,7 @@ public class ItemExportServiceImpl implements ItemExportService {
// make it this far, now start exporting
writeMetadata(c, myItem, itemDir, migrate);
writeBitstreams(c, myItem, itemDir, excludeBitstreams);
writeCollections(myItem, itemDir);
if (!migrate) {
writeHandle(c, myItem, itemDir);
}
@@ -225,7 +232,7 @@ public class ItemExportServiceImpl implements ItemExportService {
File outFile = new File(destDir, filename);
System.out.println("Attempting to create file " + outFile);
logInfo("Attempting to create file " + outFile);
if (outFile.createNewFile()) {
BufferedOutputStream out = new BufferedOutputStream(
@@ -343,6 +350,35 @@ public class ItemExportServiceImpl implements ItemExportService {
}
}
/**
* Create the 'collections' file. List handles of all Collections which
* contain this Item. The "owning" Collection is listed first.
*
* @param item list collections holding this Item.
* @param destDir write the file here.
* @throws IOException if the file cannot be created or written.
*/
protected void writeCollections(Item item, File destDir)
throws IOException {
File outFile = new File(destDir, "collections");
if (outFile.createNewFile()) {
try (PrintWriter out = new PrintWriter(new FileWriter(outFile))) {
Collection owningCollection = item.getOwningCollection();
// The owning collection is null for workspace and workflow items
if (owningCollection != null) {
out.println(owningCollection.getHandle());
}
for (Collection collection : item.getCollections()) {
if (!collection.equals(owningCollection)) {
out.println(collection.getHandle());
}
}
}
} else {
throw new IOException("Cannot create 'collections' in " + destDir);
}
}
/**
* Create both the bitstreams and the contents file. Any bitstreams that
* were originally registered will be marked in the contents file as such.
@@ -399,7 +435,7 @@ public class ItemExportServiceImpl implements ItemExportService {
File fdirs = new File(destDir + File.separator
+ dirs);
if (!fdirs.exists() && !fdirs.mkdirs()) {
log.error("Unable to create destination directory");
logError("Unable to create destination directory");
}
}
@@ -456,19 +492,26 @@ public class ItemExportServiceImpl implements ItemExportService {
File wkDir = new File(workDir);
if (!wkDir.exists() && !wkDir.mkdirs()) {
log.error("Unable to create working direcory");
logError("Unable to create working directory");
}
File dnDir = new File(destDirName);
if (!dnDir.exists() && !dnDir.mkdirs()) {
log.error("Unable to create destination directory");
logError("Unable to create destination directory");
}
// export the items using normal export method
exportItem(context, items, workDir, seqStart, migrate, excludeBitstreams);
try {
// export the items using normal export method (this exports items to our workDir)
exportItem(context, items, workDir, seqStart, migrate, excludeBitstreams);
// now zip up the export directory created above
zip(workDir, destDirName + System.getProperty("file.separator") + zipFileName);
// now zip up the workDir directory created above
zip(workDir, destDirName + System.getProperty("file.separator") + zipFileName);
} finally {
// Cleanup workDir created above, if it still exists
if (wkDir.exists()) {
deleteDirectory(wkDir);
}
}
}
@Override
@@ -630,11 +673,9 @@ public class ItemExportServiceImpl implements ItemExportService {
Thread go = new Thread() {
@Override
public void run() {
Context context = null;
Context context = new Context();
Iterator<Item> iitems = null;
try {
// create a new dspace context
context = new Context();
// ignore auths
context.turnOffAuthorisationSystem();
@@ -646,7 +687,7 @@ public class ItemExportServiceImpl implements ItemExportService {
String downloadDir = getExportDownloadDirectory(eperson);
File dnDir = new File(downloadDir);
if (!dnDir.exists() && !dnDir.mkdirs()) {
log.error("Unable to create download directory");
logError("Unable to create download directory");
}
Iterator<String> iter = itemsMap.keySet().iterator();
@@ -665,7 +706,7 @@ public class ItemExportServiceImpl implements ItemExportService {
File wkDir = new File(workDir);
if (!wkDir.exists() && !wkDir.mkdirs()) {
log.error("Unable to create working directory");
logError("Unable to create working directory");
}
@@ -756,7 +797,8 @@ public class ItemExportServiceImpl implements ItemExportService {
throw new Exception(
"A dspace.cfg entry for 'org.dspace.app.itemexport.work.dir' does not exist.");
}
return exportDir;
// clean work dir path from duplicate separators
return StringUtils.replace(exportDir, File.separator + File.separator, File.separator);
}
@Override
@@ -884,7 +926,7 @@ public class ItemExportServiceImpl implements ItemExportService {
for (File file : files) {
if (file.lastModified() < now.getTimeInMillis()) {
if (!file.delete()) {
log.error("Unable to delete export file");
logError("Unable to delete export file");
}
}
}
@@ -908,7 +950,7 @@ public class ItemExportServiceImpl implements ItemExportService {
for (File file : files) {
if (file.lastModified() < now.getTimeInMillis()) {
if (!file.delete()) {
log.error("Unable to delete old files");
logError("Unable to delete old files");
}
}
}
@@ -916,7 +958,7 @@ public class ItemExportServiceImpl implements ItemExportService {
// If the directory is now empty then we delete it too.
if (dir.listFiles().length == 0) {
if (!dir.delete()) {
log.error("Unable to delete directory");
logError("Unable to delete directory");
}
}
}
@@ -937,14 +979,14 @@ public class ItemExportServiceImpl implements ItemExportService {
email.send();
} catch (Exception e) {
log.warn(LogHelper.getHeader(context, "emailSuccessMessage", "cannot notify user of export"), e);
logWarn(LogHelper.getHeader(context, "emailSuccessMessage", "cannot notify user of export"), e);
}
}
@Override
public void emailErrorMessage(EPerson eperson, String error)
throws MessagingException {
log.warn("An error occurred during item export, the user will be notified. " + error);
logWarn("An error occurred during item export, the user will be notified. " + error);
try {
Locale supportedLocale = I18nUtil.getEPersonLocale(eperson);
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "export_error"));
@@ -954,7 +996,7 @@ public class ItemExportServiceImpl implements ItemExportService {
email.send();
} catch (Exception e) {
log.warn("error during item export error notification", e);
logWarn("error during item export error notification", e);
}
}
@@ -969,7 +1011,7 @@ public class ItemExportServiceImpl implements ItemExportService {
}
File targetFile = new File(tempFileName);
if (!targetFile.createNewFile()) {
log.warn("Target file already exists: " + targetFile.getName());
logWarn("Target file already exists: " + targetFile.getName());
}
FileOutputStream fos = new FileOutputStream(tempFileName);
@@ -985,7 +1027,7 @@ public class ItemExportServiceImpl implements ItemExportService {
deleteDirectory(cpFile);
if (!targetFile.renameTo(new File(target))) {
log.error("Unable to rename file");
logError("Unable to rename file");
}
} finally {
if (cpZipOutputStream != null) {
@@ -1018,8 +1060,11 @@ public class ItemExportServiceImpl implements ItemExportService {
return;
}
String strAbsPath = cpFile.getPath();
String strZipEntryName = strAbsPath.substring(strSource
.length() + 1, strAbsPath.length());
int startIndex = strSource.length();
if (!StringUtils.endsWith(strSource, File.separator)) {
startIndex++;
}
String strZipEntryName = strAbsPath.substring(startIndex, strAbsPath.length());
// byte[] b = new byte[ (int)(cpFile.length()) ];
@@ -1058,7 +1103,7 @@ public class ItemExportServiceImpl implements ItemExportService {
deleteDirectory(file);
} else {
if (!file.delete()) {
log.error("Unable to delete file: " + file.getName());
logError("Unable to delete file: " + file.getName());
}
}
}
@@ -1067,4 +1112,64 @@ public class ItemExportServiceImpl implements ItemExportService {
return (path.delete());
}
@Override
public void setHandler(DSpaceRunnableHandler handler) {
this.handler = handler;
}
private void logInfo(String message) {
logInfo(message, null);
}
private void logInfo(String message, Exception e) {
if (handler != null) {
handler.logInfo(message);
return;
}
if (e != null) {
log.info(message, e);
} else {
log.info(message);
}
}
private void logWarn(String message) {
logWarn(message, null);
}
private void logWarn(String message, Exception e) {
if (handler != null) {
handler.logWarning(message);
return;
}
if (e != null) {
log.warn(message, e);
} else {
log.warn(message);
}
}
private void logError(String message) {
logError(message, null);
}
private void logError(String message, Exception e) {
if (handler != null) {
if (e != null) {
handler.logError(message, e);
} else {
handler.logError(message);
}
return;
}
if (e != null) {
log.error(message, e);
} else {
log.error(message);
}
}
}

View File

@@ -17,6 +17,7 @@ import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.scripts.handler.DSpaceRunnableHandler;
/**
* Item exporter to create simple AIPs for DSpace content. Currently exports
@@ -267,4 +268,10 @@ public interface ItemExportService {
*/
public void zip(String strSource, String target) throws Exception;
/**
* Set the DSpace Runnable Handler
* @param handler
*/
public void setHandler(DSpaceRunnableHandler handler);
}

View File

@@ -0,0 +1,446 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemimport;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.apache.commons.cli.ParseException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.tika.Tika;
import org.dspace.app.itemimport.factory.ItemImportServiceFactory;
import org.dspace.app.itemimport.service.ItemImportService;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Collection;
import org.dspace.content.factory.ContentServiceFactory;
import org.dspace.content.service.CollectionService;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.factory.EPersonServiceFactory;
import org.dspace.eperson.service.EPersonService;
import org.dspace.handle.factory.HandleServiceFactory;
import org.dspace.handle.service.HandleService;
import org.dspace.scripts.DSpaceRunnable;
import org.dspace.utils.DSpace;
/**
* Import items into DSpace. The conventional use is upload files by copying
* them. DSpace writes the item's bitstreams into its assetstore. Metadata is
* also loaded to the DSpace database.
* <P>
* A second use assumes the bitstream files already exist in a storage
* resource accessible to DSpace. In this case the bitstreams are 'registered'.
* That is, the metadata is loaded to the DSpace database and DSpace is given
* the location of the file which is subsumed into DSpace.
* <P>
* The distinction is controlled by the format of lines in the 'contents' file.
* See comments in processContentsFile() below.
* <P>
* Modified by David Little, UCSD Libraries 12/21/04 to
* allow the registration of files (bitstreams) into DSpace.
*/
public class ItemImport extends DSpaceRunnable<ItemImportScriptConfiguration> {
public static String TEMP_DIR = "importSAF";
public static String MAPFILE_FILENAME = "mapfile";
public static String MAPFILE_BITSTREAM_TYPE = "importSAFMapfile";
protected boolean template = false;
protected String command = null;
protected String sourcedir = null;
protected String mapfile = null;
protected String eperson = null;
protected String[] collections = null;
protected boolean isTest = false;
protected boolean isExcludeContent = false;
protected boolean isResume = false;
protected boolean useWorkflow = false;
protected boolean useWorkflowSendEmail = false;
protected boolean isQuiet = false;
protected boolean commandLineCollections = false;
protected boolean zip = false;
protected boolean remoteUrl = false;
protected String zipfilename = null;
protected boolean zipvalid = false;
protected boolean help = false;
protected File workDir = null;
protected File workFile = null;
protected static final CollectionService collectionService =
ContentServiceFactory.getInstance().getCollectionService();
protected static final EPersonService epersonService =
EPersonServiceFactory.getInstance().getEPersonService();
protected static final HandleService handleService =
HandleServiceFactory.getInstance().getHandleService();
@Override
public ItemImportScriptConfiguration getScriptConfiguration() {
return new DSpace().getServiceManager()
.getServiceByName("import", ItemImportScriptConfiguration.class);
}
@Override
public void setup() throws ParseException {
help = commandLine.hasOption('h');
if (commandLine.hasOption('a')) {
command = "add";
}
if (commandLine.hasOption('r')) {
command = "replace";
}
if (commandLine.hasOption('d')) {
command = "delete";
}
if (commandLine.hasOption('w')) {
useWorkflow = true;
if (commandLine.hasOption('n')) {
useWorkflowSendEmail = true;
}
}
if (commandLine.hasOption('v')) {
isTest = true;
handler.logInfo("**Test Run** - not actually importing items.");
}
isExcludeContent = commandLine.hasOption('x');
if (commandLine.hasOption('p')) {
template = true;
}
if (commandLine.hasOption('c')) { // collections
collections = commandLine.getOptionValues('c');
commandLineCollections = true;
} else {
handler.logInfo("No collections given. Assuming 'collections' file inside item directory");
}
if (commandLine.hasOption('R')) {
isResume = true;
handler.logInfo("**Resume import** - attempting to import items not already imported");
}
if (commandLine.hasOption('q')) {
isQuiet = true;
}
setZip();
}
@Override
public void internalRun() throws Exception {
if (help) {
printHelp();
return;
}
Date startTime = new Date();
Context context = new Context(Context.Mode.BATCH_EDIT);
setMapFile();
validate(context);
setEPerson(context);
// check collection
List<Collection> mycollections = null;
// don't need to validate collections set if command is "delete"
// also if no collections are given in the command line
if (!"delete".equals(command) && commandLineCollections) {
handler.logInfo("Destination collections:");
mycollections = new ArrayList<>();
// validate each collection arg to see if it's a real collection
for (int i = 0; i < collections.length; i++) {
Collection collection = null;
if (collections[i] != null) {
// is the ID a handle?
if (collections[i].indexOf('/') != -1) {
// string has a / so it must be a handle - try and resolve
// it
collection = ((Collection) handleService
.resolveToObject(context, collections[i]));
} else {
// not a handle, try and treat it as an integer collection database ID
collection = collectionService.find(context, UUID.fromString(collections[i]));
}
}
// was the collection valid?
if (collection == null
|| collection.getType() != Constants.COLLECTION) {
throw new IllegalArgumentException("Cannot resolve "
+ collections[i] + " to collection");
}
// add resolved collection to list
mycollections.add(collection);
// print progress info
handler.logInfo((i == 0 ? "Owning " : "") + "Collection: " + collection.getName());
}
}
// end validation
// start
ItemImportService itemImportService = ItemImportServiceFactory.getInstance()
.getItemImportService();
try {
itemImportService.setTest(isTest);
itemImportService.setExcludeContent(isExcludeContent);
itemImportService.setResume(isResume);
itemImportService.setUseWorkflow(useWorkflow);
itemImportService.setUseWorkflowSendEmail(useWorkflowSendEmail);
itemImportService.setQuiet(isQuiet);
itemImportService.setHandler(handler);
try {
context.turnOffAuthorisationSystem();
readZip(context, itemImportService);
process(context, itemImportService, mycollections);
// complete all transactions
context.complete();
} catch (Exception e) {
context.abort();
throw new Exception(
"Error committing changes to database: " + e.getMessage() + ", aborting most recent changes", e);
}
if (isTest) {
handler.logInfo("***End of Test Run***");
}
} finally {
if (zip) {
// if zip file was valid then clean sourcedir
if (zipvalid && sourcedir != null && new File(sourcedir).exists()) {
FileUtils.deleteDirectory(new File(sourcedir));
}
// clean workdir
if (workDir != null && workDir.exists()) {
FileUtils.deleteDirectory(workDir);
}
// conditionally clean workFile if import was done in the UI or via a URL and it still exists
if (workFile != null && workFile.exists()) {
workFile.delete();
}
}
Date endTime = new Date();
handler.logInfo("Started: " + startTime.getTime());
handler.logInfo("Ended: " + endTime.getTime());
handler.logInfo(
"Elapsed time: " + ((endTime.getTime() - startTime.getTime()) / 1000) + " secs (" + (endTime
.getTime() - startTime.getTime()) + " msecs)");
}
}
/**
* Validate the options
* @param context
*/
protected void validate(Context context) {
// check zip type: uploaded file or remote url
if (commandLine.hasOption('z')) {
zipfilename = commandLine.getOptionValue('z');
} else if (commandLine.hasOption('u')) {
remoteUrl = true;
zipfilename = commandLine.getOptionValue('u');
}
if (StringUtils.isBlank(zipfilename)) {
throw new UnsupportedOperationException("Must run with either name of zip file or url of zip file");
}
if (command == null) {
handler.logError("Must run with either add, replace, or remove (run with -h flag for details)");
throw new UnsupportedOperationException("Must run with either add, replace, or remove");
}
// can only resume for adds
if (isResume && !"add".equals(command)) {
handler.logError("Resume option only works with the --add command (run with -h flag for details)");
throw new UnsupportedOperationException("Resume option only works with the --add command");
}
if (isResume && StringUtils.isBlank(mapfile)) {
handler.logError("The mapfile does not exist. ");
throw new UnsupportedOperationException("The mapfile does not exist");
}
}
/**
* Process the import
* @param context
* @param itemImportService
* @param collections
* @throws Exception
*/
protected void process(Context context, ItemImportService itemImportService,
List<Collection> collections) throws Exception {
readMapfile(context);
if ("add".equals(command)) {
itemImportService.addItems(context, collections, sourcedir, mapfile, template);
} else if ("replace".equals(command)) {
itemImportService.replaceItems(context, collections, sourcedir, mapfile, template);
} else if ("delete".equals(command)) {
itemImportService.deleteItems(context, mapfile);
}
// write input stream on handler
File mapFile = new File(mapfile);
try (InputStream mapfileInputStream = new FileInputStream(mapFile)) {
handler.writeFilestream(context, MAPFILE_FILENAME, mapfileInputStream, MAPFILE_BITSTREAM_TYPE);
} finally {
mapFile.delete();
}
}
/**
* Read the ZIP archive in SAF format
* @param context
* @param itemImportService
* @throws Exception
*/
protected void readZip(Context context, ItemImportService itemImportService) throws Exception {
Optional<InputStream> optionalFileStream = Optional.empty();
Optional<InputStream> validationFileStream = Optional.empty();
try {
if (!remoteUrl) {
// manage zip via upload
optionalFileStream = handler.getFileStream(context, zipfilename);
validationFileStream = handler.getFileStream(context, zipfilename);
} else {
// manage zip via remote url
optionalFileStream = Optional.ofNullable(new URL(zipfilename).openStream());
validationFileStream = Optional.ofNullable(new URL(zipfilename).openStream());
}
if (validationFileStream.isPresent()) {
// validate zip file
if (validationFileStream.isPresent()) {
validateZip(validationFileStream.get());
}
workFile = new File(itemImportService.getTempWorkDir() + File.separator
+ zipfilename + "-" + context.getCurrentUser().getID());
FileUtils.copyInputStreamToFile(optionalFileStream.get(), workFile);
} else {
throw new IllegalArgumentException(
"Error reading file, the file couldn't be found for filename: " + zipfilename);
}
workDir = new File(itemImportService.getTempWorkDir() + File.separator + TEMP_DIR
+ File.separator + context.getCurrentUser().getID());
sourcedir = itemImportService.unzip(workFile, workDir.getAbsolutePath());
} finally {
optionalFileStream.ifPresent(IOUtils::closeQuietly);
validationFileStream.ifPresent(IOUtils::closeQuietly);
}
}
/**
* Confirm that the zip file has the correct MIME type
* @param inputStream
*/
protected void validateZip(InputStream inputStream) {
Tika tika = new Tika();
try {
String mimeType = tika.detect(inputStream);
if (mimeType.equals("application/zip")) {
zipvalid = true;
} else {
handler.logError("A valid zip file must be supplied. The provided file has mimetype: " + mimeType);
throw new UnsupportedOperationException("A valid zip file must be supplied");
}
} catch (IOException e) {
throw new IllegalArgumentException(
"There was an error while reading the zip file: " + zipfilename);
}
}
/**
* Read the mapfile
* @param context
*/
protected void readMapfile(Context context) {
if (isResume) {
try {
Optional<InputStream> optionalFileStream = handler.getFileStream(context, mapfile);
if (optionalFileStream.isPresent()) {
File tempFile = File.createTempFile(mapfile, "temp");
tempFile.deleteOnExit();
FileUtils.copyInputStreamToFile(optionalFileStream.get(), tempFile);
mapfile = tempFile.getAbsolutePath();
}
} catch (IOException | AuthorizeException e) {
throw new UnsupportedOperationException("The mapfile does not exist");
}
}
}
/**
* Set the mapfile option
* @throws IOException
*/
protected void setMapFile() throws IOException {
if (isResume && commandLine.hasOption('m')) {
mapfile = commandLine.getOptionValue('m');
} else {
mapfile = Files.createTempFile(MAPFILE_FILENAME, "temp").toString();
}
}
/**
* Set the zip option
*/
protected void setZip() {
zip = true;
}
/**
* Set the eperson in the context
* @param context
* @throws SQLException
*/
protected void setEPerson(Context context) throws SQLException {
EPerson myEPerson = epersonService.find(context, this.getEpersonIdentifier());
// check eperson
if (myEPerson == null) {
handler.logError("EPerson cannot be found: " + this.getEpersonIdentifier());
throw new UnsupportedOperationException("EPerson cannot be found: " + this.getEpersonIdentifier());
}
context.setCurrentUser(myEPerson);
}
}

View File

@@ -0,0 +1,198 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemimport;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import java.sql.SQLException;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.dspace.app.itemimport.service.ItemImportService;
import org.dspace.content.Collection;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
/**
* CLI variant for the {@link ItemImport} class.
* This was done to specify the specific behaviors for the CLI.
*
* @author Francesco Pio Scognamiglio (francescopio.scognamiglio at 4science.com)
*/
public class ItemImportCLI extends ItemImport {
@Override
protected void validate(Context context) {
// can only resume for adds
if (isResume && !"add".equals(command)) {
handler.logError("Resume option only works with the --add command (run with -h flag for details)");
throw new UnsupportedOperationException("Resume option only works with the --add command");
}
if (commandLine.hasOption('e')) {
eperson = commandLine.getOptionValue('e');
}
// check eperson identifier (email or id)
if (eperson == null) {
handler.logError("An eperson to do the importing must be specified (run with -h flag for details)");
throw new UnsupportedOperationException("An eperson to do the importing must be specified");
}
File myFile = null;
try {
myFile = new File(mapfile);
} catch (Exception e) {
throw new UnsupportedOperationException("The mapfile " + mapfile + " does not exist");
}
if (!isResume && "add".equals(command) && myFile.exists()) {
handler.logError("The mapfile " + mapfile + " already exists. "
+ "Either delete it or use --resume if attempting to resume an aborted import. "
+ "(run with -h flag for details)");
throw new UnsupportedOperationException("The mapfile " + mapfile + " already exists");
}
if (command == null) {
handler.logError("Must run with either add, replace, or remove (run with -h flag for details)");
throw new UnsupportedOperationException("Must run with either add, replace, or remove");
} else if ("add".equals(command) || "replace".equals(command)) {
if (!remoteUrl && sourcedir == null) {
handler.logError("A source directory containing items must be set (run with -h flag for details)");
throw new UnsupportedOperationException("A source directory containing items must be set");
}
if (mapfile == null) {
handler.logError(
"A map file to hold importing results must be specified (run with -h flag for details)");
throw new UnsupportedOperationException("A map file to hold importing results must be specified");
}
} else if ("delete".equals(command)) {
if (mapfile == null) {
handler.logError("A map file must be specified (run with -h flag for details)");
throw new UnsupportedOperationException("A map file must be specified");
}
}
}
@Override
protected void process(Context context, ItemImportService itemImportService,
List<Collection> collections) throws Exception {
if ("add".equals(command)) {
itemImportService.addItems(context, collections, sourcedir, mapfile, template);
} else if ("replace".equals(command)) {
itemImportService.replaceItems(context, collections, sourcedir, mapfile, template);
} else if ("delete".equals(command)) {
itemImportService.deleteItems(context, mapfile);
}
}
@Override
protected void readZip(Context context, ItemImportService itemImportService) throws Exception {
// If this is a zip archive, unzip it first
if (zip) {
if (!remoteUrl) {
// confirm zip file exists
File myZipFile = new File(sourcedir + File.separator + zipfilename);
if ((!myZipFile.exists()) || (!myZipFile.isFile())) {
throw new IllegalArgumentException(
"Error reading file, the file couldn't be found for filename: " + zipfilename);
}
// validate zip file
InputStream validationFileStream = new FileInputStream(myZipFile);
try {
validateZip(validationFileStream);
} finally {
IOUtils.closeQuietly(validationFileStream);
}
workDir = new File(itemImportService.getTempWorkDir() + File.separator + TEMP_DIR
+ File.separator + context.getCurrentUser().getID());
sourcedir = itemImportService.unzip(
new File(sourcedir + File.separator + zipfilename), workDir.getAbsolutePath());
} else {
// manage zip via remote url
Optional<InputStream> optionalFileStream = Optional.ofNullable(new URL(zipfilename).openStream());
Optional<InputStream> validationFileStream = Optional.ofNullable(new URL(zipfilename).openStream());
try {
if (optionalFileStream.isPresent()) {
// validate zip file via url
if (validationFileStream.isPresent()) {
validateZip(validationFileStream.get());
}
workFile = new File(itemImportService.getTempWorkDir() + File.separator
+ zipfilename + "-" + context.getCurrentUser().getID());
FileUtils.copyInputStreamToFile(optionalFileStream.get(), workFile);
workDir = new File(itemImportService.getTempWorkDir() + File.separator + TEMP_DIR
+ File.separator + context.getCurrentUser().getID());
sourcedir = itemImportService.unzip(workFile, workDir.getAbsolutePath());
} else {
throw new IllegalArgumentException(
"Error reading file, the file couldn't be found for filename: " + zipfilename);
}
} finally {
optionalFileStream.ifPresent(IOUtils::closeQuietly);
validationFileStream.ifPresent(IOUtils::closeQuietly);
}
}
}
}
@Override
protected void setMapFile() {
if (commandLine.hasOption('m')) {
mapfile = commandLine.getOptionValue('m');
}
}
@Override
protected void setZip() {
if (commandLine.hasOption('s')) { // source
sourcedir = commandLine.getOptionValue('s');
}
if (commandLine.hasOption('z')) {
zip = true;
zipfilename = commandLine.getOptionValue('z');
}
if (commandLine.hasOption('u')) { // remote url
zip = true;
remoteUrl = true;
zipfilename = commandLine.getOptionValue('u');
}
}
@Override
protected void setEPerson(Context context) throws SQLException {
EPerson myEPerson = null;
if (StringUtils.contains(eperson, '@')) {
// @ sign, must be an email
myEPerson = epersonService.findByEmail(context, eperson);
} else {
myEPerson = epersonService.find(context, UUID.fromString(eperson));
}
// check eperson
if (myEPerson == null) {
handler.logError("EPerson cannot be found: " + eperson + " (run with -h flag for details)");
throw new UnsupportedOperationException("EPerson cannot be found: " + eperson);
}
context.setCurrentUser(myEPerson);
}
}

View File

@@ -0,0 +1,80 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemimport;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.dspace.scripts.configuration.ScriptConfiguration;
/**
* The {@link ScriptConfiguration} for the {@link ItemImportCLI} script
*
* @author Francesco Pio Scognamiglio (francescopio.scognamiglio at 4science.com)
*/
public class ItemImportCLIScriptConfiguration extends ItemImportScriptConfiguration<ItemImportCLI> {
@Override
public Options getOptions() {
Options options = new Options();
options.addOption(Option.builder("a").longOpt("add")
.desc("add items to DSpace")
.hasArg(false).required(false).build());
options.addOption(Option.builder("r").longOpt("replace")
.desc("replace items in mapfile")
.hasArg(false).required(false).build());
options.addOption(Option.builder("d").longOpt("delete")
.desc("delete items listed in mapfile")
.hasArg(false).required(false).build());
options.addOption(Option.builder("s").longOpt("source")
.desc("source of items (directory)")
.hasArg().required(false).build());
options.addOption(Option.builder("z").longOpt("zip")
.desc("name of zip file")
.hasArg().required(false).build());
options.addOption(Option.builder("u").longOpt("url")
.desc("url of zip file")
.hasArg().build());
options.addOption(Option.builder("c").longOpt("collection")
.desc("destination collection(s) Handle or database ID")
.hasArg().required(false).build());
options.addOption(Option.builder("m").longOpt("mapfile")
.desc("mapfile items in mapfile")
.hasArg().required().build());
options.addOption(Option.builder("e").longOpt("eperson")
.desc("email of eperson doing importing")
.hasArg().required().build());
options.addOption(Option.builder("w").longOpt("workflow")
.desc("send submission through collection's workflow")
.hasArg(false).required(false).build());
options.addOption(Option.builder("n").longOpt("notify")
.desc("if sending submissions through the workflow, send notification emails")
.hasArg(false).required(false).build());
options.addOption(Option.builder("v").longOpt("validate")
.desc("test run - do not actually import items")
.hasArg(false).required(false).build());
options.addOption(Option.builder("x").longOpt("exclude-bitstreams")
.desc("do not load or expect content bitstreams")
.hasArg(false).required(false).build());
options.addOption(Option.builder("p").longOpt("template")
.desc("apply template")
.hasArg(false).required(false).build());
options.addOption(Option.builder("R").longOpt("resume")
.desc("resume a failed import (add only)")
.hasArg(false).required(false).build());
options.addOption(Option.builder("q").longOpt("quiet")
.desc("don't display metadata")
.hasArg(false).required(false).build());
options.addOption(Option.builder("h").longOpt("help")
.desc("help")
.hasArg(false).required(false).build());
return options;
}
}

View File

@@ -1,395 +0,0 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemimport;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.dspace.app.itemimport.factory.ItemImportServiceFactory;
import org.dspace.app.itemimport.service.ItemImportService;
import org.dspace.content.Collection;
import org.dspace.content.factory.ContentServiceFactory;
import org.dspace.content.service.CollectionService;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.factory.EPersonServiceFactory;
import org.dspace.eperson.service.EPersonService;
import org.dspace.handle.factory.HandleServiceFactory;
import org.dspace.handle.service.HandleService;
/**
* Import items into DSpace. The conventional use is upload files by copying
* them. DSpace writes the item's bitstreams into its assetstore. Metadata is
* also loaded to the DSpace database.
* <P>
* A second use assumes the bitstream files already exist in a storage
* resource accessible to DSpace. In this case the bitstreams are 'registered'.
* That is, the metadata is loaded to the DSpace database and DSpace is given
* the location of the file which is subsumed into DSpace.
* <P>
* The distinction is controlled by the format of lines in the 'contents' file.
* See comments in processContentsFile() below.
* <P>
* Modified by David Little, UCSD Libraries 12/21/04 to
* allow the registration of files (bitstreams) into DSpace.
*/
public class ItemImportCLITool {
private static boolean template = false;
private static final CollectionService collectionService = ContentServiceFactory.getInstance()
.getCollectionService();
private static final EPersonService epersonService = EPersonServiceFactory.getInstance().getEPersonService();
private static final HandleService handleService = HandleServiceFactory.getInstance().getHandleService();
/**
* Default constructor
*/
private ItemImportCLITool() { }
public static void main(String[] argv) throws Exception {
Date startTime = new Date();
int status = 0;
try {
// create an options object and populate it
CommandLineParser parser = new DefaultParser();
Options options = new Options();
options.addOption("a", "add", false, "add items to DSpace");
options.addOption("r", "replace", false, "replace items in mapfile");
options.addOption("d", "delete", false,
"delete items listed in mapfile");
options.addOption("s", "source", true, "source of items (directory)");
options.addOption("z", "zip", true, "name of zip file");
options.addOption("c", "collection", true,
"destination collection(s) Handle or database ID");
options.addOption("m", "mapfile", true, "mapfile items in mapfile");
options.addOption("e", "eperson", true,
"email of eperson doing importing");
options.addOption("w", "workflow", false,
"send submission through collection's workflow");
options.addOption("n", "notify", false,
"if sending submissions through the workflow, send notification emails");
options.addOption("t", "test", false,
"test run - do not actually import items");
options.addOption("p", "template", false, "apply template");
options.addOption("R", "resume", false,
"resume a failed import (add only)");
options.addOption("q", "quiet", false, "don't display metadata");
options.addOption("h", "help", false, "help");
CommandLine line = parser.parse(options, argv);
String command = null; // add replace remove, etc
String sourcedir = null;
String mapfile = null;
String eperson = null; // db ID or email
String[] collections = null; // db ID or handles
boolean isTest = false;
boolean isResume = false;
boolean useWorkflow = false;
boolean useWorkflowSendEmail = false;
boolean isQuiet = false;
if (line.hasOption('h')) {
HelpFormatter myhelp = new HelpFormatter();
myhelp.printHelp("ItemImport\n", options);
System.out
.println("\nadding items: ItemImport -a -e eperson -c collection -s sourcedir -m mapfile");
System.out
.println(
"\nadding items from zip file: ItemImport -a -e eperson -c collection -s sourcedir -z " +
"filename.zip -m mapfile");
System.out
.println("replacing items: ItemImport -r -e eperson -c collection -s sourcedir -m mapfile");
System.out
.println("deleting items: ItemImport -d -e eperson -m mapfile");
System.out
.println(
"If multiple collections are specified, the first collection will be the one that owns the " +
"item.");
System.exit(0);
}
if (line.hasOption('a')) {
command = "add";
}
if (line.hasOption('r')) {
command = "replace";
}
if (line.hasOption('d')) {
command = "delete";
}
if (line.hasOption('w')) {
useWorkflow = true;
if (line.hasOption('n')) {
useWorkflowSendEmail = true;
}
}
if (line.hasOption('t')) {
isTest = true;
System.out.println("**Test Run** - not actually importing items.");
}
if (line.hasOption('p')) {
template = true;
}
if (line.hasOption('s')) { // source
sourcedir = line.getOptionValue('s');
}
if (line.hasOption('m')) { // mapfile
mapfile = line.getOptionValue('m');
}
if (line.hasOption('e')) { // eperson
eperson = line.getOptionValue('e');
}
if (line.hasOption('c')) { // collections
collections = line.getOptionValues('c');
}
if (line.hasOption('R')) {
isResume = true;
System.out
.println("**Resume import** - attempting to import items not already imported");
}
if (line.hasOption('q')) {
isQuiet = true;
}
boolean zip = false;
String zipfilename = "";
if (line.hasOption('z')) {
zip = true;
zipfilename = line.getOptionValue('z');
}
//By default assume collections will be given on the command line
boolean commandLineCollections = true;
// now validate
// must have a command set
if (command == null) {
System.out
.println("Error - must run with either add, replace, or remove (run with -h flag for details)");
System.exit(1);
} else if ("add".equals(command) || "replace".equals(command)) {
if (sourcedir == null) {
System.out
.println("Error - a source directory containing items must be set");
System.out.println(" (run with -h flag for details)");
System.exit(1);
}
if (mapfile == null) {
System.out
.println("Error - a map file to hold importing results must be specified");
System.out.println(" (run with -h flag for details)");
System.exit(1);
}
if (eperson == null) {
System.out
.println("Error - an eperson to do the importing must be specified");
System.out.println(" (run with -h flag for details)");
System.exit(1);
}
if (collections == null) {
System.out.println("No collections given. Assuming 'collections' file inside item directory");
commandLineCollections = false;
}
} else if ("delete".equals(command)) {
if (eperson == null) {
System.out
.println("Error - an eperson to do the importing must be specified");
System.exit(1);
}
if (mapfile == null) {
System.out.println("Error - a map file must be specified");
System.exit(1);
}
}
// can only resume for adds
if (isResume && !"add".equals(command)) {
System.out
.println("Error - resume option only works with the --add command");
System.exit(1);
}
// do checks around mapfile - if mapfile exists and 'add' is selected,
// resume must be chosen
File myFile = new File(mapfile);
if (!isResume && "add".equals(command) && myFile.exists()) {
System.out.println("Error - the mapfile " + mapfile
+ " already exists.");
System.out
.println("Either delete it or use --resume if attempting to resume an aborted import.");
System.exit(1);
}
ItemImportService myloader = ItemImportServiceFactory.getInstance().getItemImportService();
myloader.setTest(isTest);
myloader.setResume(isResume);
myloader.setUseWorkflow(useWorkflow);
myloader.setUseWorkflowSendEmail(useWorkflowSendEmail);
myloader.setQuiet(isQuiet);
// create a context
Context c = new Context(Context.Mode.BATCH_EDIT);
// find the EPerson, assign to context
EPerson myEPerson = null;
if (eperson.indexOf('@') != -1) {
// @ sign, must be an email
myEPerson = epersonService.findByEmail(c, eperson);
} else {
myEPerson = epersonService.find(c, UUID.fromString(eperson));
}
if (myEPerson == null) {
System.out.println("Error, eperson cannot be found: " + eperson);
System.exit(1);
}
c.setCurrentUser(myEPerson);
// find collections
List<Collection> mycollections = null;
// don't need to validate collections set if command is "delete"
// also if no collections are given in the command line
if (!"delete".equals(command) && commandLineCollections) {
System.out.println("Destination collections:");
mycollections = new ArrayList<>();
// validate each collection arg to see if it's a real collection
for (int i = 0; i < collections.length; i++) {
Collection resolved = null;
if (collections[i] != null) {
// is the ID a handle?
if (collections[i].indexOf('/') != -1) {
// string has a / so it must be a handle - try and resolve
// it
resolved = ((Collection) handleService
.resolveToObject(c, collections[i]));
} else {
// not a handle, try and treat it as an integer collection database ID
resolved = collectionService.find(c, UUID.fromString(collections[i]));
}
}
// was the collection valid?
if ((resolved == null)
|| (resolved.getType() != Constants.COLLECTION)) {
throw new IllegalArgumentException("Cannot resolve "
+ collections[i] + " to collection");
}
// add resolved collection to list
mycollections.add(resolved);
// print progress info
String owningPrefix = "";
if (i == 0) {
owningPrefix = "Owning ";
}
System.out.println(owningPrefix + " Collection: "
+ resolved.getName());
}
} // end of validating collections
try {
// If this is a zip archive, unzip it first
if (zip) {
sourcedir = myloader.unzip(sourcedir, zipfilename);
}
c.turnOffAuthorisationSystem();
if ("add".equals(command)) {
myloader.addItems(c, mycollections, sourcedir, mapfile, template);
} else if ("replace".equals(command)) {
myloader.replaceItems(c, mycollections, sourcedir, mapfile, template);
} else if ("delete".equals(command)) {
myloader.deleteItems(c, mapfile);
}
// complete all transactions
c.complete();
} catch (Exception e) {
c.abort();
e.printStackTrace();
System.out.println(e);
status = 1;
}
// Delete the unzipped file
try {
if (zip) {
System.gc();
System.out.println(
"Deleting temporary zip directory: " + myloader.getTempWorkDirFile().getAbsolutePath());
myloader.cleanupZipTemp();
}
} catch (IOException ex) {
System.out.println("Unable to delete temporary zip archive location: " + myloader.getTempWorkDirFile()
.getAbsolutePath());
}
if (isTest) {
System.out.println("***End of Test Run***");
}
} finally {
Date endTime = new Date();
System.out.println("Started: " + startTime.getTime());
System.out.println("Ended: " + endTime.getTime());
System.out.println(
"Elapsed time: " + ((endTime.getTime() - startTime.getTime()) / 1000) + " secs (" + (endTime
.getTime() - startTime.getTime()) + " msecs)");
}
System.exit(status);
}
}

View File

@@ -0,0 +1,90 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.itemimport;
import java.io.InputStream;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.dspace.scripts.configuration.ScriptConfiguration;
/**
* The {@link ScriptConfiguration} for the {@link ItemImport} script
*
* @author Francesco Pio Scognamiglio (francescopio.scognamiglio at 4science.com)
*/
public class ItemImportScriptConfiguration<T extends ItemImport> extends ScriptConfiguration<T> {
private Class<T> dspaceRunnableClass;
@Override
public Class<T> getDspaceRunnableClass() {
return dspaceRunnableClass;
}
@Override
public void setDspaceRunnableClass(Class<T> dspaceRunnableClass) {
this.dspaceRunnableClass = dspaceRunnableClass;
}
@Override
public Options getOptions() {
Options options = new Options();
options.addOption(Option.builder("a").longOpt("add")
.desc("add items to DSpace")
.hasArg(false).required(false).build());
options.addOption(Option.builder("r").longOpt("replace")
.desc("replace items in mapfile")
.hasArg(false).required(false).build());
options.addOption(Option.builder("d").longOpt("delete")
.desc("delete items listed in mapfile")
.hasArg(false).required(false).build());
options.addOption(Option.builder("z").longOpt("zip")
.desc("name of zip file")
.type(InputStream.class)
.hasArg().build());
options.addOption(Option.builder("u").longOpt("url")
.desc("url of zip file")
.hasArg().build());
options.addOption(Option.builder("c").longOpt("collection")
.desc("destination collection(s) Handle or database ID")
.hasArg().required(false).build());
options.addOption(Option.builder("m").longOpt("mapfile")
.desc("mapfile items in mapfile")
.type(InputStream.class)
.hasArg().required(false).build());
options.addOption(Option.builder("w").longOpt("workflow")
.desc("send submission through collection's workflow")
.hasArg(false).required(false).build());
options.addOption(Option.builder("n").longOpt("notify")
.desc("if sending submissions through the workflow, send notification emails")
.hasArg(false).required(false).build());
options.addOption(Option.builder("v").longOpt("validate")
.desc("test run - do not actually import items")
.hasArg(false).required(false).build());
options.addOption(Option.builder("x").longOpt("exclude-bitstreams")
.desc("do not load or expect content bitstreams")
.hasArg(false).required(false).build());
options.addOption(Option.builder("p").longOpt("template")
.desc("apply template")
.hasArg(false).required(false).build());
options.addOption(Option.builder("R").longOpt("resume")
.desc("resume a failed import (add only)")
.hasArg(false).required(false).build());
options.addOption(Option.builder("q").longOpt("quiet")
.desc("don't display metadata")
.hasArg(false).required(false).build());
options.addOption(Option.builder("h").longOpt("help")
.desc("help")
.hasArg(false).required(false).build());
return options;
}
}

View File

@@ -16,6 +16,7 @@ import org.dspace.app.itemimport.BatchUpload;
import org.dspace.content.Collection;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.scripts.handler.DSpaceRunnableHandler;
/**
* Import items into DSpace. The conventional use is upload files by copying
@@ -210,6 +211,13 @@ public interface ItemImportService {
*/
public void setTest(boolean isTest);
/**
* Set exclude-content flag.
*
* @param isExcludeContent true or false
*/
public void setExcludeContent(boolean isExcludeContent);
/**
* Set resume flag
*
@@ -235,4 +243,10 @@ public interface ItemImportService {
* @param isQuiet true or false
*/
public void setQuiet(boolean isQuiet);
/**
* Set the DSpace Runnable Handler
* @param handler
*/
public void setHandler(DSpaceRunnableHandler handler);
}

View File

@@ -77,7 +77,7 @@ public class AddBitstreamsAction extends UpdateBitstreamsAction {
ItemUpdate.pr("Contents bitstream count: " + contents.size());
String[] files = dir.list(ItemUpdate.fileFilter);
List<String> fileList = new ArrayList<String>();
List<String> fileList = new ArrayList<>();
for (String filename : files) {
fileList.add(filename);
ItemUpdate.pr("file: " + filename);
@@ -134,9 +134,6 @@ public class AddBitstreamsAction extends UpdateBitstreamsAction {
ItemUpdate.pr("contents entry for bitstream: " + ce.toString());
File f = new File(dir, ce.filename);
// get an input stream
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
Bitstream bs = null;
String newBundleName = ce.bundlename;
@@ -173,7 +170,9 @@ public class AddBitstreamsAction extends UpdateBitstreamsAction {
targetBundle = bundles.iterator().next();
}
bs = bitstreamService.create(context, targetBundle, bis);
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));) {
bs = bitstreamService.create(context, targetBundle, bis);
}
bs.setName(context, ce.filename);
// Identify the format

View File

@@ -70,16 +70,19 @@ public class DeleteBitstreamsAction extends UpdateBitstreamsAction {
}
}
if (alterProvenance) {
if (alterProvenance && !bundles.isEmpty()) {
DtoMetadata dtom = DtoMetadata.create("dc.description.provenance", "en", "");
String append = "Bitstream " + bs.getName() + " deleted on " + DCDate
.getCurrent() + "; ";
Item item = bundles.iterator().next().getItems().iterator().next();
ItemUpdate.pr("Append provenance with: " + append);
List<Item> items = bundles.iterator().next().getItems();
if (!items.isEmpty()) {
Item item = items.iterator().next();
ItemUpdate.pr("Append provenance with: " + append);
if (!isTest) {
MetadataUtilities.appendMetadata(context, item, dtom, false, append);
if (!isTest) {
MetadataUtilities.appendMetadata(context, item, dtom, false, append);
}
}
}
}

View File

@@ -23,8 +23,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
@@ -33,6 +31,7 @@ import javax.xml.transform.TransformerFactory;
import org.apache.logging.log4j.Logger;
import org.dspace.app.util.LocalSchemaFilenameFilter;
import org.dspace.app.util.XMLUtils;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
@@ -52,7 +51,6 @@ public class ItemArchive {
public static final String DUBLIN_CORE_XML = "dublin_core.xml";
protected static DocumentBuilder builder = null;
protected Transformer transformer = null;
protected List<DtoMetadata> dtomList = null;
@@ -95,14 +93,14 @@ public class ItemArchive {
InputStream is = null;
try {
is = new FileInputStream(new File(dir, DUBLIN_CORE_XML));
itarch.dtomList = MetadataUtilities.loadDublinCore(getDocumentBuilder(), is);
itarch.dtomList = MetadataUtilities.loadDublinCore(XMLUtils.getDocumentBuilder(), is);
//The code to search for local schema files was copied from org.dspace.app.itemimport
// .ItemImportServiceImpl.java
File file[] = dir.listFiles(new LocalSchemaFilenameFilter());
for (int i = 0; i < file.length; i++) {
is = new FileInputStream(file[i]);
itarch.dtomList.addAll(MetadataUtilities.loadDublinCore(getDocumentBuilder(), is));
itarch.dtomList.addAll(MetadataUtilities.loadDublinCore(XMLUtils.getDocumentBuilder(), is));
}
} finally {
if (is != null) {
@@ -126,14 +124,6 @@ public class ItemArchive {
return itarch;
}
protected static DocumentBuilder getDocumentBuilder()
throws ParserConfigurationException {
if (builder == null) {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
}
return builder;
}
/**
* Getter for Transformer
*
@@ -318,7 +308,7 @@ public class ItemArchive {
try {
out = new FileOutputStream(new File(dir, "dublin_core.xml"));
Document doc = MetadataUtilities.writeDublinCore(getDocumentBuilder(), undoDtomList);
Document doc = MetadataUtilities.writeDublinCore(XMLUtils.getDocumentBuilder(), undoDtomList);
MetadataUtilities.writeDocument(doc, getTransformer(), out);
// if undo has delete bitstream

View File

@@ -39,29 +39,34 @@ import org.dspace.handle.factory.HandleServiceFactory;
import org.dspace.handle.service.HandleService;
/**
* Provides some batch editing capabilities for items in DSpace:
* Metadata fields - Add, Delete
* Bitstreams - Add, Delete
* Provides some batch editing capabilities for items in DSpace.
* <ul>
* <li>Metadata fields - Add, Delete</li>
* <li>Bitstreams - Add, Delete</li>
* </ul>
*
* The design has been for compatibility with ItemImporter
* <p>
* The design has been for compatibility with
* {@link org.dspace.app.itemimport.service.ItemImportService}
* in the use of the DSpace archive format which is used to
* specify changes on a per item basis. The directory names
* to correspond to each item are arbitrary and will only be
* used for logging purposes. The reference to the item is
* from a required dc.identifier with the item handle to be
* included in the dublin_core.xml (or similar metadata) file.
* from a required {@code dc.identifier} with the item handle to be
* included in the {@code dublin_core.xml} (or similar metadata) file.
*
* Any combination of these actions is permitted in a single run of this class
* <p>
* Any combination of these actions is permitted in a single run of this class.
* The order of actions is important when used in combination.
* It is the responsibility of the calling class (here, ItemUpdate)
* to register UpdateAction classes in the order to which they are
* It is the responsibility of the calling class (here, {@code ItemUpdate})
* to register {@link UpdateAction} classes in the order which they are
* to be performed.
*
*
* It is unfortunate that so much code needs to be borrowed
* from ItemImport as it is not reusable in private methods, etc.
* Some of this has been placed into the MetadataUtilities class
* for possible reuse elsewhere.
* <p>
* It is unfortunate that so much code needs to be borrowed from
* {@link org.dspace.app.itemimport.service.ItemImportService} as it is not
* reusable in private methods, etc. Some of this has been placed into the
* {@link MetadataUtilities} class for possible reuse elsewhere.
*
* @author W. Hays based on a conceptual design by R. Rodgers
*/
@@ -73,7 +78,7 @@ public class ItemUpdate {
public static final String DELETE_CONTENTS_FILE = "delete_contents";
public static String HANDLE_PREFIX = null;
public static final Map<String, String> filterAliases = new HashMap<String, String>();
public static final Map<String, String> filterAliases = new HashMap<>();
public static boolean verbose = false;
@@ -375,7 +380,7 @@ public class ItemUpdate {
// open and process the source directory
File sourceDir = new File(sourceDirPath);
if ((sourceDir == null) || !sourceDir.exists() || !sourceDir.isDirectory()) {
if (!sourceDir.exists() || !sourceDir.isDirectory()) {
pr("Error, cannot open archive source directory " + sourceDirPath);
throw new Exception("error with archive source directory " + sourceDirPath);
}

View File

@@ -19,8 +19,10 @@ import java.util.TreeMap;
import org.apache.commons.cli.ParseException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dspace.app.util.XMLUtils;
import org.dspace.core.Context;
import org.dspace.scripts.DSpaceRunnable;
import org.dspace.scripts.DSpaceRunnable.StepResult;
import org.dspace.scripts.configuration.ScriptConfiguration;
import org.dspace.scripts.factory.ScriptServiceFactory;
import org.dspace.scripts.handler.DSpaceRunnableHandler;
@@ -145,8 +147,13 @@ public class ScriptLauncher {
private static int executeScript(String[] args, DSpaceRunnableHandler dSpaceRunnableHandler,
DSpaceRunnable script) {
try {
script.initialize(args, dSpaceRunnableHandler, null);
script.run();
StepResult result = script.initialize(args, dSpaceRunnableHandler, null);
// check the StepResult, only run the script if the result is Continue;
// otherwise - for example the script is started with the help as argument, nothing is to do
if (StepResult.Continue.equals(result)) {
// runs the script, the normal initialization is successful
script.run();
}
return 0;
} catch (ParseException e) {
script.printHelp();
@@ -308,7 +315,7 @@ public class ScriptLauncher {
String config = kernelImpl.getConfigurationService().getProperty("dspace.dir") +
System.getProperty("file.separator") + "config" +
System.getProperty("file.separator") + "launcher.xml";
SAXBuilder saxBuilder = new SAXBuilder();
SAXBuilder saxBuilder = XMLUtils.getSAXBuilder();
Document doc = null;
try {
doc = saxBuilder.build(config);

View File

@@ -21,10 +21,10 @@ import java.awt.image.BufferedImage;
*/
public class Brand {
private int brandWidth;
private int brandHeight;
private Font font;
private int xOffset;
private final int brandWidth;
private final int brandHeight;
private final Font font;
private final int xOffset;
/**
* Constructor to set up footer image attributes.
@@ -92,7 +92,7 @@ public class Brand {
* do the text placements and preparatory work for the brand image generation
*
* @param brandImage a BufferedImage object where the image is created
* @param identifier and Identifier object describing what text is to be placed in what
* @param brandText an Identifier object describing what text is to be placed in what
* position within the brand
*/
private void drawImage(BufferedImage brandImage,

View File

@@ -39,7 +39,7 @@ class BrandText {
* its location within a rectangular area.
*
* @param location one of the class location constants e.g. <code>Identifier.BL</code>
* @param the text associated with the location
* @param text text associated with the location
*/
public BrandText(String location, String text) {
this.location = location;

View File

@@ -7,9 +7,7 @@
*/
package org.dspace.app.mediafilter;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import javax.imageio.ImageIO;
import org.dspace.content.Item;
import org.dspace.services.ConfigurationService;
@@ -63,27 +61,20 @@ public class BrandedPreviewJPEGFilter extends MediaFilter {
@Override
public InputStream getDestinationStream(Item currentItem, InputStream source, boolean verbose)
throws Exception {
// read in bitstream's image
BufferedImage buf = ImageIO.read(source);
// get config params
ConfigurationService configurationService
= DSpaceServicesFactory.getInstance().getConfigurationService();
float xmax = (float) configurationService
.getIntProperty("webui.preview.maxwidth");
float ymax = (float) configurationService
.getIntProperty("webui.preview.maxheight");
boolean blurring = (boolean) configurationService
.getBooleanProperty("webui.preview.blurring");
boolean hqscaling = (boolean) configurationService
.getBooleanProperty("webui.preview.hqscaling");
int xmax = configurationService.getIntProperty("webui.preview.maxwidth");
int ymax = configurationService.getIntProperty("webui.preview.maxheight");
boolean blurring = configurationService.getBooleanProperty("webui.preview.blurring");
boolean hqscaling = configurationService.getBooleanProperty("webui.preview.hqscaling");
int brandHeight = configurationService.getIntProperty("webui.preview.brand.height");
String brandFont = configurationService.getProperty("webui.preview.brand.font");
int brandFontPoint = configurationService.getIntProperty("webui.preview.brand.fontpoint");
JPEGFilter jpegFilter = new JPEGFilter();
return jpegFilter
.getThumbDim(currentItem, buf, verbose, xmax, ymax, blurring, hqscaling, brandHeight, brandFontPoint,
brandFont);
return jpegFilter.getThumb(
currentItem, source, verbose, xmax, ymax, blurring, hqscaling, brandHeight, brandFontPoint, brandFont
);
}
}

View File

@@ -22,7 +22,9 @@ public class ImageMagickPdfThumbnailFilter extends ImageMagickThumbnailFilter {
File f2 = null;
File f3 = null;
try {
f2 = getImageFile(f, 0, verbose);
// Step 1: get an image from our PDF file, with PDF-specific processing options
f2 = getImageFile(f, verbose);
// Step 2: use the image above to create the final resized and rotated thumbnail
f3 = getThumbnailFile(f2, verbose);
byte[] bytes = Files.readAllBytes(f3.toPath());
return new ByteArrayInputStream(bytes);

View File

@@ -14,6 +14,9 @@ import java.io.InputStream;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.dspace.content.Bitstream;
import org.dspace.content.Bundle;
import org.dspace.content.Item;
@@ -113,13 +116,54 @@ public abstract class ImageMagickThumbnailFilter extends MediaFilter {
return f2;
}
public File getImageFile(File f, int page, boolean verbose)
/**
* Return an image from a bitstream with specific processing options for
* PDFs. This is only used by ImageMagickPdfThumbnailFilter in order to
* generate an intermediate image file for use with getThumbnailFile.
*/
public File getImageFile(File f, boolean verbose)
throws IOException, InterruptedException, IM4JavaException {
File f2 = new File(f.getParentFile(), f.getName() + ".jpg");
// Writing an intermediate file to disk is inefficient, but since we're
// doing it anyway, we should use a lossless format. IM's internal MIFF
// is lossless like PNG and TIFF, but much faster.
File f2 = new File(f.getParentFile(), f.getName() + ".miff");
f2.deleteOnExit();
ConvertCmd cmd = new ConvertCmd();
IMOperation op = new IMOperation();
String s = "[" + page + "]";
// Optionally override ImageMagick's default density of 72 DPI to use a
// "supersample" when creating the PDF thumbnail. Note that I prefer to
// use the getProperty() method here instead of getIntPropert() because
// the latter always returns an integer (0 in the case it's not set). I
// would prefer to keep ImageMagick's default to itself rather than for
// us to set one. Also note that the density option *must* come before
// we open the input file.
String density = configurationService.getProperty(PRE + ".density");
if (density != null) {
op.density(Integer.valueOf(density));
}
// Check the PDF's MediaBox and CropBox to see if they are the same.
// If not, then tell ImageMagick to use the CropBox when generating
// the thumbnail because the CropBox is generally used to define the
// area displayed when a user opens the PDF on a screen, whereas the
// MediaBox is used for print. Not all PDFs set these correctly, so
// we can use ImageMagick's default behavior unless we see an explit
// CropBox. Note: we don't need to do anything special to detect if
// the CropBox is missing or empty because pdfbox will set it to the
// same size as the MediaBox if it doesn't exist. Also note that we
// only need to check the first page, since that's what we use for
// generating the thumbnail (PDDocument uses a zero-based index).
PDPage pdfPage = PDDocument.load(f).getPage(0);
PDRectangle pdfPageMediaBox = pdfPage.getMediaBox();
PDRectangle pdfPageCropBox = pdfPage.getCropBox();
// This option must come *before* we open the input file.
if (pdfPageCropBox != pdfPageMediaBox) {
op.define("pdf:use-cropbox=true");
}
String s = "[0]";
op.addImage(f.getAbsolutePath() + s);
if (configurationService.getBooleanProperty(PRE + ".flatten", true)) {
op.flatten();
@@ -172,20 +216,20 @@ public abstract class ImageMagickThumbnailFilter extends MediaFilter {
if (description != null) {
if (replaceRegex.matcher(description).matches()) {
if (verbose) {
System.out.format("%s %s matches pattern and is replacable.%n",
description, nsrc);
System.out.format("%s %s matches pattern and is replaceable.%n",
description, n);
}
continue;
}
if (description.equals(getDescription())) {
if (verbose) {
System.out.format("%s %s is replaceable.%n",
getDescription(), nsrc);
getDescription(), n);
}
continue;
}
}
System.out.format("Custom Thumbnail exists for %s for item %s. Thumbnail will not be generated.%n",
System.out.format("Custom thumbnail exists for %s for item %s. Thumbnail will not be generated.%n",
nsrc, item.getHandle());
return false;
}

View File

@@ -0,0 +1,76 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.mediafilter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import org.dspace.content.Item;
import org.im4java.core.ConvertCmd;
import org.im4java.core.IM4JavaException;
import org.im4java.core.IMOperation;
/**
* Filter video bitstreams, scaling the image to be within the bounds of
* thumbnail.maxwidth, thumbnail.maxheight, the size we want our thumbnail to be
* no bigger than. Creates only JPEGs.
*/
public class ImageMagickVideoThumbnailFilter extends ImageMagickThumbnailFilter {
private static final int DEFAULT_WIDTH = 180;
private static final int DEFAULT_HEIGHT = 120;
private static final int FRAME_NUMBER = 100;
/**
* @param currentItem item
* @param source source input stream
* @param verbose verbose mode
* @return InputStream the resulting input stream
* @throws Exception if error
*/
@Override
public InputStream getDestinationStream(Item currentItem, InputStream source, boolean verbose)
throws Exception {
File f = inputStreamToTempFile(source, "imthumb", ".tmp");
File f2 = null;
try {
f2 = getThumbnailFile(f, verbose);
byte[] bytes = Files.readAllBytes(f2.toPath());
return new ByteArrayInputStream(bytes);
} finally {
//noinspection ResultOfMethodCallIgnored
f.delete();
if (f2 != null) {
//noinspection ResultOfMethodCallIgnored
f2.delete();
}
}
}
@Override
public File getThumbnailFile(File f, boolean verbose)
throws IOException, InterruptedException, IM4JavaException {
File f2 = new File(f.getParentFile(), f.getName() + ".jpg");
f2.deleteOnExit();
ConvertCmd cmd = new ConvertCmd();
IMOperation op = new IMOperation();
op.autoOrient();
op.addImage("VIDEO:" + f.getAbsolutePath() + "[" + FRAME_NUMBER + "]");
op.thumbnail(configurationService.getIntProperty("thumbnail.maxwidth", DEFAULT_WIDTH),
configurationService.getIntProperty("thumbnail.maxheight", DEFAULT_HEIGHT));
op.addImage(f2.getAbsolutePath());
if (verbose) {
System.out.println("IM Thumbnail Param: " + op);
}
cmd.run(op);
return f2;
}
}

View File

@@ -8,19 +8,32 @@
package org.dspace.app.mediafilter;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Transparency;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import com.drew.imaging.ImageMetadataReader;
import com.drew.imaging.ImageProcessingException;
import com.drew.metadata.Metadata;
import com.drew.metadata.MetadataException;
import com.drew.metadata.exif.ExifIFD0Directory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dspace.content.Item;
import org.dspace.services.ConfigurationService;
import org.dspace.services.factory.DSpaceServicesFactory;
@@ -33,6 +46,8 @@ import org.dspace.services.factory.DSpaceServicesFactory;
* @author Jason Sherman jsherman@usao.edu
*/
public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats {
private static final Logger log = LogManager.getLogger(JPEGFilter.class);
@Override
public String getFilteredName(String oldFilename) {
return oldFilename + ".jpg";
@@ -62,6 +77,115 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats
return "Generated Thumbnail";
}
/**
* Gets the rotation angle from image's metadata using ImageReader.
* This method consumes the InputStream, so you need to be careful to don't reuse the same InputStream after
* computing the rotation angle.
*
* @param buf InputStream of the image file
* @return Rotation angle in degrees (0, 90, 180, or 270)
*/
public static int getImageRotationUsingImageReader(InputStream buf) {
try {
Metadata metadata = ImageMetadataReader.readMetadata(buf);
ExifIFD0Directory directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
if (directory != null && directory.containsTag(ExifIFD0Directory.TAG_ORIENTATION)) {
return convertRotationToDegrees(directory.getInt(ExifIFD0Directory.TAG_ORIENTATION));
}
} catch (MetadataException | ImageProcessingException | IOException e) {
log.error("Error reading image metadata", e);
}
return 0;
}
public static int convertRotationToDegrees(int valueNode) {
// Common orientation values:
// 1 = Normal (0°)
// 6 = Rotated 90° CW
// 3 = Rotated 180°
// 8 = Rotated 270° CW
switch (valueNode) {
case 6:
return 90;
case 3:
return 180;
case 8:
return 270;
default:
return 0;
}
}
/**
* Rotates an image by the specified angle
*
* @param image The original image
* @param angle The rotation angle in degrees
* @return Rotated image
*/
public static BufferedImage rotateImage(BufferedImage image, int angle) {
if (angle == 0) {
return image;
}
double radians = Math.toRadians(angle);
double sin = Math.abs(Math.sin(radians));
double cos = Math.abs(Math.cos(radians));
int newWidth = (int) Math.round(image.getWidth() * cos + image.getHeight() * sin);
int newHeight = (int) Math.round(image.getWidth() * sin + image.getHeight() * cos);
BufferedImage rotated = new BufferedImage(newWidth, newHeight, image.getType());
Graphics2D g2d = rotated.createGraphics();
AffineTransform at = new AffineTransform();
at.translate(newWidth / 2, newHeight / 2);
at.rotate(radians);
at.translate(-image.getWidth() / 2, -image.getHeight() / 2);
g2d.setTransform(at);
g2d.drawImage(image, 0, 0, null);
g2d.dispose();
return rotated;
}
/**
* Calculates scaled dimension while maintaining aspect ratio
*
* @param imgSize Original image dimensions
* @param boundary Maximum allowed dimensions
* @return New dimensions that fit within boundary while preserving aspect ratio
*/
private Dimension getScaledDimension(Dimension imgSize, Dimension boundary) {
int originalWidth = imgSize.width;
int originalHeight = imgSize.height;
int boundWidth = boundary.width;
int boundHeight = boundary.height;
int newWidth = originalWidth;
int newHeight = originalHeight;
// First check if we need to scale width
if (originalWidth > boundWidth) {
// Scale width to fit
newWidth = boundWidth;
// Scale height to maintain aspect ratio
newHeight = (newWidth * originalHeight) / originalWidth;
}
// Then check if we need to scale even with the new height
if (newHeight > boundHeight) {
// Scale height to fit instead
newHeight = boundHeight;
newWidth = (newHeight * originalWidth) / originalHeight;
}
return new Dimension(newWidth, newHeight);
}
/**
* @param currentItem item
* @param source source input stream
@@ -72,10 +196,65 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats
@Override
public InputStream getDestinationStream(Item currentItem, InputStream source, boolean verbose)
throws Exception {
// read in bitstream's image
BufferedImage buf = ImageIO.read(source);
return getThumb(currentItem, source, verbose);
}
return getThumb(currentItem, buf, verbose);
public InputStream getThumb(Item currentItem, InputStream source, boolean verbose)
throws Exception {
// get config params
final ConfigurationService configurationService
= DSpaceServicesFactory.getInstance().getConfigurationService();
int xmax = configurationService
.getIntProperty("thumbnail.maxwidth");
int ymax = configurationService
.getIntProperty("thumbnail.maxheight");
boolean blurring = (boolean) configurationService
.getBooleanProperty("thumbnail.blurring");
boolean hqscaling = (boolean) configurationService
.getBooleanProperty("thumbnail.hqscaling");
return getThumb(currentItem, source, verbose, xmax, ymax, blurring, hqscaling, 0, 0, null);
}
protected InputStream getThumb(
Item currentItem,
InputStream source,
boolean verbose,
int xmax,
int ymax,
boolean blurring,
boolean hqscaling,
int brandHeight,
int brandFontPoint,
String brandFont
) throws Exception {
File tempFile = File.createTempFile("temp", ".tmp");
tempFile.deleteOnExit();
// Write to temp file
try (FileOutputStream fos = new FileOutputStream(tempFile)) {
byte[] buffer = new byte[4096];
int len;
while ((len = source.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
}
int rotation = 0;
try (FileInputStream fis = new FileInputStream(tempFile)) {
rotation = getImageRotationUsingImageReader(fis);
}
try (FileInputStream fis = new FileInputStream(tempFile)) {
// read in bitstream's image
BufferedImage buf = ImageIO.read(fis);
return getThumbDim(
currentItem, buf, verbose, xmax, ymax, blurring, hqscaling, brandHeight, brandFontPoint, rotation,
brandFont
);
}
}
public InputStream getThumb(Item currentItem, BufferedImage buf, boolean verbose)
@@ -83,25 +262,28 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats
// get config params
final ConfigurationService configurationService
= DSpaceServicesFactory.getInstance().getConfigurationService();
float xmax = (float) configurationService
int xmax = configurationService
.getIntProperty("thumbnail.maxwidth");
float ymax = (float) configurationService
int ymax = configurationService
.getIntProperty("thumbnail.maxheight");
boolean blurring = (boolean) configurationService
.getBooleanProperty("thumbnail.blurring");
boolean hqscaling = (boolean) configurationService
.getBooleanProperty("thumbnail.hqscaling");
return getThumbDim(currentItem, buf, verbose, xmax, ymax, blurring, hqscaling, 0, 0, null);
return getThumbDim(currentItem, buf, verbose, xmax, ymax, blurring, hqscaling, 0, 0, 0, null);
}
public InputStream getThumbDim(Item currentItem, BufferedImage buf, boolean verbose, float xmax, float ymax,
public InputStream getThumbDim(Item currentItem, BufferedImage buf, boolean verbose, int xmax, int ymax,
boolean blurring, boolean hqscaling, int brandHeight, int brandFontPoint,
String brandFont)
int rotation, String brandFont)
throws Exception {
// now get the image dimensions
float xsize = (float) buf.getWidth(null);
float ysize = (float) buf.getHeight(null);
// Rotate the image if needed
BufferedImage correctedImage = rotateImage(buf, rotation);
int xsize = correctedImage.getWidth();
int ysize = correctedImage.getHeight();
// if verbose flag is set, print out dimensions
// to STDOUT
@@ -109,86 +291,63 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats
System.out.println("original size: " + xsize + "," + ysize);
}
// scale by x first if needed
if (xsize > xmax) {
// calculate scaling factor so that xsize * scale = new size (max)
float scale_factor = xmax / xsize;
// Calculate new dimensions while maintaining aspect ratio
Dimension newDimension = getScaledDimension(
new Dimension(xsize, ysize),
new Dimension(xmax, ymax)
);
// if verbose flag is set, print out extracted text
// to STDOUT
if (verbose) {
System.out.println("x scale factor: " + scale_factor);
}
// now reduce x size
// and y size
xsize = xsize * scale_factor;
ysize = ysize * scale_factor;
// if verbose flag is set, print out extracted text
// to STDOUT
if (verbose) {
System.out.println("size after fitting to maximum width: " + xsize + "," + ysize);
}
}
// scale by y if needed
if (ysize > ymax) {
float scale_factor = ymax / ysize;
// now reduce x size
// and y size
xsize = xsize * scale_factor;
ysize = ysize * scale_factor;
}
// if verbose flag is set, print details to STDOUT
if (verbose) {
System.out.println("size after fitting to maximum height: " + xsize + ", "
+ ysize);
System.out.println("size after fitting to maximum height: " + newDimension.width + ", "
+ newDimension.height);
}
xsize = newDimension.width;
ysize = newDimension.height;
// create an image buffer for the thumbnail with the new xsize, ysize
BufferedImage thumbnail = new BufferedImage((int) xsize, (int) ysize,
BufferedImage.TYPE_INT_RGB);
BufferedImage thumbnail = new BufferedImage(xsize, ysize, BufferedImage.TYPE_INT_RGB);
// Use blurring if selected in config.
// a little blur before scaling does wonders for keeping moire in check.
if (blurring) {
// send the buffered image off to get blurred.
buf = getBlurredInstance((BufferedImage) buf);
correctedImage = getBlurredInstance(correctedImage);
}
// Use high quality scaling method if selected in config.
// this has a definite performance penalty.
if (hqscaling) {
// send the buffered image off to get an HQ downscale.
buf = getScaledInstance((BufferedImage) buf, (int) xsize, (int) ysize,
(Object) RenderingHints.VALUE_INTERPOLATION_BICUBIC, (boolean) true);
correctedImage = getScaledInstance(correctedImage, xsize, ysize,
RenderingHints.VALUE_INTERPOLATION_BICUBIC, true);
}
// now render the image into the thumbnail buffer
Graphics2D g2d = thumbnail.createGraphics();
g2d.drawImage(buf, 0, 0, (int) xsize, (int) ysize, null);
g2d.drawImage(correctedImage, 0, 0, xsize, ysize, null);
if (brandHeight != 0) {
ConfigurationService configurationService
= DSpaceServicesFactory.getInstance().getConfigurationService();
Brand brand = new Brand((int) xsize, brandHeight, new Font(brandFont, Font.PLAIN, brandFontPoint), 5);
Brand brand = new Brand(xsize, brandHeight, new Font(brandFont, Font.PLAIN, brandFontPoint), 5);
BufferedImage brandImage = brand.create(configurationService.getProperty("webui.preview.brand"),
configurationService.getProperty("webui.preview.brand.abbrev"),
currentItem == null ? "" : "hdl:" + currentItem.getHandle());
g2d.drawImage(brandImage, (int) 0, (int) ysize, (int) xsize, (int) 20, null);
g2d.drawImage(brandImage, 0, ysize, xsize, 20, null);
}
ByteArrayInputStream bais;
// now create an input stream for the thumbnail buffer and return it
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(thumbnail, "jpeg", baos);
// now get the array
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
ImageIO.write(thumbnail, "jpeg", baos);
// now get the array
bais = new ByteArrayInputStream(baos.toByteArray());
}
return bais; // hope this gets written out before its garbage collected!
}

View File

@@ -7,25 +7,16 @@
*/
package org.dspace.app.mediafilter;
import java.sql.SQLException;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.core.Context;
import org.dspace.scripts.configuration.ScriptConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
public class MediaFilterScriptConfiguration<T extends MediaFilterScript> extends ScriptConfiguration<T> {
@Autowired
private AuthorizeService authorizeService;
private Class<T> dspaceRunnableClass;
private static final String MEDIA_FILTER_PLUGINS_KEY = "filter.plugins";
@Override
public Class<T> getDspaceRunnableClass() {
return dspaceRunnableClass;
@@ -36,23 +27,14 @@ public class MediaFilterScriptConfiguration<T extends MediaFilterScript> extends
this.dspaceRunnableClass = dspaceRunnableClass;
}
@Override
public boolean isAllowedToExecute(final Context context) {
try {
return authorizeService.isAdmin(context);
} catch (SQLException e) {
throw new RuntimeException("SQLException occurred when checking if the current user is an admin", e);
}
}
@Override
public Options getOptions() {
Options options = new Options();
options.addOption("v", "verbose", false, "print all extracted text and other details to STDOUT");
options.addOption("q", "quiet", false, "do not print anything except in the event of errors.");
options.addOption("f", "force", false, "force all bitstreams to be processed");
options.addOption("i", "identifier", true, "ONLY process bitstreams belonging to identifier");
options.addOption("i", "identifier", true,
"ONLY process bitstreams belonging to the provided handle identifier");
options.addOption("m", "maximum", true, "process no more than maximum items");
options.addOption("h", "help", false, "help");

View File

@@ -8,13 +8,18 @@
package org.dspace.app.mediafilter;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.dspace.app.mediafilter.service.MediaFilterService;
import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.content.Bitstream;
import org.dspace.content.BitstreamFormat;
@@ -36,6 +41,7 @@ import org.dspace.eperson.Group;
import org.dspace.eperson.service.GroupService;
import org.dspace.scripts.handler.DSpaceRunnableHandler;
import org.dspace.services.ConfigurationService;
import org.dspace.util.ThrowableUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
@@ -126,12 +132,18 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
@Override
public void applyFiltersCommunity(Context context, Community community)
throws Exception { //only apply filters if community not in skip-list
// ensure that the community is attached to the current hibernate session
// as we are committing after each item (handles, sub-communties and
// collections are lazy attributes)
community = context.reloadEntity(community);
if (!inSkipList(community.getHandle())) {
List<Community> subcommunities = community.getSubcommunities();
for (Community subcommunity : subcommunities) {
applyFiltersCommunity(context, subcommunity);
}
// ensure that the community is attached to the current hibernate session
// as we are committing after each item
community = context.reloadEntity(community);
List<Collection> collections = community.getCollections();
for (Collection collection : collections) {
applyFiltersCollection(context, collection);
@@ -142,6 +154,9 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
@Override
public void applyFiltersCollection(Context context, Collection collection)
throws Exception {
// ensure that the collection is attached to the current hibernate session
// as we are committing after each item (handles are lazy attributes)
collection = context.reloadEntity(collection);
//only apply filters if collection not in skip-list
if (!inSkipList(collection.getHandle())) {
Iterator<Item> itemIterator = itemService.findAllByCollection(context, collection);
@@ -165,6 +180,8 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
}
// clear item objects from context cache and internal cache
c.uncacheEntity(currentItem);
// commit after each item to release DB resources
c.commit();
currentItem = null;
}
}
@@ -221,23 +238,9 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
filtered = true;
}
} catch (Exception e) {
String handle = myItem.getHandle();
List<Bundle> bundles = myBitstream.getBundles();
long size = myBitstream.getSizeBytes();
String checksum = myBitstream.getChecksum() + " (" + myBitstream.getChecksumAlgorithm() + ")";
int assetstore = myBitstream.getStoreNumber();
// Printout helpful information to find the errored bitstream.
StringBuilder sb = new StringBuilder("ERROR filtering, skipping bitstream:\n");
sb.append("\tItem Handle: ").append(handle);
for (Bundle bundle : bundles) {
sb.append("\tBundle Name: ").append(bundle.getName());
}
sb.append("\tFile Size: ").append(size);
sb.append("\tChecksum: ").append(checksum);
sb.append("\tAsset Store: ").append(assetstore);
logError(sb.toString());
logError(e.getMessage(), e);
logError(formatBitstreamDetails(myItem.getHandle(), myBitstream));
logError(ThrowableUtils.formatCauseChain(e));
}
} else if (filterClass instanceof SelfRegisterInputFormats) {
// Filter implements self registration, so check to see if it should be applied
@@ -315,25 +318,25 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
// check if destination bitstream exists
Bundle existingBundle = null;
Bitstream existingBitstream = null;
List<Bitstream> existingBitstreams = new ArrayList<>();
List<Bundle> bundles = itemService.getBundles(item, formatFilter.getBundleName());
if (bundles.size() > 0) {
// only finds the last match (FIXME?)
if (!bundles.isEmpty()) {
// only finds the last matching bundle and all matching bitstreams in the proper bundle(s)
for (Bundle bundle : bundles) {
List<Bitstream> bitstreams = bundle.getBitstreams();
for (Bitstream bitstream : bitstreams) {
if (bitstream.getName().trim().equals(newName.trim())) {
existingBundle = bundle;
existingBitstream = bitstream;
existingBitstreams.add(bitstream);
}
}
}
}
// if exists and overwrite = false, exit
if (!overWrite && (existingBitstream != null)) {
if (!overWrite && (!existingBitstreams.isEmpty())) {
if (!isQuiet) {
logInfo("SKIPPED: bitstream " + source.getID()
+ " (item: " + item.getHandle() + ") because '" + newName + "' already exists");
@@ -366,7 +369,7 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
}
Bundle targetBundle; // bundle we're modifying
if (bundles.size() < 1) {
if (bundles.isEmpty()) {
// create new bundle if needed
targetBundle = bundleService.create(context, item, formatFilter.getBundleName());
} else {
@@ -388,29 +391,18 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
bitstreamService.update(context, b);
//Set permissions on the derivative bitstream
//- First remove any existing policies
authorizeService.removeAllPolicies(context, b);
//- Determine if this is a public-derivative format
if (publicFiltersClasses.contains(formatFilter.getClass().getSimpleName())) {
//- Set derivative bitstream to be publicly accessible
Group anonymous = groupService.findByName(context, Group.ANONYMOUS);
authorizeService.addPolicy(context, b, Constants.READ, anonymous);
} else {
//- Inherit policies from the source bitstream
authorizeService.inheritPolicies(context, source, b);
}
updatePoliciesOfDerivativeBitstream(context, b, formatFilter, source);
//do post-processing of the generated bitstream
formatFilter.postProcessBitstream(context, item, b);
} catch (OutOfMemoryError oome) {
logError("!!! OutOfMemoryError !!!");
logError(formatBitstreamDetails(item.getHandle(), source));
}
// fixme - set date?
// we are overwriting, so remove old bitstream
if (existingBitstream != null) {
for (Bitstream existingBitstream : existingBitstreams) {
bundleService.removeBitstream(context, existingBundle, existingBitstream);
}
@@ -422,6 +414,71 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
return true;
}
@Override
public void updatePoliciesOfDerivativeBitstreams(Context context, Item item, Bitstream source)
throws SQLException, AuthorizeException {
if (filterClasses == null) {
return;
}
for (FormatFilter formatFilter : filterClasses) {
for (Bitstream bitstream : findDerivativeBitstreams(item, source, formatFilter)) {
updatePoliciesOfDerivativeBitstream(context, bitstream, formatFilter, source);
}
}
}
/**
* find derivative bitstreams related to source bitstream
*
* @param item item containing bitstreams
* @param source source bitstream
* @param formatFilter formatFilter
* @return list of derivative bitstreams from source bitstream
* @throws SQLException If something goes wrong in the database
*/
private List<Bitstream> findDerivativeBitstreams(Item item, Bitstream source, FormatFilter formatFilter)
throws SQLException {
String bitstreamName = formatFilter.getFilteredName(source.getName());
List<Bundle> bundles = itemService.getBundles(item, formatFilter.getBundleName());
return bundles.stream()
.flatMap(bundle ->
bundle.getBitstreams().stream())
.filter(bitstream ->
StringUtils.equals(bitstream.getName().trim(), bitstreamName.trim()))
.collect(Collectors.toList());
}
/**
* update resource polices of derivative bitstreams.
* by remove all resource policies and
* set derivative bitstreams to be publicly accessible or
* replace derivative bitstreams policies using
* the same in the source bitstream.
*
* @param context the context
* @param bitstream derivative bitstream
* @param formatFilter formatFilter
* @param source the source bitstream
* @throws SQLException If something goes wrong in the database
* @throws AuthorizeException if authorization error
*/
private void updatePoliciesOfDerivativeBitstream(Context context, Bitstream bitstream, FormatFilter formatFilter,
Bitstream source) throws SQLException, AuthorizeException {
authorizeService.removeAllPolicies(context, bitstream);
if (publicFiltersClasses.contains(formatFilter.getClass().getSimpleName())) {
Group anonymous = groupService.findByName(context, Group.ANONYMOUS);
authorizeService.addPolicy(context, bitstream, Constants.READ, anonymous);
} else {
authorizeService.replaceAllPolicies(context, source, bitstream);
}
}
@Override
public Item getCurrentItem() {
return currentItem;
@@ -439,6 +496,37 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB
}
}
/**
* Describe a Bitstream in detail. Format a single line of text with
* information such as Bitstore index, backing file ID, size, checksum,
* enclosing Item and Bundles.
*
* @param itemHandle Handle of the Item by which we found the Bitstream.
* @param bitstream the Bitstream to be described.
* @return Bitstream details.
*/
private String formatBitstreamDetails(String itemHandle,
Bitstream bitstream) {
List<Bundle> bundles;
try {
bundles = bitstream.getBundles();
} catch (SQLException ex) {
logError("Unexpected error fetching Bundles", ex);
bundles = Collections.EMPTY_LIST;
}
StringBuilder sb = new StringBuilder("ERROR filtering, skipping bitstream:\n");
sb.append("\tItem Handle: ").append(itemHandle);
for (Bundle bundle : bundles) {
sb.append("\tBundle Name: ").append(bundle.getName());
}
sb.append("\tFile Size: ").append(bitstream.getSizeBytes());
sb.append("\tChecksum: ").append(bitstream.getChecksum())
.append(" (").append(bitstream.getChecksumAlgorithm()).append(')');
sb.append("\tAsset Store: ").append(bitstream.getStoreNumber());
sb.append("\tInternal ID: ").append(bitstream.getInternalId());
return sb.toString();
}
private void logInfo(String message) {
if (handler != null) {
handler.logInfo(message);

View File

@@ -81,6 +81,7 @@ public class PDFBoxThumbnail extends MediaFilter {
// Generate thumbnail derivative and return as IO stream.
JPEGFilter jpegFilter = new JPEGFilter();
return jpegFilter.getThumb(currentItem, buf, verbose);
}
}

View File

@@ -18,6 +18,7 @@ import java.nio.charset.StandardCharsets;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.util.IOUtils;
import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
@@ -37,6 +38,8 @@ import org.xml.sax.SAXException;
public class TikaTextExtractionFilter
extends MediaFilter {
private final static Logger log = LogManager.getLogger();
private static final int DEFAULT_MAX_CHARS = 100_000;
private static final int DEFAULT_MAX_ARRAY = 100_000_000;
@Override
public String getFilteredName(String oldFilename) {
@@ -70,9 +73,12 @@ public class TikaTextExtractionFilter
}
// Not using temporary file. We'll use Tika's default in-memory parsing.
// Get maximum characters to extract. Default is 100,000 chars, which is also Tika's default setting.
String extractedText;
int maxChars = configurationService.getIntProperty("textextractor.max-chars", 100000);
// Get maximum characters to extract. Default is 100,000 chars, which is also Tika's default setting.
int maxChars = configurationService.getIntProperty("textextractor.max-chars", DEFAULT_MAX_CHARS);
// Get maximum size of structure that Tika will try to buffer.
int maxArray = configurationService.getIntProperty("textextractor.max-array", DEFAULT_MAX_ARRAY);
IOUtils.setByteArrayMaxOverride(maxArray);
try {
// Use Tika to extract text from input. Tika will automatically detect the file type.
Tika tika = new Tika();
@@ -80,13 +86,13 @@ public class TikaTextExtractionFilter
extractedText = tika.parseToString(source);
} catch (IOException e) {
System.err.format("Unable to extract text from bitstream in Item %s%n", currentItem.getID().toString());
e.printStackTrace();
e.printStackTrace(System.err);
log.error("Unable to extract text from bitstream in Item {}", currentItem.getID().toString(), e);
throw e;
} catch (OutOfMemoryError oe) {
System.err.format("OutOfMemoryError occurred when extracting text from bitstream in Item %s. " +
"You may wish to enable 'textextractor.use-temp-file'.%n", currentItem.getID().toString());
oe.printStackTrace();
oe.printStackTrace(System.err);
log.error("OutOfMemoryError occurred when extracting text from bitstream in Item {}. " +
"You may wish to enable 'textextractor.use-temp-file'.", currentItem.getID().toString(), oe);
throw oe;
@@ -138,7 +144,7 @@ public class TikaTextExtractionFilter
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
try {
writer.append(new String(ch), start, length);
writer.append(new String(ch, start, length));
} catch (IOException e) {
String errorMsg = String.format("Could not append to temporary file at %s " +
"when performing text extraction",
@@ -156,7 +162,7 @@ public class TikaTextExtractionFilter
@Override
public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
try {
writer.append(new String(ch), start, length);
writer.append(new String(ch, start, length));
} catch (IOException e) {
String errorMsg = String.format("Could not append to temporary file at %s " +
"when performing text extraction",
@@ -167,6 +173,10 @@ public class TikaTextExtractionFilter
}
});
ConfigurationService configurationService = DSpaceServicesFactory.getInstance().getConfigurationService();
int maxArray = configurationService.getIntProperty("textextractor.max-array", DEFAULT_MAX_ARRAY);
IOUtils.setByteArrayMaxOverride(maxArray);
AutoDetectParser parser = new AutoDetectParser();
Metadata metadata = new Metadata();
// parse our source InputStream using the above custom handler

View File

@@ -7,10 +7,12 @@
*/
package org.dspace.app.mediafilter.service;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.dspace.app.mediafilter.FormatFilter;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Bitstream;
import org.dspace.content.Collection;
import org.dspace.content.Community;
@@ -91,6 +93,22 @@ public interface MediaFilterService {
public boolean processBitstream(Context context, Item item, Bitstream source, FormatFilter formatFilter)
throws Exception;
/**
* update resource polices of derivative bitstreams
* related to source bitstream.
* set derivative bitstreams to be publicly accessible or
* replace derivative bitstreams policies using
* the same in the source bitstream.
*
* @param context context
* @param item item containing bitstreams
* @param source source bitstream
* @throws SQLException If something goes wrong in the database
* @throws AuthorizeException if authorization error
*/
public void updatePoliciesOfDerivativeBitstreams(Context context, Item item, Bitstream source)
throws SQLException, AuthorizeException;
/**
* Return the item that is currently being processed/filtered
* by the MediaFilterManager.

View File

@@ -631,7 +631,7 @@ public class Packager {
//otherwise, just disseminate a single object to a single package file
dip.disseminate(context, dso, pkgParams, pkgFile);
if (pkgFile != null && pkgFile.exists()) {
if (pkgFile.exists()) {
System.out.println("\nCREATED package file: " + pkgFile.getCanonicalPath());
}
}

View File

@@ -0,0 +1,46 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.requestitem;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.dspace.content.Collection;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.springframework.lang.NonNull;
/**
* Derive request recipients from groups of the Collection which owns an Item.
* The list will include all members of the administrators group. If the
* resulting list is empty, delegates to {@link RequestItemHelpdeskStrategy}.
*
* @author Mark H. Wood <mwood@iupui.edu>
*/
public class CollectionAdministratorsRequestItemStrategy
extends RequestItemHelpdeskStrategy {
@Override
@NonNull
public List<RequestItemAuthor> getRequestItemAuthor(Context context,
Item item)
throws SQLException {
List<RequestItemAuthor> recipients = new ArrayList<>();
Collection collection = item.getOwningCollection();
for (EPerson admin : collection.getAdministrators().getMembers()) {
recipients.add(new RequestItemAuthor(admin));
}
if (recipients.isEmpty()) {
return super.getRequestItemAuthor(context, item);
} else {
return recipients;
}
}
}

View File

@@ -0,0 +1,61 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.requestitem;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.springframework.lang.NonNull;
import org.springframework.util.Assert;
/**
* Assemble a list of recipients from the results of other strategies.
* The list of strategy classes is injected as the constructor argument
* {@code strategies}.
* If the strategy list is not configured, returns an empty List.
*
* @author Mark H. Wood <mwood@iupui.edu>
*/
public class CombiningRequestItemStrategy
implements RequestItemAuthorExtractor {
/** The strategies to combine. */
private final List<RequestItemAuthorExtractor> strategies;
/**
* Initialize a combination of strategies.
* @param strategies the author extraction strategies to combine.
*/
public CombiningRequestItemStrategy(@NonNull List<RequestItemAuthorExtractor> strategies) {
Assert.notNull(strategies, "Strategy list may not be null");
this.strategies = strategies;
}
/**
* Do not call.
* @throws IllegalArgumentException always
*/
private CombiningRequestItemStrategy() {
throw new IllegalArgumentException();
}
@Override
@NonNull
public List<RequestItemAuthor> getRequestItemAuthor(Context context, Item item)
throws SQLException {
List<RequestItemAuthor> recipients = new ArrayList<>();
for (RequestItemAuthorExtractor strategy : strategies) {
recipients.addAll(strategy.getRequestItemAuthor(context, item));
}
return recipients;
}
}

View File

@@ -27,7 +27,7 @@ import org.dspace.core.Context;
import org.dspace.core.ReloadableEntity;
/**
* Object representing an Item Request
* Object representing an Item Request.
*/
@Entity
@Table(name = "requestitem")
@@ -94,6 +94,9 @@ public class RequestItem implements ReloadableEntity<Integer> {
this.allfiles = allfiles;
}
/**
* @return {@code true} if all of the Item's files are requested.
*/
public boolean isAllfiles() {
return allfiles;
}
@@ -102,6 +105,9 @@ public class RequestItem implements ReloadableEntity<Integer> {
this.reqMessage = reqMessage;
}
/**
* @return a message from the requester.
*/
public String getReqMessage() {
return reqMessage;
}
@@ -110,6 +116,9 @@ public class RequestItem implements ReloadableEntity<Integer> {
this.reqName = reqName;
}
/**
* @return Human-readable name of the user requesting access.
*/
public String getReqName() {
return reqName;
}
@@ -118,6 +127,9 @@ public class RequestItem implements ReloadableEntity<Integer> {
this.reqEmail = reqEmail;
}
/**
* @return address of the user requesting access.
*/
public String getReqEmail() {
return reqEmail;
}
@@ -126,6 +138,9 @@ public class RequestItem implements ReloadableEntity<Integer> {
this.token = token;
}
/**
* @return a unique request identifier which can be emailed.
*/
public String getToken() {
return token;
}

Some files were not shown because too many files have changed in this diff Show More