Resources

Up! is designed around Resource definitions and Resource meta-data.

  • Any POJO can be defined as a resource.
  • POJO-less (Map backed) Resources are also supported using Resource.Builder to define fields and types.
  • A resource must define either a Service or a Repository.
  • A resource must have an identifier

Resources can be defined simply if using Registry defaults:

resourceRegistry.registerResource(University.class, Course.class);

Or using a resource builder for more control or customization:

Resource resource = Resource.builder(University.class)
                .setName("university")
                .setPluralName("universities").build();

Up! annotation may also be used to define name (@ApiName) and pluralName (@Plural)

Settings

* Denotes that the value is defaulted to the value defined in Registry settings.

name

The resourceName

Can be specified using a Resource.Builder

.name("university");

but perhaps more conveniently done using annotations

@ApiName("university")
public class University 

pluralName

The plural resourceName used for collection endpoints. By default appends ‘s’ to apiName.

Can be specified using a Resource.Builder

.pluralName("universities");

but perhaps more conveniently done using annotations.

@Plural("universities")
public class University 

* basePath

The base url path for a resource.

.basePath("universities");

* ControllerMethodAccess

API access for a resource

.controllerMethodAccess(ControllerMethodAccess.allEnabled())

* DefaultPagination

Sets the default pagination rules for a resource

.defaultPagination(Pagination.disabled())

* ExcludeFrameworkFilters

Up! provides default service filters to apply to filter based services in addition to any default service filters configured above. Setting to true will disable all default Up! service filters, impacting out of the box functionality.

.excludeFrameworkFilters(false)

* Repository

A repository for persistence operations.

A repository is optional if a service is provided. The default filter based service requires a repository.

If neither a service or repository is specified a default repository may be provided using a RepositoryFactory configured in Registry Settings.

An exception will be thrown if a repository is not available.

See Repositories for more detail.

.repository(instance)

* RestrictedFieldsProvider

Restricts serialized fields for a resource, defaulted by RegistrySettings

.restrictedFieldsProvider(ResourcePathsProvider.empty())

Service

The internal service for a resource. By default a filter based service is used.

.service(instance)

See Services for more detail.

* ServiceMethodAccess

Internal service access for a resource.

.serviceMethodAccess(ServiceMethodAccess.allEnabled())

* ServiceFilters

When using filter based service, adds resource specific service filters.

.serviceFilters(Object...)

* SparseFieldsDefaultsProvider

Provides default fields to serialize for a resource

.sparseFieldsProvider(ResourcePathsProvider.allApiFields())

This allows setting the default fields to be a subset of all fields, forcing usage of sparse field requests.