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