mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 08:25:44 +01:00
User Root Resource: Use CDI Provider for subresources.
Resources are request scoped and we need only one sub resource per request. That is, injecting all subresources (and their transitive inejctions)in the constructor builds a lot of objects that are never used. Solution: Inject provider, that lazily inject the needed subresources on demand.
This commit is contained in:
@@ -2,28 +2,30 @@ package sonia.scm.api.v2.resources;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import javax.inject.Provider;
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
@Path(UserRootResource.USERS_PATH_V2)
|
||||
public class UserRootResource {
|
||||
|
||||
public static final String USERS_PATH_V2 = "v2/users/";
|
||||
private final UserCollectionResource userCollectionResource;
|
||||
private final UserResource userResource;
|
||||
private final Provider<UserCollectionResource> userCollectionResource;
|
||||
private final Provider<UserResource> userResource;
|
||||
|
||||
@Inject
|
||||
public UserRootResource(UserCollectionResource userCollectionResource, UserResource userResource) {
|
||||
public UserRootResource(Provider<UserCollectionResource> userCollectionResource,
|
||||
Provider<UserResource> userResource) {
|
||||
this.userCollectionResource = userCollectionResource;
|
||||
this.userResource = userResource;
|
||||
}
|
||||
|
||||
@Path("")
|
||||
public UserCollectionResource getUserCollectionResource() {
|
||||
return userCollectionResource;
|
||||
return userCollectionResource.get();
|
||||
}
|
||||
|
||||
@Path("{id}")
|
||||
public UserResource getUserResource() {
|
||||
return userResource;
|
||||
return userResource.get();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user