Search in sources :

Example 1 with FilteredClassAccessor

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;
}
Also used : PropertyAccessor(com.manydesigns.elements.reflection.PropertyAccessor) ClassAccessor(com.manydesigns.elements.reflection.ClassAccessor) JavaClassAccessor(com.manydesigns.elements.reflection.JavaClassAccessor) FilteredClassAccessor(com.manydesigns.elements.reflection.FilteredClassAccessor) FileObject(org.apache.commons.vfs2.FileObject) ApiResponses(io.swagger.v3.oas.annotations.responses.ApiResponses)

Aggregations

ClassAccessor (com.manydesigns.elements.reflection.ClassAccessor)1 FilteredClassAccessor (com.manydesigns.elements.reflection.FilteredClassAccessor)1 JavaClassAccessor (com.manydesigns.elements.reflection.JavaClassAccessor)1 PropertyAccessor (com.manydesigns.elements.reflection.PropertyAccessor)1 ApiResponses (io.swagger.v3.oas.annotations.responses.ApiResponses)1 FileObject (org.apache.commons.vfs2.FileObject)1