Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,14 @@ private void processProblemFactPropertyAnnotation(DescriptorPolicy descriptorPol
Collection.class.getSimpleName()));
}
problemFactCollectionMemberAccessorMap.put(memberAccessor.getName(), memberAccessor);
problemFactType = type;

Comment thread
Christopher-Chianelli marked this conversation as resolved.
if (type.isArray()) {
Comment thread
Christopher-Chianelli marked this conversation as resolved.
problemFactType = type.getComponentType();
} else {
problemFactType = ConfigUtils.extractGenericTypeParameterOrFail(PlanningSolution.class.getSimpleName(),
memberAccessor.getDeclaringClass(),
type, memberAccessor.getGenericType(), annotationClass, memberAccessor.getName());
}
} else {
throw new IllegalStateException("Impossible situation with annotationClass (" + annotationClass + ").");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
import ai.timefold.solver.core.testdomain.invalid.constraintconfiguration.TestdataInvalidConfigurationSolution;
import ai.timefold.solver.core.testdomain.invalid.constraintweightoverrides.TestdataInvalidConstraintWeightOverridesSolution;
import ai.timefold.solver.core.testdomain.invalid.duplicateweightoverrides.TestdataDuplicateWeightConfigurationSolution;
import ai.timefold.solver.core.testdomain.invalid.entityannotatedasproblemfact.TestdataEntityAnnotatedAsProblemFactArraySolution;
import ai.timefold.solver.core.testdomain.invalid.entityannotatedasproblemfact.TestdataEntityAnnotatedAsProblemFactCollectionSolution;
import ai.timefold.solver.core.testdomain.invalid.entityannotatedasproblemfact.TestdataEntityAnnotatedAsProblemFactSolution;
import ai.timefold.solver.core.testdomain.invalid.multivar.TestdataInvalidMultiVarSolution;
import ai.timefold.solver.core.testdomain.invalid.nosolution.TestdataNoSolution;
Expand Down Expand Up @@ -134,7 +136,14 @@ void planningEntityIsProblemFactProperty() {

@Test
void planningEntityIsProblemFactCollectionProperty() {
assertThatIllegalStateException().isThrownBy(TestdataEntityAnnotatedAsProblemFactSolution::buildSolutionDescriptor);
assertThatIllegalStateException()
.isThrownBy(TestdataEntityAnnotatedAsProblemFactCollectionSolution::buildSolutionDescriptor);
}

@Test
void planningEntityIsProblemFactArrayProperty() {
assertThatIllegalStateException()
.isThrownBy(TestdataEntityAnnotatedAsProblemFactArraySolution::buildSolutionDescriptor);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package ai.timefold.solver.core.testdomain.invalid.entityannotatedasproblemfact;

import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty;
import ai.timefold.solver.core.api.domain.solution.PlanningScore;
import ai.timefold.solver.core.api.domain.solution.PlanningSolution;
import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty;
import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider;
import ai.timefold.solver.core.api.score.buildin.simple.SimpleScore;
import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor;
import ai.timefold.solver.core.testdomain.TestdataEntity;
import ai.timefold.solver.core.testdomain.TestdataValue;

@PlanningSolution
public class TestdataEntityAnnotatedAsProblemFactArraySolution {
TestdataEntity[] entities;
TestdataValue[] values;
SimpleScore score;

public static SolutionDescriptor<TestdataEntityAnnotatedAsProblemFactArraySolution> buildSolutionDescriptor() {
return SolutionDescriptor.buildSolutionDescriptor(TestdataEntityAnnotatedAsProblemFactArraySolution.class,
TestdataEntity.class);
}

public TestdataEntityAnnotatedAsProblemFactArraySolution() {
}

@ProblemFactCollectionProperty
public TestdataEntity[] getEntitiesAsFacts() {
return entities;
}

@PlanningEntityCollectionProperty
public TestdataEntity[] getEntities() {
return entities;
}

public void setEntities(TestdataEntity[] entities) {
this.entities = entities;
}

@ValueRangeProvider(id = "valueRange")
public TestdataValue[] getValues() {
return values;
}

public void setValues(TestdataValue[] values) {
this.values = values;
}

@PlanningScore
public SimpleScore getScore() {
return score;
}

public void setScore(SimpleScore score) {
this.score = score;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import java.util.List;

import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty;
import ai.timefold.solver.core.api.domain.solution.PlanningScore;
import ai.timefold.solver.core.api.domain.solution.PlanningSolution;
import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty;
import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider;
Expand All @@ -25,6 +27,11 @@ public TestdataEntityAnnotatedAsProblemFactCollectionSolution() {
}

@ProblemFactCollectionProperty
public List<TestdataEntity> getEntitiesAsFacts() {
return entities;
}

@PlanningEntityCollectionProperty
Comment thread
Christopher-Chianelli marked this conversation as resolved.
public List<TestdataEntity> getEntities() {
return entities;
}
Expand All @@ -42,6 +49,7 @@ public void setValues(List<TestdataValue> values) {
this.values = values;
}

@PlanningScore
public SimpleScore getScore() {
return score;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import java.util.List;

import ai.timefold.solver.core.api.domain.solution.PlanningEntityProperty;
import ai.timefold.solver.core.api.domain.solution.PlanningScore;
import ai.timefold.solver.core.api.domain.solution.PlanningSolution;
import ai.timefold.solver.core.api.domain.solution.ProblemFactProperty;
import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider;
Expand All @@ -24,11 +26,16 @@ public static SolutionDescriptor<TestdataEntityAnnotatedAsProblemFactSolution> b
public TestdataEntityAnnotatedAsProblemFactSolution() {
}

@ProblemFactProperty
@PlanningEntityProperty
Comment thread
Christopher-Chianelli marked this conversation as resolved.
public TestdataEntity getEntity() {
return entity;
}

@ProblemFactProperty
public TestdataEntity getEntityAsFact() {
return entity;
}

public void setEntity(TestdataEntity entity) {
this.entity = entity;
}
Expand All @@ -42,6 +49,7 @@ public void setValues(List<TestdataValue> values) {
this.values = values;
}

@PlanningScore
public SimpleScore getScore() {
return score;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty;
import ai.timefold.solver.core.api.domain.solution.PlanningScore;
import ai.timefold.solver.core.api.domain.solution.PlanningSolution;
import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty;
import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider;
import ai.timefold.solver.core.api.score.buildin.simple.SimpleScore;
import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor;
Expand All @@ -32,7 +31,7 @@ public TestdataInverseRelationSolution(String code) {
}

@ValueRangeProvider(id = "valueRange")
@ProblemFactCollectionProperty
@PlanningEntityCollectionProperty
public List<TestdataInverseRelationValue> getValueList() {
return valueList;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,13 @@
import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty;
import ai.timefold.solver.core.api.domain.solution.PlanningScore;
import ai.timefold.solver.core.api.domain.solution.PlanningSolution;
import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty;
import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider;
import ai.timefold.solver.core.api.score.buildin.hardsoft.HardSoftScore;

@PlanningSolution
public class TestdataStringLengthShadowSolution {

@ProblemFactCollectionProperty
@PlanningEntityCollectionProperty
@ValueRangeProvider
private List<TestdataListValueShadowEntity> valueList;

Expand Down
Loading