From e11b2147da907cc578155b2e06bb045025cef364 Mon Sep 17 00:00:00 2001 From: lucio Date: Fri, 15 Mar 2024 14:26:05 +0100 Subject: [PATCH] porting to jakarta --- .classpath | 15 +- .gitignore | 1 + .settings/org.eclipse.jdt.core.prefs | 6 +- .settings/org.eclipse.wst.common.component | 122 +++++++++------- ....eclipse.wst.common.project.facet.core.xml | 4 +- Dockerfile | 9 +- Dockerfile-test => Dockerfile-local | 13 +- buildImageAndStart.sh | 16 +++ ...mpose-test.yml => docker-compose-local.yml | 19 ++- docker-compose.yml | 10 +- docker/haproxy/haproxy.cfg | 18 +++ docker/haproxy/send_to_all_whnmanager.lua | 21 +++ docker/local/container.ini | 23 +++ docker/local/storage-settings.properties | 10 ++ gcube/extra-resources/WEB-INF/beans.xml | 19 +++ gcube/extra-resources/WEB-INF/web.xml | 4 +- pom.xml | 98 +++++++------ .../storagehub/AuthorizationChecker.java | 12 +- .../data/access/storagehub/Constants.java | 9 +- .../storagehub/MyApplicationListener.java | 5 +- .../data/access/storagehub/PathUtil.java | 2 +- .../storagehub/RepositoryInitializerImpl.java | 2 +- .../storagehub/SingleFileStreamingOutput.java | 4 +- .../data/access/storagehub/StorageHub.java | 4 +- .../StorageHubAppllicationManager.java | 12 +- .../accounting/AccountingHandler.java | 8 +- .../storagehub/exception/MyAuthException.java | 16 --- .../storagehub/handlers/CompressHandler.java | 8 +- .../handlers/CredentialHandler.java | 18 --- .../storagehub/handlers/DownloadHandler.java | 8 +- .../storagehub/handlers/GroupHandler.java | 4 +- .../handlers/PublicLinkHandler.java | 4 +- .../storagehub/handlers/TrashHandler.java | 15 +- .../storagehub/handlers/UnshareHandler.java | 4 +- .../storagehub/handlers/VersionHandler.java | 2 +- .../content/ContentHandlerFactory.java | 2 +- .../handlers/items/Item2NodeConverter.java | 2 +- .../handlers/items/ItemHandler.java | 4 +- .../handlers/items/Node2ItemConverter.java | 2 +- .../plugins/StorageBackendHandler.java | 8 +- .../plugins/StorageOperationMediator.java | 4 +- .../storagehub/handlers/vres/VREManager.java | 20 +-- .../query/sql2/evaluators/Evaluator.java | 2 +- .../query/sql2/evaluators/Evaluators.java | 7 +- .../sql2/evaluators/date/BeforeEvaluator.java | 2 +- .../sql2/evaluators/logical/AndEvaluator.java | 2 +- .../logical/ISDescendantEvaluator.java | 2 +- .../sql2/evaluators/logical/OrEvaluator.java | 2 +- .../evaluators/text/ContainsEvaluator.java | 2 +- .../storagehub/services/ACLManager.java | 47 ++++--- .../storagehub/services/DocsGenerator.java | 12 +- .../storagehub/services/GroupManager.java | 100 ++++++------- .../storagehub/services/Impersonable.java | 15 +- .../storagehub/services/ItemSharing.java | 38 ++--- .../storagehub/services/ItemsCreator.java | 55 ++++---- .../storagehub/services/ItemsManager.java | 131 +++++++++--------- .../storagehub/services/MessageManager.java | 64 ++++----- .../storagehub/services/StorageManager.java | 12 +- .../storagehub/services/UserManager.java | 64 +++++---- .../storagehub/services/WorkspaceManager.java | 78 +++++------ .../services/admin/ScriptManager.java | 44 +++--- .../services/admin/ScriptUtilImpl.java | 4 +- .../delegates/ACLManagerDelegate.java | 4 +- .../impl/GCubeMongoStorageBackend.java | 10 +- .../impl/GCubeMongoStorageBackendFactory.java | 2 +- .../GCubeVolatileStorageBackendFactory.java | 4 +- .../GcubeDefaultS3StorageBackendFactory.java | 4 +- .../impl/GcubeMinIOStorageBackendFactory.java | 4 +- src/main/resources/META-INF/beans.xml | 6 - .../data/access/fs/container/CreateUsers.java | 2 +- .../data/access/fs/external/CreateUsers.java | 8 +- .../storages/mock/FSStorageFactory.java | 2 +- src/test/resources/META-INF/beans.xml | 6 +- 73 files changed, 710 insertions(+), 612 deletions(-) rename Dockerfile-test => Dockerfile-local (50%) create mode 100755 buildImageAndStart.sh rename docker-compose-test.yml => docker-compose-local.yml (60%) create mode 100644 docker/haproxy/haproxy.cfg create mode 100644 docker/haproxy/send_to_all_whnmanager.lua create mode 100644 docker/local/container.ini create mode 100644 docker/local/storage-settings.properties create mode 100644 gcube/extra-resources/WEB-INF/beans.xml delete mode 100644 src/main/java/org/gcube/data/access/storagehub/exception/MyAuthException.java delete mode 100644 src/main/java/org/gcube/data/access/storagehub/handlers/CredentialHandler.java delete mode 100644 src/main/resources/META-INF/beans.xml diff --git a/.classpath b/.classpath index d63844d..7510522 100644 --- a/.classpath +++ b/.classpath @@ -1,23 +1,24 @@ - - - - - + + + + + + + - - + diff --git a/.gitignore b/.gitignore index 7c57e40..75b9b91 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ target /Storagehub-TODO +/postgres-data/ diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 29fe717..cb8ed12 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,11 +1,11 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 -org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.compiler.source=17 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 95b0487..f2e222e 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,10 @@ - + + + + + + @@ -34,7 +39,12 @@ - + + + + + + @@ -69,7 +79,12 @@ - + + + + + + @@ -104,66 +119,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + + + + + + uses + + - + + + + + uses + + + + + + uses + + + + + + uses + + - + + + + + + @@ -198,7 +201,12 @@ - + + + + + + @@ -233,7 +241,12 @@ - + + + + + + @@ -268,7 +281,12 @@ - + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml index 75e0af4..a261f2f 100644 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -1,8 +1,8 @@ - - + + diff --git a/Dockerfile b/Dockerfile index c489036..b046175 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,10 @@ -FROM smartgears-distribution:4.0.0-java11-tomcat9 +FROM d4science/smartgears-distribution:4.0.0-SNAPSHOT-java17-tomcat10.1.19 ARG REPOUSER=admin ARG REPOPWD=admin + + #install unzip + RUN apt-get update && apt-get install unzip + COPY ./target/storagehub.war /tomcat/webapps/ COPY ./docker/jackrabbit /app/jackrabbit COPY ./docker/storagehub.xml /tomcat/conf/Catalina/localhost/ @@ -8,5 +12,4 @@ FROM smartgears-distribution:4.0.0-java11-tomcat9 COPY ./docker/container.ini /etc/ RUN unzip /tomcat/webapps/storagehub.war -d /tomcat/webapps/storagehub RUN rm /tomcat/webapps/storagehub.war - COPY ./docker/storage-settings.properties /tomcat/webapps/storagehub/WEB-INF/classes/ - RUN sed -i "s/{{adminId}}/$REPOUSER/g; s/{{adminPwd}}/$REPOPWD/g" /tomcat/webapps/storagehub/WEB-INF/web.xml \ No newline at end of file + COPY ./docker/storage-settings.properties /tomcat/webapps/storagehub/WEB-INF/classes/ \ No newline at end of file diff --git a/Dockerfile-test b/Dockerfile-local similarity index 50% rename from Dockerfile-test rename to Dockerfile-local index e139d69..37658a6 100644 --- a/Dockerfile-test +++ b/Dockerfile-local @@ -1,12 +1,13 @@ -FROM smartgears-distribution:4.0.0-java11-tomcat9 - ARG REPOUSER=admin - ARG REPOPWD=admin +FROM d4science/smartgears-distribution:4.0.0-SNAPSHOT-java17-tomcat10.1.19 + + #install unzip + RUN apt-get update && apt-get install unzip + COPY ./target/storagehub-test-storages.war /tomcat/webapps/storagehub.war COPY ./docker/jackrabbit /app/jackrabbit COPY ./docker/storagehub.xml /tomcat/conf/Catalina/localhost/ COPY ./docker/logback.xml /etc/ - COPY ./docker/container.ini /etc/ + COPY ./docker/local/container.ini /etc/ RUN unzip /tomcat/webapps/storagehub.war -d /tomcat/webapps/storagehub RUN rm /tomcat/webapps/storagehub.war - COPY ./docker/storage-settings.properties /tomcat/webapps/storagehub/WEB-INF/classes/ - RUN sed -i "s/{{adminId}}/$REPOUSER/g; s/{{adminPwd}}/$REPOPWD/g" /tomcat/webapps/storagehub/WEB-INF/web.xml \ No newline at end of file + #COPY ./docker/local/storage-settings.properties /tomcat/webapps/storagehub/WEB-INF/classes/ \ No newline at end of file diff --git a/buildImageAndStart.sh b/buildImageAndStart.sh new file mode 100755 index 0000000..ce18d3c --- /dev/null +++ b/buildImageAndStart.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +NAME=storagehub +PORT=8080 +DEBUG_PORT=5005 +debug=false +compile=false + +mvn clean package + +docker build -t $NAME . + +docker-compose build + +docker-compose up + diff --git a/docker-compose-test.yml b/docker-compose-local.yml similarity index 60% rename from docker-compose-test.yml rename to docker-compose-local.yml index add0272..c782e2b 100644 --- a/docker-compose-test.yml +++ b/docker-compose-local.yml @@ -1,5 +1,11 @@ version: '3.7' services: + elb: + image: haproxy + ports: + - "8100:8100" + volumes: + - ./docker/haproxy:/usr/local/etc/haproxy postgres: image: postgres:10.5 restart: always @@ -15,13 +21,18 @@ services: - '5423:5432' volumes: - ./postgres-data:/var/lib/postgresql/data - copy the sql script to create tables - - ./sql/create_tables.sql:/docker-entrypoint-initdb.d/create_tables.sql + - ./sql/create_tables.sql:/docker-entrypoint-initdb.d/create_tables.sql storagehub: build: - dockerfile: ./Dockerfile-test + dockerfile: ./Dockerfile-local ports: - - '8081:8080' + - '8080:8080' + - '4954:4954' + environment: + - ADMINISTRATION_PORT_ENABLED=true + - DOMAIN_NAME=docker_domain + - JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=0.0.0.0:4954,server=y,suspend=n" + - JPDA_ADDRESS=*:4954 minio: image: minio/minio ports: diff --git a/docker-compose.yml b/docker-compose.yml index b43e19f..4c4ebc8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.7' services: postgres: - image: postgres:10.5 + image: postgres:16.2 restart: always environment: - POSTGRES_DB=workspace-db @@ -19,8 +19,14 @@ services: - ./sql/create_tables.sql:/docker-entrypoint-initdb.d/create_tables.sql storagehub: build: . + environment: + _JAVA_OPTIONS: + -Xdebug + -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 ports: - - '8081:8080' + - '8081:8080' + - '5005:5005' + minio: image: minio/minio ports: diff --git a/docker/haproxy/haproxy.cfg b/docker/haproxy/haproxy.cfg new file mode 100644 index 0000000..90e7a85 --- /dev/null +++ b/docker/haproxy/haproxy.cfg @@ -0,0 +1,18 @@ +# haproxy.cfg +global + lua-load /usr/local/etc/haproxy/send_to_all_whnmanager.lua + +frontend http + bind *:8100 + mode http + timeout client 10s + http-request use-service lua.broadcast_to_nodes if { path /whn-manager meth PUT DELETE } + use_backend all + +backend all + mode http + option httpchk + http-check send meth GET uri /storagehub/gcube/resource/health + http-check expect status 200 + server s1 storagehub:8080 check + diff --git a/docker/haproxy/send_to_all_whnmanager.lua b/docker/haproxy/send_to_all_whnmanager.lua new file mode 100644 index 0000000..5d801f6 --- /dev/null +++ b/docker/haproxy/send_to_all_whnmanager.lua @@ -0,0 +1,21 @@ +local function broadcast_to_nodes(req) + -- Get all servers in the backend + local servers = pxn.get_servers("all") + + for _, server in ipairs(servers) do + -- Forward the request to each server + pxn.http_request({ + "PUT", -- Method + server["address"], -- Address of the server + tonumber(server["port"]), -- Port of the server + req.method, -- HTTP method + req.uri, -- URI + req.headers, -- Headers + req.body -- Body + }) + end + + end + + core.register_service("broadcast_to_nodes", "http", broadcast_to_nodes) + \ No newline at end of file diff --git a/docker/local/container.ini b/docker/local/container.ini new file mode 100644 index 0000000..2ca5103 --- /dev/null +++ b/docker/local/container.ini @@ -0,0 +1,23 @@ +[node] +mode = offline +hostname = dlib29.isti.cnr.it +protocol= http +port = 8080 +infrastructure = gcube +authorizeChildrenContext = true +publicationFrequencyInSeconds = 60 + +[properties] +SmartGearsDistribution = 4.0.0-SNAPSHOT +SmartGearsDistributionBundle = UnBundled + +[site] +country = it +location = pisa + +[authorization] +factory = org.gcube.smartgears.security.defaults.DefaultAuthorizationProviderFactory +factory.endpoint = https://accounts.dev.d4science.org/auth/realms/d4science/protocol/openid-connect/token +credentials.class = org.gcube.smartgears.security.SimpleCredentials +credentials.clientID = node-whn-test-uno-d-d4s.d4science.org +credentials.secret = 979bd3bc-5cc4-11ec-bf63-0242ac130002 \ No newline at end of file diff --git a/docker/local/storage-settings.properties b/docker/local/storage-settings.properties new file mode 100644 index 0000000..a901319 --- /dev/null +++ b/docker/local/storage-settings.properties @@ -0,0 +1,10 @@ +default.bucketName = storagehub-dev +default.key = SHUBTEST +default.secret = wJalrXUtnFEMI/K7MDENG/bPxRfiCY +default.url = minio:9000 +default.createBucket = true +volatile.bucketName = storagehub-volatile-dev +volatile.key = SHUBTEST +volatile.secret = wJalrXUtnFEMI/K7MDENG/bPxRfiCY +volatile.url = minio:9000 +volatile.createBucket = true \ No newline at end of file diff --git a/gcube/extra-resources/WEB-INF/beans.xml b/gcube/extra-resources/WEB-INF/beans.xml new file mode 100644 index 0000000..d0daa73 --- /dev/null +++ b/gcube/extra-resources/WEB-INF/beans.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/gcube/extra-resources/WEB-INF/web.xml b/gcube/extra-resources/WEB-INF/web.xml index bcb628b..1c1b3e8 100644 --- a/gcube/extra-resources/WEB-INF/web.xml +++ b/gcube/extra-resources/WEB-INF/web.xml @@ -2,11 +2,11 @@ admin-username - {{adminId}} + admin admin-pwd - {{adminPwd}} + admin resolver-basepath diff --git a/pom.xml b/pom.xml index a40084c..bb959ca 100644 --- a/pom.xml +++ b/pom.xml @@ -13,16 +13,18 @@ 1.5.0-SNAPSHOT storagehub - scm:git:https://code-repo.d4science.org/gCubeSystem/storagehub.git - scm:git:https://code-repo.d4science.org/gCubeSystem/storagehub.git + + scm:git:https://code-repo.d4science.org/gCubeSystem/storagehub.git + + scm:git:https://code-repo.d4science.org/gCubeSystem/storagehub.git https://code-repo.d4science.org/gCubeSystem/storagehub war ${project.basedir}/src/main/webapp/WEB-INF 2.20.7 - 2.8.11 - 1.7.4 + 2.15.3 + 2.0.12 2.6.0 1.14.0 ${project.basedir}/distro @@ -30,9 +32,9 @@ storagehub UTF-8 UTF-8 - 2.14.0 - 11 - 11 + 2.17.1 + 17 + 17 @@ -132,7 +134,8 @@ jackrabbit-core ${jackrabbit.version} - com.fasterxml.jackson.core @@ -178,25 +181,24 @@ - javax.servlet - javax.servlet-api - 3.0.1 + jakarta.servlet + jakarta.servlet-api - + - javax.interceptor - javax.interceptor-api - 1.2.2 - - - - javax.enterprise - cdi-api - 2.0 + jakarta.interceptor + jakarta.interceptor-api + 2.0.1 - javax.ws.rs - javax.ws.rs-api + jakarta.enterprise + jakarta.enterprise.cdi-api + 4.0.1 + + + jakarta.ws.rs + jakarta.ws.rs-api org.glassfish.jersey.containers @@ -206,11 +208,11 @@ org.glassfish.jersey.containers jersey-container-servlet-core - + org.glassfish.jersey.inject jersey-hk2 - 2.30.1 org.glassfish.jersey.core @@ -227,15 +229,10 @@ org.jboss.weld.servlet weld-servlet-core - 3.1.0.Final + 5.1.2.Final - - - org.jboss - jandex - 2.2.2.Final - - + org.glassfish.jersey.core jersey-common @@ -254,9 +251,9 @@ - org.postgresql - postgresql - 42.7.0 + org.postgresql + postgresql + 42.7.0 com.google.guava @@ -271,7 +268,7 @@ org.tukaani xz - 1.5 + 1.5 org.glassfish.jersey.test-framework.providers @@ -306,7 +303,8 @@ jul-to-slf4j ${slf4j.version} - + org.slf4j @@ -375,6 +373,11 @@ ${project.artifactId} + + + src/main/resources + + @@ -407,9 +410,9 @@ aspectj-maven-plugin ${aspectj-plugin.version} - 1.8 - 1.8 - 1.8 + 11 + 11 + 11 org.gcube.common @@ -454,7 +457,8 @@ - + org.apache.maven.plugins maven-resources-plugin @@ -469,8 +473,10 @@ target - ${project.build.directory}/${project.artifactId}/api-docs - ${project.build.directory}/api-docs + + ${project.build.directory}/${project.artifactId}/api-docs + + ${project.build.directory}/api-docs true @@ -495,7 +501,9 @@ - + diff --git a/src/main/java/org/gcube/data/access/storagehub/AuthorizationChecker.java b/src/main/java/org/gcube/data/access/storagehub/AuthorizationChecker.java index 2ffc440..fb934ab 100644 --- a/src/main/java/org/gcube/data/access/storagehub/AuthorizationChecker.java +++ b/src/main/java/org/gcube/data/access/storagehub/AuthorizationChecker.java @@ -2,8 +2,8 @@ package org.gcube.data.access.storagehub; import java.util.List; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -103,13 +103,13 @@ public class AuthorizationChecker { private boolean hasParentPublicFolder(Session session, Item item) { if(item==null || item.getParentPath()==null) return false; if (item.getParentPath().replaceAll("/Home/[^/]*/"+Constants.WORKSPACE_ROOT_FOLDER_NAME,"").isEmpty() || item.getParentPath().replaceAll(Constants.SHARED_FOLDER_PATH, "").isEmpty()) { - if (item instanceof FolderItem) - return ((FolderItem) item).isPublicItem(); + if (item instanceof FolderItem folder) + return folder.isPublicItem(); else return false; } else { - if (item instanceof FolderItem) + if (item instanceof FolderItem folder) try { - return ((FolderItem) item).isPublicItem() || hasParentPublicFolder(session, node2Item.getItem(item.getParentId(), session, Excludes.ALL)); + return (folder.isPublicItem() || hasParentPublicFolder(session, node2Item.getItem(folder.getParentId(), session, Excludes.ALL))); }catch (Throwable e) { log.warn("error checking public parents",e); return false; diff --git a/src/main/java/org/gcube/data/access/storagehub/Constants.java b/src/main/java/org/gcube/data/access/storagehub/Constants.java index 7313c27..ea7014e 100644 --- a/src/main/java/org/gcube/data/access/storagehub/Constants.java +++ b/src/main/java/org/gcube/data/access/storagehub/Constants.java @@ -3,6 +3,8 @@ package org.gcube.data.access.storagehub; import java.util.Arrays; import java.util.List; +import javax.jcr.SimpleCredentials; + public class Constants { public static final String OLD_VRE_FOLDER_PARENT_NAME = "MySpecialFolders"; @@ -27,10 +29,6 @@ public class Constants { public static final String QUERY_LANGUAGE ="JCR-SQL2"; - public static final String ADMIN_PARAM_NAME ="admin-username"; - - public static final String ADMIN_PARAM_PWD ="admin-pwd"; - public static final String HOME_VERSION_PROP = "hl:version"; public static final List FOLDERS_TO_EXLUDE = Arrays.asList(Constants.OLD_VRE_FOLDER_PARENT_NAME, Constants.TRASH_ROOT_FOLDER_NAME); @@ -39,4 +37,7 @@ public class Constants { public static final List PROTECTED_FOLDER = Arrays.asList(Constants.WORKSPACE_ROOT_FOLDER_NAME, Constants.OLD_VRE_FOLDER_PARENT_NAME, Constants.TRASH_ROOT_FOLDER_NAME); + public static final String ADMIN_USER ="admin"; + + public static final SimpleCredentials JCR_CREDENTIALS = new SimpleCredentials(ADMIN_USER,"admin".toCharArray()); } diff --git a/src/main/java/org/gcube/data/access/storagehub/MyApplicationListener.java b/src/main/java/org/gcube/data/access/storagehub/MyApplicationListener.java index 37ebeec..5faba20 100644 --- a/src/main/java/org/gcube/data/access/storagehub/MyApplicationListener.java +++ b/src/main/java/org/gcube/data/access/storagehub/MyApplicationListener.java @@ -1,7 +1,7 @@ package org.gcube.data.access.storagehub; -import javax.inject.Inject; -import javax.ws.rs.ext.Provider; +import jakarta.inject.Inject; +import jakarta.ws.rs.ext.Provider; import org.apache.jackrabbit.api.JackrabbitRepository; import org.gcube.data.access.storagehub.services.RepositoryInitializer; @@ -22,7 +22,6 @@ public class MyApplicationListener implements ApplicationEventListener { @Override public void onEvent(ApplicationEvent event) { - log.info("StorageHub - event called"); switch (event.getType()) { case DESTROY_FINISHED: log.info("Destroying application storageHub"); diff --git a/src/main/java/org/gcube/data/access/storagehub/PathUtil.java b/src/main/java/org/gcube/data/access/storagehub/PathUtil.java index 12f80da..5cacfef 100644 --- a/src/main/java/org/gcube/data/access/storagehub/PathUtil.java +++ b/src/main/java/org/gcube/data/access/storagehub/PathUtil.java @@ -1,6 +1,6 @@ package org.gcube.data.access.storagehub; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; diff --git a/src/main/java/org/gcube/data/access/storagehub/RepositoryInitializerImpl.java b/src/main/java/org/gcube/data/access/storagehub/RepositoryInitializerImpl.java index 776ce4d..4d2d3bf 100644 --- a/src/main/java/org/gcube/data/access/storagehub/RepositoryInitializerImpl.java +++ b/src/main/java/org/gcube/data/access/storagehub/RepositoryInitializerImpl.java @@ -1,6 +1,6 @@ package org.gcube.data.access.storagehub; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import javax.jcr.Repository; import javax.jcr.SimpleCredentials; import javax.naming.Context; diff --git a/src/main/java/org/gcube/data/access/storagehub/SingleFileStreamingOutput.java b/src/main/java/org/gcube/data/access/storagehub/SingleFileStreamingOutput.java index 25bcf31..1420611 100644 --- a/src/main/java/org/gcube/data/access/storagehub/SingleFileStreamingOutput.java +++ b/src/main/java/org/gcube/data/access/storagehub/SingleFileStreamingOutput.java @@ -4,8 +4,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.StreamingOutput; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.StreamingOutput; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/data/access/storagehub/StorageHub.java b/src/main/java/org/gcube/data/access/storagehub/StorageHub.java index 1c970fd..d14c983 100644 --- a/src/main/java/org/gcube/data/access/storagehub/StorageHub.java +++ b/src/main/java/org/gcube/data/access/storagehub/StorageHub.java @@ -3,8 +3,8 @@ package org.gcube.data.access.storagehub; import java.util.HashSet; import java.util.Set; -import javax.ws.rs.Path; -import javax.ws.rs.core.Application; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.core.Application; import org.gcube.common.gxrest.response.entity.SerializableErrorEntityTextWriter; import org.gcube.data.access.storagehub.services.ACLManager; diff --git a/src/main/java/org/gcube/data/access/storagehub/StorageHubAppllicationManager.java b/src/main/java/org/gcube/data/access/storagehub/StorageHubAppllicationManager.java index 693a6e8..6eec830 100644 --- a/src/main/java/org/gcube/data/access/storagehub/StorageHubAppllicationManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/StorageHubAppllicationManager.java @@ -1,13 +1,8 @@ package org.gcube.data.access.storagehub; -import javax.jcr.SimpleCredentials; - -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.services.RepositoryInitializer; import org.gcube.smartgears.ApplicationManager; -import org.gcube.smartgears.ContextProvider; -import org.gcube.smartgears.context.application.ApplicationContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,13 +32,10 @@ public class StorageHubAppllicationManager implements ApplicationManager { logger.info("initializing storagehub"); try { - ApplicationContext ctx = ContextProvider.get(); if (!alreadyInit) { logger.info("jackrabbit initialization started"); - - SimpleCredentials credentials = CredentialHandler.getAdminCredentials(ctx.application()); - - repository.initContainerAtFirstStart(credentials); + + repository.initContainerAtFirstStart(Constants.JCR_CREDENTIALS); //notificationClient = new NotificationClient(); diff --git a/src/main/java/org/gcube/data/access/storagehub/accounting/AccountingHandler.java b/src/main/java/org/gcube/data/access/storagehub/accounting/AccountingHandler.java index ebb9075..2b5e3e0 100644 --- a/src/main/java/org/gcube/data/access/storagehub/accounting/AccountingHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/accounting/AccountingHandler.java @@ -4,21 +4,17 @@ import java.util.Calendar; import java.util.Set; import java.util.UUID; -import javax.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.jcr.UnsupportedRepositoryOperationException; -import javax.jcr.version.Version; -import javax.jcr.version.VersionHistory; -import javax.jcr.version.VersionIterator; -import javax.jcr.version.VersionManager; import org.gcube.common.storagehub.model.items.nodes.accounting.AccountingEntryType; import org.gcube.common.storagehub.model.types.NodeProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.inject.Singleton; + @Singleton public class AccountingHandler { diff --git a/src/main/java/org/gcube/data/access/storagehub/exception/MyAuthException.java b/src/main/java/org/gcube/data/access/storagehub/exception/MyAuthException.java deleted file mode 100644 index fe6bd5c..0000000 --- a/src/main/java/org/gcube/data/access/storagehub/exception/MyAuthException.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.gcube.data.access.storagehub.exception; - -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Response.Status; - -public class MyAuthException extends WebApplicationException { - /** - * - */ - private static final long serialVersionUID = 1L; - - public MyAuthException(Throwable cause) { - super(cause, Status.FORBIDDEN); - } - -} diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/CompressHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/CompressHandler.java index 4648e39..1ca99be 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/CompressHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/CompressHandler.java @@ -8,7 +8,7 @@ import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import javax.inject.Inject; +import jakarta.inject.Inject; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -49,9 +49,8 @@ public class CompressHandler { if (excludes.contains(item.getId())) continue; if (item instanceof FolderItem) tempQueue.addAll(getAllNodesForZip((FolderItem) item, login, session, accountingHandler, excludes)); - else if (item instanceof AbstractFileItem){ + else if (item instanceof AbstractFileItem fileItem){ logger.trace("adding file {}",item.getPath()); - AbstractFileItem fileItem = (AbstractFileItem) item; String versionName = null; try { Version version = versionHandler.getCurrentVersion((Node) item.getRelatedNode()); @@ -84,9 +83,8 @@ public class CompressHandler { }finally { zos.closeEntry(); } - } else if (item instanceof AbstractFileItem){ + } else if (item instanceof AbstractFileItem fileItem){ try { - AbstractFileItem fileItem = (AbstractFileItem)item; StorageBackendFactory sbf = storageBackendHandler.get(fileItem.getContent().getPayloadBackend()); diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/CredentialHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/CredentialHandler.java deleted file mode 100644 index 3b3b70c..0000000 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/CredentialHandler.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.gcube.data.access.storagehub.handlers; - -import javax.jcr.SimpleCredentials; -import javax.servlet.ServletContext; - -import org.gcube.data.access.storagehub.Constants; - -public class CredentialHandler { - - private static SimpleCredentials credentials; - - public static SimpleCredentials getAdminCredentials(ServletContext context) { - if (credentials==null) - credentials = new SimpleCredentials(context.getInitParameter(Constants.ADMIN_PARAM_NAME),context.getInitParameter(Constants.ADMIN_PARAM_PWD).toCharArray()); - return credentials; - } - -} diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/DownloadHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/DownloadHandler.java index 5117590..955e7a0 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/DownloadHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/DownloadHandler.java @@ -8,14 +8,14 @@ import java.util.Map; import java.util.zip.Deflater; import java.util.zip.ZipOutputStream; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.version.Version; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.StreamingOutput; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.StreamingOutput; import org.apache.commons.io.FilenameUtils; import org.gcube.common.storagehub.model.Constants; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/GroupHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/GroupHandler.java index 8a31236..bd2c187 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/GroupHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/GroupHandler.java @@ -1,7 +1,7 @@ package org.gcube.data.access.storagehub.handlers; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.NodeIterator; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/PublicLinkHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/PublicLinkHandler.java index e4e106a..7cea930 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/PublicLinkHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/PublicLinkHandler.java @@ -6,8 +6,8 @@ import static org.gcube.common.storagehub.model.Constants.versionPrefix; import java.util.Base64; -import javax.inject.Singleton; -import javax.servlet.ServletContext; +import jakarta.inject.Singleton; +import jakarta.servlet.ServletContext; import org.gcube.common.encryption.encrypter.StringEncrypter; import org.gcube.common.security.AuthorizedTasks; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/TrashHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/TrashHandler.java index 2ca7454..c4003f6 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/TrashHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/TrashHandler.java @@ -9,8 +9,8 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.Collectors; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.RepositoryException; @@ -216,8 +216,7 @@ public class TrashHandler { if (item instanceof FolderItem) { trashItem.setFolder(true); - }else if (item instanceof AbstractFileItem ) { - AbstractFileItem file = (AbstractFileItem) item; + }else if (item instanceof AbstractFileItem file) { if (file.getContent()!=null) { trashItem.setMimeType(file.getContent().getMimeType()); trashItem.setLenght(file.getContent().getSize()); @@ -233,10 +232,10 @@ public class TrashHandler { log.debug("calling jcr move"); ses.getWorkspace().move(nodeToDelete.getPath(), Paths.append(Paths.getPath(newTrashItemNode.getPath()),nodeToDelete.getName()).toPath()); String mimetype = null; - if (item instanceof AbstractFileItem) { - if (((AbstractFileItem)item).getContent()!=null) - mimetype = ((AbstractFileItem) item).getContent().getMimeType(); - else log.warn("the AbstractFileItem with id {} has no content (check it!!)", item.getId()); + if (item instanceof AbstractFileItem file) { + if (file.getContent()!=null) + mimetype = file.getContent().getMimeType(); + else log.warn("the AbstractFileItem with id {} has no content (check it!!)", file.getId()); } accountingHandler.createFolderRemoveObj(item.getName(), item.getClass().getSimpleName(), mimetype, ses, login, (Node) item.getRelatedNode(), true); }catch(Throwable t) { diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/UnshareHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/UnshareHandler.java index d56f017..9e01856 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/UnshareHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/UnshareHandler.java @@ -5,8 +5,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/VersionHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/VersionHandler.java index 5078d02..72c172a 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/VersionHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/VersionHandler.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/content/ContentHandlerFactory.java b/src/main/java/org/gcube/data/access/storagehub/handlers/content/ContentHandlerFactory.java index 5f2a77d..c068d7f 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/content/ContentHandlerFactory.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/content/ContentHandlerFactory.java @@ -4,7 +4,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Set; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.annotations.MimeTypeHandler; import org.reflections.Reflections; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/items/Item2NodeConverter.java b/src/main/java/org/gcube/data/access/storagehub/handlers/items/Item2NodeConverter.java index e8def90..b7b798a 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/items/Item2NodeConverter.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/items/Item2NodeConverter.java @@ -10,7 +10,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import javax.jcr.ItemExistsException; import javax.jcr.Node; import javax.jcr.PathNotFoundException; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/items/ItemHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/items/ItemHandler.java index 1457046..5db32ed 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/items/ItemHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/items/ItemHandler.java @@ -7,8 +7,8 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/items/Node2ItemConverter.java b/src/main/java/org/gcube/data/access/storagehub/handlers/items/Node2ItemConverter.java index db47c55..9cf9b3f 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/items/Node2ItemConverter.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/items/Node2ItemConverter.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.PathNotFoundException; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/StorageBackendHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/StorageBackendHandler.java index 089e529..7cd2e24 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/StorageBackendHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/StorageBackendHandler.java @@ -4,10 +4,10 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; -import javax.annotation.PostConstruct; -import javax.enterprise.inject.Instance; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.annotation.PostConstruct; +import jakarta.enterprise.inject.Instance; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.Constants; import org.gcube.common.storagehub.model.exceptions.PluginNotFoundException; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/StorageOperationMediator.java b/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/StorageOperationMediator.java index 9820721..6547f15 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/StorageOperationMediator.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/StorageOperationMediator.java @@ -2,8 +2,8 @@ package org.gcube.data.access.storagehub.handlers.plugins; import java.io.InputStream; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.items.nodes.Content; diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/vres/VREManager.java b/src/main/java/org/gcube/data/access/storagehub/handlers/vres/VREManager.java index 4428282..0936a99 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/vres/VREManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/vres/VREManager.java @@ -6,12 +6,8 @@ import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import javax.inject.Inject; -import javax.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; -import javax.jcr.SimpleCredentials; -import javax.servlet.ServletContext; import org.apache.jackrabbit.api.JackrabbitSession; import org.apache.jackrabbit.api.security.user.Group; @@ -33,6 +29,9 @@ import org.gcube.data.access.storagehub.services.RepositoryInitializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; + @Singleton public class VREManager { @@ -54,14 +53,7 @@ public class VREManager { ExecutorService executor = Executors.newFixedThreadPool(5); - SimpleCredentials credentials; - - @Inject - public VREManager(ServletContext context) { - credentials = new SimpleCredentials(context.getInitParameter(Constants.ADMIN_PARAM_NAME),context.getInitParameter(Constants.ADMIN_PARAM_PWD).toCharArray()); - } - - + public synchronized VRE getVRE(String completeName) { logger.trace("requesting VRE {}",completeName); if (vreMap.containsKey(completeName)) @@ -75,7 +67,7 @@ public class VREManager { logger.trace("inserting VRE {}",vreFolder.getTitle()); if (vreMap.containsKey(vreFolder.getTitle())) throw new RuntimeException("something went wrong (vre already present in the map)"); else { - VRE toReturn = new VRE(vreFolder, repository.getRepository(), credentials, node2Item, executor); + VRE toReturn = new VRE(vreFolder, repository.getRepository(), Constants.JCR_CREDENTIALS, node2Item, executor); vreMap.put(vreFolder.getTitle(), toReturn); return toReturn; } @@ -83,7 +75,7 @@ public class VREManager { } public synchronized VRE getVreFolderItem(JackrabbitSession ses, String userId, List excludes ) throws RepositoryException, StorageHubException{ - Secret secret = SecretManagerProvider.instance.get(); + Secret secret = SecretManagerProvider.get(); ContextBean bean = new ContextBean(secret.getContext()); if (!bean.is(Type.VRE)) throw new BackendGenericError("the current scope is not a VRE"); String entireScopeName= bean.toString().replaceAll("^/(.*)/?$", "$1").replaceAll("/", "-"); diff --git a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/Evaluator.java b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/Evaluator.java index 9d21e3d..78daba8 100644 --- a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/Evaluator.java +++ b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/Evaluator.java @@ -1,6 +1,6 @@ package org.gcube.data.access.storagehub.query.sql2.evaluators; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.expressions.Expression; diff --git a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/Evaluators.java b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/Evaluators.java index aea2e19..89d0226 100644 --- a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/Evaluators.java +++ b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/Evaluators.java @@ -1,8 +1,8 @@ package org.gcube.data.access.storagehub.query.sql2.evaluators; -import javax.enterprise.inject.Instance; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.enterprise.inject.Instance; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.expressions.Expression; @@ -19,6 +19,7 @@ public class Evaluators { @Inject Instance> evaluators; + @SuppressWarnings({ "rawtypes", "unchecked" }) public String evaluate(Expression expression) { for (Evaluator eval: evaluators) { if (eval.getType().equals(expression.getClass())) diff --git a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/date/BeforeEvaluator.java b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/date/BeforeEvaluator.java index d14fca0..c39cb16 100644 --- a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/date/BeforeEvaluator.java +++ b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/date/BeforeEvaluator.java @@ -5,7 +5,7 @@ import java.text.SimpleDateFormat; import java.util.List; import java.util.TimeZone; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.expressions.Expression; import org.gcube.common.storagehub.model.expressions.date.Before; diff --git a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/AndEvaluator.java b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/AndEvaluator.java index f56d279..f7f91fd 100644 --- a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/AndEvaluator.java +++ b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/AndEvaluator.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.expressions.Expression; import org.gcube.common.storagehub.model.expressions.logical.And; diff --git a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/ISDescendantEvaluator.java b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/ISDescendantEvaluator.java index 1f3aacc..abada35 100644 --- a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/ISDescendantEvaluator.java +++ b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/ISDescendantEvaluator.java @@ -1,6 +1,6 @@ package org.gcube.data.access.storagehub.query.sql2.evaluators.logical; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.expressions.Expression; import org.gcube.common.storagehub.model.expressions.logical.ISDescendant; diff --git a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/OrEvaluator.java b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/OrEvaluator.java index 1811ab0..b005038 100644 --- a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/OrEvaluator.java +++ b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/logical/OrEvaluator.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.expressions.Expression; import org.gcube.common.storagehub.model.expressions.logical.Or; diff --git a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/text/ContainsEvaluator.java b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/text/ContainsEvaluator.java index 957bab2..b5923dd 100644 --- a/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/text/ContainsEvaluator.java +++ b/src/main/java/org/gcube/data/access/storagehub/query/sql2/evaluators/text/ContainsEvaluator.java @@ -1,6 +1,6 @@ package org.gcube.data.access.storagehub.query.sql2.evaluators.text; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.expressions.Expression; import org.gcube.common.storagehub.model.expressions.text.Contains; diff --git a/src/main/java/org/gcube/data/access/storagehub/services/ACLManager.java b/src/main/java/org/gcube/data/access/storagehub/services/ACLManager.java index f184a24..4a96246 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/ACLManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/ACLManager.java @@ -2,24 +2,10 @@ package org.gcube.data.access.storagehub.services; import java.util.Collections; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.gcube.common.gxrest.response.outbound.GXOutboundErrorResponse; import org.gcube.common.storagehub.model.Excludes; @@ -35,9 +21,9 @@ import org.gcube.common.storagehub.model.items.SharedFolder; import org.gcube.common.storagehub.model.items.VreFolder; import org.gcube.common.storagehub.model.types.ACLList; import org.gcube.data.access.storagehub.AuthorizationChecker; +import org.gcube.data.access.storagehub.Constants; import org.gcube.data.access.storagehub.PathUtil; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.UnshareHandler; import org.gcube.data.access.storagehub.handlers.items.Node2ItemConverter; import org.gcube.data.access.storagehub.services.interfaces.ACLManagerInterface; @@ -50,6 +36,21 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + @Path("items") @ManagedBy(StorageHubAppllicationManager.class) @RequestHeaders({ @@ -90,10 +91,10 @@ public class ACLManager extends Impersonable { @Path("{id}/acls") @Produces(MediaType.APPLICATION_JSON) public ACLList getACL() { - InnerMethodName.instance.set("getACLById"); + InnerMethodName.set("getACLById"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Item item = node2Item.getItem(ses.getNodeByIdentifier(id), Excludes.ALL); authChecker.checkReadAuthorizationControl(ses, currentUser, id); return new ACLList(aclManagerDelegate.get(item, ses)); @@ -127,13 +128,13 @@ public class ACLManager extends Impersonable { @Consumes(MediaType.MULTIPART_FORM_DATA) @Path("{id}/acls") public void updateACL(@FormDataParam("user") String user, @FormDataParam("access") AccessType accessType) { - InnerMethodName.instance.set("setACLById"); + InnerMethodName.set("setACLById"); Session ses = null; try { if (user==currentUser) throw new InvalidCallParameters("own ACLs cannot be modified"); - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node node = ses.getNodeByIdentifier(id); Item item = node2Item.getItem(node, Excludes.ALL); @@ -194,10 +195,10 @@ public class ACLManager extends Impersonable { @Consumes(MediaType.TEXT_PLAIN) @Path("{id}/acls/{user}") public void removeACL(@PathParam("user") String user) { - InnerMethodName.instance.set("removeACLById"); + InnerMethodName.set("removeACLById"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node node = ses.getNodeByIdentifier(id); @@ -228,11 +229,11 @@ public class ACLManager extends Impersonable { @GET @Path("{id}/acls/write") public Boolean canWriteInto() { - InnerMethodName.instance.set("canWriteIntoFolder"); + InnerMethodName.set("canWriteIntoFolder"); Session ses = null; Boolean canWrite = false; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node node = ses.getNodeByIdentifier(id); Item item = node2Item.getItem(node, Excludes.ALL); if (!(item instanceof FolderItem)) diff --git a/src/main/java/org/gcube/data/access/storagehub/services/DocsGenerator.java b/src/main/java/org/gcube/data/access/storagehub/services/DocsGenerator.java index 567c4b4..406e114 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/DocsGenerator.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/DocsGenerator.java @@ -4,12 +4,12 @@ import java.io.File; import java.io.FileInputStream; import java.io.InputStream; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.Response.Status; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.Response.Status; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java b/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java index a50af75..dca6e02 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java @@ -10,27 +10,12 @@ import java.util.Iterator; import java.util.List; import java.util.Objects; -import javax.inject.Inject; import javax.jcr.Node; import javax.jcr.PathNotFoundException; import javax.jcr.RepositoryException; import javax.jcr.security.AccessControlEntry; import javax.jcr.security.AccessControlManager; import javax.jcr.security.Privilege; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.FormParam; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.jackrabbit.api.JackrabbitSession; import org.apache.jackrabbit.api.security.JackrabbitAccessControlList; @@ -60,8 +45,6 @@ import org.gcube.data.access.storagehub.Constants; import org.gcube.data.access.storagehub.PathUtil; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; import org.gcube.data.access.storagehub.Utils; -import org.gcube.data.access.storagehub.exception.MyAuthException; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.GroupHandler; import org.gcube.data.access.storagehub.handlers.TrashHandler; import org.gcube.data.access.storagehub.handlers.items.Node2ItemConverter; @@ -77,7 +60,25 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.FormParam; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + @Path("groups") +@Singleton @ManagedBy(StorageHubAppllicationManager.class) @RequestHeaders({ @RequestHeader( name = "Authorization", description = "Bearer token, see https://dev.d4science.org/how-to-access-resources"), @@ -86,7 +87,8 @@ public class GroupManager { - @Context ServletContext context; + @Context + ServletContext context; @Inject TrashHandler trashHandler; @@ -116,12 +118,12 @@ public class GroupManager { @Produces(MediaType.APPLICATION_JSON) public List getGroups(){ - InnerMethodName.instance.set("getGroups"); + InnerMethodName.set("getGroups"); JackrabbitSession session = null; List groups= new ArrayList<>(); try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); Iterator result = session.getUserManager().findAuthorizables(new Query() { @@ -149,10 +151,10 @@ public class GroupManager { @POST @Path("") @Consumes(MediaType.MULTIPART_FORM_DATA) - @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}, exception=MyAuthException.class) + @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}) public String createGroup(@FormDataParam("group") String group, @FormDataParam("accessType") AccessType accessType, @FormDataParam("folderOwner") String folderOwner, @FormDataParam("useDefaultStorage") @DefaultValue("true") boolean useDefaultStorage){ - InnerMethodName.instance.set("createGroup"); + InnerMethodName.set("createGroup"); JackrabbitSession session = null; String groupId = null; @@ -160,7 +162,7 @@ public class GroupManager { log.info("create group called with groupid {} , accessType {} and folderOwner {}",group, accessType, folderOwner); - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); @@ -192,15 +194,15 @@ public class GroupManager { @DELETE @Path("{group}") - @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}, exception=MyAuthException.class) + @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}) public String deleteGroup(@PathParam("group") String group){ - InnerMethodName.instance.set("deleteGroup"); + InnerMethodName.set("deleteGroup"); JackrabbitSession session = null; try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); @@ -229,28 +231,28 @@ public class GroupManager { } - public boolean isInfraManager() { return SecretManagerProvider.instance.get().getOwner().getRoles().contains(INFRASTRUCTURE_MANAGER_ROLE); } + public boolean isInfraManager() { return SecretManagerProvider.get().getOwner().getRoles().contains(INFRASTRUCTURE_MANAGER_ROLE); } - public boolean isVREManager() { return SecretManagerProvider.instance.get().getOwner().getRoles().contains(VREMANAGER_ROLE); } + public boolean isVREManager() { return SecretManagerProvider.get().getOwner().getRoles().contains(VREMANAGER_ROLE); } @PUT @Path("{id}/admins") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public void addAdmin(@PathParam("id") String groupId, @FormParam("userId") String userId){ - InnerMethodName.instance.set("addAdmin"); + InnerMethodName.set("addAdmin"); JackrabbitSession session = null; try { Objects.nonNull(groupId); Objects.nonNull(userId); - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); Node vreFolder = groupHandler.getFolderNodeRelatedToGroup(session, groupId); - String currentUser = SecretManagerProvider.instance.get().getOwner().getId(); + String currentUser = SecretManagerProvider.get().getOwner().getId(); if (!isInfraManager() && !(isVREManager() && isValidGroupForContext(groupId) )) authChecker.checkAdministratorControl(session, currentUser, node2Item.getItem(vreFolder, Excludes.ALL)); @@ -294,7 +296,7 @@ public class GroupManager { @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public void removeAdmin(@PathParam("id") String groupId, @PathParam("userId") String userId){ - InnerMethodName.instance.set("removeAdmin"); + InnerMethodName.set("removeAdmin"); JackrabbitSession session = null; @@ -302,9 +304,9 @@ public class GroupManager { Objects.nonNull(groupId); Objects.nonNull(userId); - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); Node vreFolder = groupHandler.getFolderNodeRelatedToGroup(session, groupId); - String currentUser = SecretManagerProvider.instance.get().getOwner().getId(); + String currentUser = SecretManagerProvider.get().getOwner().getId(); if (!isInfraManager() && !(isVREManager() && isValidGroupForContext(groupId) )) authChecker.checkAdministratorControl(session, currentUser, node2Item.getItem(vreFolder, Excludes.ALL)); @@ -341,14 +343,14 @@ public class GroupManager { @Produces(MediaType.APPLICATION_JSON) public List getAdmins(@PathParam("groupId") String groupId){ - InnerMethodName.instance.set("getAdmins"); - String login = SecretManagerProvider.instance.get().getOwner().getId(); + InnerMethodName.set("getAdmins"); + String login = SecretManagerProvider.get().getOwner().getId(); JackrabbitSession session = null; List users = new ArrayList<>(); try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); VRE vreFolder = vreManager.getVreFolderItemByGroupName(session, groupId, login, Excludes.ALL); AccessControlManager acm = session.getAccessControlManager(); @@ -383,10 +385,10 @@ public class GroupManager { @PUT @Path("{id}/users") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - @AuthorizationControl(allowedRoles={VREMANAGER_ROLE, INFRASTRUCTURE_MANAGER_ROLE}, exception=MyAuthException.class) + @AuthorizationControl(allowedRoles={VREMANAGER_ROLE, INFRASTRUCTURE_MANAGER_ROLE}) public boolean addUserToGroup(@PathParam("id") String groupId, @FormParam("userId") String userId){ - InnerMethodName.instance.set("addUserToGroup"); + InnerMethodName.set("addUserToGroup"); JackrabbitSession session = null; boolean success = false; @@ -395,7 +397,7 @@ public class GroupManager { if (!isInfraManager() && !isValidGroupForContext(groupId)) throw new UserNotAuthorizedException("only VREManager of the selected VRE can execute this operation"); - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); @@ -448,10 +450,10 @@ public class GroupManager { @DELETE @Path("{groupId}/users/{userId}") - @AuthorizationControl(allowedRoles={VREMANAGER_ROLE, INFRASTRUCTURE_MANAGER_ROLE}, exception=MyAuthException.class) + @AuthorizationControl(allowedRoles={VREMANAGER_ROLE, INFRASTRUCTURE_MANAGER_ROLE}) public boolean removeUserFromGroup(@PathParam("groupId") String groupId, @PathParam("userId") String userId){ - InnerMethodName.instance.set("removeUserFromGroup"); + InnerMethodName.set("removeUserFromGroup"); JackrabbitSession session = null; boolean success = false; @@ -460,7 +462,9 @@ public class GroupManager { if (!isValidGroupForContext(groupId) && !isInfraManager()) throw new UserNotAuthorizedException("only VREManager of the selected VRE can execute this operation"); - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); + + //TODO: remove also acls of the user removed success = groupHandler.removeUserFromGroup(groupId, userId, session); @@ -482,10 +486,10 @@ public class GroupManager { @GET @Path("{groupId}/users") @Produces(MediaType.APPLICATION_JSON) - @AuthorizationControl(allowedRoles={VREMANAGER_ROLE, INFRASTRUCTURE_MANAGER_ROLE}, exception=MyAuthException.class) + @AuthorizationControl(allowedRoles={VREMANAGER_ROLE, INFRASTRUCTURE_MANAGER_ROLE}) public List getUsersOfGroup(@PathParam("groupId") String groupId){ - InnerMethodName.instance.set("getUsersOfGroup"); + InnerMethodName.set("getUsersOfGroup"); JackrabbitSession session = null; List users = new ArrayList<>(); @@ -494,7 +498,7 @@ public class GroupManager { if (!isValidGroupForContext(groupId) && !isInfraManager()) throw new UserNotAuthorizedException("only VREManager of the selected VRE can execute this operation"); - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); @@ -526,7 +530,7 @@ public class GroupManager { String name = groupId; - String currentScope = SecretManagerProvider.instance.get().getContext(); + String currentScope = SecretManagerProvider.get().getContext(); ContextBean bean = new ContextBean(currentScope); while (!bean.is(Type.INFRASTRUCTURE)) { bean = bean.enclosingScope(); @@ -568,7 +572,7 @@ public class GroupManager { private boolean isValidGroupForContext(String group){ - String currentContext = SecretManagerProvider.instance.get().getContext(); + String currentContext = SecretManagerProvider.get().getContext(); String expectedGroupId= currentContext.replace("/", "-").substring(1); return group.equals(expectedGroupId); } diff --git a/src/main/java/org/gcube/data/access/storagehub/services/Impersonable.java b/src/main/java/org/gcube/data/access/storagehub/services/Impersonable.java index ff93f5c..856a3e7 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/Impersonable.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/Impersonable.java @@ -3,17 +3,17 @@ package org.gcube.data.access.storagehub.services; import static org.gcube.data.access.storagehub.Roles.INFRASTRUCTURE_MANAGER_ROLE; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.Path; -import javax.ws.rs.core.Context; - import org.gcube.common.security.Owner; import org.gcube.common.security.providers.SecretManagerProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.core.Context; + @Path("") public abstract class Impersonable { @@ -24,9 +24,8 @@ public abstract class Impersonable { @RequestScoped @Inject public void setCurrentUser(@Context final HttpServletRequest request) { - String impersonate = request!=null ? request.getParameter("impersonate") : null ; - Owner owner = SecretManagerProvider.instance.get().getOwner(); + Owner owner = SecretManagerProvider.get().getOwner(); if(impersonate!=null && owner.getRoles().contains(INFRASTRUCTURE_MANAGER_ROLE)) { this.currentUser = impersonate; } else diff --git a/src/main/java/org/gcube/data/access/storagehub/services/ItemSharing.java b/src/main/java/org/gcube/data/access/storagehub/services/ItemSharing.java index 4c48dbb..f15f59f 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/ItemSharing.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/ItemSharing.java @@ -4,24 +4,12 @@ import java.util.HashMap; import java.util.Map.Entry; import java.util.Set; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.lock.LockException; import javax.jcr.security.AccessControlManager; import javax.jcr.security.Privilege; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.FormParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.jackrabbit.api.security.JackrabbitAccessControlList; import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils; @@ -46,7 +34,6 @@ import org.gcube.data.access.storagehub.PathUtil; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; import org.gcube.data.access.storagehub.Utils; import org.gcube.data.access.storagehub.accounting.AccountingHandler; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.UnshareHandler; import org.gcube.data.access.storagehub.handlers.items.Item2NodeConverter; import org.gcube.data.access.storagehub.handlers.items.Node2ItemConverter; @@ -58,6 +45,19 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.FormParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + @Path("items") @@ -98,7 +98,7 @@ public class ItemSharing extends Impersonable{ @POST @Path("{id}/share") public String shareWithMap(@FormParam("mapUserPermission") String mapUserPermissionString, @FormParam("defaultAccessType") String defaultAccessTypeString){ - InnerMethodName.instance.set("shareFolder"); + InnerMethodName.set("shareFolder"); HashMap mapUserPermission; Session ses = null; @@ -116,7 +116,7 @@ public class ItemSharing extends Impersonable{ throw new InvalidCallParameters("invalid default accessType"); } - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); Item item = node2Item.getItem(ses.getNodeByIdentifier(id), Excludes.ALL); @@ -201,11 +201,11 @@ public class ItemSharing extends Impersonable{ @Path("{id}/share") @Consumes(MediaType.MULTIPART_FORM_DATA) public String share(@FormDataParam("users") Set users, @FormDataParam("defaultAccessType") AccessType accessType){ - InnerMethodName.instance.set("shareFolder"); + InnerMethodName.set("shareFolder"); Session ses = null; String toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); Item item = node2Item.getItem(ses.getNodeByIdentifier(id), Excludes.ALL); @@ -343,12 +343,12 @@ public class ItemSharing extends Impersonable{ @Path("{id}/unshare") @Consumes(MediaType.MULTIPART_FORM_DATA) public String unshare(@FormDataParam("users") Set users){ - InnerMethodName.instance.set("unshareFolder"); + InnerMethodName.set("unshareFolder"); Session ses = null; String toReturn = null; try { log.debug("unsharing folder with id {} with users {}", id, users); - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node sharedNode = ses.getNodeByIdentifier(id); toReturn = unshareHandler.unshare(ses, users, sharedNode, currentUser); if(toReturn == null ) throw new InvalidItemException("item with id "+id+" cannot be unshared"); diff --git a/src/main/java/org/gcube/data/access/storagehub/services/ItemsCreator.java b/src/main/java/org/gcube/data/access/storagehub/services/ItemsCreator.java index 248f528..e2f81d2 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/ItemsCreator.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/ItemsCreator.java @@ -7,26 +7,16 @@ import java.net.URI; import java.net.URL; import java.net.URLConnection; -import javax.inject.Inject; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.FormParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.commons.compress.archivers.ArchiveException; import org.gcube.common.gxrest.response.outbound.GXOutboundErrorResponse; import org.gcube.common.storagehub.model.exceptions.BackendGenericError; import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.items.GCubeItem; +import org.gcube.data.access.storagehub.Constants; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.items.ItemHandler; import org.gcube.data.access.storagehub.handlers.items.builders.ArchiveStructureCreationParameter; import org.gcube.data.access.storagehub.handlers.items.builders.FileCreationParameters; @@ -44,6 +34,17 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.FormParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + @Path("items") @ManagedBy(StorageHubAppllicationManager.class) @@ -67,12 +68,12 @@ public class ItemsCreator extends Impersonable{ @Path("/{id}/create/FOLDER") public Response createFolder(@PathParam("id") String id, @FormParam("name") String name, @FormParam("description") String description, @FormParam("hidden") boolean hidden) { - InnerMethodName.instance.set("createItem(FOLDER)"); + InnerMethodName.set("createItem(FOLDER)"); log.info("create folder item called"); Session ses = null; String toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); ItemsParameterBuilder builder = FolderCreationParameters.builder().name(name).description(description).hidden(hidden).on(id).with(ses).author(currentUser); toReturn = itemHandler.create(builder.build()); }catch(StorageHubException she ){ @@ -99,13 +100,13 @@ public class ItemsCreator extends Impersonable{ @FormParam("description") String description, @FormParam("hidden") boolean hidden, @FormParam("pluginName") String pluginName, @FormParam("parameters") String pluginParameters) { - InnerMethodName.instance.set("createItem(EXTERNALFOLDER)"); + InnerMethodName.set("createItem(EXTERNALFOLDER)"); log.info("create folder item called"); Session ses = null; String toReturn = null; try{ //TODO - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); ItemsParameterBuilder builder = FolderCreationParameters.builder().name(name) .description(description).onRepository(pluginName).withParameters(null).hidden(hidden).on(id).with(ses).author(currentUser); toReturn = itemHandler.create(builder.build()); @@ -130,12 +131,12 @@ public class ItemsCreator extends Impersonable{ @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Path("/{id}/create/URL") public Response createURL(@PathParam("id") String id, @FormParam("name") String name, @FormParam("description") String description, @FormParam("value") URL value) { - InnerMethodName.instance.set("createItem(URL)"); + InnerMethodName.set("createItem(URL)"); log.info("create url called"); Session ses = null; String toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); ItemsParameterBuilder builder = URLCreationParameters.builder().name(name).description(description).url(value).on(id).with(ses).author(currentUser); @@ -162,13 +163,13 @@ public class ItemsCreator extends Impersonable{ @Consumes(MediaType.APPLICATION_JSON) @Path("/{id}/create/GCUBEITEM") public String createGcubeItem(@PathParam("id") String id, GCubeItem item) { - InnerMethodName.instance.set("createItem(GCUBEITEM)"); + InnerMethodName.set("createItem(GCUBEITEM)"); log.info("create Gcube item called"); Session ses = null; String toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); ItemsParameterBuilder builder = GCubeItemCreationParameters.builder().item(item).on(id).with(ses).author(currentUser); toReturn = itemHandler.create(builder.build()); @@ -195,14 +196,14 @@ public class ItemsCreator extends Impersonable{ public String createFileItemFromUrl(@PathParam("id") String id, @FormParam("name") String name, @FormParam("description") String description, @FormParam("url") String url){ - InnerMethodName.instance.set("createItem(FILEFromUrl)"); + InnerMethodName.set("createItem(FILEFromUrl)"); Session ses = null; String toReturn = null; try{ log.debug("UPLOAD: call started"); - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); URLConnection connectionURL = new URI(url).toURL().openConnection(); @@ -242,7 +243,7 @@ public class ItemsCreator extends Impersonable{ @FormDataParam("description") String description, @FormDataParam("file") InputStream stream, @FormDataParam("file") FormDataContentDisposition fileDetail){ - InnerMethodName.instance.set("createItem(FILE)"); + InnerMethodName.set("createItem(FILE)"); Session ses = null; String toReturn = null; @@ -251,7 +252,7 @@ public class ItemsCreator extends Impersonable{ long size = fileDetail.getSize(); log.info("UPLOAD: call started with file size {}",size); - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); ItemsParameterBuilder builder = FileCreationParameters.builder().name(name).description(description).stream(stream).fileDetails(fileDetail) .on(id).with(ses).author(currentUser); log.debug("UPLOAD: item prepared"); @@ -283,13 +284,13 @@ public class ItemsCreator extends Impersonable{ @Path("/{id}/create/ARCHIVE") public String uploadArchiveFromURL(@PathParam("id") String id, @FormParam("parentFolderName") String parentFolderName, @FormParam("url") String url){ - InnerMethodName.instance.set("createItem(ARCHIVEFromURL)"); + InnerMethodName.set("createItem(ARCHIVEFromURL)"); Session ses = null; String toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); try(InputStream stream = new URI(url).toURL().openStream()){ ItemsParameterBuilder builder = ArchiveStructureCreationParameter.builder().parentName(parentFolderName).stream(stream) .on(id).with(ses).author(currentUser); @@ -319,12 +320,12 @@ public class ItemsCreator extends Impersonable{ public String uploadArchive(@PathParam("id") String id, @FormDataParam("parentFolderName") String parentFolderName, @FormDataParam("file") InputStream stream, @FormDataParam("file") FormDataContentDisposition fileDetail){ - InnerMethodName.instance.set("createItem(ARCHIVE)"); + InnerMethodName.set("createItem(ARCHIVE)"); Session ses = null; String toReturn = null; try(InputStream is = new BufferedInputStream(stream)){ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); ItemsParameterBuilder builder = ArchiveStructureCreationParameter.builder().parentName(parentFolderName).stream(is).fileDetails(fileDetail) .on(id).with(ses).author(currentUser); diff --git a/src/main/java/org/gcube/data/access/storagehub/services/ItemsManager.java b/src/main/java/org/gcube/data/access/storagehub/services/ItemsManager.java index 3bf5dfc..49cbf62 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/ItemsManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/ItemsManager.java @@ -8,8 +8,6 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.NodeIterator; @@ -17,20 +15,6 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.lock.LockException; import javax.jcr.version.Version; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.FormParam; -import javax.ws.rs.GET; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.gcube.common.authorization.control.annotations.AuthorizationControl; import org.gcube.common.gxrest.response.outbound.GXOutboundErrorResponse; @@ -61,9 +45,7 @@ import org.gcube.data.access.storagehub.Range; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; import org.gcube.data.access.storagehub.Utils; import org.gcube.data.access.storagehub.accounting.AccountingHandler; -import org.gcube.data.access.storagehub.exception.MyAuthException; import org.gcube.data.access.storagehub.handlers.ClassHandler; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.DownloadHandler; import org.gcube.data.access.storagehub.handlers.PublicLinkHandler; import org.gcube.data.access.storagehub.handlers.TrashHandler; @@ -80,6 +62,23 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.FormParam; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; + @Path("items") @ManagedBy(StorageHubAppllicationManager.class) @@ -133,11 +132,11 @@ public class ItemsManager extends Impersonable{ @Path("{id}") @Produces(MediaType.APPLICATION_JSON) public ItemWrapper getById(@QueryParam("exclude") List excludes){ - InnerMethodName.instance.set("getById"); + InnerMethodName.set("getById"); Session ses = null; Item toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node node = ses.getNodeByIdentifier(id); authChecker.checkReadAuthorizationControl(ses, currentUser, id); toReturn = node2Item.getItem(node, excludes); @@ -162,11 +161,11 @@ public class ItemsManager extends Impersonable{ @Path("{id}/path") @Produces(MediaType.APPLICATION_JSON) public ItemWrapper getByRelativePath(@QueryParam("path") String path, @QueryParam("exclude") List excludes){ - InnerMethodName.instance.set("getByPath"); + InnerMethodName.set("getByPath"); Session ses = null; Item toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); String relativePath = path.startsWith("/")? path.substring(1) : path; @@ -224,7 +223,7 @@ public class ItemsManager extends Impersonable{ @Path("{id}/items/{name}") @Produces(MediaType.APPLICATION_JSON) public ItemList findChildrenByNamePatternInPath(@QueryParam("exclude") List excludes, @PathParam("name") String name){ - InnerMethodName.instance.set("findChildrenByNamePattern"); + InnerMethodName.set("findChildrenByNamePattern"); return _findChildrenByNamePattern(excludes, name); } @@ -232,7 +231,7 @@ public class ItemsManager extends Impersonable{ @Path("{id}/items") @Produces(MediaType.APPLICATION_JSON) public ItemList findChildrenByNamePattern(@QueryParam("exclude") List excludes, @QueryParam("name") String name){ - InnerMethodName.instance.set("findChildrenByNamePattern"); + InnerMethodName.set("findChildrenByNamePattern"); return _findChildrenByNamePattern(excludes, name); } @@ -240,7 +239,7 @@ public class ItemsManager extends Impersonable{ Session ses = null; List toReturn = new ArrayList<>(); try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); //NOT using the internal pattern matching of jcr because of title for shared folder @@ -281,12 +280,12 @@ public class ItemsManager extends Impersonable{ @Path("{id}/children/count") @Produces(MediaType.APPLICATION_JSON) public Long countById(@QueryParam("showHidden") Boolean showHidden, @QueryParam("exclude") List excludes, @QueryParam("onlyType") String nodeType){ - InnerMethodName.instance.set("countById"); + InnerMethodName.set("countById"); Session ses = null; Long toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); toReturn = Utils.getItemCount(ses.getNodeByIdentifier(id), showHidden==null?false:showHidden, nodeType!=null ? ClassHandler.instance().get(nodeType) : null); }catch (ItemNotFoundException e) { @@ -309,11 +308,11 @@ public class ItemsManager extends Impersonable{ @Path("{id}/children") @Produces(MediaType.APPLICATION_JSON) public ItemList listById(@QueryParam("showHidden") Boolean showHidden, @QueryParam("exclude") List excludes, @QueryParam("onlyType") String nodeType){ - InnerMethodName.instance.set("listById"); + InnerMethodName.set("listById"); Session ses = null; List toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); toReturn = Utils.getItemList(ses.getNodeByIdentifier(id), excludes, null, showHidden==null?false:showHidden, nodeType!=null ? ClassHandler.instance().get(nodeType) : null); }catch (ItemNotFoundException e) { @@ -337,12 +336,12 @@ public class ItemsManager extends Impersonable{ @Path("{id}/search") @Produces(MediaType.APPLICATION_JSON) public ItemList searchItems(@QueryParam("showHidden") Boolean showHidden, @QueryParam("excludeTrashed") Boolean excludeTrashed, @QueryParam("exclude") List excludes, @QueryParam("onlyType") String nodeType,@QueryParam("name") String name ){ - InnerMethodName.instance.set("search"); + InnerMethodName.set("search"); Session ses = null; List toReturn = null; try{ log.debug("search for node {}",name); - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); toReturn = Utils.searchByNameOnFolder(ses, currentUser, authChecker, ses.getNodeByIdentifier(id), excludes, null, showHidden==null?false:showHidden,excludeTrashed==true?false:excludeTrashed , nodeType!=null ? ClassHandler.instance().get(nodeType) : null, name); log.debug("search retrieved {} elements",toReturn.size()); @@ -367,11 +366,11 @@ public class ItemsManager extends Impersonable{ @Path("{id}/children/paged") @Produces(MediaType.APPLICATION_JSON) public ItemList listByIdPaged(@QueryParam("showHidden") Boolean showHidden, @QueryParam("start") Integer start, @QueryParam("limit") Integer limit, @QueryParam("exclude") List excludes, @QueryParam("onlyType") String nodeType){ - InnerMethodName.instance.set("listByIdPaged"); + InnerMethodName.set("listByIdPaged"); Session ses = null; List toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); toReturn = Utils.getItemList(ses.getNodeByIdentifier(id), excludes, new Range(start, limit),showHidden==null?false:showHidden, nodeType!=null ? ClassHandler.instance().get(nodeType) : null); }catch (ItemNotFoundException e) { @@ -393,14 +392,14 @@ public class ItemsManager extends Impersonable{ @GET @Path("publiclink/{id}") - @AuthorizationControl(allowedUsers={"URIResolver"}, exception=MyAuthException.class) + @AuthorizationControl(allowedUsers={"URIResolver"}) public Response resolvePublicLink() { - InnerMethodName.instance.set("resolvePubliclink"); + InnerMethodName.set("resolvePubliclink"); log.warn("arrived id is {}",id); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); PublicLink publicLink = publicLinkHandler.resolveEnchriptedId(id); switch (publicLink.getType()) { case VOLATILE: @@ -430,11 +429,11 @@ public class ItemsManager extends Impersonable{ @Produces(MediaType.APPLICATION_JSON) @Path("{id}/publiclink") public URL getPublicLink(@QueryParam("version") String version) { - InnerMethodName.instance.set("getPubliclink"); + InnerMethodName.set("getPubliclink"); Session ses = null; URL toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); Node selectedNode = ses.getNodeByIdentifier(id); @@ -493,11 +492,11 @@ public class ItemsManager extends Impersonable{ @Path("{id}/publish") @Produces(MediaType.APPLICATION_JSON) public String makeFolderPublic(@FormParam("publish") boolean publish){ - InnerMethodName.instance.set("makeFolderPublic("+publish+")"); + InnerMethodName.set("makeFolderPublic("+publish+")"); Session ses = null; Item folder= null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); Node currentNode =ses.getNodeByIdentifier(id); log.trace("current node is {}",currentNode.getPath()); @@ -529,11 +528,11 @@ public class ItemsManager extends Impersonable{ @Path("{id}/rootSharedFolder") @Produces(MediaType.APPLICATION_JSON) public ItemWrapper getRootSharedFolder(@QueryParam("exclude") List excludes){ - InnerMethodName.instance.set("getRootSharedFolder"); + InnerMethodName.set("getRootSharedFolder"); Session ses = null; Item sharedParent= null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); Node currentNode =ses.getNodeByIdentifier(id); log.trace("current node is {}",currentNode.getPath()); @@ -572,11 +571,11 @@ public class ItemsManager extends Impersonable{ @Path("{id}/versions") @Produces(MediaType.APPLICATION_JSON) public VersionList getVersions(){ - InnerMethodName.instance.set("getVersions"); + InnerMethodName.set("getVersions"); Session ses = null; List versions = new ArrayList<>(); try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); Node node = ses.getNodeByIdentifier(id); @@ -608,10 +607,10 @@ public class ItemsManager extends Impersonable{ @GET @Path("{id}/versions/{version}/download") public Response downloadVersion(@PathParam("version") String versionName){ - InnerMethodName.instance.set("downloadSpecificVersion"); + InnerMethodName.set("downloadSpecificVersion"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); Node node = ses.getNodeByIdentifier(id); Item currentItem = node2Item.getItem(node, Excludes.ALL); @@ -636,10 +635,10 @@ public class ItemsManager extends Impersonable{ @DELETE @Path("{id}/versions/{version}") public void deleteVersion(@PathParam("version") String versionName){ - InnerMethodName.instance.set("deleteVersion"); + InnerMethodName.set("deleteVersion"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); Node node = ses.getNodeByIdentifier(id); Item currentItem = node2Item.getItem(node, Excludes.GET_ONLY_CONTENT); @@ -680,13 +679,13 @@ public class ItemsManager extends Impersonable{ @Path("{id}/anchestors") @Produces(MediaType.APPLICATION_JSON) public ItemList getAnchestors(@QueryParam("exclude") List excludes){ - InnerMethodName.instance.set("getAnchestors"); + InnerMethodName.set("getAnchestors"); org.gcube.common.storagehub.model.Path absolutePath = pathUtil.getWorkspacePath(currentUser); Session ses = null; List toReturn = new LinkedList<>(); try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkReadAuthorizationControl(ses, currentUser, id); Node currentNode = ses.getNodeByIdentifier(id); Item currentItem = node2Item.getItem(currentNode, excludes); @@ -736,10 +735,10 @@ public class ItemsManager extends Impersonable{ @GET @Path("{id}/download") public Response download(@QueryParam("exclude") List excludes){ - InnerMethodName.instance.set("downloadById"); + InnerMethodName.set("downloadById"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); final Node node = ses.getNodeByIdentifier(id); authChecker.checkReadAuthorizationControl(ses, currentUser, id); final Item item = node2Item.getItem(node, null); @@ -765,12 +764,12 @@ public class ItemsManager extends Impersonable{ @PUT @Path("{id}/move") public String move(@FormParam("destinationId") String destinationId){ - InnerMethodName.instance.set("move"); + InnerMethodName.set("move"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkMoveOpsForProtectedFolders(ses, id); authChecker.checkWriteAuthorizationControl(ses, currentUser, destinationId, true); @@ -843,13 +842,13 @@ public class ItemsManager extends Impersonable{ @PUT @Path("{id}/copy") public String copy(@FormParam("destinationId") String destinationId, @FormParam("fileName") String newFileName){ - InnerMethodName.instance.set("copy"); + InnerMethodName.set("copy"); //TODO: check if identifier is The Workspace root, or the trash folder or the VREFolder root or if the item is thrashed Session ses = null; String newFileIdentifier = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, destinationId, true); authChecker.checkReadAuthorizationControl(ses, currentUser, id); @@ -917,12 +916,12 @@ public class ItemsManager extends Impersonable{ @PUT @Path("{id}/rename") public Response rename(@FormParam("newName") String newName){ - InnerMethodName.instance.set("rename"); + InnerMethodName.set("rename"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkMoveOpsForProtectedFolders(ses, id); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); @@ -975,13 +974,13 @@ public class ItemsManager extends Impersonable{ @Consumes(MediaType.APPLICATION_JSON) @Path("/{id}/hidden") public Response setItemAsHidden(Boolean hidden){ - InnerMethodName.instance.set("setHidden"); + InnerMethodName.set("setHidden"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); @@ -1020,13 +1019,13 @@ public class ItemsManager extends Impersonable{ @Consumes(MediaType.APPLICATION_JSON) @Path("/{id}/description") public Response setDescription(String description){ - InnerMethodName.instance.set("setDescription"); + InnerMethodName.set("setDescription"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); @@ -1064,13 +1063,13 @@ public class ItemsManager extends Impersonable{ @Consumes(MediaType.APPLICATION_JSON) @Path("/{id}/metadata") public Response setMetadata(org.gcube.common.storagehub.model.Metadata metadata){ - InnerMethodName.instance.set("updateMetadata"); + InnerMethodName.set("updateMetadata"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); @@ -1109,7 +1108,7 @@ public class ItemsManager extends Impersonable{ @DELETE @Path("{id}") public Response deleteItem(@QueryParam("force") boolean force){ - InnerMethodName.instance.set("deleteItem("+force+")"); + InnerMethodName.set("deleteItem("+force+")"); Session ses = null; try{ @@ -1117,7 +1116,7 @@ public class ItemsManager extends Impersonable{ log.info("removing node with id {}", id); //TODO check if it is possible to change all the ACL on a workspace - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false); authChecker.checkMoveOpsForProtectedFolders(ses, id); diff --git a/src/main/java/org/gcube/data/access/storagehub/services/MessageManager.java b/src/main/java/org/gcube/data/access/storagehub/services/MessageManager.java index 3ecaa49..4672649 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/MessageManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/MessageManager.java @@ -5,28 +5,11 @@ import java.util.Arrays; import java.util.List; import java.util.UUID; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.FormParam; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.apache.jackrabbit.api.JackrabbitSession; import org.apache.jackrabbit.api.security.user.User; @@ -55,7 +38,6 @@ import org.gcube.data.access.storagehub.PathUtil; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; import org.gcube.data.access.storagehub.Utils; import org.gcube.data.access.storagehub.accounting.AccountingHandler; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.TrashHandler; import org.gcube.data.access.storagehub.handlers.items.Item2NodeConverter; import org.gcube.data.access.storagehub.handlers.items.Item2NodeConverter.Values; @@ -70,6 +52,24 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.FormParam; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; + @Path("messages") @ManagedBy(StorageHubAppllicationManager.class) @RequestHeaders({ @@ -105,11 +105,11 @@ public class MessageManager extends Impersonable{ @Path("{id}") @Produces(MediaType.APPLICATION_JSON) public Message getById(){ - InnerMethodName.instance.set("getMessageById"); + InnerMethodName.set("getMessageById"); Session ses = null; Message toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node messageNode = ses.getNodeByIdentifier(id); toReturn = node2Item.getMessageItem(messageNode); checkRights(currentUser, toReturn); @@ -133,10 +133,10 @@ public class MessageManager extends Impersonable{ @DELETE @Path("{id}") public void deleteById(){ - InnerMethodName.instance.set("deleteMessageById"); + InnerMethodName.set("deleteMessageById"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node messageNode = ses.getNodeByIdentifier(id); Message message = node2Item.getMessageItem(messageNode); Node personalNode = checkRights(currentUser, message); @@ -173,11 +173,11 @@ public class MessageManager extends Impersonable{ @Path("{id}/attachments") @Produces(MediaType.APPLICATION_JSON) public ItemList getAttachments(){ - InnerMethodName.instance.set("getAttachmentsByMessageId"); + InnerMethodName.set("getAttachmentsByMessageId"); Session ses = null; List attachments = new ArrayList<>(); try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node messageNode = ses.getNodeByIdentifier(id); Message messageItem = node2Item.getMessageItem(messageNode); checkRights(currentUser, messageItem); @@ -204,11 +204,11 @@ public class MessageManager extends Impersonable{ @Path("inbox") @Produces(MediaType.APPLICATION_JSON) public MessageList getReceivedMessages(@QueryParam("reduceBody") Integer reduceBody){ - InnerMethodName.instance.set("getReceivedMessages"); + InnerMethodName.set("getReceivedMessages"); Session ses = null; List toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node node = ses.getNode(pathUtil.getInboxPath(currentUser).toPath()); @@ -229,11 +229,11 @@ public class MessageManager extends Impersonable{ @Path("sent") @Produces(MediaType.APPLICATION_JSON) public MessageList getSentMessages(@QueryParam("reduceBody") Integer reduceBody){ - InnerMethodName.instance.set("getSentMessages"); + InnerMethodName.set("getSentMessages"); Session ses = null; List toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node node = ses.getNode(pathUtil.getOutboxPath(currentUser).toPath()); @@ -253,10 +253,10 @@ public class MessageManager extends Impersonable{ @Path("{id}/{prop}") @Consumes(MediaType.APPLICATION_JSON) public void setProperty(@PathParam("prop") String property,Object value){ - InnerMethodName.instance.set("setPropertyOnMessage("+property+")"); + InnerMethodName.set("setPropertyOnMessage("+property+")"); Session ses = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); Node messageNode = ses.getNodeByIdentifier(id); Message messageItem = node2Item.getMessageItem(messageNode); checkRights(currentUser, messageItem); @@ -286,7 +286,7 @@ public class MessageManager extends Impersonable{ public String sendMessage(@FormParam("to[]") List addresses, @FormParam("subject") String subject, @FormParam("body") String body, @FormParam("attachments[]") List attachments){ - InnerMethodName.instance.set("sendMessage"); + InnerMethodName.set("sendMessage"); JackrabbitSession ses = null; String messageId = null; try{ @@ -295,7 +295,7 @@ public class MessageManager extends Impersonable{ log.debug("attachments send are {}",attachments); - ses = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); Message message = new MessageSharable(); message.setAddresses(addresses.toArray(new String[0])); diff --git a/src/main/java/org/gcube/data/access/storagehub/services/StorageManager.java b/src/main/java/org/gcube/data/access/storagehub/services/StorageManager.java index 838b9e1..19b0b37 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/StorageManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/StorageManager.java @@ -3,11 +3,11 @@ package org.gcube.data.access.storagehub.services; import java.util.ArrayList; import java.util.List; -import javax.inject.Inject; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; +import jakarta.inject.Inject; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; import org.gcube.common.storagehub.model.storages.StorageDescriptor; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; @@ -32,7 +32,7 @@ public class StorageManager { @Path("/") @Produces(MediaType.APPLICATION_JSON) public List getStorages(){ - InnerMethodName.instance.set("getStorages"); + InnerMethodName.set("getStorages"); List storages = new ArrayList<>(); storageBackendHandler.getAllImplementations().forEach( f -> storages.add(new StorageDescriptor(f.getName()))); return storages; diff --git a/src/main/java/org/gcube/data/access/storagehub/services/UserManager.java b/src/main/java/org/gcube/data/access/storagehub/services/UserManager.java index 27903b1..83b2de1 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/UserManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/UserManager.java @@ -9,23 +9,9 @@ import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; -import javax.inject.Inject; import javax.jcr.Node; import javax.jcr.PathNotFoundException; import javax.jcr.RepositoryException; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.FormParam; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.jackrabbit.api.JackrabbitSession; import org.apache.jackrabbit.api.security.user.Authorizable; @@ -51,8 +37,6 @@ import org.gcube.data.access.storagehub.Constants; import org.gcube.data.access.storagehub.PathUtil; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; import org.gcube.data.access.storagehub.Utils; -import org.gcube.data.access.storagehub.exception.MyAuthException; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.GroupHandler; import org.gcube.data.access.storagehub.handlers.TrashHandler; import org.gcube.data.access.storagehub.handlers.UnshareHandler; @@ -65,6 +49,21 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.FormParam; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + @Path("users") @ManagedBy(StorageHubAppllicationManager.class) @RequestHeaders({ @@ -99,7 +98,7 @@ public class UserManager { JackrabbitSession session = null; List users = null; try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); Iterator result = session.getUserManager().findAuthorizables(new Query() { @@ -110,8 +109,7 @@ public class UserManager { }); Set usersSet= new HashSet<>(); - String adminUser = context.getInitParameter(Constants.ADMIN_PARAM_NAME); - + String adminUser = Constants.ADMIN_USER; Node homeNode = session.getNode("/Home"); while (result.hasNext()) { @@ -150,7 +148,7 @@ public class UserManager { @Produces(MediaType.APPLICATION_JSON) public List getUsers(){ - InnerMethodName.instance.set("getUsers"); + InnerMethodName.set("getUsers"); try { return retrieveUsers(); }catch (Throwable e) { @@ -166,11 +164,11 @@ public class UserManager { @Path("{user}") public SHUBUser getUser(@PathParam("user") String user){ - InnerMethodName.instance.set("getUser"); + InnerMethodName.set("getUser"); JackrabbitSession session = null; try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); Authorizable authorizable = usrManager.getAuthorizable(user); @@ -207,15 +205,15 @@ public class UserManager { @POST @Path("") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}, exception=MyAuthException.class) + @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}) public String createUser(@FormParam("user") String user, @FormParam("password") String password){ - InnerMethodName.instance.set("createUser"); + InnerMethodName.set("createUser"); JackrabbitSession session = null; String userId = null; try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); @@ -265,15 +263,15 @@ public class UserManager { @PUT @Path("{user}") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}, exception=MyAuthException.class) + @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}) public String updateHomeUserToLatestVersion(@PathParam("user") String user){ - InnerMethodName.instance.set("updateHomeUserToLatestVersion"); + InnerMethodName.set("updateHomeUserToLatestVersion"); JackrabbitSession session = null; String userId = null; try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); @@ -345,15 +343,15 @@ public class UserManager { @DELETE @Path("{user}") - @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}, exception=MyAuthException.class) + @AuthorizationControl(allowedRoles={INFRASTRUCTURE_MANAGER_ROLE}) public String deleteUser(@PathParam("user") final String user){ - InnerMethodName.instance.set("deleteUser"); + InnerMethodName.set("deleteUser"); JackrabbitSession session = null; try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); @@ -393,12 +391,12 @@ public class UserManager { @Produces(MediaType.APPLICATION_JSON) public List getGroupsPerUser(@PathParam("user") final String user){ - InnerMethodName.instance.set("getGroupsPerUser"); + InnerMethodName.set("getGroupsPerUser"); JackrabbitSession session = null; List groups= new ArrayList<>(); try { - session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + session = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); User authUser = (User) usrManager.getAuthorizable(new PrincipalImpl(user)); diff --git a/src/main/java/org/gcube/data/access/storagehub/services/WorkspaceManager.java b/src/main/java/org/gcube/data/access/storagehub/services/WorkspaceManager.java index cb1f191..d3f0f2f 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/WorkspaceManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/WorkspaceManager.java @@ -4,24 +4,9 @@ import java.io.InputStream; import java.util.Collections; import java.util.List; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.FormParam; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.jackrabbit.api.JackrabbitSession; import org.gcube.common.gxrest.response.outbound.GXOutboundErrorResponse; @@ -48,7 +33,6 @@ import org.gcube.data.access.storagehub.PathUtil; import org.gcube.data.access.storagehub.Range; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; import org.gcube.data.access.storagehub.Utils; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.PublicLinkHandler; import org.gcube.data.access.storagehub.handlers.TrashHandler; import org.gcube.data.access.storagehub.handlers.items.Item2NodeConverter; @@ -69,6 +53,22 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.FormParam; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + @Path("/") @ManagedBy(StorageHubAppllicationManager.class) @RequestHeaders({ @@ -116,7 +116,7 @@ public class WorkspaceManager extends Impersonable{ @GET @Produces(MediaType.APPLICATION_JSON) public ItemWrapper getWorkspace(@QueryParam("relPath") String relPath){ - InnerMethodName.instance.set("getWorkspace"); + InnerMethodName.set("getWorkspace"); Session ses = null; org.gcube.common.storagehub.model.Path absolutePath; if (relPath==null) @@ -125,7 +125,7 @@ public class WorkspaceManager extends Impersonable{ Item toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); //TODO: remove when all user will have TRASH org.gcube.common.storagehub.model.Path trashPath = pathUtil.getTrashPath(currentUser, ses); if (!ses.nodeExists(trashPath.toPath())) { @@ -169,7 +169,7 @@ public class WorkspaceManager extends Impersonable{ public String uploadVolatileFile( @FormDataParam("file") InputStream stream, @FormDataParam("file") FormDataContentDisposition fileDetail){ - InnerMethodName.instance.set("uploadToVolatileArea"); + InnerMethodName.set("uploadToVolatileArea"); log.info("uploading file {} of size {} to volatile area ({} - {})", fileDetail.getFileName(), fileDetail.getSize(), fileDetail.getName(), fileDetail.getParameters().toString() ); @@ -206,11 +206,11 @@ public class WorkspaceManager extends Impersonable{ @GET @Produces(MediaType.APPLICATION_JSON) public ItemWrapper getVreRootFolder(){ - InnerMethodName.instance.set("getVreRootFolder"); + InnerMethodName.set("getVreRootFolder"); JackrabbitSession ses = null; Item vreItem = null; try { - ses = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); vreItem = vreManager.getVreFolderItem(ses, currentUser, excludes).getVreFolder(); }catch(RepositoryException re ){ log.error("jcr error getting vrefolder", re); @@ -229,11 +229,11 @@ public class WorkspaceManager extends Impersonable{ @GET @Produces(MediaType.APPLICATION_JSON) public ItemList getVreFolderRecentsDocument(){ - InnerMethodName.instance.set("getVreFolderRecents"); + InnerMethodName.set("getVreFolderRecents"); JackrabbitSession ses = null; List recentItems = Collections.emptyList(); try{ - ses = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); VRE vre = vreManager.getVreFolderItem(ses, currentUser, excludes); log.trace("VRE retrieved {}",vre.getVreFolder().getTitle()); @@ -261,13 +261,13 @@ public class WorkspaceManager extends Impersonable{ @GET @Produces(MediaType.APPLICATION_JSON) public ItemWrapper getTrashRootFolder(){ - InnerMethodName.instance.set("getTrashRootFolder"); + InnerMethodName.set("getTrashRootFolder"); Session ses = null; Item item = null; try{ long start = System.currentTimeMillis(); - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); org.gcube.common.storagehub.model.Path trashPath = pathUtil.getTrashPath(currentUser, ses); log.info("time to connect to repo {}",(System.currentTimeMillis()-start)); @@ -291,11 +291,11 @@ public class WorkspaceManager extends Impersonable{ @Path("trash/empty") @DELETE public String emptyTrash(){ - InnerMethodName.instance.set("emptyTrash"); + InnerMethodName.set("emptyTrash"); Session ses = null; String toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); org.gcube.common.storagehub.model.Path trashPath = pathUtil.getTrashPath(currentUser, ses); Node trashNode = ses.getNode(trashPath.toPath()); List itemsToDelete = Utils.getItemList(trashNode, Excludes.ALL, null, true, null); @@ -319,13 +319,13 @@ public class WorkspaceManager extends Impersonable{ @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Path("trash/restore") public String restoreItem(@FormParam("trashedItemId") String trashedItemId,@FormParam("destinationId") String destinationFolderId){ - InnerMethodName.instance.set("restoreItem"); + InnerMethodName.set("restoreItem"); Session ses = null; String toReturn = null; try{ log.info("restoring node with id {}", trashedItemId); - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); final Node nodeToRestore = ses.getNodeByIdentifier(trashedItemId); @@ -367,12 +367,12 @@ public class WorkspaceManager extends Impersonable{ @GET @Produces(MediaType.APPLICATION_JSON) public ItemList getVreFolders(){ - InnerMethodName.instance.set("getVreFolders"); + InnerMethodName.set("getVreFolders"); Session ses = null; List toReturn = null; org.gcube.common.storagehub.model.Path vrePath = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); vrePath = pathUtil.getVREsPath(currentUser, ses); log.info("vres folder path is {}",vrePath.toPath()); @@ -396,12 +396,12 @@ public class WorkspaceManager extends Impersonable{ @GET @Produces(MediaType.APPLICATION_JSON) public ItemList getVreFoldersPaged(@QueryParam("start") Integer start, @QueryParam("limit") Integer limit){ - InnerMethodName.instance.set("getVreFoldersPaged"); + InnerMethodName.set("getVreFoldersPaged"); Session ses = null; org.gcube.common.storagehub.model.Path vrePath = null; List toReturn = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); vrePath = pathUtil.getVREsPath(currentUser, ses); toReturn = Utils.getItemList(ses.getNode(vrePath.toPath()) , excludes, new Range(start, limit), false, null); }catch(RepositoryException re ){ @@ -423,12 +423,12 @@ public class WorkspaceManager extends Impersonable{ @GET @Produces(MediaType.APPLICATION_JSON) public ItemList getMySharedFolders(){ - InnerMethodName.instance.set("getMySharedFolders"); + InnerMethodName.set("getMySharedFolders"); Session ses = null; List toReturn = null; org.gcube.common.storagehub.model.Path sharedPath = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); sharedPath = pathUtil.getMySharedPath(currentUser); log.info("my shared folder path is folder path is {}",sharedPath.toPath()); @@ -451,12 +451,12 @@ public class WorkspaceManager extends Impersonable{ @GET @Produces(MediaType.APPLICATION_JSON) public ItemList getSharedWithMeFolders(){ - InnerMethodName.instance.set("getSharedWithMeFolders"); + InnerMethodName.set("getSharedWithMeFolders"); Session ses = null; List toReturn = null; org.gcube.common.storagehub.model.Path sharedPath = null; try{ - ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = repository.getRepository().login(Constants.JCR_CREDENTIALS); sharedPath = pathUtil.getSharedWithMePath(currentUser); log.info("vres folder path is {}",sharedPath.toPath()); @@ -479,7 +479,7 @@ public class WorkspaceManager extends Impersonable{ @Path("count") @GET public String getTotalItemsCount(){ - InnerMethodName.instance.set("getTotalItemsCount"); + InnerMethodName.set("getTotalItemsCount"); return "1203"; } @@ -487,7 +487,7 @@ public class WorkspaceManager extends Impersonable{ @Path("size") @GET public String getTotalVolume(){ - InnerMethodName.instance.set("getTotalSize"); + InnerMethodName.set("getTotalSize"); return "120300000"; } diff --git a/src/main/java/org/gcube/data/access/storagehub/services/admin/ScriptManager.java b/src/main/java/org/gcube/data/access/storagehub/services/admin/ScriptManager.java index e70ac82..6e215cf 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/admin/ScriptManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/admin/ScriptManager.java @@ -10,31 +10,18 @@ import java.io.StringWriter; import java.util.HashMap; import java.util.UUID; -import javax.inject.Inject; import javax.jcr.Node; import javax.jcr.Session; -import javax.servlet.ServletContext; -import javax.ws.rs.Consumes; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; import org.apache.jackrabbit.api.JackrabbitSession; import org.gcube.common.authorization.control.annotations.AuthorizationControl; import org.gcube.common.security.AuthorizedTasks; import org.gcube.common.security.providers.SecretManagerProvider; import org.gcube.common.storagehub.model.Paths; +import org.gcube.data.access.storagehub.Constants; import org.gcube.data.access.storagehub.PathUtil; import org.gcube.data.access.storagehub.StorageHubAppllicationManager; import org.gcube.data.access.storagehub.accounting.AccountingHandler; -import org.gcube.data.access.storagehub.exception.MyAuthException; -import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.items.ItemHandler; import org.gcube.data.access.storagehub.handlers.items.builders.FileCreationParameters; import org.gcube.data.access.storagehub.handlers.items.builders.ItemsParameterBuilder; @@ -53,6 +40,19 @@ import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; + @Path("admin/script") @RequestHeaders({ @RequestHeader( name = "Authorization", description = "Bearer token, see https://dev.d4science.org/how-to-access-resources"), @@ -83,7 +83,7 @@ public class ScriptManager { @POST @Path("execute") - @AuthorizationControl(allowedRoles = {INFRASTRUCTURE_MANAGER_ROLE},exception=MyAuthException.class) + @AuthorizationControl(allowedRoles = {INFRASTRUCTURE_MANAGER_ROLE}) @Consumes(MediaType.MULTIPART_FORM_DATA) @Produces(MediaType.APPLICATION_JSON) public ScriptStatus run( @FormDataParam("name") String name, @@ -93,7 +93,7 @@ public class ScriptManager { @FormDataParam("file") InputStream stream, @FormDataParam("file") FormDataContentDisposition fileDetail) { try { - InnerMethodName.instance.set("executeScript"); + InnerMethodName.set("executeScript"); ScriptClassLoader scriptClassLoader = new ScriptClassLoader(Thread.currentThread().getContextClassLoader()); Class scriptClass = uploadClass(stream, scriptClassLoader, fileDetail.getFileName().replace(".class", "")); return internalRun(scriptClass, name, destinationFolderId, asynch, writeResult); @@ -105,10 +105,10 @@ public class ScriptManager { @GET @Path("{id}/status") - @AuthorizationControl(allowedRoles = {INFRASTRUCTURE_MANAGER_ROLE},exception=MyAuthException.class) + @AuthorizationControl(allowedRoles = {INFRASTRUCTURE_MANAGER_ROLE}) @Produces(MediaType.APPLICATION_JSON) public ScriptStatus getStatus(@PathParam("id") String runningId) { - InnerMethodName.instance.set("getScriptStatus"); + InnerMethodName.set("getScriptStatus"); if (!scriptStatusMap.containsKey(runningId)) { log.error("script with id {} not found",runningId); throw new WebApplicationException("id "+runningId+" not found", 404); @@ -135,7 +135,7 @@ public class ScriptManager { } private ScriptStatus internalRun(Class clazz, String name, String destinationFolderId, boolean asynch, boolean writeResult) throws Throwable { - String login = SecretManagerProvider.instance.get().getOwner().getId(); + String login = SecretManagerProvider.get().getOwner().getId(); log.info("script {} called by {}", clazz.getSimpleName(), login); try { @@ -146,7 +146,7 @@ public class ScriptManager { if (writeResult) { JackrabbitSession ses = null; try { - ses = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + ses = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); String parentId = destinationFolderId!=null ? destinationFolderId : ses.getNode(pathUtil.getWorkspacePath(login).toPath()).getIdentifier(); parentNode = ses.getNodeByIdentifier(parentId); resultPath = Paths.append(Paths.getPath(parentNode.getPath()), name).toPath(); @@ -214,7 +214,7 @@ public class ScriptManager { try { JackrabbitSession executeSession = null; try { - executeSession = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + executeSession = (JackrabbitSession) repository.getRepository().login(Constants.JCR_CREDENTIALS); result = instance.run(executeSession, null, scriptUtil); status.setSuccess(); }catch(Throwable t) { @@ -232,7 +232,7 @@ public class ScriptManager { if (this.writeResult) { Session writeSession = null; try( InputStream stream = new ByteArrayInputStream(result.getBytes())){ - writeSession = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); + writeSession = repository.getRepository().login(Constants.JCR_CREDENTIALS); ItemsParameterBuilder builder = FileCreationParameters.builder().name(name).description("result of script execution "+name) .stream(stream).on(parentNode.getIdentifier()).with(writeSession).author(login); itemHandler.create(builder.build()); diff --git a/src/main/java/org/gcube/data/access/storagehub/services/admin/ScriptUtilImpl.java b/src/main/java/org/gcube/data/access/storagehub/services/admin/ScriptUtilImpl.java index 509bc29..5a3f035 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/admin/ScriptUtilImpl.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/admin/ScriptUtilImpl.java @@ -4,8 +4,8 @@ import java.util.Collection; import java.util.List; import java.util.function.Predicate; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; diff --git a/src/main/java/org/gcube/data/access/storagehub/services/delegates/ACLManagerDelegate.java b/src/main/java/org/gcube/data/access/storagehub/services/delegates/ACLManagerDelegate.java index a4973b3..d6f1760 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/delegates/ACLManagerDelegate.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/delegates/ACLManagerDelegate.java @@ -4,8 +4,8 @@ import java.security.Principal; import java.util.ArrayList; import java.util.List; -import javax.inject.Inject; -import javax.inject.Singleton; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; diff --git a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeMongoStorageBackend.java b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeMongoStorageBackend.java index e3cc7e0..dba5f6a 100644 --- a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeMongoStorageBackend.java +++ b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeMongoStorageBackend.java @@ -38,7 +38,7 @@ public class GCubeMongoStorageBackend extends StorageBackend { @Override public InputStream download(String id) throws StorageIdNotFoundException{ - IClient storageClient = getStorageClient(SecretManagerProvider.instance.get().getOwner().getId()).getClient(); + IClient storageClient = getStorageClient(SecretManagerProvider.get().getOwner().getId()).getClient(); if (!storageClient.exist().RFile(id)) throw new StorageIdNotFoundException(id, this.getPayloadConfiguration().getStorageName()); return storageClient.get().RFileAsInputStream(id); @@ -53,7 +53,7 @@ public class GCubeMongoStorageBackend extends StorageBackend { public MetaInfo onCopy(Content content, String newParentPath, String newName) { log.info("copying storage Id {} to newPath {}", content.getStorageId(), newParentPath); String newRemotePath = Paths.get(newParentPath, newName).toString(); - String newStorageID = getStorageClient(SecretManagerProvider.instance.get().getOwner().getId()).getClient().copyFile(true).from(content.getStorageId()).to(newRemotePath); + String newStorageID = getStorageClient(SecretManagerProvider.get().getOwner().getId()).getClient().copyFile(true).from(content.getStorageId()).to(newRemotePath); log.info("The id returned by storage is {}", newStorageID); return new MetaInfo(content.getSize(),newStorageID, newRemotePath, getPayloadConfiguration()); } @@ -91,19 +91,19 @@ public class GCubeMongoStorageBackend extends StorageBackend { @Override public void delete(String storageId) { log.debug("deleting object {} ",storageId); - IClient storageClient = getStorageClient(SecretManagerProvider.instance.get().getOwner().getId()).getClient(); + IClient storageClient = getStorageClient(SecretManagerProvider.get().getOwner().getId()).getClient(); storageClient.remove().RFileById(storageId); } @Override public String getTotalSizeStored() { - IClient storageClient = getStorageClient(SecretManagerProvider.instance.get().getOwner().getId()).getClient(); + IClient storageClient = getStorageClient(SecretManagerProvider.get().getOwner().getId()).getClient(); return storageClient.getTotalUserVolume(); } @Override public String getTotalItemsCount() { - IClient storageClient = getStorageClient(SecretManagerProvider.instance.get().getOwner().getId()).getClient(); + IClient storageClient = getStorageClient(SecretManagerProvider.get().getOwner().getId()).getClient(); return storageClient.getUserTotalItems(); } diff --git a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeMongoStorageBackendFactory.java b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeMongoStorageBackendFactory.java index 9603a67..50a35ae 100644 --- a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeMongoStorageBackendFactory.java +++ b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeMongoStorageBackendFactory.java @@ -1,6 +1,6 @@ package org.gcube.data.access.storagehub.storage.backend.impl; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.Constants; import org.gcube.common.storagehub.model.exceptions.InvalidCallParameters; diff --git a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeVolatileStorageBackendFactory.java b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeVolatileStorageBackendFactory.java index 9d92e5a..2f4eb1a 100644 --- a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeVolatileStorageBackendFactory.java +++ b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GCubeVolatileStorageBackendFactory.java @@ -7,8 +7,8 @@ import java.util.Map; import java.util.Properties; import java.util.UUID; -import javax.annotation.PostConstruct; -import javax.inject.Singleton; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.Metadata; import org.gcube.common.storagehub.model.exceptions.InvalidCallParameters; diff --git a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GcubeDefaultS3StorageBackendFactory.java b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GcubeDefaultS3StorageBackendFactory.java index 4b06683..241d4b5 100644 --- a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GcubeDefaultS3StorageBackendFactory.java +++ b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GcubeDefaultS3StorageBackendFactory.java @@ -7,8 +7,8 @@ import java.util.Map; import java.util.Properties; import java.util.UUID; -import javax.annotation.PostConstruct; -import javax.inject.Singleton; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.Constants; import org.gcube.common.storagehub.model.Metadata; diff --git a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GcubeMinIOStorageBackendFactory.java b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GcubeMinIOStorageBackendFactory.java index 7eec4d5..7b54f57 100644 --- a/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GcubeMinIOStorageBackendFactory.java +++ b/src/main/java/org/gcube/data/access/storagehub/storage/backend/impl/GcubeMinIOStorageBackendFactory.java @@ -7,8 +7,8 @@ import java.util.Map; import java.util.Properties; import java.util.UUID; -import javax.annotation.PostConstruct; -import javax.inject.Singleton; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.Metadata; import org.gcube.common.storagehub.model.exceptions.InvalidCallParameters; diff --git a/src/main/resources/META-INF/beans.xml b/src/main/resources/META-INF/beans.xml deleted file mode 100644 index 77e45d1..0000000 --- a/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,6 +0,0 @@ - - \ No newline at end of file diff --git a/src/test/java/org/gcube/data/access/fs/container/CreateUsers.java b/src/test/java/org/gcube/data/access/fs/container/CreateUsers.java index e74aa2b..bf0a3c0 100644 --- a/src/test/java/org/gcube/data/access/fs/container/CreateUsers.java +++ b/src/test/java/org/gcube/data/access/fs/container/CreateUsers.java @@ -39,7 +39,7 @@ public class CreateUsers { public void setTokenAndScope() { UmaTokenSecret secret = new UmaTokenSecret("eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSSklZNEpoNF9qdDdvNmREY0NlUDFfS1l0akcxVExXVW9oMkQ2Tzk1bFNBIn0.eyJleHAiOjE2NDQyNDM4ODUsImlhdCI6MTY0NDI0MzU4NSwiYXV0aF90aW1lIjoxNjQ0MjQzNTg1LCJqdGkiOiI1NWQ4ZDc5OS1kNTIzLTQ0YmEtYTRkMC1iZjIyYzVlMTg4NzQiLCJpc3MiOiJodHRwczovL2FjY291bnRzLmRldi5kNHNjaWVuY2Uub3JnL2F1dGgvcmVhbG1zL2Q0c2NpZW5jZSIsImF1ZCI6IiUyRmdjdWJlIiwic3ViIjoiNGMxMWRlODQtZGRjOS00ZGQxLWI5N2EtZWE4MmQyZDEzOGE2IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibmV4dC5kNHNjaWVuY2Uub3JnIiwic2Vzc2lvbl9zdGF0ZSI6ImZkZTA3MGE2LTVkOTUtNDc3Ni1hMTFiLTBhZTI1MzQ5NGQyMyIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVzb3VyY2VfYWNjZXNzIjp7IiUyRmdjdWJlIjp7InJvbGVzIjpbIkluZnJhc3RydWN0dXJlLU1hbmFnZXIiLCJNZW1iZXIiXX19LCJhdXRob3JpemF0aW9uIjp7InBlcm1pc3Npb25zIjpbeyJyc2lkIjoiMTU5ZDcyMDQtNjlmYS00ZmY0LTlhOTQtMzVlMWUyMzA5MDQyIiwicnNuYW1lIjoiRGVmYXVsdCBSZXNvdXJjZSJ9XX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiTHVjaW8gTGVsaWkiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJsdWNpby5sZWxpaSIsImdpdmVuX25hbWUiOiJMdWNpbyIsImZhbWlseV9uYW1lIjoiTGVsaWkiLCJlbWFpbCI6Imx1Y2lvLmxlbGlpQGlzdGkuY25yLml0In0.SGuGXnY63WJ45tdypywaopO--FCxY6ZWAX74MGVw_zdNMMQI5zgtGfhZQewFWQ6HhVINDStXqvdSDluhF9JwFXCUGvxB2BipfKQYsAQnm3I4K3kgMl26kuQIL5Im-apw2XWvImTgLshX1AzpyqzFR1Jpf_p65GCMpcHLEwo_nTGLkrZNtfRdtqakZ8S8lowGaV2J2mNf4AHhtARSLJF3GqwynF5pPUXR2iOMUrjw_FLnIuPMfAjk_jHMeYKIxXNBLsoEpELju3pr2gEkv1ZRH9bZkyg7_3hW4mGzxq_Ea9w1FBVJOlkp6vypuISLNyJZcVOnBa4Dg1KRxxlp3aZ6vA"); - SecretManagerProvider.instance.set(secret); + SecretManagerProvider.set(secret); } @Test diff --git a/src/test/java/org/gcube/data/access/fs/external/CreateUsers.java b/src/test/java/org/gcube/data/access/fs/external/CreateUsers.java index 09a2ecd..a5a5c6c 100644 --- a/src/test/java/org/gcube/data/access/fs/external/CreateUsers.java +++ b/src/test/java/org/gcube/data/access/fs/external/CreateUsers.java @@ -54,7 +54,7 @@ public class CreateUsers { @Before public void setSecret() { CredentialSecret secret = new CredentialSecret("sg4-test-client", "a156a7db-3b32-4cd5-b27b-2488e0e01698", "/gcube"); - SecretManagerProvider.instance.set(secret); + SecretManagerProvider.set(secret); } @Test @@ -110,7 +110,7 @@ public class CreateUsers { @Test public void getBearerToken() { - System.out.println(SecretManagerProvider.instance.get().getHTTPAuthorizationHeaders()); + System.out.println(SecretManagerProvider.get().getHTTPAuthorizationHeaders()); } @Test @@ -155,9 +155,9 @@ public class CreateUsers { public void createUser2AndAddItToVres() throws Exception{ client.impersonate(user); client.createUserAccount(user2); - client.getVreFolderManager(vreWA).addUser(user2); + /*client.getVreFolderManager(vreWA).addUser(user2); client.getVreFolderManager(vreRO).addUser(user2); - client.getVreFolderManager(vreWO).addUser(user2); + client.getVreFolderManager(vreWO).addUser(user2);*/ } @Test diff --git a/src/test/java/org/gcube/data/access/storages/mock/FSStorageFactory.java b/src/test/java/org/gcube/data/access/storages/mock/FSStorageFactory.java index a7d9463..805dc32 100644 --- a/src/test/java/org/gcube/data/access/storages/mock/FSStorageFactory.java +++ b/src/test/java/org/gcube/data/access/storages/mock/FSStorageFactory.java @@ -1,6 +1,6 @@ package org.gcube.data.access.storages.mock; -import javax.inject.Singleton; +import jakarta.inject.Singleton; import org.gcube.common.storagehub.model.exceptions.InvalidCallParameters; import org.gcube.common.storagehub.model.items.nodes.PayloadBackend; diff --git a/src/test/resources/META-INF/beans.xml b/src/test/resources/META-INF/beans.xml index 7e968ba..82f7e9c 100644 --- a/src/test/resources/META-INF/beans.xml +++ b/src/test/resources/META-INF/beans.xml @@ -1,4 +1,6 @@ - + xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd" + version="4.0" bean-discovery-mode="all"> + \ No newline at end of file