From 4ceed8a581ee03b310b8ff5b4580cd29c2a5f0c4 Mon Sep 17 00:00:00 2001 From: "fabio.sinibaldi" Date: Tue, 7 Jan 2020 18:03:26 +0100 Subject: [PATCH] Credentials loading from IS --- .../publishing/ckan2zenodo/Ckan2Zenodo.java | 9 ++++++--- .../ckan2zenodo/Ckan2ZenodoImpl.java | 6 +++--- .../ckan2zenodo/LocalConfiguration.java | 5 ++++- .../ckan2zenodo/clients/Zenodo.java | 20 ++++++++++++++++--- src/test/java/org/gcube/tests/GCatTests.java | 13 +++++++++++- 5 files changed, 42 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java index ceca3a3..f8b8be6 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java @@ -52,8 +52,9 @@ public interface Ckan2Zenodo { * @param toUpdate * @return * @throws ZenodoException + * @throws ConfigurationException */ - public ZenodoDeposition updatedMetadata(ZenodoDeposition toUpdate) throws ZenodoException; + public ZenodoDeposition updatedMetadata(ZenodoDeposition toUpdate) throws ZenodoException, ConfigurationException; /** * Filters ckan resources of @param desc by using mappings declared in current VRE @@ -72,8 +73,9 @@ public interface Ckan2Zenodo { * @param deposition * @return * @throws ZenodoException + * @throws ConfigurationException */ - public Future uploadFiles(Set toUpload,ZenodoDeposition deposition) throws ZenodoException; + public Future uploadFiles(Set toUpload,ZenodoDeposition deposition) throws ZenodoException, ConfigurationException; /** * Publishes @param dep, setting/updateing DOI reference into @param toUpdate @@ -82,7 +84,8 @@ public interface Ckan2Zenodo { * @param toUpdate * @return * @throws ZenodoException + * @throws ConfigurationException */ - public ZenodoDeposition publish(ZenodoDeposition dep, CkanItemDescriptor toUpdate) throws ZenodoException; + public ZenodoDeposition publish(ZenodoDeposition dep, CkanItemDescriptor toUpdate) throws ZenodoException, ConfigurationException; } diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java index 720f535..be98885 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java @@ -47,7 +47,7 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{ } @Override - public ZenodoDeposition updatedMetadata(ZenodoDeposition toUpdate) throws ZenodoException { + public ZenodoDeposition updatedMetadata(ZenodoDeposition toUpdate) throws ZenodoException, ConfigurationException { if(toUpdate.getSubmitted()) Zenodo.get().unlockPublished(toUpdate.getId()); @@ -61,7 +61,7 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{ } @Override - public Future uploadFiles(Set toUpload, ZenodoDeposition deposition) throws ZenodoException { + public Future uploadFiles(Set toUpload, ZenodoDeposition deposition) throws ZenodoException, ConfigurationException { final Zenodo z=Zenodo.get(); if(deposition.getSubmitted()) @@ -86,7 +86,7 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{ } @Override - public ZenodoDeposition publish(ZenodoDeposition dep, CkanItemDescriptor toUpdate) throws ZenodoException { + public ZenodoDeposition publish(ZenodoDeposition dep, CkanItemDescriptor toUpdate) throws ZenodoException, ConfigurationException { if(dep.getSubmitted()) Zenodo.get().unlockPublished(dep.getId()); diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/LocalConfiguration.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/LocalConfiguration.java index 8105cb0..e2ab171 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/LocalConfiguration.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/LocalConfiguration.java @@ -16,12 +16,15 @@ public class LocalConfiguration { public static class Configuration{ public static final String THREAD_POOL_SIZE="THREAD_POOL_SIZE"; + public static final String ZENODO_ENDPOINT_CATEGORY="ZENODO_ENDPOINT_CATEGORY"; + public static final String ZENODO_ENDPOINT_PLATFORM="ZENODO_ENDPOINT_PLATFORM"; } public static final Map defaultConfigurationMap=new HashMap(); static { defaultConfigurationMap.put(Configuration.THREAD_POOL_SIZE, "5"); - + defaultConfigurationMap.put(Configuration.ZENODO_ENDPOINT_CATEGORY,"Repository"); + defaultConfigurationMap.put(Configuration.ZENODO_ENDPOINT_PLATFORM,"Zenodo"); } private static LocalConfiguration instance=null; diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/Zenodo.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/Zenodo.java index 00ebd3c..2f6ad22 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/Zenodo.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/clients/Zenodo.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.net.URL; import java.nio.file.Files; import java.nio.file.StandardCopyOption; +import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.Future; @@ -14,8 +15,14 @@ import javax.ws.rs.client.Entity; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.gcube.common.resources.gcore.ServiceEndpoint; +import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint; import org.gcube.data.publishing.ckan2zenodo.Fixer; +import org.gcube.data.publishing.ckan2zenodo.LocalConfiguration; +import org.gcube.data.publishing.ckan2zenodo.LocalConfiguration.Configuration; +import org.gcube.data.publishing.ckan2zenodo.commons.IS; import org.gcube.data.publishing.ckan2zenodo.model.ZenodoCredentials; +import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException; import org.gcube.data.publishing.ckan2zenodo.model.faults.ZenodoException; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.FileDeposition; @@ -61,9 +68,16 @@ public class Zenodo { } - public static final Zenodo get() { - // READ FROM IS - throw new RuntimeException("IMPLEMENT THIS"); + public static final Zenodo get() throws ConfigurationException { + String eprCategory=LocalConfiguration.getProperty(Configuration.ZENODO_ENDPOINT_CATEGORY); + String eprPlatform=LocalConfiguration.getProperty(Configuration.ZENODO_ENDPOINT_PLATFORM); + List eps=IS.queryForServiceEndpoints(eprCategory,eprPlatform); + + if(eps.isEmpty()) throw new ConfigurationException("No Zenodo Credentials found ("+eprCategory+" : "+eprPlatform+")"); + if(eps.size()>1) throw new ConfigurationException("Multiple ["+eps.size()+"] Zenodo Credentials found ("+eprCategory+" : "+eprPlatform+")"); + AccessPoint se=eps.get(0).profile().accessPoints().iterator().next(); + ZenodoCredentials toSet=new ZenodoCredentials(se.password(), se.address()); + return new Zenodo(toSet); } diff --git a/src/test/java/org/gcube/tests/GCatTests.java b/src/test/java/org/gcube/tests/GCatTests.java index c7f5458..c65dd22 100644 --- a/src/test/java/org/gcube/tests/GCatTests.java +++ b/src/test/java/org/gcube/tests/GCatTests.java @@ -5,7 +5,7 @@ import java.net.MalformedURLException; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.data.publishing.ckan2zenodo.clients.GCat; import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor; -import org.junit.Before; +import org.gcube.gcat.client.Item; import org.junit.Test; public class GCatTests { @@ -21,4 +21,15 @@ public class GCatTests { System.out.println(item.getProfile()); } + + @Test + public void publishUpdate() throws MalformedURLException { + TokenSetter.set("/gcube/devsec/devVRE"); + System.out.println(SecurityTokenProvider.instance.get()); + String json=TestCommons.convertStreamToString(GCatTests.class.getResourceAsStream("/ResearchObject.json")); + new Item().create(json); +// GCat.updateItem(toUpdate); + } + + }