Skip to content

Commit

Permalink
Reduce proliferation of java.beans.PropertyDescriptor (preparation to…
Browse files Browse the repository at this point in the history
… make it easier to use optaplanner on android)
  • Loading branch information
ge0ffrey committed Feb 19, 2015
1 parent 90fd390 commit 94077fc
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 32 deletions.
Expand Up @@ -16,12 +16,11 @@


package org.optaplanner.core.impl.domain.common; package org.optaplanner.core.impl.domain.common;


import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;


/** /**
* Wraps {@link PropertyDescriptor} for faster and easier access. * Wraps {@link Method} for faster and easier access.
*/ */
public final class DefaultReadMethodAccessor implements ReadMethodAccessor { public final class DefaultReadMethodAccessor implements ReadMethodAccessor {


Expand Down
Expand Up @@ -39,6 +39,8 @@
import org.optaplanner.core.api.domain.variable.PlanningVariable; import org.optaplanner.core.api.domain.variable.PlanningVariable;
import org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder; import org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder;
import org.optaplanner.core.config.util.ConfigUtils; import org.optaplanner.core.config.util.ConfigUtils;
import org.optaplanner.core.impl.domain.common.PropertyAccessor;
import org.optaplanner.core.impl.domain.common.ReflectionPropertyAccessor;
import org.optaplanner.core.impl.domain.policy.DescriptorPolicy; import org.optaplanner.core.impl.domain.policy.DescriptorPolicy;
import org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor; import org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor;
import org.optaplanner.core.impl.domain.variable.anchor.AnchorShadowVariableDescriptor; import org.optaplanner.core.impl.domain.variable.anchor.AnchorShadowVariableDescriptor;
Expand Down Expand Up @@ -183,24 +185,25 @@ private void processPropertyAnnotations(DescriptorPolicy descriptorPolicy) {
+ " annotated property (" + propertyDescriptor.getName() + " annotated property (" + propertyDescriptor.getName()
+ ") that should have a setter."); + ") that should have a setter.");
} }
PropertyAccessor propertyAccessor = new ReflectionPropertyAccessor(propertyDescriptor);
if (variableAnnotationClass.equals(PlanningVariable.class)) { if (variableAnnotationClass.equals(PlanningVariable.class)) {
GenuineVariableDescriptor variableDescriptor = new GenuineVariableDescriptor( GenuineVariableDescriptor variableDescriptor = new GenuineVariableDescriptor(
this, propertyDescriptor); this, propertyAccessor);
declaredGenuineVariableDescriptorMap.put(propertyDescriptor.getName(), variableDescriptor); declaredGenuineVariableDescriptorMap.put(propertyDescriptor.getName(), variableDescriptor);
variableDescriptor.processAnnotations(descriptorPolicy); variableDescriptor.processAnnotations(descriptorPolicy);
} else if (variableAnnotationClass.equals(InverseRelationShadowVariable.class)) { } else if (variableAnnotationClass.equals(InverseRelationShadowVariable.class)) {
ShadowVariableDescriptor variableDescriptor = new InverseRelationShadowVariableDescriptor( ShadowVariableDescriptor variableDescriptor = new InverseRelationShadowVariableDescriptor(
this, propertyDescriptor); this, propertyAccessor);
declaredShadowVariableDescriptorMap.put(propertyDescriptor.getName(), variableDescriptor); declaredShadowVariableDescriptorMap.put(propertyDescriptor.getName(), variableDescriptor);
variableDescriptor.processAnnotations(descriptorPolicy); variableDescriptor.processAnnotations(descriptorPolicy);
} else if (variableAnnotationClass.equals(AnchorShadowVariable.class)) { } else if (variableAnnotationClass.equals(AnchorShadowVariable.class)) {
ShadowVariableDescriptor variableDescriptor = new AnchorShadowVariableDescriptor( ShadowVariableDescriptor variableDescriptor = new AnchorShadowVariableDescriptor(
this, propertyDescriptor); this, propertyAccessor);
declaredShadowVariableDescriptorMap.put(propertyDescriptor.getName(), variableDescriptor); declaredShadowVariableDescriptorMap.put(propertyDescriptor.getName(), variableDescriptor);
variableDescriptor.processAnnotations(descriptorPolicy); variableDescriptor.processAnnotations(descriptorPolicy);
} else if (variableAnnotationClass.equals(CustomShadowVariable.class)) { } else if (variableAnnotationClass.equals(CustomShadowVariable.class)) {
ShadowVariableDescriptor variableDescriptor = new CustomShadowVariableDescriptor( ShadowVariableDescriptor variableDescriptor = new CustomShadowVariableDescriptor(
this, propertyDescriptor); this, propertyAccessor);
declaredShadowVariableDescriptorMap.put(propertyDescriptor.getName(), variableDescriptor); declaredShadowVariableDescriptorMap.put(propertyDescriptor.getName(), variableDescriptor);
variableDescriptor.processAnnotations(descriptorPolicy); variableDescriptor.processAnnotations(descriptorPolicy);
} else { } else {
Expand Down
Expand Up @@ -16,9 +16,9 @@


package org.optaplanner.core.impl.domain.variable.anchor; package org.optaplanner.core.impl.domain.variable.anchor;


import java.beans.PropertyDescriptor;

import org.optaplanner.core.api.domain.variable.AnchorShadowVariable; import org.optaplanner.core.api.domain.variable.AnchorShadowVariable;
import org.optaplanner.core.impl.domain.common.PropertyAccessor;
import org.optaplanner.core.impl.domain.common.ReflectionPropertyAccessor;
import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor; import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor;
import org.optaplanner.core.impl.domain.policy.DescriptorPolicy; import org.optaplanner.core.impl.domain.policy.DescriptorPolicy;
import org.optaplanner.core.impl.domain.variable.descriptor.GenuineVariableDescriptor; import org.optaplanner.core.impl.domain.variable.descriptor.GenuineVariableDescriptor;
Expand All @@ -35,8 +35,8 @@ public class AnchorShadowVariableDescriptor extends ShadowVariableDescriptor {
protected VariableDescriptor sourceVariableDescriptor; protected VariableDescriptor sourceVariableDescriptor;


public AnchorShadowVariableDescriptor(EntityDescriptor entityDescriptor, public AnchorShadowVariableDescriptor(EntityDescriptor entityDescriptor,
PropertyDescriptor propertyDescriptor) { PropertyAccessor variablePropertyAccessor) {
super(entityDescriptor, propertyDescriptor); super(entityDescriptor, variablePropertyAccessor);
} }


public void processAnnotations(DescriptorPolicy descriptorPolicy) { public void processAnnotations(DescriptorPolicy descriptorPolicy) {
Expand Down
Expand Up @@ -16,13 +16,14 @@


package org.optaplanner.core.impl.domain.variable.custom; package org.optaplanner.core.impl.domain.variable.custom;


import java.beans.PropertyDescriptor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;


import org.optaplanner.core.api.domain.variable.CustomShadowVariable; import org.optaplanner.core.api.domain.variable.CustomShadowVariable;
import org.optaplanner.core.config.util.ConfigUtils; import org.optaplanner.core.config.util.ConfigUtils;
import org.optaplanner.core.impl.domain.common.PropertyAccessor;
import org.optaplanner.core.impl.domain.common.ReflectionPropertyAccessor;
import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor; import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor;
import org.optaplanner.core.impl.domain.policy.DescriptorPolicy; import org.optaplanner.core.impl.domain.policy.DescriptorPolicy;
import org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor; import org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor;
Expand All @@ -38,8 +39,8 @@ public class CustomShadowVariableDescriptor extends ShadowVariableDescriptor {
protected List<VariableDescriptor> sourceVariableDescriptorList; protected List<VariableDescriptor> sourceVariableDescriptorList;


public CustomShadowVariableDescriptor(EntityDescriptor entityDescriptor, public CustomShadowVariableDescriptor(EntityDescriptor entityDescriptor,
PropertyDescriptor propertyDescriptor) { PropertyAccessor variablePropertyAccessor) {
super(entityDescriptor, propertyDescriptor); super(entityDescriptor, variablePropertyAccessor);
} }


public void processAnnotations(DescriptorPolicy descriptorPolicy) { public void processAnnotations(DescriptorPolicy descriptorPolicy) {
Expand Down
Expand Up @@ -16,7 +16,6 @@


package org.optaplanner.core.impl.domain.variable.descriptor; package org.optaplanner.core.impl.domain.variable.descriptor;


import java.beans.PropertyDescriptor;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
Expand All @@ -32,6 +31,8 @@
import org.optaplanner.core.api.domain.variable.PlanningVariableGraphType; import org.optaplanner.core.api.domain.variable.PlanningVariableGraphType;
import org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder; import org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder;
import org.optaplanner.core.config.util.ConfigUtils; import org.optaplanner.core.config.util.ConfigUtils;
import org.optaplanner.core.impl.domain.common.PropertyAccessor;
import org.optaplanner.core.impl.domain.common.ReflectionPropertyAccessor;
import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor; import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor;
import org.optaplanner.core.impl.domain.policy.DescriptorPolicy; import org.optaplanner.core.impl.domain.policy.DescriptorPolicy;
import org.optaplanner.core.impl.domain.valuerange.descriptor.CompositeValueRangeDescriptor; import org.optaplanner.core.impl.domain.valuerange.descriptor.CompositeValueRangeDescriptor;
Expand All @@ -57,8 +58,8 @@ public class GenuineVariableDescriptor extends VariableDescriptor {
private SelectionSorter decreasingStrengthSorter; private SelectionSorter decreasingStrengthSorter;


public GenuineVariableDescriptor(EntityDescriptor entityDescriptor, public GenuineVariableDescriptor(EntityDescriptor entityDescriptor,
PropertyDescriptor propertyDescriptor) { PropertyAccessor variablePropertyAccessor) {
super(entityDescriptor, propertyDescriptor); super(entityDescriptor, variablePropertyAccessor);
} }


public void processAnnotations(DescriptorPolicy descriptorPolicy) { public void processAnnotations(DescriptorPolicy descriptorPolicy) {
Expand Down
Expand Up @@ -16,8 +16,8 @@


package org.optaplanner.core.impl.domain.variable.descriptor; package org.optaplanner.core.impl.domain.variable.descriptor;


import java.beans.PropertyDescriptor; import org.optaplanner.core.impl.domain.common.PropertyAccessor;

import org.optaplanner.core.impl.domain.common.ReflectionPropertyAccessor;
import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor; import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor;
import org.optaplanner.core.impl.domain.policy.DescriptorPolicy; import org.optaplanner.core.impl.domain.policy.DescriptorPolicy;
import org.optaplanner.core.impl.domain.variable.listener.VariableListener; import org.optaplanner.core.impl.domain.variable.listener.VariableListener;
Expand All @@ -28,8 +28,8 @@
public abstract class ShadowVariableDescriptor extends VariableDescriptor { public abstract class ShadowVariableDescriptor extends VariableDescriptor {


public ShadowVariableDescriptor(EntityDescriptor entityDescriptor, public ShadowVariableDescriptor(EntityDescriptor entityDescriptor,
PropertyDescriptor propertyDescriptor) { PropertyAccessor variablePropertyAccessor) {
super(entityDescriptor, propertyDescriptor); super(entityDescriptor, variablePropertyAccessor);
} }


public abstract void processAnnotations(DescriptorPolicy descriptorPolicy); public abstract void processAnnotations(DescriptorPolicy descriptorPolicy);
Expand Down
Expand Up @@ -16,17 +16,12 @@


package org.optaplanner.core.impl.domain.variable.descriptor; package org.optaplanner.core.impl.domain.variable.descriptor;


import java.beans.PropertyDescriptor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;


import org.optaplanner.core.impl.domain.common.PropertyAccessor; import org.optaplanner.core.impl.domain.common.PropertyAccessor;
import org.optaplanner.core.impl.domain.common.ReflectionPropertyAccessor; import org.optaplanner.core.impl.domain.common.ReflectionPropertyAccessor;
import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor; import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor;
import org.optaplanner.core.impl.domain.variable.listener.VariableListener;
import org.optaplanner.core.impl.domain.variable.supply.Demand;
import org.optaplanner.core.impl.domain.variable.supply.Supply;


public abstract class VariableDescriptor { public abstract class VariableDescriptor {


Expand All @@ -37,10 +32,9 @@ public abstract class VariableDescriptor {


private List<ShadowVariableDescriptor> shadowVariableDescriptorList = new ArrayList<ShadowVariableDescriptor>(4); private List<ShadowVariableDescriptor> shadowVariableDescriptorList = new ArrayList<ShadowVariableDescriptor>(4);


public VariableDescriptor(EntityDescriptor entityDescriptor, public VariableDescriptor(EntityDescriptor entityDescriptor, PropertyAccessor variablePropertyAccessor) {
PropertyDescriptor propertyDescriptor) {
this.entityDescriptor = entityDescriptor; this.entityDescriptor = entityDescriptor;
variablePropertyAccessor = new ReflectionPropertyAccessor(propertyDescriptor); this.variablePropertyAccessor = variablePropertyAccessor;
variableName = variablePropertyAccessor.getName(); variableName = variablePropertyAccessor.getName();
} }


Expand Down
Expand Up @@ -16,9 +16,9 @@


package org.optaplanner.core.impl.domain.variable.inverserelation; package org.optaplanner.core.impl.domain.variable.inverserelation;


import java.beans.PropertyDescriptor;

import org.optaplanner.core.api.domain.variable.InverseRelationShadowVariable; import org.optaplanner.core.api.domain.variable.InverseRelationShadowVariable;
import org.optaplanner.core.impl.domain.common.PropertyAccessor;
import org.optaplanner.core.impl.domain.common.ReflectionPropertyAccessor;
import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor; import org.optaplanner.core.impl.domain.entity.descriptor.EntityDescriptor;
import org.optaplanner.core.impl.domain.policy.DescriptorPolicy; import org.optaplanner.core.impl.domain.policy.DescriptorPolicy;
import org.optaplanner.core.impl.domain.variable.descriptor.GenuineVariableDescriptor; import org.optaplanner.core.impl.domain.variable.descriptor.GenuineVariableDescriptor;
Expand All @@ -33,8 +33,8 @@ public class InverseRelationShadowVariableDescriptor extends ShadowVariableDescr
protected VariableDescriptor sourceVariableDescriptor; protected VariableDescriptor sourceVariableDescriptor;


public InverseRelationShadowVariableDescriptor(EntityDescriptor entityDescriptor, public InverseRelationShadowVariableDescriptor(EntityDescriptor entityDescriptor,
PropertyDescriptor propertyDescriptor) { PropertyAccessor variablePropertyAccessor) {
super(entityDescriptor, propertyDescriptor); super(entityDescriptor, variablePropertyAccessor);
} }


public void processAnnotations(DescriptorPolicy descriptorPolicy) { public void processAnnotations(DescriptorPolicy descriptorPolicy) {
Expand Down

0 comments on commit 94077fc

Please sign in to comment.