1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package io.wcm.wcm.ui.granite.util.impl;
21
22 import org.apache.commons.collections4.Predicate;
23 import org.apache.sling.api.resource.Resource;
24 import org.jetbrains.annotations.NotNull;
25 import org.jetbrains.annotations.Nullable;
26 import org.osgi.framework.BundleContext;
27 import org.osgi.framework.ServiceReference;
28
29
30
31
32 class LatestPredicateProviderWrapper extends AbstractPredicateProviderWrapper {
33
34 private static final String NODE_PREDICATE_INTERFACE = "com.day.cq.commons.predicates.NodePredicate";
35
36 LatestPredicateProviderWrapper(ServiceReference<?> serviceReference, BundleContext bundleContext) {
37 super(serviceReference, bundleContext);
38 }
39
40 @SuppressWarnings("unchecked")
41 @Override
42 public @Nullable Predicate<Resource> getPredicate(@NotNull String name) {
43 java.util.function.Predicate<Resource> predicate = (java.util.function.Predicate)getPredicateInternal(name);
44 if (predicate == null) {
45 return null;
46 }
47 if (isNodePredicate(predicate)) {
48 return new NodePredicateWrapper((java.util.function.Predicate)predicate)::test;
49 }
50 return predicate::test;
51 }
52
53
54
55
56
57
58 private static boolean isNodePredicate(Object obj) {
59 for (Class<?> intf : obj.getClass().getInterfaces()) {
60 if (NODE_PREDICATE_INTERFACE.equals(intf.getName())) {
61 return true;
62 }
63 }
64 return false;
65 }
66
67 }