Interface RestCollection<P extends RestResource,R extends RestResource>
- Type Parameters:
P
- type of the parent resource. For a top level collection this should always beTopLevelResource
.R
- type of resource operated on by each view.
- All Known Subinterfaces:
AccountsCollection
,ChildCollection<P,
C>
- All Known Implementing Classes:
AccessCollection
,AccountsCollectionImpl
,AttentionSet
,BranchesCollection
,CachesCollection
,Capabilities
,CapabilitiesCollection
,ChangeEdits
,ChangeMessages
,ChangesCollection
,ChildProjectsCollection
,Comments
,CommitsCollection
,ConfigCollection
,DashboardsCollection
,DraftComments
,EmailsCollection
,ExperimentsCollection
,Files
,FilesCollection
,FilesInCommitCollection
,Fixes
,GroupsCollection
,IndexCollection
,IndexVersionsCollection
,LabelsCollection
,MembersCollection
,PluginsCollection
,ProjectsCollection
,Reviewers
,RevisionReviewers
,Revisions
,RobotComments
,SshKeys
,StarredChanges
,SubgroupsCollection
,SubmitRequirementsCollection
,TagsCollection
,TasksCollection
,TopMenuCollection
,Votes
public interface RestCollection<P extends RestResource,R extends RestResource>
A collection of resources accessible through a REST API.
To build a collection declare a resource, the map in a module, and the collection itself accepting the map:
public class MyResource implements RestResource { public static final TypeLiteral<RestView<MyResource>> MY_KIND = new TypeLiteral<RestView<MyResource>>() {}; } public class MyModule extends AbstractModule { @Override protected void configure() { DynamicMap.mapOf(binder(), MyResource.MY_KIND); get(MyResource.MY_KIND, "action").to(MyAction.class); } } public class MyCollection extends RestCollection<TopLevelResource, MyResource> { private final DynamicMap<RestView<MyResource>> views; @Inject MyCollection(DynamicMap<RestView<MyResource>> views) { this.views = views; } public DynamicMap<RestView<MyResource>> views() { return views; } }
To build a nested collection, implement ChildCollection
.
-
Method Summary
-
Method Details
-
list
Create a view to list the contents of the collection.The returned view should accept the parent type to scope the search, and may want to take a "q" parameter option to narrow the results.
- Returns:
- view to list the collection.
- Throws:
ResourceNotFoundException
- if the collection doesn't support listing.AuthException
- if the collection requires authentication.RestApiException
- if the collection cannot be listed.
-
parse
Parse a path component into a resource handle.- Parameters:
parent
- the handle to the collection.id
- string identifier supplied by the client. In a URL such as/changes/1234/abandon
this string is"1234"
.- Returns:
- a resource handle for the identified object.
- Throws:
ResourceNotFoundException
- the object does not exist, or the caller is not permitted to know if the resource exists.Exception
- if the implementation had any errors converting to a resource handle. This results in an HTTP 500 Internal Server Error.
-
views
DynamicMap<RestView<R>> views()Get the views that support this collection.Within a resource the views are accessed as
RESOURCE/plugin~view
.- Returns:
- map of views.
-