mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-07 05:55:44 +01:00
Use abstract base class for json enrichment
This commit is contained in:
@@ -6,18 +6,13 @@ import sonia.scm.plugin.Extension;
|
|||||||
import sonia.scm.repository.GitRepositoryHandler;
|
import sonia.scm.repository.GitRepositoryHandler;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
import sonia.scm.web.JsonEnricherBase;
|
import sonia.scm.web.AbstractRepositoryJsonEnricher;
|
||||||
import sonia.scm.web.JsonEnricherContext;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
|
|
||||||
import static java.util.Collections.singletonMap;
|
|
||||||
import static sonia.scm.web.VndMediaType.REPOSITORY;
|
|
||||||
import static sonia.scm.web.VndMediaType.REPOSITORY_COLLECTION;
|
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
public class GitRepositoryConfigEnricher extends JsonEnricherBase {
|
public class GitRepositoryConfigEnricher extends AbstractRepositoryJsonEnricher {
|
||||||
|
|
||||||
private final Provider<ScmPathInfoStore> scmPathInfoStore;
|
private final Provider<ScmPathInfoStore> scmPathInfoStore;
|
||||||
private final RepositoryManager manager;
|
private final RepositoryManager manager;
|
||||||
@@ -30,29 +25,13 @@ public class GitRepositoryConfigEnricher extends JsonEnricherBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enrich(JsonEnricherContext context) {
|
protected void enrichRepositoryNode(JsonNode repositoryNode, String namespace, String name) {
|
||||||
if (resultHasMediaType(REPOSITORY, context)) {
|
|
||||||
JsonNode repositoryNode = context.getResponseEntity();
|
|
||||||
enrichRepositoryNode(repositoryNode);
|
|
||||||
} else if (resultHasMediaType(REPOSITORY_COLLECTION, context)) {
|
|
||||||
JsonNode repositoryCollectionNode = context.getResponseEntity().get("_embedded").withArray("repositories");
|
|
||||||
repositoryCollectionNode.elements().forEachRemaining(this::enrichRepositoryNode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void enrichRepositoryNode(JsonNode repositoryNode) {
|
|
||||||
String namespace = repositoryNode.get("namespace").asText();
|
|
||||||
String name = repositoryNode.get("name").asText();
|
|
||||||
|
|
||||||
if (GitRepositoryHandler.TYPE_NAME.equals(manager.get(new NamespaceAndName(namespace, name)).getType())) {
|
if (GitRepositoryHandler.TYPE_NAME.equals(manager.get(new NamespaceAndName(namespace, name)).getType())) {
|
||||||
String repositoryConfigLink = new LinkBuilder(scmPathInfoStore.get().get(), GitConfigResource.class)
|
String repositoryConfigLink = new LinkBuilder(scmPathInfoStore.get().get(), GitConfigResource.class)
|
||||||
.method("getRepositoryConfig")
|
.method("getRepositoryConfig")
|
||||||
.parameters(namespace, name)
|
.parameters(namespace, name)
|
||||||
.href();
|
.href();
|
||||||
|
addLink(repositoryNode, "configuration", repositoryConfigLink);
|
||||||
JsonNode newPullRequestNode = createObject(singletonMap("href", value(repositoryConfigLink)));
|
|
||||||
|
|
||||||
addPropertyNode(repositoryNode.get("_links"), "configuration", newPullRequestNode);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user