import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jetty.client.HttpClient;
import org.openhab.binding.volvooncall.internal.handler.VehicleHandler;
import org.openhab.binding.volvooncall.internal.handler.VehicleStateDescriptionProvider;
import org.openhab.binding.volvooncall.internal.handler.VolvoOnCallBridgeHandler;
private final Logger logger = LoggerFactory.getLogger(VolvoOnCallHandlerFactory.class);
private final VehicleStateDescriptionProvider stateDescriptionProvider;
private final Gson gson;
- private final HttpClient httpClient;
+ private final HttpClientFactory httpClientFactory;
@Activate
public VolvoOnCallHandlerFactory(@Reference VehicleStateDescriptionProvider provider,
@Reference HttpClientFactory httpClientFactory) {
this.stateDescriptionProvider = provider;
- this.httpClient = httpClientFactory.createHttpClient(BINDING_ID);
+ this.httpClientFactory = httpClientFactory;
this.gson = new GsonBuilder()
.registerTypeAdapter(ZonedDateTime.class,
(JsonDeserializer<ZonedDateTime>) (json, type, jsonDeserializationContext) -> ZonedDateTime
protected @Nullable ThingHandler createHandler(Thing thing) {
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
if (APIBRIDGE_THING_TYPE.equals(thingTypeUID)) {
- return new VolvoOnCallBridgeHandler((Bridge) thing, gson, httpClient);
+ return new VolvoOnCallBridgeHandler((Bridge) thing, gson, httpClientFactory);
} else if (VEHICLE_THING_TYPE.equals(thingTypeUID)) {
return new VehicleHandler(thing, stateDescriptionProvider);
}
import org.openhab.binding.volvooncall.internal.dto.VocAnswer;
import org.openhab.core.cache.ExpiringCacheMap;
import org.openhab.core.id.InstanceUUID;
+import org.openhab.core.io.net.http.HttpClientFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final HttpClient httpClient;
private final ApiBridgeConfiguration configuration;
- public VocHttpApi(ApiBridgeConfiguration configuration, Gson gson, HttpClient httpClient)
- throws VolvoOnCallException {
+ public VocHttpApi(String clientName, ApiBridgeConfiguration configuration, Gson gson,
+ HttpClientFactory httpClientFactory) throws VolvoOnCallException {
this.gson = gson;
this.cache = new ExpiringCacheMap<>(120 * 1000);
this.configuration = configuration;
- this.httpClient = httpClient;
+ this.httpClient = httpClientFactory.createHttpClient(clientName);
httpClient.setUserAgentField(new HttpField(HttpHeader.USER_AGENT, "openhab/voc_binding/" + InstanceUUID.get()));
try {
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jetty.client.HttpClient;
import org.openhab.binding.volvooncall.internal.VolvoOnCallException;
import org.openhab.binding.volvooncall.internal.api.VocHttpApi;
import org.openhab.binding.volvooncall.internal.config.ApiBridgeConfiguration;
import org.openhab.binding.volvooncall.internal.discovery.VolvoVehicleDiscoveryService;
import org.openhab.binding.volvooncall.internal.dto.CustomerAccounts;
+import org.openhab.core.io.net.http.HttpClientFactory;
import org.openhab.core.thing.Bridge;
import org.openhab.core.thing.ChannelUID;
import org.openhab.core.thing.ThingStatus;
import org.openhab.core.thing.ThingStatusDetail;
import org.openhab.core.thing.binding.BaseBridgeHandler;
import org.openhab.core.thing.binding.ThingHandlerService;
+import org.openhab.core.thing.util.ThingWebClientUtil;
import org.openhab.core.types.Command;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final Logger logger = LoggerFactory.getLogger(VolvoOnCallBridgeHandler.class);
private final Gson gson;
- private final HttpClient httpClient;
+ private final HttpClientFactory httpClientFactory;
private @Nullable VocHttpApi api;
- public VolvoOnCallBridgeHandler(Bridge bridge, Gson gson, HttpClient httpClient) {
+ public VolvoOnCallBridgeHandler(Bridge bridge, Gson gson, HttpClientFactory httpClientFactory) {
super(bridge);
this.gson = gson;
- this.httpClient = httpClient;
+ this.httpClientFactory = httpClientFactory;
}
@Override
ApiBridgeConfiguration configuration = getConfigAs(ApiBridgeConfiguration.class);
try {
- VocHttpApi vocApi = new VocHttpApi(configuration, gson, httpClient);
+ String clientName = ThingWebClientUtil.buildWebClientConsumerName(thing.getUID(), null);
+ VocHttpApi vocApi = new VocHttpApi(clientName, configuration, gson, httpClientFactory);
CustomerAccounts account = vocApi.getURL("customeraccounts/", CustomerAccounts.class);
if (account.username != null) {
updateStatus(ThingStatus.ONLINE, ThingStatusDetail.NONE, account.username);