Skip to content

Commit 1aa139b

Browse files
committed
Replaced PropertyKey with Tuple2
1 parent 3e3fcd1 commit 1aa139b

File tree

2 files changed

+27
-79
lines changed

2 files changed

+27
-79
lines changed

reduxfx-lib/src/main/java/com/netopyr/reduxfx/patcher/property/Accessors.java

+27-25
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import javafx.scene.control.ToggleButton;
99
import javafx.scene.layout.BorderPane;
1010
import javafx.scene.layout.Pane;
11+
import javaslang.Tuple;
12+
import javaslang.Tuple2;
1113
import javaslang.collection.Array;
1214
import javaslang.collection.HashMap;
1315
import javaslang.collection.Map;
@@ -23,31 +25,31 @@ public class Accessors {
2325

2426
private final Consumer<Object> dispatcher;
2527

26-
private Map<PropertyKey, Accessor> accessorMap = HashMap.empty();
27-
private Map<PropertyKey, Accessor> layoutAccessorMap = HashMap.empty();
28+
private Map<Tuple2<Class<?>, String>, Accessor> accessorMap = HashMap.empty();
29+
private Map<Tuple2<Class<?>, String>, Accessor> layoutAccessorMap = HashMap.empty();
2830

2931
public Accessors(Consumer<Object> dispatcher) {
3032
this.dispatcher = dispatcher;
3133
}
3234

3335
public void init(NodeBuilder nodeBuilder) {
34-
registerAccessor(new PropertyKey(ToggleButton.class, "toggleGroup"), new ToggleGroupAccessor(getPropertyGetter(ToggleButton.class, "toggleGroup").get(), dispatcher));
35-
registerAccessor(new PropertyKey(Labeled.class, "graphic"), new NodeAccessor(getPropertyGetter(Labeled.class, "graphic").get(), dispatcher, nodeBuilder));
36-
registerAccessor(new PropertyKey(BorderPane.class, "top"), new NodeAccessor(getPropertyGetter(BorderPane.class, "top").get(), dispatcher, nodeBuilder));
37-
registerAccessor(new PropertyKey(BorderPane.class, "right"), new NodeAccessor(getPropertyGetter(BorderPane.class, "right").get(), dispatcher, nodeBuilder));
38-
registerAccessor(new PropertyKey(BorderPane.class, "bottom"), new NodeAccessor(getPropertyGetter(BorderPane.class, "bottom").get(), dispatcher, nodeBuilder));
39-
registerAccessor(new PropertyKey(BorderPane.class, "left"), new NodeAccessor(getPropertyGetter(BorderPane.class, "left").get(), dispatcher, nodeBuilder));
40-
registerAccessor(new PropertyKey(BorderPane.class, "center"), new NodeAccessor(getPropertyGetter(BorderPane.class, "center").get(), dispatcher, nodeBuilder));
41-
registerAccessor(new PropertyKey(Node.class, "focused"), new FocusedAccessor(getPropertyGetter(Node.class, "focused").get(), dispatcher));
36+
registerAccessor(Tuple.of(ToggleButton.class, "toggleGroup"), new ToggleGroupAccessor(getPropertyGetter(ToggleButton.class, "toggleGroup").get(), dispatcher));
37+
registerAccessor(Tuple.of(Labeled.class, "graphic"), new NodeAccessor(getPropertyGetter(Labeled.class, "graphic").get(), dispatcher, nodeBuilder));
38+
registerAccessor(Tuple.of(BorderPane.class, "top"), new NodeAccessor(getPropertyGetter(BorderPane.class, "top").get(), dispatcher, nodeBuilder));
39+
registerAccessor(Tuple.of(BorderPane.class, "right"), new NodeAccessor(getPropertyGetter(BorderPane.class, "right").get(), dispatcher, nodeBuilder));
40+
registerAccessor(Tuple.of(BorderPane.class, "bottom"), new NodeAccessor(getPropertyGetter(BorderPane.class, "bottom").get(), dispatcher, nodeBuilder));
41+
registerAccessor(Tuple.of(BorderPane.class, "left"), new NodeAccessor(getPropertyGetter(BorderPane.class, "left").get(), dispatcher, nodeBuilder));
42+
registerAccessor(Tuple.of(BorderPane.class, "center"), new NodeAccessor(getPropertyGetter(BorderPane.class, "center").get(), dispatcher, nodeBuilder));
43+
registerAccessor(Tuple.of(Node.class, "focused"), new FocusedAccessor(getPropertyGetter(Node.class, "focused").get(), dispatcher));
4244
}
4345

44-
public void registerAccessor(PropertyKey propertyKey, Accessor accessor) {
46+
public void registerAccessor(Tuple2<Class<?>, String> propertyKey, Accessor accessor) {
4547
cacheAccessor(propertyKey, accessor);
4648
}
4749

4850
public Option<Accessor> getAccessor(Node node, String propertyName) {
4951
final Class<? extends Node> nodeClass = node.getClass();
50-
final PropertyKey propertyKey = new PropertyKey(nodeClass, propertyName);
52+
final Tuple2<Class<?>, String> propertyKey = Tuple.of(nodeClass, propertyName);
5153

5254
return accessorMap.get(propertyKey)
5355
.orElse(() -> searchInCache(accessorMap, propertyKey)
@@ -59,7 +61,7 @@ public Option<Accessor> getAccessor(Node node, String propertyName) {
5961
return Option.none();
6062
}
6163
final Class<? extends Parent> parentClass = node.getParent().getClass();
62-
final PropertyKey layoutKey = new PropertyKey(parentClass, propertyName);
64+
final Tuple2<Class<?>, String> layoutKey = Tuple.of(parentClass, propertyName);
6365
return Pane.class.isAssignableFrom(parentClass) ?
6466
layoutAccessorMap.get(layoutKey)
6567
.orElse(() -> searchInCache(layoutAccessorMap, layoutKey)
@@ -70,36 +72,36 @@ public Option<Accessor> getAccessor(Node node, String propertyName) {
7072
});
7173
}
7274

73-
private Option<Accessor> searchInCache(Map<PropertyKey, Accessor> map, PropertyKey propertyKey) {
74-
final String propertyName = propertyKey.getName();
75-
for (Class<?> clazz = propertyKey.getNodeClass().getSuperclass(); clazz != null; clazz = clazz.getSuperclass()) {
76-
final Option<Accessor> accessor = map.get(new PropertyKey(clazz, propertyName));
75+
private Option<Accessor> searchInCache(Map<Tuple2<Class<?>, String>, Accessor> map, Tuple2<Class<?>, String> propertyKey) {
76+
final String propertyName = propertyKey._2;
77+
for (Class<?> clazz = propertyKey._1.getSuperclass(); clazz != null; clazz = clazz.getSuperclass()) {
78+
final Option<Accessor> accessor = map.get(Tuple.of(clazz, propertyName));
7779
if (accessor.isDefined()) {
7880
return accessor;
7981
}
8082
}
8183
return Option.none();
8284
}
8385

84-
private Accessor cacheAccessor(PropertyKey propertyKey, Accessor accessor) {
86+
private Accessor cacheAccessor(Tuple2<Class<?>, String> propertyKey, Accessor accessor) {
8587
accessorMap = doCacheAccessor(accessorMap, propertyKey, accessor);
8688
return accessor;
8789
}
8890

89-
private Accessor cacheLayoutAccessor(PropertyKey propertyKey, Accessor accessor) {
91+
private Accessor cacheLayoutAccessor(Tuple2<Class<?>, String> propertyKey, Accessor accessor) {
9092
layoutAccessorMap = doCacheAccessor(layoutAccessorMap, propertyKey, accessor);
9193
return accessor;
9294
}
9395

94-
private Map<PropertyKey, Accessor> doCacheAccessor(Map<PropertyKey, Accessor> map, PropertyKey propertyKey, Accessor accessor) {
95-
final Option<Method> getter = getGetterMethod(propertyKey.getNodeClass(), propertyKey.getName());
96+
private Map<Tuple2<Class<?>, String>, Accessor> doCacheAccessor(Map<Tuple2<Class<?>, String>, Accessor> map, Tuple2<Class<?>, String> propertyKey, Accessor accessor) {
97+
final Option<Method> getter = getGetterMethod(propertyKey._1, propertyKey._2);
9698
if (getter.isDefined()) {
9799
final Class<?> declaringClass = getter.get().getDeclaringClass();
98-
final String propertyName = propertyKey.getName();
99-
for (Class<?> clazz = propertyKey.getNodeClass(); !declaringClass.equals(clazz); clazz = clazz.getSuperclass()) {
100-
map = map.put(new PropertyKey(clazz, propertyName), accessor);
100+
final String propertyName = propertyKey._2;
101+
for (Class<?> clazz = propertyKey._1; !declaringClass.equals(clazz); clazz = clazz.getSuperclass()) {
102+
map = map.put(Tuple.of(clazz, propertyName), accessor);
101103
}
102-
map = map.put(new PropertyKey(declaringClass, propertyName), accessor);
104+
map = map.put(Tuple.of(declaringClass, propertyName), accessor);
103105
}
104106
return map;
105107
}

reduxfx-lib/src/main/java/com/netopyr/reduxfx/patcher/property/PropertyKey.java

-54
This file was deleted.

0 commit comments

Comments
 (0)