diff --git a/.gitignore b/.gitignore
index 4660d93c..04e1649b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,14 @@
target/
.vscode/
*~
+.DS_Store
+
+# Kiro
+./kiro
+.config.kiro
+design.md
+requirements.md
+tasks.md
# IntelliJ stuff
.idea/
diff --git a/pass-core-main/Dockerfile b/Dockerfile
similarity index 87%
rename from pass-core-main/Dockerfile
rename to Dockerfile
index 618729bb..c8b1442f 100644
--- a/pass-core-main/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,7 @@ FROM eclipse-temurin:17.0.18_8-jre-noble
WORKDIR /app
-COPY target/pass-core-main-*-exec.jar pass-core-main.jar
+COPY target/pass-core-*-exec.jar pass-core-main.jar
COPY entrypoint.sh .
RUN apt update \
diff --git a/pass-core-main/entrypoint.sh b/entrypoint.sh
similarity index 100%
rename from pass-core-main/entrypoint.sh
rename to entrypoint.sh
diff --git a/jacoco-aggregate-report-pass-core/pom.xml b/jacoco-aggregate-report-pass-core/pom.xml
deleted file mode 100644
index b7bb9e80..00000000
--- a/jacoco-aggregate-report-pass-core/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
- 4.0.0
-
-
- org.eclipse.pass
- pass-core
- 2.6.0-SNAPSHOT
-
-
- jacoco-aggregate-report-pass-core
- pom
-
- PASS backend-jacoco-aggregate-report
- PASS REST API implementation-jacoco-aggregate-report
-
-
-
-
-
-
- org.eclipse.pass
- pass-core-doi-service
- ${project.version}
-
-
- org.eclipse.pass
- pass-core-file-service
- ${project.version}
-
-
- org.eclipse.pass
- pass-core-main
- ${project.version}
-
-
- org.ow2.asm
- asm-tree
-
-
-
-
- org.eclipse.pass
- pass-core-object-service
- ${project.version}
-
-
- org.eclipse.pass
- pass-core-policy-service
- ${project.version}
-
-
- org.eclipse.pass
- pass-core-user-service
- ${project.version}
-
-
- org.eclipse.pass
- pass-core-usertoken
- ${project.version}
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
-
- report-aggregate
- verify
-
- report-aggregate
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pass-core-doi-service/pom.xml b/pass-core-doi-service/pom.xml
deleted file mode 100644
index 0f3d124a..00000000
--- a/pass-core-doi-service/pom.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
- 4.0.0
-
-
- org.eclipse.pass
- pass-core
- 2.6.0-SNAPSHOT
-
-
- pass-core-doi-service
-
- PASS backend-doi-service
- PASS REST API implementation-doi-service
-
-
-
-
-
-
- org.slf4j
- slf4j-api
-
-
- ch.qos.logback
- logback-classic
-
-
- org.eclipse.pass
- pass-core-object-service
- ${project.version}
-
-
- org.glassfish
- jakarta.json
- ${jakarta.json.version}
-
-
- com.squareup.okhttp3
- okhttp-jvm
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- commons-io
- commons-io
- test
-
-
- com.squareup.okhttp3
- mockwebserver
- test
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
- prepare-agent
-
-
-
-
-
-
-
-
diff --git a/pass-core-file-service/pom.xml b/pass-core-file-service/pom.xml
deleted file mode 100644
index f740fad4..00000000
--- a/pass-core-file-service/pom.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
- 4.0.0
-
-
- org.eclipse.pass
- pass-core
- 2.6.0-SNAPSHOT
-
-
- pass-core-file-service
-
- PASS backend-file-service
- PASS REST API implementation-file-service
-
-
-
- org.slf4j
- slf4j-api
-
-
- ch.qos.logback
- logback-classic
-
-
- org.eclipse.pass
- pass-core-object-service
- ${project.version}
-
-
- io.ocfl
- ocfl-java-core
- ${ocfl.java.core.version}
-
-
- io.ocfl
- ocfl-java-aws
- ${ocfl.java.aws.version}
-
-
- commons-logging
- commons-logging
-
-
-
-
- commons-io
- commons-io
-
-
- org.jsoup
- jsoup
- ${jsoup.version}
-
-
- org.apache.commons
- commons-lang3
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
- prepare-agent
-
-
-
-
-
-
-
-
diff --git a/pass-core-main/init_postgres.sh b/pass-core-main/init_postgres.sh
deleted file mode 100755
index d2ec41df..00000000
--- a/pass-core-main/init_postgres.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/sh
-
-set -e
-
-psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
- CREATE USER $PASS_CORE_DATABASE_USERNAME WITH PASSWORD '$PASS_CORE_DATABASE_PASSWORD';
- CREATE DATABASE pass;
- GRANT ALL PRIVILEGES ON DATABASE pass TO $PASS_CORE_DATABASE_USERNAME;
-EOSQL
diff --git a/pass-core-main/pom.xml b/pass-core-main/pom.xml
deleted file mode 100644
index 0ea56f3c..00000000
--- a/pass-core-main/pom.xml
+++ /dev/null
@@ -1,277 +0,0 @@
-
- 4.0.0
-
-
- org.eclipse.pass
- pass-core
- 2.6.0-SNAPSHOT
-
-
- pass-core-main
-
- PASS backend-main
- PASS REST API implementation-main
-
-
-
- shibboleth-releases
- https://build.shibboleth.net/nexus/content/repositories/releases/
-
-
-
-
-
- org.slf4j
- slf4j-api
-
-
- ch.qos.logback
- logback-classic
-
-
-
- org.eclipse.pass
- pass-core-object-service
- ${project.parent.version}
-
-
-
- org.eclipse.pass
- pass-core-doi-service
- ${project.parent.version}
-
-
-
- org.eclipse.pass
- pass-core-user-service
- ${project.parent.version}
-
-
-
- org.eclipse.pass
- pass-core-file-service
- ${project.parent.version}
-
-
-
- org.eclipse.pass
- pass-core-policy-service
- ${project.parent.version}
-
-
-
- org.eclipse.pass
- pass-core-usertoken
- ${project.parent.version}
-
-
-
- org.springframework.boot
- spring-boot-starter-jetty
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
-
- org.liquibase
- liquibase-core
-
-
-
- com.h2database
- h2
-
-
-
- org.postgresql
- postgresql
-
-
-
- org.apache.commons
- commons-lang3
-
-
-
- commons-io
- commons-io
-
-
-
- org.springframework.boot
- spring-boot-starter-artemis
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
-
-
-
- org.apache.activemq
- artemis-jakarta-server
-
-
-
- com.amazonaws
- amazon-sqs-java-messaging-lib
- ${amazon.sqs.version}
-
-
- commons-logging
- commons-logging
-
-
-
-
-
- com.squareup.okhttp3
- okhttp-jvm
-
-
-
- io.ocfl
- ocfl-java-api
- ${ocfl.java.core.version}
-
-
-
- org.springframework.security
- spring-security-saml2-service-provider
-
-
-
- io.awspring.cloud
- spring-cloud-aws-starter-parameter-store
-
-
-
- io.awspring.cloud
- spring-cloud-aws-starter-s3
-
-
- commons-logging
- commons-logging
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- io.rest-assured
- rest-assured
-
-
- commons-logging
- commons-logging
-
-
- test
-
-
-
- org.testcontainers
- localstack
- test
-
-
-
- org.testcontainers
- junit-jupiter
- test
-
-
-
- com.squareup.okhttp3
- okhttp-urlconnection
- test
-
-
-
- org.eclipse.pass
- pass-core-test-config
- ${project.parent.version}
- test
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
-
- io.fabric8
- docker-maven-plugin
-
-
-
- ghcr.io/eclipse-pass/pass-core-main:%v
-
-
-
-
-
- build-before-its
- pre-integration-test
-
- build
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring-boot-maven-plugin.version}
-
-
- repackage
-
- repackage
-
-
- org.eclipse.pass.main.Main
- exec
- false
- false
-
-
-
-
-
-
- org.cyclonedx
- cyclonedx-maven-plugin
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
- prepare-agent
-
-
-
-
-
-
-
-
diff --git a/pass-core-object-service/pom.xml b/pass-core-object-service/pom.xml
deleted file mode 100644
index 127c5b1b..00000000
--- a/pass-core-object-service/pom.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
- 4.0.0
-
-
- org.eclipse.pass
- pass-core
- 2.6.0-SNAPSHOT
-
-
- pass-core-object-service
-
- PASS backend-object-service
- PASS REST API implementation-object-service
-
-
-
- com.yahoo.elide
- elide-spring-boot-starter
- ${elide.version}
-
-
- commons-logging
- commons-logging
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
- prepare-agent
-
-
-
-
-
-
-
-
diff --git a/pass-core-policy-service/pom.xml b/pass-core-policy-service/pom.xml
deleted file mode 100644
index 8e3681fd..00000000
--- a/pass-core-policy-service/pom.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
- pass-core
- org.eclipse.pass
- 2.6.0-SNAPSHOT
-
- 4.0.0
-
- pass-core-policy-service
-
- PASS backend-policy-service
- PASS REST API implementation-policy-service
-
-
- 17
- 17
-
-
-
-
- org.slf4j
- slf4j-api
-
-
- ch.qos.logback
- logback-classic
-
-
- org.eclipse.pass
- pass-core-object-service
- ${project.version}
-
-
- org.glassfish
- jakarta.json
- ${jakarta.json.version}
- compile
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
- prepare-agent
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pass-core-test-config/pom.xml b/pass-core-test-config/pom.xml
deleted file mode 100644
index b4e332f3..00000000
--- a/pass-core-test-config/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
- 4.0.0
-
-
- org.eclipse.pass
- pass-core
- 2.6.0-SNAPSHOT
-
-
- pass-core-test-config
-
- PASS backend-test-config
- PASS REST API implementation-test-config
-
-
diff --git a/pass-core-user-service/pom.xml b/pass-core-user-service/pom.xml
deleted file mode 100644
index 98b4a196..00000000
--- a/pass-core-user-service/pom.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
- 4.0.0
-
-
- org.eclipse.pass
- pass-core
- 2.6.0-SNAPSHOT
-
-
- pass-core-user-service
-
- PASS backend-user-service
- PASS REST API implementation-user-service
-
-
-
-
-
-
- org.slf4j
- slf4j-api
-
-
- ch.qos.logback
- logback-classic
-
-
- org.eclipse.pass
- pass-core-object-service
- ${project.version}
-
-
-
- org.eclipse.pass
- pass-core-usertoken
- ${project.version}
-
-
-
- jakarta.json
- jakarta.json-api
- ${jakarta.json-api.version}
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
- prepare-agent
-
-
-
-
-
-
-
-
diff --git a/pass-core-usertoken/pom.xml b/pass-core-usertoken/pom.xml
deleted file mode 100644
index 322633ff..00000000
--- a/pass-core-usertoken/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
- 4.0.0
-
-
- org.eclipse.pass
- pass-core
- 2.6.0-SNAPSHOT
-
-
- pass-core-usertoken
-
- PASS backend-usertoken
- PASS REST API implementation-usertokenn
-
-
-
-
-
-
- commons-codec
- commons-codec
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
- prepare-agent
-
-
-
-
-
-
-
-
diff --git a/pom.xml b/pom.xml
index 862c481c..a025540e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,11 +9,11 @@
pass-core
- pom
PASS backend
PASS REST API implementation
https://github.com/eclipse-pass/pass-core
+
The Apache Software License, Version 2.0
@@ -54,18 +54,6 @@
-
- pass-core-doi-service
- pass-core-object-service
- pass-core-file-service
- pass-core-user-service
- pass-core-main
- pass-core-policy-service
- pass-core-usertoken
- pass-core-test-config
- jacoco-aggregate-report-pass-core
-
-
scm:git:https://github.com/eclipse-pass/pass-core.git
scm:git:https://github.com/eclipse-pass/pass-core.git
@@ -75,6 +63,7 @@
3.8.1
+ 3.4.1
3.5.11
3.4.2
2.41.32
@@ -91,7 +80,7 @@
9.9.1
pass-core
eclipse-pass_pass-core
- ${maven.multiModuleProjectDirectory}/jacoco-aggregate-report-pass-core/target/site/jacoco-aggregate/jacoco.xml
+ ${project.build.directory}/site/jacoco/jacoco.xml
@@ -106,6 +95,10 @@
true
+
+ shibboleth-releases
+ https://build.shibboleth.net/nexus/content/repositories/releases/
+
@@ -119,7 +112,7 @@
import
-
+
org.springframework.security
spring-security-bom
@@ -247,34 +240,264 @@
- org.apache.activemq
- artemis-jakarta-server
- 2.53.0
-
-
- commons-logging
- commons-logging
-
-
+ org.apache.activemq
+ artemis-jakarta-server
+ 2.53.0
+
+
+ commons-logging
+ commons-logging
+
+
- org.apache.activemq
- artemis-jakarta-client
- 2.53.0
-
-
- commons-logging
- commons-logging
-
-
+ org.apache.activemq
+ artemis-jakarta-client
+ 2.53.0
+
+
+ commons-logging
+ commons-logging
+
+
+
-
+
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+ ch.qos.logback
+ logback-classic
+
+
+
+
+ com.yahoo.elide
+ elide-spring-boot-starter
+ ${elide.version}
+
+
+ commons-logging
+ commons-logging
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jetty
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.boot
+ spring-boot-starter-artemis
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+ org.springframework.security
+ spring-security-saml2-service-provider
+
+
+
+
+ org.liquibase
+ liquibase-core
+
+
+ com.h2database
+ h2
+
+
+ org.postgresql
+ postgresql
+
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ commons-io
+ commons-io
+
+
+ commons-codec
+ commons-codec
+
+
+
+ org.apache.activemq
+ artemis-jakarta-server
+
+
+ com.amazonaws
+ amazon-sqs-java-messaging-lib
+ ${amazon.sqs.version}
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+
+
+ com.squareup.okhttp3
+ okhttp-jvm
+
+
+
+
+ io.ocfl
+ ocfl-java-api
+ ${ocfl.java.core.version}
+
+
+ io.ocfl
+ ocfl-java-core
+ ${ocfl.java.core.version}
+
+
+ io.ocfl
+ ocfl-java-aws
+ ${ocfl.java.aws.version}
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+
+
+ org.glassfish
+ jakarta.json
+ ${jakarta.json.version}
+
+
+ jakarta.json
+ jakarta.json-api
+ ${jakarta.json-api.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+
+
+ org.jsoup
+ jsoup
+ ${jsoup.version}
+
+
+
+
+ io.awspring.cloud
+ spring-cloud-aws-starter-parameter-store
+
+
+ io.awspring.cloud
+ spring-cloud-aws-starter-s3
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ io.rest-assured
+ rest-assured
+ test
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+ org.testcontainers
+ localstack
+ test
+
+
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ com.squareup.okhttp3
+ okhttp-urlconnection
+ test
+
+
+ com.squareup.okhttp3
+ mockwebserver
+ test
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ ${maven-jar-plugin.version}
+
+
+ test-config-jar
+ package
+
+ jar
+
+
+ test-config
+ ${project.build.testOutputDirectory}
+
+ application-test.yml
+ saml2/**
+
+
+
+
+
+
org.apache.maven.plugins
maven-source-plugin
@@ -287,10 +510,10 @@
17
false
-
- CreatePermission
- a
-
+
+ CreatePermission
+ a
+
ReadPermission
a
@@ -374,7 +597,7 @@
org.testcontainers::
com.github.docker-java::
- org.opensaml:opensaml-saml-api::
+ org.opensaml:opensaml-saml-api::
@@ -385,20 +608,15 @@
org.liquibase:liquibase-core:
com.h2database:h2:
org.postgresql:postgresql:
-
- org.eclipse.pass:pass-core-doi-service:
- org.eclipse.pass:pass-core-user-service:
- org.eclipse.pass:pass-core-policy-service:
org.apache.activemq:artemis-jakarta-server:
-
- org.eclipse.pass:pass-core-test-config::
+
+ jakarta.json:jakarta.json-api:
+ com.fasterxml.jackson.core:jackson-databind:
org.json:json:
-
- org.eclipse.pass:pass-core-file-service:jar:
com.squareup.okhttp3:okhttp-jvm:
io.ocfl:ocfl-java-api:
@@ -421,6 +639,13 @@
prepare-agent
+
+ report
+ verify
+
+ report
+
+
@@ -429,6 +654,82 @@
sonar-maven-plugin
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot-maven-plugin.version}
+
+
+ repackage
+
+ repackage
+
+
+ org.eclipse.pass.main.Main
+ exec
+ false
+ false
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IT.java
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+
+
+ integration-tests
+
+ integration-test
+ verify
+
+
+
+ **/*IT.java
+
+
+
+
+
+
+
+ io.fabric8
+ docker-maven-plugin
+
+
+
+ ghcr.io/eclipse-pass/pass-core-main:%v
+
+
+
+
+
+ build-before-its
+ pre-integration-test
+
+ build
+
+
+
+
+
+
+ org.cyclonedx
+ cyclonedx-maven-plugin
+
+
+
diff --git a/pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/ElideConnector.java b/src/main/java/org/eclipse/pass/doi/service/ElideConnector.java
similarity index 100%
rename from pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/ElideConnector.java
rename to src/main/java/org/eclipse/pass/doi/service/ElideConnector.java
diff --git a/pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/ExternalDoiService.java b/src/main/java/org/eclipse/pass/doi/service/ExternalDoiService.java
similarity index 100%
rename from pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/ExternalDoiService.java
rename to src/main/java/org/eclipse/pass/doi/service/ExternalDoiService.java
diff --git a/pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnector.java b/src/main/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnector.java
similarity index 100%
rename from pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnector.java
rename to src/main/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnector.java
diff --git a/pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/PassDoiServiceController.java b/src/main/java/org/eclipse/pass/doi/service/PassDoiServiceController.java
similarity index 100%
rename from pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/PassDoiServiceController.java
rename to src/main/java/org/eclipse/pass/doi/service/PassDoiServiceController.java
diff --git a/pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/UnpaywallDoiService.java b/src/main/java/org/eclipse/pass/doi/service/UnpaywallDoiService.java
similarity index 100%
rename from pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/UnpaywallDoiService.java
rename to src/main/java/org/eclipse/pass/doi/service/UnpaywallDoiService.java
diff --git a/pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/XrefDoiService.java b/src/main/java/org/eclipse/pass/doi/service/XrefDoiService.java
similarity index 100%
rename from pass-core-doi-service/src/main/java/org/eclipse/pass/doi/service/XrefDoiService.java
rename to src/main/java/org/eclipse/pass/doi/service/XrefDoiService.java
diff --git a/pass-core-file-service/src/main/java/org/eclipse/pass/file/service/PassFileServiceController.java b/src/main/java/org/eclipse/pass/file/service/PassFileServiceController.java
similarity index 100%
rename from pass-core-file-service/src/main/java/org/eclipse/pass/file/service/PassFileServiceController.java
rename to src/main/java/org/eclipse/pass/file/service/PassFileServiceController.java
diff --git a/pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/FileStorageService.java b/src/main/java/org/eclipse/pass/file/service/storage/FileStorageService.java
similarity index 100%
rename from pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/FileStorageService.java
rename to src/main/java/org/eclipse/pass/file/service/storage/FileStorageService.java
diff --git a/pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/StorageConfiguration.java b/src/main/java/org/eclipse/pass/file/service/storage/StorageConfiguration.java
similarity index 100%
rename from pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/StorageConfiguration.java
rename to src/main/java/org/eclipse/pass/file/service/storage/StorageConfiguration.java
diff --git a/pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/StorageFile.java b/src/main/java/org/eclipse/pass/file/service/storage/StorageFile.java
similarity index 100%
rename from pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/StorageFile.java
rename to src/main/java/org/eclipse/pass/file/service/storage/StorageFile.java
diff --git a/pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/StorageProperties.java b/src/main/java/org/eclipse/pass/file/service/storage/StorageProperties.java
similarity index 100%
rename from pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/StorageProperties.java
rename to src/main/java/org/eclipse/pass/file/service/storage/StorageProperties.java
diff --git a/pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/StorageServiceType.java b/src/main/java/org/eclipse/pass/file/service/storage/StorageServiceType.java
similarity index 100%
rename from pass-core-file-service/src/main/java/org/eclipse/pass/file/service/storage/StorageServiceType.java
rename to src/main/java/org/eclipse/pass/file/service/storage/StorageServiceType.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/JmsConfiguration.java b/src/main/java/org/eclipse/pass/main/JmsConfiguration.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/JmsConfiguration.java
rename to src/main/java/org/eclipse/pass/main/JmsConfiguration.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/Main.java b/src/main/java/org/eclipse/pass/main/Main.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/Main.java
rename to src/main/java/org/eclipse/pass/main/Main.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/OptimisticLockExceptionMapper.java b/src/main/java/org/eclipse/pass/main/OptimisticLockExceptionMapper.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/OptimisticLockExceptionMapper.java
rename to src/main/java/org/eclipse/pass/main/OptimisticLockExceptionMapper.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/repository/DepositRepository.java b/src/main/java/org/eclipse/pass/main/repository/DepositRepository.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/repository/DepositRepository.java
rename to src/main/java/org/eclipse/pass/main/repository/DepositRepository.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/repository/SubmissionRepository.java b/src/main/java/org/eclipse/pass/main/repository/SubmissionRepository.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/repository/SubmissionRepository.java
rename to src/main/java/org/eclipse/pass/main/repository/SubmissionRepository.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/security/CsrfCookieFilter.java b/src/main/java/org/eclipse/pass/main/security/CsrfCookieFilter.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/security/CsrfCookieFilter.java
rename to src/main/java/org/eclipse/pass/main/security/CsrfCookieFilter.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/security/PassAuthentication.java b/src/main/java/org/eclipse/pass/main/security/PassAuthentication.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/security/PassAuthentication.java
rename to src/main/java/org/eclipse/pass/main/security/PassAuthentication.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/security/PassAuthenticationFilter.java b/src/main/java/org/eclipse/pass/main/security/PassAuthenticationFilter.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/security/PassAuthenticationFilter.java
rename to src/main/java/org/eclipse/pass/main/security/PassAuthenticationFilter.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/security/PassAuthenticationFilterConfiguration.java b/src/main/java/org/eclipse/pass/main/security/PassAuthenticationFilterConfiguration.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/security/PassAuthenticationFilterConfiguration.java
rename to src/main/java/org/eclipse/pass/main/security/PassAuthenticationFilterConfiguration.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/security/SecurityConfiguration.java b/src/main/java/org/eclipse/pass/main/security/SecurityConfiguration.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/security/SecurityConfiguration.java
rename to src/main/java/org/eclipse/pass/main/security/SecurityConfiguration.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/security/SpaCsrfTokenRequestHandler.java b/src/main/java/org/eclipse/pass/main/security/SpaCsrfTokenRequestHandler.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/security/SpaCsrfTokenRequestHandler.java
rename to src/main/java/org/eclipse/pass/main/security/SpaCsrfTokenRequestHandler.java
diff --git a/pass-core-main/src/main/java/org/eclipse/pass/main/security/WebMvcConfiguration.java b/src/main/java/org/eclipse/pass/main/security/WebMvcConfiguration.java
similarity index 100%
rename from pass-core-main/src/main/java/org/eclipse/pass/main/security/WebMvcConfiguration.java
rename to src/main/java/org/eclipse/pass/main/security/WebMvcConfiguration.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/ElidePassClient.java b/src/main/java/org/eclipse/pass/object/ElidePassClient.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/ElidePassClient.java
rename to src/main/java/org/eclipse/pass/object/ElidePassClient.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/PassClient.java b/src/main/java/org/eclipse/pass/object/PassClient.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/PassClient.java
rename to src/main/java/org/eclipse/pass/object/PassClient.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/PassClientResult.java b/src/main/java/org/eclipse/pass/object/PassClientResult.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/PassClientResult.java
rename to src/main/java/org/eclipse/pass/object/PassClientResult.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/PassClientSelector.java b/src/main/java/org/eclipse/pass/object/PassClientSelector.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/PassClientSelector.java
rename to src/main/java/org/eclipse/pass/object/PassClientSelector.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/RSQL.java b/src/main/java/org/eclipse/pass/object/RSQL.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/RSQL.java
rename to src/main/java/org/eclipse/pass/object/RSQL.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/AggregatedDepositStatusToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/AggregatedDepositStatusToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/AggregatedDepositStatusToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/AggregatedDepositStatusToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/AwardStatusToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/AwardStatusToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/AwardStatusToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/AwardStatusToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/CopyStatusToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/CopyStatusToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/CopyStatusToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/CopyStatusToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/DepositStatusToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/DepositStatusToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/DepositStatusToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/DepositStatusToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/EventTypeToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/EventTypeToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/EventTypeToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/EventTypeToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/FileRoleToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/FileRoleToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/FileRoleToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/FileRoleToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/IntegrationTypeToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/IntegrationTypeToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/IntegrationTypeToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/IntegrationTypeToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/ListToURIStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/ListToURIStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/ListToURIStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/ListToURIStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/PerformerRoleToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/PerformerRoleToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/PerformerRoleToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/PerformerRoleToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/SetToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/SetToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/SetToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/SetToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/SourceToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/SourceToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/SourceToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/SourceToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/SubmissionStatusToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/SubmissionStatusToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/SubmissionStatusToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/SubmissionStatusToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/UserRoleListToStringConverter.java b/src/main/java/org/eclipse/pass/object/converter/UserRoleListToStringConverter.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/converter/UserRoleListToStringConverter.java
rename to src/main/java/org/eclipse/pass/object/converter/UserRoleListToStringConverter.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/AggregatedDepositStatus.java b/src/main/java/org/eclipse/pass/object/model/AggregatedDepositStatus.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/AggregatedDepositStatus.java
rename to src/main/java/org/eclipse/pass/object/model/AggregatedDepositStatus.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/AwardStatus.java b/src/main/java/org/eclipse/pass/object/model/AwardStatus.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/AwardStatus.java
rename to src/main/java/org/eclipse/pass/object/model/AwardStatus.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/CopyStatus.java b/src/main/java/org/eclipse/pass/object/model/CopyStatus.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/CopyStatus.java
rename to src/main/java/org/eclipse/pass/object/model/CopyStatus.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Deposit.java b/src/main/java/org/eclipse/pass/object/model/Deposit.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Deposit.java
rename to src/main/java/org/eclipse/pass/object/model/Deposit.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/DepositStatus.java b/src/main/java/org/eclipse/pass/object/model/DepositStatus.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/DepositStatus.java
rename to src/main/java/org/eclipse/pass/object/model/DepositStatus.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/EventType.java b/src/main/java/org/eclipse/pass/object/model/EventType.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/EventType.java
rename to src/main/java/org/eclipse/pass/object/model/EventType.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/File.java b/src/main/java/org/eclipse/pass/object/model/File.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/File.java
rename to src/main/java/org/eclipse/pass/object/model/File.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/FileRole.java b/src/main/java/org/eclipse/pass/object/model/FileRole.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/FileRole.java
rename to src/main/java/org/eclipse/pass/object/model/FileRole.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Funder.java b/src/main/java/org/eclipse/pass/object/model/Funder.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Funder.java
rename to src/main/java/org/eclipse/pass/object/model/Funder.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Grant.java b/src/main/java/org/eclipse/pass/object/model/Grant.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Grant.java
rename to src/main/java/org/eclipse/pass/object/model/Grant.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/IntegrationType.java b/src/main/java/org/eclipse/pass/object/model/IntegrationType.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/IntegrationType.java
rename to src/main/java/org/eclipse/pass/object/model/IntegrationType.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Journal.java b/src/main/java/org/eclipse/pass/object/model/Journal.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Journal.java
rename to src/main/java/org/eclipse/pass/object/model/Journal.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/PassEntity.java b/src/main/java/org/eclipse/pass/object/model/PassEntity.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/PassEntity.java
rename to src/main/java/org/eclipse/pass/object/model/PassEntity.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/PerformerRole.java b/src/main/java/org/eclipse/pass/object/model/PerformerRole.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/PerformerRole.java
rename to src/main/java/org/eclipse/pass/object/model/PerformerRole.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/PmcParticipation.java b/src/main/java/org/eclipse/pass/object/model/PmcParticipation.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/PmcParticipation.java
rename to src/main/java/org/eclipse/pass/object/model/PmcParticipation.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Policy.java b/src/main/java/org/eclipse/pass/object/model/Policy.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Policy.java
rename to src/main/java/org/eclipse/pass/object/model/Policy.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Publication.java b/src/main/java/org/eclipse/pass/object/model/Publication.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Publication.java
rename to src/main/java/org/eclipse/pass/object/model/Publication.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Repository.java b/src/main/java/org/eclipse/pass/object/model/Repository.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Repository.java
rename to src/main/java/org/eclipse/pass/object/model/Repository.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/RepositoryCopy.java b/src/main/java/org/eclipse/pass/object/model/RepositoryCopy.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/RepositoryCopy.java
rename to src/main/java/org/eclipse/pass/object/model/RepositoryCopy.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Source.java b/src/main/java/org/eclipse/pass/object/model/Source.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Source.java
rename to src/main/java/org/eclipse/pass/object/model/Source.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Submission.java b/src/main/java/org/eclipse/pass/object/model/Submission.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/Submission.java
rename to src/main/java/org/eclipse/pass/object/model/Submission.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/SubmissionEvent.java b/src/main/java/org/eclipse/pass/object/model/SubmissionEvent.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/SubmissionEvent.java
rename to src/main/java/org/eclipse/pass/object/model/SubmissionEvent.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/SubmissionStatus.java b/src/main/java/org/eclipse/pass/object/model/SubmissionStatus.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/SubmissionStatus.java
rename to src/main/java/org/eclipse/pass/object/model/SubmissionStatus.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/User.java b/src/main/java/org/eclipse/pass/object/model/User.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/User.java
rename to src/main/java/org/eclipse/pass/object/model/User.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/UserRole.java b/src/main/java/org/eclipse/pass/object/model/UserRole.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/UserRole.java
rename to src/main/java/org/eclipse/pass/object/model/UserRole.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/model/package-info.java b/src/main/java/org/eclipse/pass/object/model/package-info.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/model/package-info.java
rename to src/main/java/org/eclipse/pass/object/model/package-info.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/security/BackendCheck.java b/src/main/java/org/eclipse/pass/object/security/BackendCheck.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/security/BackendCheck.java
rename to src/main/java/org/eclipse/pass/object/security/BackendCheck.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/security/GrantAdminCheck.java b/src/main/java/org/eclipse/pass/object/security/GrantAdminCheck.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/security/GrantAdminCheck.java
rename to src/main/java/org/eclipse/pass/object/security/GrantAdminCheck.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/security/PartOfSubmissionCheck.java b/src/main/java/org/eclipse/pass/object/security/PartOfSubmissionCheck.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/security/PartOfSubmissionCheck.java
rename to src/main/java/org/eclipse/pass/object/security/PartOfSubmissionCheck.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/security/SubmitterCheck.java b/src/main/java/org/eclipse/pass/object/security/SubmitterCheck.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/security/SubmitterCheck.java
rename to src/main/java/org/eclipse/pass/object/security/SubmitterCheck.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/security/WebSecurityRole.java b/src/main/java/org/eclipse/pass/object/security/WebSecurityRole.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/security/WebSecurityRole.java
rename to src/main/java/org/eclipse/pass/object/security/WebSecurityRole.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/AggregatedDepositStatusSerde.java b/src/main/java/org/eclipse/pass/object/serde/AggregatedDepositStatusSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/AggregatedDepositStatusSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/AggregatedDepositStatusSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/AwardStatusSerde.java b/src/main/java/org/eclipse/pass/object/serde/AwardStatusSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/AwardStatusSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/AwardStatusSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/CopyStatusSerde.java b/src/main/java/org/eclipse/pass/object/serde/CopyStatusSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/CopyStatusSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/CopyStatusSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/DepositStatusSerde.java b/src/main/java/org/eclipse/pass/object/serde/DepositStatusSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/DepositStatusSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/DepositStatusSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/FileRoleSerde.java b/src/main/java/org/eclipse/pass/object/serde/FileRoleSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/FileRoleSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/FileRoleSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/IntegrationTypeSerde.java b/src/main/java/org/eclipse/pass/object/serde/IntegrationTypeSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/IntegrationTypeSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/IntegrationTypeSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/SubmissionEventPerformerRoleSerde.java b/src/main/java/org/eclipse/pass/object/serde/SubmissionEventPerformerRoleSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/SubmissionEventPerformerRoleSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/SubmissionEventPerformerRoleSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/SubmissionEventTypeSerde.java b/src/main/java/org/eclipse/pass/object/serde/SubmissionEventTypeSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/SubmissionEventTypeSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/SubmissionEventTypeSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/SubmissionSourceSerde.java b/src/main/java/org/eclipse/pass/object/serde/SubmissionSourceSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/SubmissionSourceSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/SubmissionSourceSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/SubmissionStatusSerde.java b/src/main/java/org/eclipse/pass/object/serde/SubmissionStatusSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/SubmissionStatusSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/SubmissionStatusSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/URISerde.java b/src/main/java/org/eclipse/pass/object/serde/URISerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/URISerde.java
rename to src/main/java/org/eclipse/pass/object/serde/URISerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/UserRoleSerde.java b/src/main/java/org/eclipse/pass/object/serde/UserRoleSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/UserRoleSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/UserRoleSerde.java
diff --git a/pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/ZonedDateTimeSerde.java b/src/main/java/org/eclipse/pass/object/serde/ZonedDateTimeSerde.java
similarity index 100%
rename from pass-core-object-service/src/main/java/org/eclipse/pass/object/serde/ZonedDateTimeSerde.java
rename to src/main/java/org/eclipse/pass/object/serde/ZonedDateTimeSerde.java
diff --git a/pass-core-policy-service/src/main/java/org/eclipse/pass/policy/service/PassPolicyServiceController.java b/src/main/java/org/eclipse/pass/policy/service/PassPolicyServiceController.java
similarity index 100%
rename from pass-core-policy-service/src/main/java/org/eclipse/pass/policy/service/PassPolicyServiceController.java
rename to src/main/java/org/eclipse/pass/policy/service/PassPolicyServiceController.java
diff --git a/pass-core-policy-service/src/main/java/org/eclipse/pass/policy/service/PolicyService.java b/src/main/java/org/eclipse/pass/policy/service/PolicyService.java
similarity index 100%
rename from pass-core-policy-service/src/main/java/org/eclipse/pass/policy/service/PolicyService.java
rename to src/main/java/org/eclipse/pass/policy/service/PolicyService.java
diff --git a/pass-core-policy-service/src/main/java/org/eclipse/pass/policy/service/SimplePolicyService.java b/src/main/java/org/eclipse/pass/policy/service/SimplePolicyService.java
similarity index 100%
rename from pass-core-policy-service/src/main/java/org/eclipse/pass/policy/service/SimplePolicyService.java
rename to src/main/java/org/eclipse/pass/policy/service/SimplePolicyService.java
diff --git a/pass-core-user-service/src/main/java/org/eclipse/pass/user/UserServiceController.java b/src/main/java/org/eclipse/pass/user/UserServiceController.java
similarity index 100%
rename from pass-core-user-service/src/main/java/org/eclipse/pass/user/UserServiceController.java
rename to src/main/java/org/eclipse/pass/user/UserServiceController.java
diff --git a/pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/BadTokenException.java b/src/main/java/org/eclipse/pass/usertoken/BadTokenException.java
similarity index 100%
rename from pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/BadTokenException.java
rename to src/main/java/org/eclipse/pass/usertoken/BadTokenException.java
diff --git a/pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/Codec.java b/src/main/java/org/eclipse/pass/usertoken/Codec.java
similarity index 100%
rename from pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/Codec.java
rename to src/main/java/org/eclipse/pass/usertoken/Codec.java
diff --git a/pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/Key.java b/src/main/java/org/eclipse/pass/usertoken/Key.java
similarity index 100%
rename from pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/Key.java
rename to src/main/java/org/eclipse/pass/usertoken/Key.java
diff --git a/pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/KeyGenerator.java b/src/main/java/org/eclipse/pass/usertoken/KeyGenerator.java
similarity index 100%
rename from pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/KeyGenerator.java
rename to src/main/java/org/eclipse/pass/usertoken/KeyGenerator.java
diff --git a/pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/Token.java b/src/main/java/org/eclipse/pass/usertoken/Token.java
similarity index 100%
rename from pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/Token.java
rename to src/main/java/org/eclipse/pass/usertoken/Token.java
diff --git a/pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/TokenFactory.java b/src/main/java/org/eclipse/pass/usertoken/TokenFactory.java
similarity index 100%
rename from pass-core-usertoken/src/main/java/org/eclipse/pass/usertoken/TokenFactory.java
rename to src/main/java/org/eclipse/pass/usertoken/TokenFactory.java
diff --git a/pass-core-main/src/main/resources/META-INF/resources/index.html b/src/main/resources/META-INF/resources/index.html
similarity index 100%
rename from pass-core-main/src/main/resources/META-INF/resources/index.html
rename to src/main/resources/META-INF/resources/index.html
diff --git a/pass-core-main/src/main/resources/META-INF/resources/swagger/LICENSE b/src/main/resources/META-INF/resources/swagger/LICENSE
similarity index 100%
rename from pass-core-main/src/main/resources/META-INF/resources/swagger/LICENSE
rename to src/main/resources/META-INF/resources/swagger/LICENSE
diff --git a/pass-core-main/src/main/resources/META-INF/resources/swagger/index.html b/src/main/resources/META-INF/resources/swagger/index.html
similarity index 100%
rename from pass-core-main/src/main/resources/META-INF/resources/swagger/index.html
rename to src/main/resources/META-INF/resources/swagger/index.html
diff --git a/pass-core-main/src/main/resources/META-INF/resources/swagger/swagger-ui-bundle.js b/src/main/resources/META-INF/resources/swagger/swagger-ui-bundle.js
similarity index 100%
rename from pass-core-main/src/main/resources/META-INF/resources/swagger/swagger-ui-bundle.js
rename to src/main/resources/META-INF/resources/swagger/swagger-ui-bundle.js
diff --git a/pass-core-main/src/main/resources/META-INF/resources/swagger/swagger-ui-standalone-preset.js b/src/main/resources/META-INF/resources/swagger/swagger-ui-standalone-preset.js
similarity index 100%
rename from pass-core-main/src/main/resources/META-INF/resources/swagger/swagger-ui-standalone-preset.js
rename to src/main/resources/META-INF/resources/swagger/swagger-ui-standalone-preset.js
diff --git a/pass-core-main/src/main/resources/META-INF/resources/swagger/swagger-ui.css b/src/main/resources/META-INF/resources/swagger/swagger-ui.css
similarity index 100%
rename from pass-core-main/src/main/resources/META-INF/resources/swagger/swagger-ui.css
rename to src/main/resources/META-INF/resources/swagger/swagger-ui.css
diff --git a/pass-core-main/src/main/resources/application.yaml b/src/main/resources/application.yaml
similarity index 100%
rename from pass-core-main/src/main/resources/application.yaml
rename to src/main/resources/application.yaml
diff --git a/pass-core-main/src/main/resources/db/changelog/changelog.yaml b/src/main/resources/db/changelog/changelog.yaml
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/changelog.yaml
rename to src/main/resources/db/changelog/changelog.yaml
diff --git a/pass-core-main/src/main/resources/db/changelog/core-changelog.yaml b/src/main/resources/db/changelog/core-changelog.yaml
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/core-changelog.yaml
rename to src/main/resources/db/changelog/core-changelog.yaml
diff --git a/pass-core-main/src/main/resources/db/changelog/data/deposit-repo-copy-publication-id-fix.sql b/src/main/resources/db/changelog/data/deposit-repo-copy-publication-id-fix.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/data/deposit-repo-copy-publication-id-fix.sql
rename to src/main/resources/db/changelog/data/deposit-repo-copy-publication-id-fix.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/data/rc-ext-ids-migration.sql b/src/main/resources/db/changelog/data/rc-ext-ids-migration.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/data/rc-ext-ids-migration.sql
rename to src/main/resources/db/changelog/data/rc-ext-ids-migration.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/data/version-migration.sql b/src/main/resources/db/changelog/data/version-migration.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/data/version-migration.sql
rename to src/main/resources/db/changelog/data/version-migration.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/schema/index-localkey.sql b/src/main/resources/db/changelog/schema/index-localkey.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/schema/index-localkey.sql
rename to src/main/resources/db/changelog/schema/index-localkey.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/schema/indices.sql b/src/main/resources/db/changelog/schema/indices.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/schema/indices.sql
rename to src/main/resources/db/changelog/schema/indices.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/schema/initial-schema.sql b/src/main/resources/db/changelog/schema/initial-schema.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/schema/initial-schema.sql
rename to src/main/resources/db/changelog/schema/initial-schema.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/schema/long-text.sql b/src/main/resources/db/changelog/schema/long-text.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/schema/long-text.sql
rename to src/main/resources/db/changelog/schema/long-text.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/schema/postgres-pattern-indices.sql b/src/main/resources/db/changelog/schema/postgres-pattern-indices.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/schema/postgres-pattern-indices.sql
rename to src/main/resources/db/changelog/schema/postgres-pattern-indices.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/schema/rc-external-ids.sql b/src/main/resources/db/changelog/schema/rc-external-ids.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/schema/rc-external-ids.sql
rename to src/main/resources/db/changelog/schema/rc-external-ids.sql
diff --git a/pass-core-main/src/main/resources/db/changelog/schema/remove-contrib-pub.sql b/src/main/resources/db/changelog/schema/remove-contrib-pub.sql
similarity index 100%
rename from pass-core-main/src/main/resources/db/changelog/schema/remove-contrib-pub.sql
rename to src/main/resources/db/changelog/schema/remove-contrib-pub.sql
diff --git a/pass-core-doi-service/src/main/resources/jats-to-html.xsl b/src/main/resources/jats-to-html.xsl
similarity index 100%
rename from pass-core-doi-service/src/main/resources/jats-to-html.xsl
rename to src/main/resources/jats-to-html.xsl
diff --git a/pass-core-doi-service/src/main/resources/jats-to-html/citation.xsl b/src/main/resources/jats-to-html/citation.xsl
similarity index 100%
rename from pass-core-doi-service/src/main/resources/jats-to-html/citation.xsl
rename to src/main/resources/jats-to-html/citation.xsl
diff --git a/pass-core-doi-service/src/main/resources/jats-to-html/front.xsl b/src/main/resources/jats-to-html/front.xsl
similarity index 100%
rename from pass-core-doi-service/src/main/resources/jats-to-html/front.xsl
rename to src/main/resources/jats-to-html/front.xsl
diff --git a/pass-core-doi-service/src/main/resources/jats-to-html/meta.xsl b/src/main/resources/jats-to-html/meta.xsl
similarity index 100%
rename from pass-core-doi-service/src/main/resources/jats-to-html/meta.xsl
rename to src/main/resources/jats-to-html/meta.xsl
diff --git a/pass-core-doi-service/src/main/resources/jats-to-html/self-citation.xsl b/src/main/resources/jats-to-html/self-citation.xsl
similarity index 100%
rename from pass-core-doi-service/src/main/resources/jats-to-html/self-citation.xsl
rename to src/main/resources/jats-to-html/self-citation.xsl
diff --git a/pass-core-doi-service/src/main/resources/jats-to-html/util.xsl b/src/main/resources/jats-to-html/util.xsl
similarity index 100%
rename from pass-core-doi-service/src/main/resources/jats-to-html/util.xsl
rename to src/main/resources/jats-to-html/util.xsl
diff --git a/pass-core-main/src/main/resources/logback-access-spring.xml b/src/main/resources/logback-access-spring.xml
similarity index 100%
rename from pass-core-main/src/main/resources/logback-access-spring.xml
rename to src/main/resources/logback-access-spring.xml
diff --git a/pass-core-main/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
similarity index 100%
rename from pass-core-main/src/main/resources/logback-spring.xml
rename to src/main/resources/logback-spring.xml
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/doi/service/DoiServiceTest.java b/src/test/java/org/eclipse/pass/doi/service/DoiServiceTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/doi/service/DoiServiceTest.java
rename to src/test/java/org/eclipse/pass/doi/service/DoiServiceTest.java
diff --git a/pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/ElideConnectorTest.java b/src/test/java/org/eclipse/pass/doi/service/ElideConnectorTest.java
similarity index 100%
rename from pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/ElideConnectorTest.java
rename to src/test/java/org/eclipse/pass/doi/service/ElideConnectorTest.java
diff --git a/pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnectorIntegrationTest.java b/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnectorIntegrationTest.java
similarity index 100%
rename from pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnectorIntegrationTest.java
rename to src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnectorIntegrationTest.java
diff --git a/pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnectorTest.java b/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnectorTest.java
similarity index 100%
rename from pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnectorTest.java
rename to src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceConnectorTest.java
diff --git a/pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceTest.java b/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceTest.java
similarity index 100%
rename from pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceTest.java
rename to src/test/java/org/eclipse/pass/doi/service/ExternalDoiServiceTest.java
diff --git a/pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/JsonTestObjectsUtil.java b/src/test/java/org/eclipse/pass/doi/service/JsonTestObjectsUtil.java
similarity index 100%
rename from pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/JsonTestObjectsUtil.java
rename to src/test/java/org/eclipse/pass/doi/service/JsonTestObjectsUtil.java
diff --git a/pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/PassDoiServiceControllerTest.java b/src/test/java/org/eclipse/pass/doi/service/PassDoiServiceControllerTest.java
similarity index 100%
rename from pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/PassDoiServiceControllerTest.java
rename to src/test/java/org/eclipse/pass/doi/service/PassDoiServiceControllerTest.java
diff --git a/pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/UnpaywallDoiServiceTest.java b/src/test/java/org/eclipse/pass/doi/service/UnpaywallDoiServiceTest.java
similarity index 100%
rename from pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/UnpaywallDoiServiceTest.java
rename to src/test/java/org/eclipse/pass/doi/service/UnpaywallDoiServiceTest.java
diff --git a/pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/XrefDoiServiceTest.java b/src/test/java/org/eclipse/pass/doi/service/XrefDoiServiceTest.java
similarity index 100%
rename from pass-core-doi-service/src/test/java/org/eclipse/pass/doi/service/XrefDoiServiceTest.java
rename to src/test/java/org/eclipse/pass/doi/service/XrefDoiServiceTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/file/service/storage/FileStorageServiceS3Test.java b/src/test/java/org/eclipse/pass/file/service/storage/FileStorageServiceS3Test.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/file/service/storage/FileStorageServiceS3Test.java
rename to src/test/java/org/eclipse/pass/file/service/storage/FileStorageServiceS3Test.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/file/service/storage/FileStorageServiceTest.java b/src/test/java/org/eclipse/pass/file/service/storage/FileStorageServiceTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/file/service/storage/FileStorageServiceTest.java
rename to src/test/java/org/eclipse/pass/file/service/storage/FileStorageServiceTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/file/service/storage/StorageConfigurationTest.java b/src/test/java/org/eclipse/pass/file/service/storage/StorageConfigurationTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/file/service/storage/StorageConfigurationTest.java
rename to src/test/java/org/eclipse/pass/file/service/storage/StorageConfigurationTest.java
diff --git a/src/test/java/org/eclipse/pass/file/service/storage/StorageFileTest.java b/src/test/java/org/eclipse/pass/file/service/storage/StorageFileTest.java
new file mode 100644
index 00000000..c4a4f2ed
--- /dev/null
+++ b/src/test/java/org/eclipse/pass/file/service/storage/StorageFileTest.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2026 Johns Hopkins University
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.pass.file.service.storage;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+
+class StorageFileTest {
+
+ @Test
+ void testDefaultConstructor_setsDefaultValues() {
+ StorageFile file = new StorageFile();
+ assertEquals("0", file.getId());
+ assertEquals("0", file.getFileName());
+ assertEquals("0", file.getMimeType());
+ assertEquals("0", file.getStorageType());
+ assertEquals(0L, file.getSize());
+ assertEquals("0", file.getExtension());
+ assertNull(file.getUuid());
+ }
+
+ @Test
+ void testParameterizedConstructor_setsAllFields() {
+ StorageFile file = new StorageFile("1", "uuid-123", "test.pdf", "application/pdf", "FILE_SYSTEM", 1024L, "pdf");
+ assertEquals("1", file.getId());
+ assertEquals("uuid-123", file.getUuid());
+ assertEquals("test.pdf", file.getFileName());
+ assertEquals("application/pdf", file.getMimeType());
+ assertEquals("FILE_SYSTEM", file.getStorageType());
+ assertEquals(1024L, file.getSize());
+ assertEquals("pdf", file.getExtension());
+ }
+
+ @Test
+ void testSetters_updateFieldsCorrectly() {
+ StorageFile file = new StorageFile();
+ file.setId("42");
+ file.setUuid("uuid-456");
+ file.setFileName("document.docx");
+ file.setMimeType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+ file.setStorageType("S3");
+ file.setSize(2048L);
+ file.setExtension("docx");
+
+ assertEquals("42", file.getId());
+ assertEquals("uuid-456", file.getUuid());
+ assertEquals("document.docx", file.getFileName());
+ assertEquals("application/vnd.openxmlformats-officedocument.wordprocessingml.document", file.getMimeType());
+ assertEquals("S3", file.getStorageType());
+ assertEquals(2048L, file.getSize());
+ assertEquals("docx", file.getExtension());
+ }
+
+ @Test
+ void testEquals_sameFields_returnsTrue() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ StorageFile b = new StorageFile("1", "uuid-2", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ assertEquals(a, b);
+ }
+
+ @Test
+ void testEquals_sameInstance_returnsTrue() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ assertEquals(a, a);
+ }
+
+ @Test
+ void testEquals_differentId_returnsFalse() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ StorageFile b = new StorageFile("2", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ assertNotEquals(a, b);
+ }
+
+ @Test
+ void testEquals_differentFileName_returnsFalse() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ StorageFile b = new StorageFile("1", "uuid-1", "other.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ assertNotEquals(a, b);
+ }
+
+ @Test
+ void testEquals_differentMimeType_returnsFalse() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ StorageFile b = new StorageFile("1", "uuid-1", "file.txt", "application/pdf", "FILE_SYSTEM", 100L, "txt");
+ assertNotEquals(a, b);
+ }
+
+ @Test
+ void testEquals_differentSize_returnsFalse() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ StorageFile b = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 200L, "txt");
+ assertNotEquals(a, b);
+ }
+
+ @Test
+ void testEquals_null_returnsFalse() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ assertNotEquals(null, a);
+ }
+
+ @Test
+ void testEquals_differentClass_returnsFalse() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ assertNotEquals("not a StorageFile", a);
+ }
+
+ @Test
+ void testHashCode_equalObjects_haveSameHashCode() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ StorageFile b = new StorageFile("1", "uuid-2", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ assertEquals(a.hashCode(), b.hashCode());
+ }
+
+ @Test
+ void testHashCode_differentObjects_likelyDifferentHashCode() {
+ StorageFile a = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ StorageFile b = new StorageFile("2", "uuid-1", "other.pdf", "application/pdf", "S3", 999L, "pdf");
+ assertNotEquals(a.hashCode(), b.hashCode());
+ }
+
+ @Test
+ void testToString_containsAllFields() {
+ StorageFile file = new StorageFile("1", "uuid-1", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ String result = file.toString();
+ assertNotNull(result);
+ assertTrue(result.contains("1"));
+ assertTrue(result.contains("file.txt"));
+ assertTrue(result.contains("text/plain"));
+ assertTrue(result.contains("FILE_SYSTEM"));
+ assertTrue(result.contains("100"));
+ assertTrue(result.contains("txt"));
+ }
+
+ @Test
+ void testToString_nullField_containsNullString() {
+ StorageFile file = new StorageFile();
+ file.setFileName(null);
+ assertTrue(file.toString().contains("null"));
+ }
+
+ @Test
+ void testEquals_uuidNotConsideredInEquality() {
+ // uuid is intentionally excluded from equals/hashCode
+ StorageFile a = new StorageFile("1", "uuid-AAA", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ StorageFile b = new StorageFile("1", "uuid-BBB", "file.txt", "text/plain", "FILE_SYSTEM", 100L, "txt");
+ assertEquals(a, b);
+ }
+}
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/AwsParamStoreConfigTest.java b/src/test/java/org/eclipse/pass/main/AwsParamStoreConfigTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/AwsParamStoreConfigTest.java
rename to src/test/java/org/eclipse/pass/main/AwsParamStoreConfigTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/IntegrationTestBase.java b/src/test/java/org/eclipse/pass/main/IntegrationTestBase.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/IntegrationTestBase.java
rename to src/test/java/org/eclipse/pass/main/IntegrationTestBase.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/JmsConfigurationTest.java b/src/test/java/org/eclipse/pass/main/JmsConfigurationTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/JmsConfigurationTest.java
rename to src/test/java/org/eclipse/pass/main/JmsConfigurationTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/JmsSqsConfigurationTest.java b/src/test/java/org/eclipse/pass/main/JmsSqsConfigurationTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/JmsSqsConfigurationTest.java
rename to src/test/java/org/eclipse/pass/main/JmsSqsConfigurationTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/JmsSqsEndpointConfigurationTest.java b/src/test/java/org/eclipse/pass/main/JmsSqsEndpointConfigurationTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/JmsSqsEndpointConfigurationTest.java
rename to src/test/java/org/eclipse/pass/main/JmsSqsEndpointConfigurationTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/SamlIntegrationTest.java b/src/test/java/org/eclipse/pass/main/SamlIntegrationTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/SamlIntegrationTest.java
rename to src/test/java/org/eclipse/pass/main/SamlIntegrationTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/SimpleIntegrationTest.java b/src/test/java/org/eclipse/pass/main/SimpleIntegrationTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/SimpleIntegrationTest.java
rename to src/test/java/org/eclipse/pass/main/SimpleIntegrationTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/security/AccessControlTest.java b/src/test/java/org/eclipse/pass/main/security/AccessControlTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/security/AccessControlTest.java
rename to src/test/java/org/eclipse/pass/main/security/AccessControlTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/main/security/PassAuthenticationFilterTest.java b/src/test/java/org/eclipse/pass/main/security/PassAuthenticationFilterTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/main/security/PassAuthenticationFilterTest.java
rename to src/test/java/org/eclipse/pass/main/security/PassAuthenticationFilterTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/object/ElidePassClientTest.java b/src/test/java/org/eclipse/pass/object/ElidePassClientTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/object/ElidePassClientTest.java
rename to src/test/java/org/eclipse/pass/object/ElidePassClientTest.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/RSQLTest.java b/src/test/java/org/eclipse/pass/object/RSQLTest.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/RSQLTest.java
rename to src/test/java/org/eclipse/pass/object/RSQLTest.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/DepositModelTests.java b/src/test/java/org/eclipse/pass/object/model/DepositModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/DepositModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/DepositModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/DepositStatusTest.java b/src/test/java/org/eclipse/pass/object/model/DepositStatusTest.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/DepositStatusTest.java
rename to src/test/java/org/eclipse/pass/object/model/DepositStatusTest.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/FileModelTests.java b/src/test/java/org/eclipse/pass/object/model/FileModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/FileModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/FileModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/FunderModelTests.java b/src/test/java/org/eclipse/pass/object/model/FunderModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/FunderModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/FunderModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/GrantModelTests.java b/src/test/java/org/eclipse/pass/object/model/GrantModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/GrantModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/GrantModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/JournalModelTests.java b/src/test/java/org/eclipse/pass/object/model/JournalModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/JournalModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/JournalModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/PolicyModelTests.java b/src/test/java/org/eclipse/pass/object/model/PolicyModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/PolicyModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/PolicyModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/PublicationModelTests.java b/src/test/java/org/eclipse/pass/object/model/PublicationModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/PublicationModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/PublicationModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/RepositoryCopyModelTests.java b/src/test/java/org/eclipse/pass/object/model/RepositoryCopyModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/RepositoryCopyModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/RepositoryCopyModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/RepositoryModelTests.java b/src/test/java/org/eclipse/pass/object/model/RepositoryModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/RepositoryModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/RepositoryModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/SubmissionEventModelTests.java b/src/test/java/org/eclipse/pass/object/model/SubmissionEventModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/SubmissionEventModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/SubmissionEventModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/SubmissionModelTests.java b/src/test/java/org/eclipse/pass/object/model/SubmissionModelTests.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/SubmissionModelTests.java
rename to src/test/java/org/eclipse/pass/object/model/SubmissionModelTests.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/UserModelTest.java b/src/test/java/org/eclipse/pass/object/model/UserModelTest.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/UserModelTest.java
rename to src/test/java/org/eclipse/pass/object/model/UserModelTest.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/support/TestObjectCreator.java b/src/test/java/org/eclipse/pass/object/model/support/TestObjectCreator.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/support/TestObjectCreator.java
rename to src/test/java/org/eclipse/pass/object/model/support/TestObjectCreator.java
diff --git a/pass-core-object-service/src/test/java/org/eclipse/pass/object/model/support/TestValues.java b/src/test/java/org/eclipse/pass/object/model/support/TestValues.java
similarity index 100%
rename from pass-core-object-service/src/test/java/org/eclipse/pass/object/model/support/TestValues.java
rename to src/test/java/org/eclipse/pass/object/model/support/TestValues.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/policy/PolicyServiceTest.java b/src/test/java/org/eclipse/pass/policy/PolicyServiceTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/policy/PolicyServiceTest.java
rename to src/test/java/org/eclipse/pass/policy/PolicyServiceTest.java
diff --git a/pass-core-main/src/test/java/org/eclipse/pass/user/UserServiceTest.java b/src/test/java/org/eclipse/pass/user/UserServiceTest.java
similarity index 100%
rename from pass-core-main/src/test/java/org/eclipse/pass/user/UserServiceTest.java
rename to src/test/java/org/eclipse/pass/user/UserServiceTest.java
diff --git a/pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/CodecTest.java b/src/test/java/org/eclipse/pass/usertoken/CodecTest.java
similarity index 100%
rename from pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/CodecTest.java
rename to src/test/java/org/eclipse/pass/usertoken/CodecTest.java
diff --git a/pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/KeyGeneratorTest.java b/src/test/java/org/eclipse/pass/usertoken/KeyGeneratorTest.java
similarity index 100%
rename from pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/KeyGeneratorTest.java
rename to src/test/java/org/eclipse/pass/usertoken/KeyGeneratorTest.java
diff --git a/pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/KeyTest.java b/src/test/java/org/eclipse/pass/usertoken/KeyTest.java
similarity index 100%
rename from pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/KeyTest.java
rename to src/test/java/org/eclipse/pass/usertoken/KeyTest.java
diff --git a/pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/TokenFactoryTest.java b/src/test/java/org/eclipse/pass/usertoken/TokenFactoryTest.java
similarity index 100%
rename from pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/TokenFactoryTest.java
rename to src/test/java/org/eclipse/pass/usertoken/TokenFactoryTest.java
diff --git a/pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/TokenTest.java b/src/test/java/org/eclipse/pass/usertoken/TokenTest.java
similarity index 100%
rename from pass-core-usertoken/src/test/java/org/eclipse/pass/usertoken/TokenTest.java
rename to src/test/java/org/eclipse/pass/usertoken/TokenTest.java
diff --git a/pass-core-main/src/test/resources/app/index.html b/src/test/resources/app/index.html
similarity index 100%
rename from pass-core-main/src/test/resources/app/index.html
rename to src/test/resources/app/index.html
diff --git a/pass-core-main/src/test/resources/app/test.txt b/src/test/resources/app/test.txt
similarity index 100%
rename from pass-core-main/src/test/resources/app/test.txt
rename to src/test/resources/app/test.txt
diff --git a/pass-core-main/src/test/resources/application-test-S3.yml b/src/test/resources/application-test-S3.yml
similarity index 100%
rename from pass-core-main/src/test/resources/application-test-S3.yml
rename to src/test/resources/application-test-S3.yml
diff --git a/pass-core-test-config/src/main/resources/application-test.yml b/src/test/resources/application-test.yml
similarity index 100%
rename from pass-core-test-config/src/main/resources/application-test.yml
rename to src/test/resources/application-test.yml
diff --git a/pass-core-main/src/test/resources/docker-java.properties b/src/test/resources/docker-java.properties
similarity index 100%
rename from pass-core-main/src/test/resources/docker-java.properties
rename to src/test/resources/docker-java.properties
diff --git a/pass-core-doi-service/src/test/resources/jats_abstract.html b/src/test/resources/jats_abstract.html
similarity index 100%
rename from pass-core-doi-service/src/test/resources/jats_abstract.html
rename to src/test/resources/jats_abstract.html
diff --git a/pass-core-doi-service/src/test/resources/jats_abstract.xml b/src/test/resources/jats_abstract.xml
similarity index 100%
rename from pass-core-doi-service/src/test/resources/jats_abstract.xml
rename to src/test/resources/jats_abstract.xml
diff --git a/pass-core-doi-service/src/test/resources/jats_abstract_mathml.html b/src/test/resources/jats_abstract_mathml.html
similarity index 100%
rename from pass-core-doi-service/src/test/resources/jats_abstract_mathml.html
rename to src/test/resources/jats_abstract_mathml.html
diff --git a/pass-core-doi-service/src/test/resources/jats_abstract_mathml.xml b/src/test/resources/jats_abstract_mathml.xml
similarity index 100%
rename from pass-core-doi-service/src/test/resources/jats_abstract_mathml.xml
rename to src/test/resources/jats_abstract_mathml.xml
diff --git a/pass-core-main/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml
similarity index 100%
rename from pass-core-main/src/test/resources/logback-test.xml
rename to src/test/resources/logback-test.xml
diff --git a/pass-core-main/src/test/resources/saml2/authsources.php b/src/test/resources/saml2/authsources.php
similarity index 100%
rename from pass-core-main/src/test/resources/saml2/authsources.php
rename to src/test/resources/saml2/authsources.php
diff --git a/pass-core-test-config/src/main/resources/saml2/idp-metadata.xml b/src/test/resources/saml2/idp-metadata.xml
similarity index 100%
rename from pass-core-test-config/src/main/resources/saml2/idp-metadata.xml
rename to src/test/resources/saml2/idp-metadata.xml
diff --git a/pass-core-test-config/src/main/resources/saml2/sp-cert.pem b/src/test/resources/saml2/sp-cert.pem
similarity index 100%
rename from pass-core-test-config/src/main/resources/saml2/sp-cert.pem
rename to src/test/resources/saml2/sp-cert.pem
diff --git a/pass-core-test-config/src/main/resources/saml2/sp-key.pem b/src/test/resources/saml2/sp-key.pem
similarity index 100%
rename from pass-core-test-config/src/main/resources/saml2/sp-key.pem
rename to src/test/resources/saml2/sp-key.pem