protected SolutionDescriptor buildSolutionDescriptor() { if (solutionClass == null) { throw new IllegalArgumentException( "Configure a <solutionClass> in the solver configuration."); } SolutionDescriptor solutionDescriptor = new SolutionDescriptor(solutionClass); solutionDescriptor.processAnnotations(); if (CollectionUtils.isEmpty(planningEntityClassList)) { throw new IllegalArgumentException( "Configure at least 1 <planningEntityClass> in the solver configuration."); } for (Class<?> planningEntityClass : planningEntityClassList) { PlanningEntityDescriptor entityDescriptor = new PlanningEntityDescriptor(solutionDescriptor, planningEntityClass); solutionDescriptor.addPlanningEntityDescriptor(entityDescriptor); entityDescriptor.processAnnotations(); } solutionDescriptor.afterAnnotationsProcessed(); return solutionDescriptor; }