1- package ai .timefold .solver .core .impl .domain .lookup ;
1+ package ai .timefold .solver .core .impl .domain .common ;
22
33import java .util .Map ;
44import java .util .concurrent .ConcurrentHashMap ;
55
66import ai .timefold .solver .core .api .domain .common .PlanningId ;
77import ai .timefold .solver .core .config .util .ConfigUtils ;
8- import ai .timefold .solver .core .impl .domain .common .DomainAccessType ;
98import ai .timefold .solver .core .impl .domain .common .accessor .MemberAccessorFactory ;
109import ai .timefold .solver .core .impl .domain .policy .DescriptorPolicy ;
1110import ai .timefold .solver .core .impl .domain .solution .cloner .DeepCloningUtils ;
1615 * This class is thread-safe.
1716 */
1817@ NullMarked
19- public final class LookUpStrategyResolver {
18+ public final class LookupStrategyResolver {
2019
2120 private final LookUpStrategyType lookUpStrategyType ;
2221 private final DomainAccessType domainAccessType ;
2322 private final MemberAccessorFactory memberAccessorFactory ;
24- private final Map <Class <?>, LookUpStrategy > decisionCache = new ConcurrentHashMap <>();
23+ private final Map <Class <?>, LookupStrategy > decisionCache = new ConcurrentHashMap <>();
2524
26- public LookUpStrategyResolver (DescriptorPolicy descriptorPolicy ) {
25+ public LookupStrategyResolver (DescriptorPolicy descriptorPolicy ) {
2726 this (descriptorPolicy , LookUpStrategyType .PLANNING_ID_OR_NONE );
2827 }
2928
30- LookUpStrategyResolver (DescriptorPolicy descriptorPolicy , LookUpStrategyType lookUpStrategyType ) {
29+ LookupStrategyResolver (DescriptorPolicy descriptorPolicy , LookUpStrategyType lookUpStrategyType ) {
3130 this .lookUpStrategyType = lookUpStrategyType ;
3231 this .domainAccessType = descriptorPolicy .getDomainAccessType ();
3332 this .memberAccessorFactory = descriptorPolicy .getMemberAccessorFactory ();
@@ -41,22 +40,22 @@ public LookUpStrategyResolver(DescriptorPolicy descriptorPolicy) {
4140 * @param object never null
4241 * @return never null
4342 */
44- public LookUpStrategy determineLookUpStrategy (Object object ) {
43+ public LookupStrategy determineLookUpStrategy (Object object ) {
4544 var objectClass = object .getClass ();
4645 var decision = decisionCache .get (objectClass );
4746 if (decision == null ) { // Simulate computeIfAbsent, avoiding creating a lambda on the hot path.
4847 if (DeepCloningUtils .isImmutable (objectClass )) {
49- decision = new ImmutableLookUpStrategy ();
48+ decision = new ImmutableLookupStrategy ();
5049 } else {
5150 decision = switch (lookUpStrategyType ) {
52- case NONE -> new NoneLookUpStrategy ();
51+ case NONE -> new NoneLookupStrategy ();
5352 case PLANNING_ID_OR_NONE -> {
5453 var memberAccessor =
5554 ConfigUtils .findPlanningIdMemberAccessor (objectClass , memberAccessorFactory , domainAccessType );
5655 if (memberAccessor == null ) {
57- yield new NoneLookUpStrategy ();
56+ yield new NoneLookupStrategy ();
5857 }
59- yield new PlanningIdLookUpStrategy (memberAccessor );
58+ yield new PlanningIdLookupStrategy (memberAccessor );
6059 }
6160 case PLANNING_ID_OR_FAIL_FAST -> {
6261 var memberAccessor =
@@ -68,7 +67,7 @@ The class (%s) does not have a @%s annotation, but the lookUpStrategyType (%s) r
6867 .formatted (objectClass , PlanningId .class .getSimpleName (), lookUpStrategyType ,
6968 PlanningId .class .getSimpleName ()));
7069 }
71- yield new PlanningIdLookUpStrategy (memberAccessor );
70+ yield new PlanningIdLookupStrategy (memberAccessor );
7271 }
7372 };
7473 decisionCache .put (objectClass , decision );
0 commit comments