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>