2 * Copyright (c) 2010-2023 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.enocean.internal.transceiver;
15 import java.lang.reflect.ParameterizedType;
17 import org.openhab.binding.enocean.internal.EnOceanException;
18 import org.openhab.binding.enocean.internal.messages.Response;
22 * @author Daniel Weber - Initial contribution
24 public abstract class ResponseListener<T extends Response> {
26 protected Class<T> persistentClass;
28 @SuppressWarnings("unchecked")
29 public ResponseListener() {
30 this.persistentClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
31 .getActualTypeArguments()[0];
34 public abstract void responseReceived(T response);
36 public abstract void responseTimeOut();
38 public void handleResponse(Response response) throws EnOceanException {
40 responseReceived(persistentClass.getConstructor(Response.class).newInstance(response));
41 } catch (Exception e) {
42 throw new EnOceanException(e.getMessage());