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 @@ -104,8 +104,13 @@ static <T> T loadOrDefault(Function<TimefoldSolverEnterpriseService, T> builder,

TopologicalOrderGraph buildTopologyGraph(int size);

Class<? extends ConstraintProvider>
buildLambdaSharedConstraintProvider(Class<? extends ConstraintProvider> originalConstraintProvider);
/**
* Will create new classes that apply node-sharing to the given {@link ConstraintProvider}.
* To reuse these classes, make sure to cache the returned {@link ConstraintProviderNodeSharer}.
*
* @return never null
*/
ConstraintProviderNodeSharer createNodeSharer();

<Solution_> ConstructionHeuristicDecider<Solution_> buildConstructionHeuristic(PhaseTermination<Solution_> termination,
ConstructionHeuristicForager<Solution_> forager, HeuristicConfigPolicy<Solution_> configPolicy);
Expand Down Expand Up @@ -161,6 +166,12 @@ public String getWorkaround() {

}

interface ConstraintProviderNodeSharer {

<T extends ConstraintProvider> Class<T> buildNodeSharedConstraintProvider(Class<T> constraintProviderClass);

}

final class EnterpriseLicenseException extends RuntimeException {

public EnterpriseLicenseException(String message) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ private static Class<? extends ConstraintProvider> getConstraintProviderClass(Sc
if (Boolean.TRUE.equals(config.getConstraintStreamAutomaticNodeSharing())) {
var enterpriseService =
TimefoldSolverEnterpriseService.loadOrFail(TimefoldSolverEnterpriseService.Feature.AUTOMATIC_NODE_SHARING);
return enterpriseService.buildLambdaSharedConstraintProvider(config.getConstraintProviderClass());
return enterpriseService.createNodeSharer().buildNodeSharedConstraintProvider(providedConstraintProviderClass);
} else {
return providedConstraintProviderClass;
}
Expand Down
Loading