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 6489c54b353e333c3c8ef9f6194fa71e61016c09..c39937e913552f16df49812739ff7f8a4c6da137 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 fb61effba003eb0d0a80656821d6e1980ee13b7a..515ffbf1262a355c691e3f79e8e4585a34b6200d 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 9743308bfda70d878dc3ee3a3327652e3fa3033f..5884ad8a6b85f94819d13541ff74c6703031da08 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>