Skip to content

Commit f677e0e

Browse files
committed
review
1 parent ea43d08 commit f677e0e

20 files changed

Lines changed: 198 additions & 55 deletions

File tree

core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/AbstractConstraintVerification.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protected void assertCorrectArguments(Object... facts) {
2929
"Maybe call givenSolution() instead?", facts[0]);
3030
}
3131
Arrays.stream(facts)
32-
.filter(fact -> fact instanceof Collection)
32+
.filter(Collection.class::isInstance)
3333
.findFirst()
3434
.ifPresent(collection -> LOGGER.warn("Called given() with collection ({}) as argument." +
3535
"This will treat the collection itself as a fact, and not its contents.\n" +

core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/AbstractSingleConstraintAssertion.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -749,13 +749,11 @@ private String buildNoImpactAssertionErrorMessage(Number actualImpact, String co
749749
}
750750

751751
private static String getImpactTypeLabel(ScoreImpactType scoreImpactType) {
752-
if (scoreImpactType == ScoreImpactType.PENALTY) {
753-
return "penalty";
754-
} else if (scoreImpactType == ScoreImpactType.REWARD) {
755-
return "reward";
756-
} else { // Needs to work with null.
757-
return "impact";
758-
}
752+
return switch (scoreImpactType) {
753+
case PENALTY -> "penalty";
754+
case REWARD -> "reward";
755+
case MIXED -> "impact";
756+
};
759757
}
760758

761759
}

core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/NumberEqualityUtil.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,18 @@ final class NumberEqualityUtil {
9595
* @return never null
9696
*/
9797
public static Comparator<Number> getComparison(Number expectedImpact) {
98-
return Comparator.comparing(a -> {
99-
if (a instanceof BigDecimal bigDecimal) {
100-
return bigDecimal;
101-
} else {
102-
return BigDecimal.valueOf(a.longValue());
103-
}
104-
});
98+
if (expectedImpact instanceof Integer || expectedImpact instanceof Long || expectedImpact instanceof BigDecimal) {
99+
return Comparator.comparing(a -> {
100+
if (a instanceof BigDecimal bigDecimal) {
101+
return bigDecimal;
102+
} else {
103+
return BigDecimal.valueOf(a.longValue());
104+
}
105+
});
106+
}
107+
108+
throw new IllegalStateException("Impossible state: unknown impact type class (%s) for impact (%s)."
109+
.formatted(expectedImpact.getClass(), expectedImpact));
105110
}
106111

107112
private NumberEqualityUtil() {

core/src/test/java/ai/timefold/solver/core/api/solver/change/MockProblemChangeDirectorTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ void problemChange() {
5858

5959
problemChange.doChange(testdataSolution, mockProblemChangeDirector);
6060

61-
SoftAssertions.assertSoftly((softAssertions) -> {
62-
softAssertions.assertThat(testdataSolution.getEntityList()).doesNotContain(removedWorkingEntity);
63-
softAssertions.assertThat(testdataSolution.getValueList()).doesNotContain(removedWorkingFact);
64-
softAssertions.assertThat(changedWorkingEntity.getValue()).isEqualTo(changedFact);
65-
softAssertions.assertThat(changedWorkingEntity.getEntityGroup()).isNull();
61+
SoftAssertions.assertSoftly(softly -> {
62+
softly.assertThat(testdataSolution.getEntityList()).doesNotContain(removedWorkingEntity);
63+
softly.assertThat(testdataSolution.getValueList()).doesNotContain(removedWorkingFact);
64+
softly.assertThat(changedWorkingEntity.getValue()).isEqualTo(changedFact);
65+
softly.assertThat(changedWorkingEntity.getEntityGroup()).isNull();
6666
});
6767
}
6868
}

docs/src/modules/ROOT/pages/quickstart/hello-world/hello-world-quickstart.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -746,7 +746,7 @@ import org.acme.schooltimetabling.domain.Room;
746746
import org.acme.schooltimetabling.domain.Timetable;
747747
import org.acme.schooltimetabling.domain.Timeslot;
748748
import org.junit.jupiter.api.Test;
749-
import ai.timefold.solver.test.api.score.stream.ConstraintVerifier;
749+
import ai.timefold.solver.core.api.score.stream.test.ConstraintVerifier;
750750
751751
class TimetableConstraintProviderTest {
752752
@@ -782,7 +782,7 @@ Create the `src/test/kotlin/org/acme/schooltimetabling/solver/TimetableConstrain
782782
package org.acme.schooltimetabling.solver
783783
784784
import ai.timefold.solver.core.api.score.stream.ConstraintFactory
785-
import ai.timefold.solver.test.api.score.stream.ConstraintVerifier
785+
import ai.timefold.solver.core.api.score.stream.test.ConstraintVerifier;
786786
import org.acme.schooltimetabling.domain.Lesson
787787
import org.acme.schooltimetabling.domain.Room
788788
import org.acme.schooltimetabling.domain.Timeslot

docs/src/modules/ROOT/pages/quickstart/quarkus-vehicle-routing/quarkus-vehicle-routing-quickstart.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ import java.util.Arrays;
561561
562562
import jakarta.inject.Inject;
563563
564-
import ai.timefold.solver.test.api.score.stream.ConstraintVerifier;
564+
import ai.timefold.solver.core.api.score.stream.test.ConstraintVerifier;
565565
566566
import org.acme.vehiclerouting.domain.Location;
567567
import org.acme.vehiclerouting.domain.Vehicle;
@@ -631,8 +631,8 @@ import java.util.Arrays
631631
632632
import jakarta.inject.Inject
633633
634-
import ai.timefold.solver.test.api.score.stream.ConstraintVerifier
635634
import ai.timefold.solver.core.api.score.stream.ConstraintFactory
635+
import ai.timefold.solver.core.api.score.stream.test.ConstraintVerifier
636636
637637
import org.acme.vehiclerouting.domain.Location
638638
import org.acme.vehiclerouting.domain.Vehicle

docs/src/modules/ROOT/pages/quickstart/quarkus/quarkus-quickstart.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ First update your build tool configuration:
231231
Maven::
232232
+
233233
--
234-
Add the subsequent dependencies in your `pom.xml`:
234+
Add the subsequent dependency in your `pom.xml`:
235235
[source,xml,subs=attributes+]
236236
----
237237
<dependency>
@@ -244,7 +244,7 @@ Add the subsequent dependencies in your `pom.xml`:
244244
Gradle::
245245
+
246246
--
247-
Add the subsequent dependencies to your `build.gradle`:
247+
Add the subsequent dependency to your `build.gradle`:
248248
[source,groovy,subs=attributes+]
249249
----
250250
testImplementation "io.quarkus:quarkus-junit5"

docs/src/modules/ROOT/pages/quickstart/shared/constrainttests.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import org.acme.schooltimetabling.domain.Room;
2222
import org.acme.schooltimetabling.domain.Timetable;
2323
import org.acme.schooltimetabling.domain.Timeslot;
2424
import org.junit.jupiter.api.Test;
25-
import ai.timefold.solver.test.api.score.stream.ConstraintVerifier;
25+
import ai.timefold.solver.core.api.score.stream.test.ConstraintVerifier;
2626
2727
{testannotation}
2828
class TimetableConstraintProviderTest {
@@ -56,7 +56,7 @@ Create the `src/test/kotlin/org/acme/schooltimetabling/solver/TimetableConstrain
5656
----
5757
package org.acme.schooltimetabling.solver
5858
59-
import ai.timefold.solver.test.api.score.stream.ConstraintVerifier
59+
import ai.timefold.solver.core.api.score.stream.test.ConstraintVerifier
6060
import {testannotationfq}
6161
import {wiringannotationfq}
6262
import org.acme.schooltimetabling.domain.Lesson

docs/src/modules/ROOT/pages/quickstart/spring-boot/spring-boot-quickstart.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ Java::
284284
----
285285
package org.acme.schooltimetabling.config;
286286
287-
import ai.timefold.solver.test.api.score.stream.ConstraintVerifier;
287+
import ai.timefold.solver.core.api.score.stream.test.ConstraintVerifier;
288288
import org.acme.schooltimetabling.domain.Lesson;
289289
import org.acme.schooltimetabling.domain.Timetable;
290290
import org.acme.schooltimetabling.solver.TimetableConstraintProvider;
@@ -308,7 +308,7 @@ Kotlin::
308308
----
309309
package org.acme.schooltimetabling.config
310310
311-
import ai.timefold.solver.test.api.score.stream.ConstraintVerifier
311+
import ai.timefold.solver.core.api.score.stream.test.ConstraintVerifier;
312312
import org.acme.schooltimetabling.domain.Lesson
313313
import org.acme.schooltimetabling.domain.Timetable
314314
import org.acme.schooltimetabling.solver.TimetableConstraintProvider

quarkus-integration/quarkus/deployment/src/main/java/ai/timefold/solver/quarkus/deployment/TimefoldProcessor.java

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package ai.timefold.solver.quarkus.deployment;
22

3+
import static io.quarkus.deployment.annotations.ExecutionTime.RUNTIME_INIT;
4+
35
import java.lang.reflect.Field;
46
import java.lang.reflect.Method;
57
import java.lang.reflect.Modifier;
@@ -18,6 +20,9 @@
1820
import java.util.function.Predicate;
1921
import java.util.stream.Collectors;
2022

23+
import jakarta.enterprise.context.ApplicationScoped;
24+
import jakarta.inject.Singleton;
25+
2126
import ai.timefold.solver.core.api.domain.entity.PlanningEntity;
2227
import ai.timefold.solver.core.api.domain.solution.PlanningSolution;
2328
import ai.timefold.solver.core.api.domain.variable.ShadowSources;
@@ -53,6 +58,18 @@
5358
import ai.timefold.solver.quarkus.devui.TimefoldDevUIPropertiesRPCService;
5459
import ai.timefold.solver.quarkus.devui.TimefoldDevUIRecorder;
5560
import ai.timefold.solver.quarkus.gizmo.TimefoldGizmoBeanFactory;
61+
62+
import org.jboss.jandex.AnnotationInstance;
63+
import org.jboss.jandex.AnnotationTarget;
64+
import org.jboss.jandex.ClassInfo;
65+
import org.jboss.jandex.DotName;
66+
import org.jboss.jandex.FieldInfo;
67+
import org.jboss.jandex.IndexView;
68+
import org.jboss.jandex.MethodInfo;
69+
import org.jboss.jandex.ParameterizedType;
70+
import org.jboss.jandex.Type;
71+
import org.jboss.logging.Logger;
72+
5673
import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
5774
import io.quarkus.arc.deployment.GeneratedBeanBuildItem;
5875
import io.quarkus.arc.deployment.GeneratedBeanGizmo2Adaptor;
@@ -82,20 +99,6 @@
8299
import io.quarkus.gizmo2.desc.ConstructorDesc;
83100
import io.quarkus.gizmo2.desc.MethodDesc;
84101
import io.quarkus.runtime.configuration.ConfigurationException;
85-
import jakarta.enterprise.context.ApplicationScoped;
86-
import jakarta.inject.Singleton;
87-
import org.jboss.jandex.AnnotationInstance;
88-
import org.jboss.jandex.AnnotationTarget;
89-
import org.jboss.jandex.ClassInfo;
90-
import org.jboss.jandex.DotName;
91-
import org.jboss.jandex.FieldInfo;
92-
import org.jboss.jandex.IndexView;
93-
import org.jboss.jandex.MethodInfo;
94-
import org.jboss.jandex.ParameterizedType;
95-
import org.jboss.jandex.Type;
96-
import org.jboss.logging.Logger;
97-
98-
import static io.quarkus.deployment.annotations.ExecutionTime.RUNTIME_INIT;
99102

100103
class TimefoldProcessor {
101104

@@ -758,7 +761,8 @@ private void generateConstraintVerifier(SolverConfig solverConfig,
758761
enabledPreviewFeatureSet, planningSolutionClassResultHandle,
759762
planningEntityClassesResultHandle));
760763
var constraintVerifierResultHandle = methodCreator.new_(
761-
ConstructorDesc.of(DefaultConstraintVerifier.class, ConstraintProvider.class, SolutionDescriptor.class),
764+
ConstructorDesc.of(DefaultConstraintVerifier.class, ConstraintProvider.class,
765+
SolutionDescriptor.class),
762766
constraintProviderResultHandle, solutionDescriptorResultHandle);
763767

764768
methodCreator.return_(constraintVerifierResultHandle);

0 commit comments

Comments
 (0)