Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@
package com.metaformsystems.redline.api.controller;

import com.metaformsystems.redline.api.dto.request.DataPlaneRegistrationRequest;
import com.metaformsystems.redline.api.dto.request.DataspaceRequest;
import com.metaformsystems.redline.api.dto.request.ParticipantDeployment;
import com.metaformsystems.redline.api.dto.request.PartnerReferenceRequest;
import com.metaformsystems.redline.api.dto.request.ServiceProvider;
import com.metaformsystems.redline.api.dto.request.TenantRegistration;
import com.metaformsystems.redline.api.dto.response.Dataspace;
import com.metaformsystems.redline.api.dto.response.DataspaceResponse;
import com.metaformsystems.redline.api.dto.response.Participant;
import com.metaformsystems.redline.api.dto.response.PartnerReference;
import com.metaformsystems.redline.api.dto.response.ServiceProviderResponse;
import com.metaformsystems.redline.api.dto.response.Tenant;
import com.metaformsystems.redline.domain.service.ServiceProviderService;
import com.metaformsystems.redline.domain.service.TenantService;
Expand Down Expand Up @@ -57,13 +59,19 @@ public TenantController(ServiceProviderService serviceProviderService, TenantSer
this.serviceProviderService = serviceProviderService;
}

@PostMapping("dataspaces")
public ResponseEntity<DataspaceResponse> createDataspace(@RequestBody DataspaceRequest dataspace) {
var saved = serviceProviderService.createDataspace(dataspace);
return ResponseEntity.ok(saved);
}

@GetMapping("dataspaces")
// @PreAuthorize("hasRole('USER')")
@Operation(summary = "Get all dataspaces", description = "Retrieves a list of all available dataspaces")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Successfully retrieved dataspaces")
})
public ResponseEntity<List<Dataspace>> getDataspaces() {
public ResponseEntity<List<DataspaceResponse>> getDataspaces() {
return ResponseEntity.ok(serviceProviderService.getDataspaces());
}

Expand All @@ -73,7 +81,7 @@ public ResponseEntity<List<Dataspace>> getDataspaces() {
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Successfully retrieved service providers")
})
public ResponseEntity<List<com.metaformsystems.redline.api.dto.response.ServiceProvider>> getServiceProviders() {
public ResponseEntity<List<ServiceProviderResponse>> getServiceProviders() {
return ResponseEntity.ok(serviceProviderService.getServiceProviders());
}

Expand All @@ -82,10 +90,10 @@ public ResponseEntity<List<com.metaformsystems.redline.api.dto.response.ServiceP
@Operation(summary = "Create a new service provider", description = "Registers a new service provider in the system")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Service provider successfully created",
content = @Content(schema = @Schema(implementation = com.metaformsystems.redline.api.dto.response.ServiceProvider.class))),
content = @Content(schema = @Schema(implementation = ServiceProviderResponse.class))),
@ApiResponse(responseCode = "400", description = "Invalid service provider data")
})
public ResponseEntity<com.metaformsystems.redline.api.dto.response.ServiceProvider> createServiceProvider(@RequestBody ServiceProvider serviceProvider) {
public ResponseEntity<ServiceProviderResponse> createServiceProvider(@RequestBody ServiceProvider serviceProvider) {
var saved = serviceProviderService.createServiceProvider(serviceProvider);
return ResponseEntity.ok(saved);
}
Expand Down Expand Up @@ -217,10 +225,10 @@ public ResponseEntity<List<PartnerReference>> getPartners(@PathVariable Long pro
@Parameter(name = "participantId", description = "Database ID of the participant", required = true)
@Parameter(name = "dataspaceId", description = "Database ID of the dataspace", required = true)
public ResponseEntity<PartnerReference> createPartner(@PathVariable Long providerId,
@PathVariable Long tenantId,
@PathVariable Long participantId,
@PathVariable Long dataspaceId,
@RequestBody PartnerReferenceRequest request) {
@PathVariable Long tenantId,
@PathVariable Long participantId,
@PathVariable Long dataspaceId,
@RequestBody PartnerReferenceRequest request) {
var partnerReference = tenantService.createPartnerReference(providerId, tenantId, participantId, dataspaceId, request);
// TODO auth check for provider access
return ResponseEntity.ok(partnerReference);
Expand All @@ -236,9 +244,9 @@ public ResponseEntity<PartnerReference> createPartner(@PathVariable Long provide
@Parameter(name = "serviceProviderId", description = "Database ID of the service provider", required = true)
@Parameter(name = "tenantId", description = "Database ID of the tenant", required = true)
@Parameter(name = "participantId", description = "Database ID of the participant", required = true)
public ResponseEntity<List<Dataspace>> getParticipantDataspaces(@PathVariable Long serviceProviderId,
@PathVariable Long tenantId,
@PathVariable Long participantId) {
public ResponseEntity<List<DataspaceResponse>> getParticipantDataspaces(@PathVariable Long serviceProviderId,
@PathVariable Long tenantId,
@PathVariable Long participantId) {
var dataspaces = tenantService.getParticipantDataspaces(participantId);
// TODO auth check for provider access
return ResponseEntity.ok(dataspaces);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2026 Metaform Systems, Inc.
*
* This program and the accompanying materials are made available under the
* terms of the Apache License, Version 2.0 which is available at
* https://www.apache.org/licenses/LICENSE-2.0
*
* SPDX-License-Identifier: Apache-2.0
*
* Contributors:
* Metaform Systems, Inc. - initial API and implementation
*
*/

package com.metaformsystems.redline.api.dto.request;

import java.util.Map;

public record DataspaceRequest(String name, Map<String, Object> properties) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@

package com.metaformsystems.redline.api.dto.response;

import java.util.Map;

/**
*
*/
public record Dataspace(Long id, String name, java.util.Map<String, Object> properties) {
public record DataspaceResponse(Long id, String name, Map<String, Object> properties) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@
/**
*
*/
public record ServiceProvider(Long id, String name) {
public record ServiceProviderResponse(Long id, String name) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@

package com.metaformsystems.redline.domain.service;

import com.metaformsystems.redline.api.dto.request.DataspaceRequest;
import com.metaformsystems.redline.api.dto.request.ServiceProvider;
import com.metaformsystems.redline.api.dto.response.Dataspace;
import com.metaformsystems.redline.api.dto.response.DataspaceResponse;
import com.metaformsystems.redline.api.dto.response.ServiceProviderResponse;
import com.metaformsystems.redline.domain.entity.Dataspace;
import com.metaformsystems.redline.domain.repository.DataspaceRepository;
import com.metaformsystems.redline.domain.repository.ServiceProviderRepository;
import org.springframework.stereotype.Service;
Expand All @@ -34,25 +37,36 @@ public ServiceProviderService(ServiceProviderRepository serviceProviderRepositor
}

@Transactional
public com.metaformsystems.redline.api.dto.response.ServiceProvider createServiceProvider(ServiceProvider provider) {
public DataspaceResponse createDataspace(DataspaceRequest dataspace) {
var entity = new Dataspace();
entity.setName(dataspace.name());
entity.setProperties(dataspace.properties());
var saved = dataspaceRepository.save(entity);
return new DataspaceResponse(saved.getId(), saved.getName(), saved.getProperties());
}

@Transactional
public ServiceProviderResponse createServiceProvider(ServiceProvider provider) {
var serviceProvider = new com.metaformsystems.redline.domain.entity.ServiceProvider();
serviceProvider.setName(provider.name());
var saved = serviceProviderRepository.save(serviceProvider);
return new com.metaformsystems.redline.api.dto.response.ServiceProvider(saved.getId(), saved.getName());
return new ServiceProviderResponse(saved.getId(), saved.getName());
}

@Transactional
public List<Dataspace> getDataspaces() {
public List<DataspaceResponse> getDataspaces() {
return dataspaceRepository.findAll().stream()
.map(dataspace -> new Dataspace(dataspace.getId(), dataspace.getName(), dataspace.getProperties()))
.map(dataspace -> new DataspaceResponse(dataspace.getId(), dataspace.getName(), dataspace.getProperties()))
.toList();
}

@Transactional
public List<com.metaformsystems.redline.api.dto.response.ServiceProvider> getServiceProviders() {
public List<ServiceProviderResponse> getServiceProviders() {
return serviceProviderRepository.findAll().stream()
.map(provider -> new com.metaformsystems.redline.api.dto.response.ServiceProvider(provider.getId(), provider.getName()))
.map(provider -> new ServiceProviderResponse(provider.getId(), provider.getName()))
.toList();
}


}

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import com.metaformsystems.redline.api.dto.request.ParticipantDeployment;
import com.metaformsystems.redline.api.dto.request.PartnerReferenceRequest;
import com.metaformsystems.redline.api.dto.request.TenantRegistration;
import com.metaformsystems.redline.api.dto.response.Dataspace;
import com.metaformsystems.redline.api.dto.response.DataspaceResponse;
import com.metaformsystems.redline.api.dto.response.Participant;
import com.metaformsystems.redline.api.dto.response.PartnerReference;
import com.metaformsystems.redline.api.dto.response.Tenant;
Expand Down Expand Up @@ -266,7 +266,7 @@ public List<PartnerReference> getPartnerReferences(Long participantId, Long data
}

@Transactional
public List<Dataspace> getParticipantDataspaces(Long participantId) {
public List<DataspaceResponse> getParticipantDataspaces(Long participantId) {
var participant = participantRepository.findById(participantId)
.orElseThrow(() -> new ObjectNotFoundException("Participant not found with id: " + participantId));
var dataspaceIds = participant.getDataspaceInfos().stream()
Expand All @@ -277,7 +277,7 @@ public List<Dataspace> getParticipantDataspaces(Long participantId) {
}
var dataspaces = dataspaceRepository.findAllById(dataspaceIds);
return dataspaces.stream()
.map(ds -> new Dataspace(ds.getId(), ds.getName(), ds.getProperties()))
.map(ds -> new DataspaceResponse(ds.getId(), ds.getName(), ds.getProperties()))
.toList();
}

Expand Down
Loading