Skip to content

Commit

Permalink
Merge pull request #4064 from MDeLuise/fix-kapuaIllegalArgument
Browse files Browse the repository at this point in the history
🐛 [REST API] Fix `ServiceConfigurations` to return `KapuaIllegalArgument` instead of `204`
  • Loading branch information
Coduz authored Jul 1, 2024
2 parents 8591472 + c090c8a commit 646e283
Showing 1 changed file with 21 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

import org.eclipse.kapua.KapuaEntityNotFoundException;
import org.eclipse.kapua.KapuaException;
import org.eclipse.kapua.KapuaIllegalArgumentException;
import org.eclipse.kapua.app.api.core.model.ScopeId;
import org.eclipse.kapua.app.api.core.resources.AbstractKapuaResource;
import org.eclipse.kapua.commons.configuration.metatype.EmptyTocd;
Expand Down Expand Up @@ -86,10 +87,11 @@ public Response update(
}
for (ServiceComponentConfiguration serviceComponentConfiguration : serviceConfiguration.getComponentConfigurations()) {
Class<KapuaService> configurableServiceClass = (Class<KapuaService>) Class.forName(serviceComponentConfiguration.getId()).asSubclass(KapuaService.class);
if (KapuaConfigurableService.class.isAssignableFrom(configurableServiceClass)) {
KapuaConfigurableService configurableService = (KapuaConfigurableService) locator.getService(configurableServiceClass);
configurableService.setConfigValues(scopeId, account.getScopeId(), serviceComponentConfiguration.getProperties());
if (!KapuaConfigurableService.class.isAssignableFrom(configurableServiceClass)) {
throw new KapuaIllegalArgumentException("serviceComponentConfiguration.id", serviceComponentConfiguration.getId());
}
KapuaConfigurableService configurableService = (KapuaConfigurableService) locator.getService(configurableServiceClass);
configurableService.setConfigValues(scopeId, account.getScopeId(), serviceComponentConfiguration.getProperties());
}
return Response.noContent().build();
}
Expand All @@ -102,17 +104,18 @@ public ServiceComponentConfiguration getComponent(
@PathParam("serviceId") String serviceId
) throws KapuaException, ClassNotFoundException {
Class<KapuaService> configurableServiceClass = (Class<KapuaService>) Class.forName(serviceId).asSubclass(KapuaService.class);
if (KapuaConfigurableService.class.isAssignableFrom(configurableServiceClass)) {
KapuaConfigurableService configurableService = (KapuaConfigurableService) locator.getService(configurableServiceClass);
KapuaTocd metadata = configurableService.getConfigMetadata(scopeId);
Map<String, Object> values = configurableService.getConfigValues(scopeId);
if (metadata != null && !(metadata instanceof EmptyTocd)) {
ServiceComponentConfiguration serviceComponentConfiguration = serviceConfigurationFactory.newComponentConfigurationInstance(metadata.getId());
serviceComponentConfiguration.setDefinition(metadata);
serviceComponentConfiguration.setName(metadata.getName());
serviceComponentConfiguration.setProperties(values);
return serviceComponentConfiguration;
}
if (!KapuaConfigurableService.class.isAssignableFrom(configurableServiceClass)) {
throw new KapuaIllegalArgumentException("service.pid", serviceId);
}
KapuaConfigurableService configurableService = (KapuaConfigurableService) locator.getService(configurableServiceClass);
KapuaTocd metadata = configurableService.getConfigMetadata(scopeId);
Map<String, Object> values = configurableService.getConfigValues(scopeId);
if (metadata != null && !(metadata instanceof EmptyTocd)) {
ServiceComponentConfiguration serviceComponentConfiguration = serviceConfigurationFactory.newComponentConfigurationInstance(metadata.getId());
serviceComponentConfiguration.setDefinition(metadata);
serviceComponentConfiguration.setName(metadata.getName());
serviceComponentConfiguration.setProperties(values);
return serviceComponentConfiguration;
}
return null;
}
Expand All @@ -131,10 +134,11 @@ public Response updateComponent(
throw new KapuaEntityNotFoundException(Account.TYPE, scopeId);
}
Class<KapuaService> configurableServiceClass = (Class<KapuaService>) Class.forName(serviceId).asSubclass(KapuaService.class);
if (KapuaConfigurableService.class.isAssignableFrom(configurableServiceClass)) {
KapuaConfigurableService configurableService = (KapuaConfigurableService) locator.getService(configurableServiceClass);
configurableService.setConfigValues(scopeId, account.getScopeId(), serviceComponentConfiguration.getProperties());
if (!KapuaConfigurableService.class.isAssignableFrom(configurableServiceClass)) {
throw new KapuaIllegalArgumentException("service.pid", serviceId);
}
KapuaConfigurableService configurableService = (KapuaConfigurableService) locator.getService(configurableServiceClass);
configurableService.setConfigValues(scopeId, account.getScopeId(), serviceComponentConfiguration.getProperties());
return Response.noContent().build();
}

Expand Down

0 comments on commit 646e283

Please sign in to comment.