Class GizmoSolutionClonerImplementor
java.lang.Object
ai.timefold.solver.core.impl.domain.solution.cloner.gizmo.GizmoSolutionClonerImplementor
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static final recordprotected static final record -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcreateAbstractDeepCloneHelperMethod(GizmoSolutionClonerImplementor.ClonerDescriptor clonerDescriptor, Class<?> entityClass) static io.quarkus.gizmo2.ClassOutputcreateClassOutputWithDebuggingCapability(Map<String, byte[]> classBytecodeHolder) protected voidcreateSetSolutionDescriptor(GizmoSolutionClonerImplementor.ClonerDescriptor clonerDescriptor) static voiddefineClonerFor(io.quarkus.gizmo2.creator.ClassCreator classCreator, SolutionDescriptor<?> solutionDescriptor, Set<Class<?>> solutionClassSet, Map<Class<?>, GizmoSolutionOrEntityDescriptor> memoizedSolutionOrEntityDescriptorMap, Set<Class<?>> deepClonedClassSet) Generates the constructor and implementations of SolutionCloner methods for the given SolutionDescriptor using the given ClassCreatorstatic voiddefineClonerFor(Supplier<GizmoSolutionClonerImplementor> implementorSupplier, io.quarkus.gizmo2.creator.ClassCreator classCreator, SolutionDescriptor<?> solutionDescriptor, Set<Class<?>> solutionClassSet, Map<Class<?>, GizmoSolutionOrEntityDescriptor> memoizedSolutionOrEntityDescriptorMap, Set<Class<?>> deepClonedClassSet) Generates the constructor and implementations of SolutionCloner methods for the given SolutionDescriptor using the given ClassCreatorprotected static StringgetEntityHelperMethodName(Class<?> entityClass) static Comparator<Class<?>>getInstanceOfComparator(Set<Class<?>> deepClonedClassSet) Return a comparator that sorts classes into instanceof check order.protected voidhandleUnknownClass(GizmoSolutionClonerImplementor.ClonerDescriptor clonerDescriptor, GizmoSolutionClonerImplementor.ClonerMethodDescriptor clonerMethodDescriptor, Class<?> entityClass, io.quarkus.gizmo2.Var toClone, Consumer<io.quarkus.gizmo2.creator.BlockCreator> knownClassHandler) Writes the following code:static booleanisCloneableClass(Class<?> clazz) withFallbackClonerField(GizmoSolutionClonerImplementor.ClonerDescriptor clonerDescriptor)
-
Field Details
-
DEBUG
public static final boolean DEBUG- See Also:
-
-
Constructor Details
-
GizmoSolutionClonerImplementor
public GizmoSolutionClonerImplementor()
-
-
Method Details
-
getInstanceOfComparator
Return a comparator that sorts classes into instanceof check order. In particular, if x is a subclass of y, then x will appear earlier than y in the list.- Parameters:
deepClonedClassSet- The set of classes to generate a comparator for- Returns:
- A comparator that sorts classes from deepClonedClassSet such that x < y if x is assignable from y.
-
withFallbackClonerField
protected GizmoSolutionClonerImplementor.ClonerDescriptor withFallbackClonerField(GizmoSolutionClonerImplementor.ClonerDescriptor clonerDescriptor) -
defineClonerFor
public static void defineClonerFor(io.quarkus.gizmo2.creator.ClassCreator classCreator, SolutionDescriptor<?> solutionDescriptor, Set<Class<?>> solutionClassSet, Map<Class<?>, GizmoSolutionOrEntityDescriptor> memoizedSolutionOrEntityDescriptorMap, Set<Class<?>> deepClonedClassSet) Generates the constructor and implementations of SolutionCloner methods for the given SolutionDescriptor using the given ClassCreator -
isCloneableClass
-
defineClonerFor
public static void defineClonerFor(Supplier<GizmoSolutionClonerImplementor> implementorSupplier, io.quarkus.gizmo2.creator.ClassCreator classCreator, SolutionDescriptor<?> solutionDescriptor, Set<Class<?>> solutionClassSet, Map<Class<?>, GizmoSolutionOrEntityDescriptor> memoizedSolutionOrEntityDescriptorMap, Set<Class<?>> deepClonedClassSet) Generates the constructor and implementations of SolutionCloner methods for the given SolutionDescriptor using the given ClassCreator -
createClassOutputWithDebuggingCapability
-
createSetSolutionDescriptor
protected void createSetSolutionDescriptor(GizmoSolutionClonerImplementor.ClonerDescriptor clonerDescriptor) -
getEntityHelperMethodName
-
handleUnknownClass
protected void handleUnknownClass(GizmoSolutionClonerImplementor.ClonerDescriptor clonerDescriptor, GizmoSolutionClonerImplementor.ClonerMethodDescriptor clonerMethodDescriptor, Class<?> entityClass, io.quarkus.gizmo2.Var toClone, Consumer<io.quarkus.gizmo2.creator.BlockCreator> knownClassHandler) Writes the following code:In Quarkus: (nothing)
Outside Quarkus:
if (toClone.getClass() != entityClass) { Cloner.fallbackCloner.gizmoFallbackDeepClone(toClone, cloneMap); } else { // code knownClassHandler produces } -
createAbstractDeepCloneHelperMethod
protected void createAbstractDeepCloneHelperMethod(GizmoSolutionClonerImplementor.ClonerDescriptor clonerDescriptor, Class<?> entityClass)
-