From fd3dbd3dd684de26dce818c8bec5cf66ab72f739 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Tue, 19 Mar 2024 11:27:16 +0100 Subject: [PATCH] REL: 0.1.0-rc6 --- .../fdo/manager/service/fdo/FDOApiImpl.java | 10 +++ .../service/mock/MockRepositoryFactory.java | 71 +++++++++++++++++++ pom.xml | 2 +- 3 files changed, 82 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java index 6489c54..c39937e 100644 --- a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java +++ b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java @@ -124,6 +124,16 @@ public class FDOApiImpl extends BaseController implements FdoApi { resolved.getPID(), resolved.isFDO()); Links self = linkSelf(getOperations(getClass()).resolvePID(pid[0], pid[1])); + if (resolved.isFDO()) { + FDO fdo = resolved.toFDO(); + if (fdo.getData() != null) { + data.setDataPid(fdo.getData().getPID()); + } + if (fdo.getMetadata() != null) { + data.setMetadataPid(fdo.getMetadata().getPID()); + } + } + return new ResolvePID200Response().data(data).links(self); } } diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/mock/MockRepositoryFactory.java b/application/src/main/java/com/indiscale/fdo/manager/service/mock/MockRepositoryFactory.java index fb61eff..515ffbf 100644 --- a/application/src/main/java/com/indiscale/fdo/manager/service/mock/MockRepositoryFactory.java +++ b/application/src/main/java/com/indiscale/fdo/manager/service/mock/MockRepositoryFactory.java @@ -1,32 +1,103 @@ package com.indiscale.fdo.manager.service.mock; +import com.google.gson.JsonObject; import com.indiscale.fdo.DelegatorFdo; +import com.indiscale.fdo.api.Data; +import com.indiscale.fdo.api.DataProfile; import com.indiscale.fdo.api.FDO; import com.indiscale.fdo.api.FdoComponent; import com.indiscale.fdo.api.FdoUpdate; +import com.indiscale.fdo.api.Metadata; +import com.indiscale.fdo.api.MetadataProfile; import com.indiscale.fdo.api.RepositoryConfig; import com.indiscale.fdo.api.RepositoryConnection; import com.indiscale.fdo.api.RepositoryConnectionFactory; import com.indiscale.fdo.api.RepositoryType; import com.indiscale.fdo.api.TokenAuthenticationInfo; import com.indiscale.fdo.api.ValidationException; +import java.io.IOException; +import java.io.InputStream; import java.util.UUID; class MockRepository implements RepositoryConnection { + public abstract static class ComponentDelegator<T extends FdoComponent> implements FdoComponent { + + protected T delegate; + private String id; + + public ComponentDelegator(T data) { + this.id = "some.prefix/" + UUID.randomUUID().toString(); + this.delegate = data; + } + + @Override + public String getPID() { + return id; + } + + @Override + public InputStream getInputStream() throws IOException { + return delegate.getInputStream(); + } + + @Override + public JsonObject getAttributes() { + return delegate.getAttributes(); + } + } + + public static class MockMetadata extends ComponentDelegator<Metadata> implements Metadata { + + public MockMetadata(Metadata metadata) { + super(metadata); + } + + @Override + public MetadataProfile getProfile() { + return delegate.getProfile(); + } + } + + public static class MockData extends ComponentDelegator<Data> implements Data { + + public MockData(Data data) { + super(data); + } + + @Override + public DataProfile getProfile() { + return delegate.getProfile(); + } + } + public static class MockFDO extends DelegatorFdo { private final String pid; + private MockData data; + private MockMetadata metadata; public MockFDO(FDO fdo) { super(fdo); pid = "some.prefix/" + UUID.randomUUID().toString(); + data = new MockData(fdo.getData()); + metadata = new MockMetadata(fdo.getMetadata()); } @Override public String getPID() { return pid; } + + @Override + public Data getData() { + return data; + } + + @Override + public Metadata getMetadata() { + return metadata; + } } private final String id; diff --git a/pom.xml b/pom.xml index 9743308..5884ad8 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ <groupId>com.indiscale.fdo</groupId> <artifactId>fdo-manager-service</artifactId> <packaging>pom</packaging> - <version>0.1.0-rc5</version> + <version>0.1.0-rc6</version> <modules> <module>api</module> <module>application</module> -- GitLab