use of com.manydesigns.elements.reflection.FilteredClassAccessor in project Portofino by ManyDesigns.
the class AbstractResourceAction method getConfiguration.
/**
* Returns the configuration of this action, filtered using permissions.
* @return the configuration.
*/
@io.swagger.v3.oas.annotations.Operation(operationId = "com.manydesigns.portofino.resourceactions.AbstractResourceAction#getConfiguration", description = "Returns the configuration of this action. " + "The actual type of the configuration object depends on the action class.")
@ApiResponses({ @ApiResponse(responseCode = "200", description = "The configuration object.") })
@Path(":configuration")
@GET
@Produces(MimeTypes.APPLICATION_JSON_UTF8)
public Object getConfiguration() {
Object configuration = actionInstance.getConfiguration();
if (getConfigurationClass() == null) {
return configuration;
}
ClassAccessor classAccessor = getConfigurationClassAccessor();
ClassAccessor filteredClassAccessor = filterAccordingToPermissions(classAccessor);
ResourceActionConfiguration filtered = (ResourceActionConfiguration) classAccessor.newInstance();
for (PropertyAccessor propertyAccessor : filteredClassAccessor.getProperties()) {
if (propertyAccessor.isWritable()) {
propertyAccessor.set(filtered, propertyAccessor.get(configuration));
}
}
filtered.init();
return filtered;
}
Aggregations