1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.atlassian.jira.rest.client.plugin;
18
19 import com.atlassian.httpclient.api.HttpClient;
20 import com.atlassian.plugin.remotable.api.service.http.HostHttpClient;
21 import org.osgi.framework.Bundle;
22 import org.osgi.framework.ServiceFactory;
23 import org.osgi.framework.ServiceRegistration;
24
25 import java.net.URI;
26
27 import static com.atlassian.plugin.remotable.spi.util.OsgiServiceProxy.wrapService;
28
29 abstract class AbstractRestClientServiceFactory<T> implements ServiceFactory
30 {
31 private static final URI BASE_URI = URI.create("/rest/api/latest");
32
33 @Override
34 public final Object getService(Bundle bundle, ServiceRegistration registration)
35 {
36 return getService(BASE_URI, getHttpClient(bundle));
37 }
38
39
40
41
42 @Override
43 public final void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
44 {
45 }
46
47 protected abstract T getService(URI baseUri, HttpClient httpClient);
48
49 protected final HttpClient getHttpClient(Bundle bundle)
50 {
51 return wrapService(bundle.getBundleContext(), HostHttpClient.class, getClass().getClassLoader());
52 }
53 }