1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.fourthline.cling.test.data;
17
18 import org.fourthline.cling.model.meta.Device;
19 import org.fourthline.cling.model.meta.DeviceDetails;
20 import org.fourthline.cling.model.meta.DeviceIdentity;
21 import org.fourthline.cling.model.meta.Icon;
22 import org.fourthline.cling.model.meta.Service;
23 import org.fourthline.cling.model.profile.DeviceDetailsProvider;
24 import org.fourthline.cling.model.types.DeviceType;
25
26 import java.lang.reflect.Constructor;
27
28
29
30
31 public abstract class SampleDevice {
32
33 public DeviceIdentity identity;
34 public Service service;
35 public Device embeddedDevice;
36
37 protected SampleDevice(DeviceIdentity identity, Service service, Device embeddedDevice) {
38 this.identity = identity;
39 this.service = service;
40 this.embeddedDevice = embeddedDevice;
41 }
42
43 public DeviceIdentity getIdentity() {
44 return identity;
45 }
46
47 public Service getService() {
48 return service;
49 }
50
51 public Device getEmbeddedDevice() {
52 return embeddedDevice;
53 }
54
55 public abstract DeviceType getDeviceType();
56 public abstract DeviceDetails getDeviceDetails();
57 public abstract DeviceDetailsProvider getDeviceDetailsProvider();
58 public abstract Icon[] getIcons();
59
60 public <D extends Device> D newInstance(Constructor<D> deviceConstructor) {
61 return newInstance(deviceConstructor, false);
62 }
63
64 public <D extends Device> D newInstance(Constructor<D> deviceConstructor, boolean useProvider) {
65 try {
66 if (useProvider) {
67 return deviceConstructor.newInstance(
68 getIdentity(), getDeviceType(), getDeviceDetailsProvider(),
69 getIcons(), getService(), getEmbeddedDevice()
70 );
71 }
72 return deviceConstructor.newInstance(
73 getIdentity(), getDeviceType(), getDeviceDetails(),
74 getIcons(), getService(), getEmbeddedDevice()
75 );
76 } catch (Exception ex) {
77 throw new RuntimeException(ex);
78 }
79 }
80 }