You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/10/05 14:09:07 UTC
camel git commit: CAMEL-11820: Upgrade optaplanner to version
7.3.0.Final
Repository: camel
Updated Branches:
refs/heads/master 77cb04072 -> 731328618
CAMEL-11820: Upgrade optaplanner to version 7.3.0.Final
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/73132861
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/73132861
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/73132861
Branch: refs/heads/master
Commit: 7313286185ae3feac25253fa8c58f50d90fbe094
Parents: 77cb040
Author: Dmitry Volodin <dm...@gmail.com>
Authored: Thu Oct 5 11:22:21 2017 +0300
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Oct 5 16:03:40 2017 +0200
----------------------------------------------------------------------
.../optaplanner/OptaPlannerComponent.java | 8 ++----
.../optaplanner/OptaPlannerConstants.java | 1 +
.../optaplanner/OptaPlannerConsumer.java | 15 +++++-----
.../optaplanner/OptaPlannerEndpoint.java | 14 ++++-----
.../optaplanner/OptaPlannerProducer.java | 30 ++++++++++++--------
.../OptaPlannerDaemonSolverTest.java | 10 +++----
.../optaplanner/daemonSolverConfig.xml | 5 ++--
.../component/optaplanner/solverConfig.xml | 5 ++--
parent/pom.xml | 7 +++--
.../features/src/main/resources/features.xml | 1 +
10 files changed, 51 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerComponent.java b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerComponent.java
index b188d39..2d0a720 100644
--- a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerComponent.java
+++ b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerComponent.java
@@ -19,16 +19,12 @@ package org.apache.camel.component.optaplanner;
import java.util.Map;
import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
/**
* OptaPlanner component for Camel
*/
-public class OptaPlannerComponent extends UriEndpointComponent {
-
- public OptaPlannerComponent() {
- super(OptaPlannerEndpoint.class);
- }
+public class OptaPlannerComponent extends DefaultComponent {
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
OptaPlannerConfiguration configuration = new OptaPlannerConfiguration();
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConstants.java b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConstants.java
index 4a0a899..7b7700e 100644
--- a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConstants.java
+++ b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConstants.java
@@ -25,4 +25,5 @@ public interface OptaPlannerConstants {
String IS_SOLVING = "CamelOptaPlannerIsSolving";
String IS_TERMINATE_EARLY = "CamelOptaPlannerIsTerminateEarly";
String IS_EVERY_PROBLEM_FACT_CHANGE_PROCESSED = "CamelOptaPlannerIsEveryProblemFactChangeProcessed";
+ long IS_EVERY_PROBLEM_FACT_CHANGE_DELAY = 100;
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConsumer.java b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConsumer.java
index 0e10a79..78888c8 100644
--- a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConsumer.java
+++ b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerConsumer.java
@@ -32,23 +32,23 @@ public class OptaPlannerConsumer extends DefaultConsumer {
private static final transient Logger LOGGER = LoggerFactory.getLogger(OptaPlannerConsumer.class);
private final OptaPlannerEndpoint endpoint;
private final OptaPlannerConfiguration configuration;
- private final SolverEventListener listener;
+ private final SolverEventListener<Object> listener;
public OptaPlannerConsumer(OptaPlannerEndpoint endpoint, Processor processor, OptaPlannerConfiguration configuration) {
super(endpoint, processor);
this.endpoint = endpoint;
this.configuration = configuration;
- listener = new SolverEventListener() {
+ listener = new SolverEventListener<Object>() {
@Override
- public void bestSolutionChanged(BestSolutionChangedEvent event) {
- if (event.isEveryProblemFactChangeProcessed() && event.isNewBestSolutionInitialized()) {
+ public void bestSolutionChanged(BestSolutionChangedEvent<Object> event) {
+ if (event.isEveryProblemFactChangeProcessed() && event.getNewBestScore().isSolutionInitialized()) {
processEvent(event);
}
}
};
}
- public void processEvent(BestSolutionChangedEvent event) {
+ public void processEvent(BestSolutionChangedEvent<Object> event) {
Exchange exchange = getEndpoint().createExchange();
exchange.getOut().setHeader(OptaPlannerConstants.BEST_SOLUTION, event.getNewBestSolution());
try {
@@ -60,16 +60,15 @@ public class OptaPlannerConsumer extends DefaultConsumer {
@Override
protected void doStart() throws Exception {
- Solver solver = endpoint.getOrCreateSolver(configuration.getSolverId());
+ Solver<Object> solver = endpoint.getOrCreateSolver(configuration.getSolverId());
solver.addEventListener(listener);
super.doStart();
}
@Override
protected void doStop() throws Exception {
- Solver solver = endpoint.getOrCreateSolver(configuration.getSolverId());
+ Solver<Object> solver = endpoint.getOrCreateSolver(configuration.getSolverId());
solver.removeEventListener(listener);
super.doStop();
}
}
-
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java
index ff6cf2f..4676006 100644
--- a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java
+++ b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java
@@ -34,11 +34,11 @@ import org.optaplanner.core.api.solver.SolverFactory;
*/
@UriEndpoint(firstVersion = "2.13.0", scheme = "optaplanner", title = "OptaPlanner", syntax = "optaplanner:configFile", label = "engine,planning")
public class OptaPlannerEndpoint extends DefaultEndpoint {
- private static final Map<String, Solver> SOLVERS = new HashMap<String, Solver>();
+ private static final Map<String, Solver<Object>> SOLVERS = new HashMap<String, Solver<Object>>();
@UriParam
private OptaPlannerConfiguration configuration;
- private SolverFactory solverFactory;
+ private SolverFactory<Object> solverFactory;
public OptaPlannerEndpoint() {
}
@@ -50,9 +50,9 @@ public class OptaPlannerEndpoint extends DefaultEndpoint {
solverFactory = SolverFactory.createFromXmlResource(configuration.getConfigFile(), classLoader);
}
- protected Solver getOrCreateSolver(String solverId) throws Exception {
+ protected Solver<Object> getOrCreateSolver(String solverId) throws Exception {
synchronized (SOLVERS) {
- Solver solver = SOLVERS.get(solverId);
+ Solver<Object> solver = SOLVERS.get(solverId);
if (solver == null) {
solver = createSolver();
SOLVERS.put(solverId, solver);
@@ -61,11 +61,11 @@ public class OptaPlannerEndpoint extends DefaultEndpoint {
}
}
- protected Solver createSolver() {
+ protected Solver<Object> createSolver() {
return solverFactory.buildSolver();
}
- protected Solver getSolver(String solverId) {
+ protected Solver<Object> getSolver(String solverId) {
synchronized (SOLVERS) {
return SOLVERS.get(solverId);
}
@@ -89,7 +89,7 @@ public class OptaPlannerEndpoint extends DefaultEndpoint {
@Override
protected void doStop() throws Exception {
synchronized (SOLVERS) {
- for (Solver solver : SOLVERS.values()) {
+ for (Solver<Object> solver : SOLVERS.values()) {
solver.terminateEarly();
SOLVERS.remove(solver);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerProducer.java b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerProducer.java
index 5a8556d..c993aee 100644
--- a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerProducer.java
+++ b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerProducer.java
@@ -20,6 +20,7 @@ import java.util.concurrent.ExecutorService;
import org.apache.camel.Exchange;
import org.apache.camel.impl.DefaultProducer;
+import org.optaplanner.core.api.domain.solution.PlanningSolution;
import org.optaplanner.core.api.domain.solution.Solution;
import org.optaplanner.core.api.solver.Solver;
import org.optaplanner.core.impl.solver.ProblemFactChange;
@@ -43,8 +44,7 @@ public class OptaPlannerProducer extends DefaultProducer {
@Override
protected void doStart() throws Exception {
if (configuration.isAsync()) {
- executor = endpoint.getCamelContext().getExecutorServiceManager().newFixedThreadPool(
- this, endpoint.getEndpointUri(), configuration.getThreadPoolSize());
+ executor = endpoint.getCamelContext().getExecutorServiceManager().newFixedThreadPool(this, endpoint.getEndpointUri(), configuration.getThreadPoolSize());
}
super.doStart();
}
@@ -58,20 +58,26 @@ public class OptaPlannerProducer extends DefaultProducer {
super.doStop();
}
+ @SuppressWarnings("unchecked")
@Override
public synchronized void process(Exchange exchange) throws Exception {
final Object body = exchange.getIn().getMandatoryBody();
final String solverId = getSolverId(exchange);
- if (body instanceof Solution) {
+ /*
+ * Keep for backward compatibility untill optaplanner version 8.0.0 not
+ * released After that the code '|| body instanceof Solution' need to be
+ * removed
+ */
+ if (body.getClass().isAnnotationPresent(PlanningSolution.class) || body instanceof Solution) {
if (isAsync(exchange)) {
LOGGER.debug("Asynchronously solving problem: [{}] with id [{}]", body, solverId);
- final Solver solver = endpoint.getOrCreateSolver(solverId);
+ final Solver<Object> solver = endpoint.getOrCreateSolver(solverId);
executor.submit(new Runnable() {
@Override
public void run() {
try {
- solver.solve((Solution) body);
+ solver.solve(body);
} catch (Throwable e) {
LOGGER.error("Asynchronously solving failed for solverId ({})", solverId, e);
}
@@ -79,26 +85,26 @@ public class OptaPlannerProducer extends DefaultProducer {
});
} else {
LOGGER.debug("Synchronously solving problem: [{}] with id [{}]", body, solverId);
- Solver solver = endpoint.getSolver(solverId);
+ Solver<Object> solver = endpoint.getSolver(solverId);
if (solver == null) {
solver = endpoint.createSolver();
}
- solver.solve((Solution) body);
+ solver.solve(body);
populateResult(exchange, solver);
}
} else if (body instanceof ProblemFactChange) {
LOGGER.debug("Adding ProblemFactChange to solver: [{}] with id [{}]", body, solverId);
- Solver solver = endpoint.getOrCreateSolver(solverId);
- solver.addProblemFactChange((ProblemFactChange)body);
+ Solver<Object> solver = endpoint.getOrCreateSolver(solverId);
+ solver.addProblemFactChange((ProblemFactChange<Object>)body);
if (!isAsync(exchange)) {
while (!solver.isEveryProblemFactChangeProcessed()) {
- Thread.sleep(100);
+ Thread.sleep(OptaPlannerConstants.IS_EVERY_PROBLEM_FACT_CHANGE_DELAY);
}
}
populateResult(exchange, solver);
} else {
LOGGER.debug("Retrieving best score for solver: [{}]", solverId);
- Solver solver = endpoint.getSolver(solverId);
+ Solver<Object> solver = endpoint.getSolver(solverId);
if (solver == null) {
throw new RuntimeException("Solver not found: " + solverId);
}
@@ -106,7 +112,7 @@ public class OptaPlannerProducer extends DefaultProducer {
}
}
- private void populateResult(Exchange exchange, Solver solver) {
+ private void populateResult(Exchange exchange, Solver<Object> solver) {
exchange.getIn().setBody(solver.getBestSolution());
exchange.getIn().setHeader(OptaPlannerConstants.TIME_SPENT, solver.getTimeMillisSpent());
exchange.getIn().setHeader(OptaPlannerConstants.IS_EVERY_PROBLEM_FACT_CHANGE_PROCESSED, solver.isEveryProblemFactChangeProcessed());
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/components/camel-optaplanner/src/test/java/org/apache/camel/component/optaplanner/OptaPlannerDaemonSolverTest.java
----------------------------------------------------------------------
diff --git a/components/camel-optaplanner/src/test/java/org/apache/camel/component/optaplanner/OptaPlannerDaemonSolverTest.java b/components/camel-optaplanner/src/test/java/org/apache/camel/component/optaplanner/OptaPlannerDaemonSolverTest.java
index 48e9e23..c35ad0b 100644
--- a/components/camel-optaplanner/src/test/java/org/apache/camel/component/optaplanner/OptaPlannerDaemonSolverTest.java
+++ b/components/camel-optaplanner/src/test/java/org/apache/camel/component/optaplanner/OptaPlannerDaemonSolverTest.java
@@ -18,11 +18,11 @@ package org.apache.camel.component.optaplanner;
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.Objects;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
-import org.apache.commons.lang3.ObjectUtils;
import org.junit.Test;
import org.optaplanner.core.impl.score.director.ScoreDirector;
import org.optaplanner.core.impl.solver.ProblemFactChange;
@@ -72,7 +72,7 @@ public class OptaPlannerDaemonSolverTest extends CamelTestSupport {
};
}
- private static class RemoveComputerChange implements ProblemFactChange {
+ private static class RemoveComputerChange implements ProblemFactChange<Object> {
private final CloudComputer removingComputer;
@@ -81,10 +81,10 @@ public class OptaPlannerDaemonSolverTest extends CamelTestSupport {
}
@Override
- public void doChange(ScoreDirector scoreDirector) {
+ public void doChange(ScoreDirector<Object> scoreDirector) {
CloudBalance cloudBalance = (CloudBalance) scoreDirector.getWorkingSolution();
for (CloudProcess process : cloudBalance.getProcessList()) {
- if (ObjectUtils.equals(process.getComputer(), removingComputer)) {
+ if (Objects.equals(process.getComputer(), removingComputer)) {
scoreDirector.beforeVariableChanged(process, "computer");
process.setComputer(null);
scoreDirector.afterVariableChanged(process, "computer");
@@ -93,7 +93,7 @@ public class OptaPlannerDaemonSolverTest extends CamelTestSupport {
cloudBalance.setComputerList(new ArrayList<CloudComputer>(cloudBalance.getComputerList()));
for (Iterator<CloudComputer> it = cloudBalance.getComputerList().iterator(); it.hasNext();) {
CloudComputer workingComputer = it.next();
- if (ObjectUtils.equals(workingComputer, removingComputer)) {
+ if (Objects.equals(workingComputer, removingComputer)) {
scoreDirector.beforeProblemFactRemoved(workingComputer);
it.remove(); // remove from list
scoreDirector.beforeProblemFactRemoved(workingComputer);
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/daemonSolverConfig.xml
----------------------------------------------------------------------
diff --git a/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/daemonSolverConfig.xml b/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/daemonSolverConfig.xml
index 0e1de00..0505362 100644
--- a/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/daemonSolverConfig.xml
+++ b/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/daemonSolverConfig.xml
@@ -22,7 +22,9 @@
<!-- Run in daemon mode -->
<daemon>true</daemon>
- <!--<environmentMode>FAST_ASSERT</environmentMode>-->
+ <!--
+ <environmentMode>FAST_ASSERT</environmentMode>
+ -->
<!-- Domain model configuration -->
<solutionClass>org.optaplanner.examples.cloudbalancing.domain.CloudBalance</solutionClass>
@@ -30,7 +32,6 @@
<!-- Score configuration -->
<scoreDirectorFactory>
- <scoreDefinitionType>HARD_SOFT</scoreDefinitionType>
<scoreDrl>org/optaplanner/examples/cloudbalancing/solver/cloudBalancingScoreRules.drl</scoreDrl>
</scoreDirectorFactory>
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/solverConfig.xml
----------------------------------------------------------------------
diff --git a/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/solverConfig.xml b/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/solverConfig.xml
index 39e0bef..0daf103 100644
--- a/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/solverConfig.xml
+++ b/components/camel-optaplanner/src/test/resources/org/apache/camel/component/optaplanner/solverConfig.xml
@@ -18,7 +18,9 @@
-->
<solver>
- <!--<environmentMode>FAST_ASSERT</environmentMode>-->
+ <!--
+ <environmentMode>FAST_ASSERT</environmentMode>
+ -->
<!-- Domain model configuration -->
<solutionClass>org.optaplanner.examples.cloudbalancing.domain.CloudBalance</solutionClass>
@@ -26,7 +28,6 @@
<!-- Score configuration -->
<scoreDirectorFactory>
- <scoreDefinitionType>HARD_SOFT</scoreDefinitionType>
<scoreDrl>org/optaplanner/examples/cloudbalancing/solver/cloudBalancingScoreRules.drl</scoreDrl>
</scoreDirectorFactory>
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 7afdcdd..781f8f0 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -188,7 +188,7 @@
<docker-maven-plugin-version>0.22.1</docker-maven-plugin-version>
<dom4j-bundle-version>1.6.1_5</dom4j-bundle-version>
<dozer-version>6.1.0</dozer-version>
- <drools-version>6.5.0.Final</drools-version>
+ <drools-version>7.3.0.Final</drools-version>
<dropbox-version>1.8.2</dropbox-version>
<easymock-version>3.4</easymock-version>
<eclipse-equinox-common-version>3.3.0-v20070426</eclipse-equinox-common-version>
@@ -436,7 +436,7 @@
<kafka-bundle-version>0.11.0.0_1</kafka-bundle-version>
<karaf2-version>2.4.4</karaf2-version>
<karaf4-version>4.1.2</karaf4-version>
- <kie-version>6.5.0.Final</kie-version>
+ <kie-version>7.3.0.Final</kie-version>
<krati-version>0.4.9</krati-version>
<kubernetes-client-version>2.6.3</kubernetes-client-version>
<kubernetes-model-version>1.1.4</kubernetes-model-version>
@@ -543,7 +543,7 @@
<opentracing-version>0.30.0</opentracing-version>
<opentracing-tracerresolver-version>0.1.0</opentracing-tracerresolver-version>
<ops4j-base-version>1.5.0</ops4j-base-version>
- <optaplanner-version>6.5.0.Final</optaplanner-version>
+ <optaplanner-version>7.3.0.Final</optaplanner-version>
<oro-bundle-version>2.0.8_6</oro-bundle-version>
<os-maven-plugin-version>1.4.1.Final</os-maven-plugin-version>
<oscache-bundle-version>2.4_5</oscache-bundle-version>
@@ -689,6 +689,7 @@
<twilio-version>7.9.1</twilio-version>
<twitter4j-bundle-version>4.0.6_1</twitter4j-bundle-version>
<twitter4j-version>4.0.6</twitter4j-version>
+ <uberfire-maven-support-version>1.3.0.Final</uberfire-maven-support-version>
<undertow-version>1.4.20.Final</undertow-version>
<univocity-parsers-version>2.3.1</univocity-parsers-version>
<unix-socket-factory-version>2015-01-27T15-02-14</unix-socket-factory-version>
http://git-wip-us.apache.org/repos/asf/camel/blob/73132861/platforms/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index 2305675..1257bbd 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -1612,6 +1612,7 @@
<bundle dependency='true'>mvn:commons-io/commons-io/${commons-io-version}</bundle>
<bundle dependency='true'>mvn:commons-collections/commons-collections/${commons-collections-version}</bundle>
<bundle dependency='true'>mvn:org.optaplanner/optaplanner-core/${optaplanner-version}</bundle>
+ <bundle dependency='true'>mvn:org.uberfire/uberfire-maven-support/${uberfire-maven-support-version}</bundle>
<bundle dependency='true'>mvn:org.kie/kie-api/${kie-version}</bundle>
<bundle dependency='true'>mvn:org.kie/kie-internal/${kie-version}</bundle>
<bundle dependency='true'>mvn:org.drools/drools-core/${drools-version}</bundle>