Skip to content

Commit ec92d02

Browse files
committed
refactor Brightness and Color into optional characteristics on base Lightbulb
maintaining compatibility with the now-deprecated DimmableLightbulb and ColorfulLightbulb interfaces
1 parent 97e7f1f commit ec92d02

File tree

7 files changed

+40
-31
lines changed

7 files changed

+40
-31
lines changed

src/main/java/com/beowulfe/hap/accessories/Lightbulb.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.beowulfe.hap.accessories;
22

33
import com.beowulfe.hap.*;
4+
import com.beowulfe.hap.accessories.characteristics.Brightness;
5+
import com.beowulfe.hap.accessories.characteristics.Color;
46
import com.beowulfe.hap.impl.services.LightbulbService;
57
import java.util.Collection;
68
import java.util.Collections;
9+
import java.util.Optional;
710
import java.util.concurrent.CompletableFuture;
811

912
/**
@@ -43,4 +46,16 @@ default Collection<Service> getServices() {
4346

4447
/** Unsubscribes from changes in the binary state of the light. */
4548
void unsubscribeLightbulbPowerState();
49+
50+
/** returns the optional implementation of Brightness */
51+
default Optional<Brightness> getBrightnessCharacteristic() {
52+
Optional<Brightness> result = Optional.empty();
53+
return result;
54+
}
55+
56+
/** returns the optional implementation of Color */
57+
default Optional<Color> getColorCharacteristics() {
58+
Optional<Color> result = Optional.empty();
59+
return result;
60+
}
4661
}

src/main/java/com/beowulfe/hap/accessories/DimmableLightbulb.java renamed to src/main/java/com/beowulfe/hap/accessories/characteristics/Brightness.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1-
package com.beowulfe.hap.accessories;
1+
package com.beowulfe.hap.accessories.characteristics;
22

33
import com.beowulfe.hap.HomekitCharacteristicChangeCallback;
44
import java.util.concurrent.CompletableFuture;
55

6-
/**
7-
* Extends {@link Lightbulb} with brightness values.
8-
*
9-
* @author Andy Lintner
10-
*/
11-
public interface DimmableLightbulb extends Lightbulb {
12-
6+
public interface Brightness {
137
/**
148
* Retrieves the current brightness of the light
159
*

src/main/java/com/beowulfe/hap/accessories/ColorfulLightbulb.java renamed to src/main/java/com/beowulfe/hap/accessories/characteristics/Color.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
package com.beowulfe.hap.accessories;
1+
package com.beowulfe.hap.accessories.characteristics;
22

33
import com.beowulfe.hap.HomekitCharacteristicChangeCallback;
44
import java.util.concurrent.CompletableFuture;
55

66
/**
7-
* Extends {@link Lightbulb} with color settings. This will usually be implemented along with {@link
8-
* DimmableLightbulb}, but not necessarily so.
7+
* Extends a Lightbulb with color settings. This will usually be implemented along with {@link
8+
* Brightness}, but not necessarily so.
99
*
1010
* @author Andy Lintner
1111
*/
12-
public interface ColorfulLightbulb extends Lightbulb {
13-
12+
public interface Color {
1413
/**
1514
* Retrieves the current hue of the light.
1615
*

src/main/java/com/beowulfe/hap/impl/characteristics/lightbulb/BrightnessCharacteristic.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package com.beowulfe.hap.impl.characteristics.lightbulb;
22

33
import com.beowulfe.hap.HomekitCharacteristicChangeCallback;
4-
import com.beowulfe.hap.accessories.DimmableLightbulb;
4+
import com.beowulfe.hap.accessories.characteristics.Brightness;
55
import com.beowulfe.hap.characteristics.EventableCharacteristic;
66
import com.beowulfe.hap.characteristics.IntegerCharacteristic;
77
import java.util.concurrent.CompletableFuture;
88

99
public class BrightnessCharacteristic extends IntegerCharacteristic
1010
implements EventableCharacteristic {
1111

12-
private final DimmableLightbulb lightbulb;
12+
private final Brightness lightbulb;
1313

14-
public BrightnessCharacteristic(DimmableLightbulb lightbulb) {
14+
public BrightnessCharacteristic(Brightness lightbulb) {
1515
super(
1616
"00000008-0000-1000-8000-0026BB765291",
1717
true,

src/main/java/com/beowulfe/hap/impl/characteristics/lightbulb/HueCharacteristic.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package com.beowulfe.hap.impl.characteristics.lightbulb;
22

33
import com.beowulfe.hap.HomekitCharacteristicChangeCallback;
4-
import com.beowulfe.hap.accessories.ColorfulLightbulb;
4+
import com.beowulfe.hap.accessories.characteristics.Color;
55
import com.beowulfe.hap.characteristics.EventableCharacteristic;
66
import com.beowulfe.hap.characteristics.FloatCharacteristic;
77
import java.util.concurrent.CompletableFuture;
88

99
public class HueCharacteristic extends FloatCharacteristic implements EventableCharacteristic {
1010

11-
private final ColorfulLightbulb lightbulb;
11+
private final Color lightbulb;
1212

13-
public HueCharacteristic(ColorfulLightbulb lightbulb) {
13+
public HueCharacteristic(Color lightbulb) {
1414
super(
1515
"00000013-0000-1000-8000-0026BB765291",
1616
true,

src/main/java/com/beowulfe/hap/impl/characteristics/lightbulb/SaturationCharacteristic.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package com.beowulfe.hap.impl.characteristics.lightbulb;
22

33
import com.beowulfe.hap.HomekitCharacteristicChangeCallback;
4-
import com.beowulfe.hap.accessories.ColorfulLightbulb;
4+
import com.beowulfe.hap.accessories.characteristics.Color;
55
import com.beowulfe.hap.characteristics.EventableCharacteristic;
66
import com.beowulfe.hap.characteristics.FloatCharacteristic;
77
import java.util.concurrent.CompletableFuture;
88

99
public class SaturationCharacteristic extends FloatCharacteristic
1010
implements EventableCharacteristic {
1111

12-
private final ColorfulLightbulb lightbulb;
12+
private final Color lightbulb;
1313

14-
public SaturationCharacteristic(ColorfulLightbulb lightbulb) {
14+
public SaturationCharacteristic(Color lightbulb) {
1515
super(
1616
"0000002F-0000-1000-8000-0026BB765291",
1717
true,

src/main/java/com/beowulfe/hap/impl/services/LightbulbService.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.beowulfe.hap.impl.services;
22

3-
import com.beowulfe.hap.accessories.ColorfulLightbulb;
4-
import com.beowulfe.hap.accessories.DimmableLightbulb;
53
import com.beowulfe.hap.accessories.Lightbulb;
64
import com.beowulfe.hap.impl.characteristics.common.PowerStateCharacteristic;
75
import com.beowulfe.hap.impl.characteristics.lightbulb.BrightnessCharacteristic;
@@ -23,13 +21,16 @@ public LightbulbService(Lightbulb lightbulb, String serviceName) {
2321
c -> lightbulb.subscribeLightbulbPowerState(c),
2422
() -> lightbulb.unsubscribeLightbulbPowerState()));
2523

26-
if (lightbulb instanceof DimmableLightbulb) {
27-
addCharacteristic(new BrightnessCharacteristic((DimmableLightbulb) lightbulb));
28-
}
24+
lightbulb
25+
.getBrightnessCharacteristic()
26+
.ifPresent(brightness -> addCharacteristic(new BrightnessCharacteristic(brightness)));
2927

30-
if (lightbulb instanceof ColorfulLightbulb) {
31-
addCharacteristic(new HueCharacteristic((ColorfulLightbulb) lightbulb));
32-
addCharacteristic(new SaturationCharacteristic((ColorfulLightbulb) lightbulb));
33-
}
28+
lightbulb
29+
.getColorCharacteristics()
30+
.ifPresent(
31+
color -> {
32+
addCharacteristic(new HueCharacteristic(color));
33+
addCharacteristic(new SaturationCharacteristic(color));
34+
});
3435
}
3536
}

0 commit comments

Comments
 (0)