2 * Copyright (c) 2010-2020 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.avmfritz.internal.hardware.callbacks;
15 import static org.eclipse.jetty.http.HttpMethod.GET;
17 import java.io.StringReader;
19 import javax.xml.bind.JAXBException;
20 import javax.xml.bind.Unmarshaller;
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.openhab.binding.avmfritz.internal.dto.templates.TemplateListModel;
24 import org.openhab.binding.avmfritz.internal.handler.AVMFritzBaseBridgeHandler;
25 import org.openhab.binding.avmfritz.internal.hardware.FritzAhaWebInterface;
26 import org.openhab.binding.avmfritz.internal.util.JAXBUtils;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
31 * Callback implementation for updating templates from a xml response.
33 * @author Christoph Weitkamp - Initial contribution
36 public class FritzAhaUpdateTemplatesCallback extends FritzAhaReauthCallback {
38 private final Logger logger = LoggerFactory.getLogger(FritzAhaUpdateTemplatesCallback.class);
40 private static final String WEBSERVICE_COMMAND = "switchcmd=gettemplatelistinfos";
42 private final AVMFritzBaseBridgeHandler handler;
47 * @param webInterface web interface to FRITZ!Box
48 * @param handler handler that will update things
50 public FritzAhaUpdateTemplatesCallback(FritzAhaWebInterface webInterface, AVMFritzBaseBridgeHandler handler) {
51 super(WEBSERVICE_PATH, WEBSERVICE_COMMAND, webInterface, GET, 1);
52 this.handler = handler;
56 public void execute(int status, String response) {
57 super.execute(status, response);
58 logger.trace("Received response '{}'", response);
59 if (isValidRequest()) {
61 Unmarshaller unmarshaller = JAXBUtils.JAXBCONTEXT_TEMPLATES.createUnmarshaller();
62 TemplateListModel model = (TemplateListModel) unmarshaller.unmarshal(new StringReader(response));
64 handler.addTemplateList(model.getTemplates());
66 logger.debug("no template in response");
68 } catch (JAXBException e) {
69 logger.error("Exception creating Unmarshaller: {}", e.getLocalizedMessage(), e);
72 logger.debug("request is invalid: {}", status);