This is an automated email from the ASF dual-hosted git repository.
mariofusco pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git
The following commit(s) were added to refs/heads/main by this push:
new 293afbb46f [NO ISSUE] Quarkus ruleunit extension (#6352)
293afbb46f is described below
commit 293afbb46fe1aff3f68db2c4203851dbaa951c0b
Author: Paolo Bizzarri <[email protected]>
AuthorDate: Wed Jun 11 14:05:03 2025 +0200
[NO ISSUE] Quarkus ruleunit extension (#6352)
* Trying to create proper extension for drools ruleunit
* Fix for proper working of the extension
* More work on drools quarkus ruleunit extension
* Proper naming for modules
* First cut for codestarts for ruleunits
* WIP - trying to fix stuff
* Fixed various issues
* Reduced duplicated classes
* Removed the quarkus-common module
* Working version of the PR
* Trying to fix split packages
---
bom/drools-bom/pom.xml | 44 ++++-
.../quarkus/deployment/DroolsAssetsProcessor.java | 215 ++-------------------
.../io.quarkus.deployment.dev.CompilationProvider | 2 +-
.../drools/quarkus/deployment/BuildItemsTest.java | 3 +
.../drools-quarkus-examples-multiunit/pom.xml | 10 +-
.../drools-quarkus-examples-reactive/pom.xml | 8 +-
.../drools-quarkus-quickstart-test/guide.adoc | 6 +-
.../drools-quarkus-quickstart-test/pom.xml | 8 +-
.../pom.xml | 12 +-
.../drools-quarkus-ruleunits-deployment/pom.xml | 186 ++++++++++++++++++
.../deployment/ruleunit/DroolsAssetsProcessor.java | 68 +++++++
.../io.quarkus.deployment.dev.CompilationProvider | 2 +-
.../pom.xml | 16 +-
.../codestart.yml | 26 +++
.../java/src/main/java/org/acme/FirstUnit.java} | 28 ++-
.../java/src/main/java/org/acme/RuleInput.java} | 25 +--
.../java/src/main/java/org/acme/RuleOutput1.java} | 25 +--
.../java/src/main/java/org/acme/RuleOutput2.java} | 26 +--
.../java/src/main/java/org/acme/SecondUnit.java} | 28 ++-
.../java/src/main/resources/org/acme/First.drl} | 33 ++--
.../java/src/main/resources/org/acme/Second.drl} | 32 ++-
.../resources/META-INF/quarkus-extension.yaml} | 19 +-
.../drools-quarkus-util-deployment/pom.xml | 13 ++
.../deployment/AbstractCompilationProvider.java | 2 +-
.../deployment/AbstractDroolsAssetsProcessor.java} | 36 ++--
.../deployment/DroolsCompilationProvider.java | 2 +-
.../util}/deployment/ResourceCollector.java | 2 +-
drools-quarkus-extension/drools-quarkus/pom.xml | 7 +-
drools-quarkus-extension/pom.xml | 2 +
29 files changed, 482 insertions(+), 404 deletions(-)
diff --git a/bom/drools-bom/pom.xml b/bom/drools-bom/pom.xml
index 55081e52f9..aecc807c9e 100644
--- a/bom/drools-bom/pom.xml
+++ b/bom/drools-bom/pom.xml
@@ -687,6 +687,25 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
+ <version>${project.version}</version>
+ <classifier>sources</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-quarkus-deployment</artifactId>
@@ -711,6 +730,30 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
+ <version>${project.version}</version>
+ <classifier>sources</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-quarkus-util-deployment</artifactId>
@@ -729,7 +772,6 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
-
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-alphanetwork-compiler</artifactId>
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsAssetsProcessor.java
b/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsAssetsProcessor.java
index 6ad807ffa0..42f5aa97b9 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsAssetsProcessor.java
+++
b/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsAssetsProcessor.java
@@ -18,17 +18,6 @@
*/
package org.drools.quarkus.deployment;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
import io.quarkus.arc.deployment.GeneratedBeanBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
@@ -40,69 +29,33 @@ import
io.quarkus.deployment.builditem.GeneratedResourceBuildItem;
import io.quarkus.deployment.builditem.LiveReloadBuildItem;
import
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
-import io.quarkus.maven.dependency.DependencyFlags;
-import io.quarkus.maven.dependency.ResolvedDependency;
import io.quarkus.resteasy.reactive.spi.GeneratedJaxRsResourceBuildItem;
import io.quarkus.vertx.http.deployment.spi.AdditionalStaticResourceBuildItem;
-import jakarta.inject.Inject;
-import org.drools.codegen.common.DroolsModelBuildContext;
-import org.drools.codegen.common.GeneratedFile;
-import org.drools.codegen.common.GeneratedFileType;
-import org.drools.compiler.kproject.models.KieBaseModelImpl;
-import org.drools.model.codegen.execmodel.PackageModel;
-import org.drools.model.codegen.project.RuleCodegen;
+import org.drools.quarkus.util.deployment.AbstractDroolsAssetsProcessor;
import org.drools.quarkus.util.deployment.GlobalsBuildItem;
import org.drools.quarkus.util.deployment.KmoduleKieBaseModelsBuiltItem;
import org.drools.quarkus.util.deployment.PatternsTypesBuildItem;
-import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
-import org.kie.api.builder.model.KieBaseModel;
-import org.kie.api.builder.model.KieSessionModel;
-import org.kie.api.conf.EventProcessingOption;
-import org.kie.api.conf.KieBaseMutabilityOption;
-import org.kie.api.conf.PrototypesOption;
-import org.kie.api.conf.SessionsPoolOption;
-import org.kie.api.io.Resource;
-import org.kie.api.runtime.conf.ClockTypeOption;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import static org.drools.model.codegen.project.RuleCodegen.ofResources;
-import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.HOT_RELOAD_SUPPORT_PATH;
-import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.compileGeneratedSources;
-import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.createDroolsBuildContext;
-import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.dumpFilesToDisk;
-import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.getHotReloadSupportSource;
-import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.getRuleUnitDefProducerSource;
-import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.registerResources;
-import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.toClassName;
-
-public class DroolsAssetsProcessor {
-
- private static final Logger LOGGER =
LoggerFactory.getLogger(DroolsAssetsProcessor.class);
-
- @Inject
- ArchiveRootBuildItem root;
- @Inject
- LiveReloadBuildItem liveReload;
- @Inject
- CurateOutcomeBuildItem curateOutcomeBuildItem;
- @Inject
- CombinedIndexBuildItem combinedIndexBuildItem;
-
- private static final String FEATURE = "drools";
-
- private static final String CONFIG_PREFIX = "drools.kbase.";
-
- private static final String ASSET_DEPENDENCIES_CONFIG =
"drools.asset.dependencies";
+public class DroolsAssetsProcessor extends AbstractDroolsAssetsProcessor{
+
+ public DroolsAssetsProcessor() {
+ super();
+ }
+
@BuildStep
public FeatureBuildItem feature() {
return new FeatureBuildItem(FEATURE);
}
+ private static final String FEATURE = "drools";
@BuildStep
- public void generateSources( BuildProducer<GeneratedBeanBuildItem>
generatedBeans,
+ public void generateSources(
+ ArchiveRootBuildItem root,
+ LiveReloadBuildItem liveReload,
+ CurateOutcomeBuildItem curateOutcomeBuildItem,
+ CombinedIndexBuildItem combinedIndexBuildItem,
+ BuildProducer<GeneratedBeanBuildItem> generatedBeans,
BuildProducer<NativeImageResourceBuildItem>
resource,
BuildProducer<AdditionalStaticResourceBuildItem> staticResProducer,
BuildProducer<GeneratedResourceBuildItem>
genResBI,
@@ -110,144 +63,6 @@ public class DroolsAssetsProcessor {
BuildProducer<KmoduleKieBaseModelsBuiltItem>
kbaseModelsBI,
BuildProducer<GlobalsBuildItem> globalsBI,
BuildProducer<GeneratedJaxRsResourceBuildItem> jaxrsProducer) {
-
- DroolsModelBuildContext context =
createDroolsBuildContext(root.getPaths(), combinedIndexBuildItem.getIndex());
-
- Path[] assetPaths = getAssetPaths(context);
- Collection<Resource> resources =
ResourceCollector.fromPaths(assetPaths);
-
- RuleCodegen ruleCodegen = ofResources(context,
resources).withKieBaseModels(readKieBaseModels());
- Collection<GeneratedFile> generatedFiles = ruleCodegen.generate();
-
generatedFiles.addAll(getRuleUnitDefProducerSource(combinedIndexBuildItem.getIndex()));
-
- // The HotReloadSupportClass has to be generated only during the first
model generation
- // During actual hot reloads it will be regenerated by the compilation
providers in order to retrigger this build step
- if (!liveReload.isLiveReload()) {
- generatedFiles.add(new GeneratedFile(GeneratedFileType.SOURCE,
HOT_RELOAD_SUPPORT_PATH + ".java", getHotReloadSupportSource()));
- }
-
- // dump files to disk
- dumpFilesToDisk(context.getAppPaths(), generatedFiles);
-
- Collection<ResolvedDependency> dependencies =
curateOutcomeBuildItem.getApplicationModel().getRuntimeDependencies();
-
- // build Java source code and register the generated beans
- Collection<GeneratedBeanBuildItem> generatedBeanBuildItems =
- compileGeneratedSources(context, dependencies, generatedFiles,
liveReload.isLiveReload());
- generatedBeanBuildItems.forEach(generatedBeans::produce);
-
- registerResources(generatedFiles, staticResProducer, resource,
genResBI);
-
- otnClasesBI.produce(new
PatternsTypesBuildItem(ruleCodegen.getPackageModels().stream().collect(Collectors.toMap(PackageModel::getName,
PackageModel::getOtnsClasses))));
- if (ruleCodegen.hasKieBaseModels()) {
- kbaseModelsBI.produce(new
KmoduleKieBaseModelsBuiltItem(ruleCodegen.getKmoduleKieBaseModels()));
- }
- globalsBI.produce(new
GlobalsBuildItem(ruleCodegen.getPackageModels().stream().collect(Collectors.toMap(PackageModel::getName,
PackageModel::getGlobals))));
-
- Set<String> restResourceClassNameSet = generatedFiles.stream()
- .filter(file -> file.type() == GeneratedFileType.REST)
- .map(file -> toClassName(file.path().toString()))
- .collect(Collectors.toSet());
- generatedBeanBuildItems.stream()
- .filter(b -> restResourceClassNameSet.contains(b.getName()))
- .forEach(b -> jaxrsProducer.produce(new
GeneratedJaxRsResourceBuildItem(b.getName(), b.getData())));
- }
-
- private Path[] getAssetPaths(DroolsModelBuildContext context) {
- Path[] appPaths = context.getAppPaths().getPaths();
-
- Config config = ConfigProvider.getConfig();
- Optional<List<String>> assetDependenciesOpt =
config.getOptionalValues(ASSET_DEPENDENCIES_CONFIG, String.class);
- if (assetDependenciesOpt.isPresent()) {
- List<String> assetDependencies =
assetDependenciesOpt.get().stream().map(String::trim).toList();
- Iterable<ResolvedDependency> directDependenciesIter =
curateOutcomeBuildItem.getApplicationModel().getDependencies(DependencyFlags.DIRECT);
- List<ResolvedDependency> directDependencies =
StreamSupport.stream(directDependenciesIter.spliterator(), false).toList();
- Path[] assetDependencyPaths = directDependencies.stream()
- .filter(d -> assetDependencies.contains(d.getGroupId() +
":" + d.getArtifactId()))
- .flatMap(d -> d.getResolvedPaths().stream())
- .toArray(Path[]::new);
- LOGGER.debug("assetDependencyPaths: {}",
Arrays.asList(assetDependencyPaths));
- return Stream.concat(Arrays.stream(assetDependencyPaths),
Arrays.stream(appPaths)).toArray(Path[]::new);
- } else {
- return appPaths;
- }
- }
-
- private Map<String, KieBaseModel> readKieBaseModels() {
- Map<String, KieBaseModel> kieBaseModels = new HashMap<>();
- Config config = ConfigProvider.getConfig();
-
- for (String propertyName : config.getPropertyNames()) {
- if (!propertyName.startsWith(CONFIG_PREFIX)) {
- continue;
- }
-
- String[] splitProp =
propertyName.substring(CONFIG_PREFIX.length()).split("\\.");
- if (splitProp.length < 2) {
- LOGGER.error("Malformed Drools property: " + propertyName);
- continue;
- }
-
- String kBaseName = splitProp[0];
- KieBaseModel kieBaseModel =
kieBaseModels.computeIfAbsent(kBaseName, KieBaseModelImpl::new);
- switch (splitProp[1]) {
- case "packages":
- for (String pkg : config.getValue(propertyName,
String.class).split("\\,")) {
- kieBaseModel.addPackage(pkg);
- }
- break;
- case "default":
- kieBaseModel.setDefault( config.getValue(propertyName,
Boolean.class) );
- break;
- case "prototypes":
-
kieBaseModel.setPrototypes(PrototypesOption.determinePrototypesOption(config.getValue(propertyName,
String.class)));
- break;
- case "eventProcessingMode":
-
kieBaseModel.setEventProcessingMode(EventProcessingOption.determineEventProcessingMode(config.getValue(propertyName,
String.class)));
- break;
- case "mutability":
-
kieBaseModel.setMutability(KieBaseMutabilityOption.determineMutability(config.getValue(propertyName,
String.class)));
- break;
- case "sessionsPool":
-
kieBaseModel.setSessionsPool(SessionsPoolOption.get(config.getValue(propertyName,
Integer.class)));
- break;
- case "ksessions":
- for (String ksession : config.getValue(propertyName,
String.class).split("\\,")) {
- kieBaseModel.newKieSessionModel(ksession);
- }
- break;
- case "ksession":
- if (splitProp.length == 2) {
-
kieBaseModel.newKieSessionModel(config.getValue(propertyName, String.class));
- } else {
- if (splitProp.length < 4) {
- LOGGER.error("Malformed Drools property: " +
propertyName);
- break;
- }
-
- String kSessionName = splitProp[2];
- KieSessionModel kieSessionModel =
kieBaseModel.getKieSessionModels().get(kSessionName);
- if (kieSessionModel == null) {
- kieSessionModel =
kieBaseModel.newKieSessionModel(kSessionName);
- }
-
- switch (splitProp[3]) {
- case "default":
- kieSessionModel.setDefault(
config.getValue(propertyName, Boolean.class) );
- break;
- case "stateless":
- kieSessionModel.setType(
config.getValue(propertyName, Boolean.class) ?
KieSessionModel.KieSessionType.STATELESS :
KieSessionModel.KieSessionType.STATEFUL );
- break;
- case "clockType":
- kieSessionModel.setClockType(
ClockTypeOption.get(config.getValue(propertyName, String.class) ) );
- break;
- }
- }
- break;
- }
-
- }
-
- return kieBaseModels;
+ super.generateSources(root, liveReload, curateOutcomeBuildItem,
combinedIndexBuildItem, generatedBeans, resource, staticResProducer, genResBI,
otnClasesBI, kbaseModelsBI, globalsBI, jaxrsProducer);
}
}
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
b/drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
index d76f53f9cb..6830a11e32 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
+++
b/drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
@@ -17,4 +17,4 @@
# under the License.
#
-org.drools.quarkus.deployment.DroolsCompilationProvider
\ No newline at end of file
+org.drools.quarkus.util.deployment.DroolsCompilationProvider
\ No newline at end of file
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/test/java/org/drools/quarkus/deployment/BuildItemsTest.java
b/drools-quarkus-extension/drools-quarkus-deployment/src/test/java/org/drools/quarkus/deployment/BuildItemsTest.java
index 043aad820f..75cfa8f367 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/test/java/org/drools/quarkus/deployment/BuildItemsTest.java
+++
b/drools-quarkus-extension/drools-quarkus-deployment/src/test/java/org/drools/quarkus/deployment/BuildItemsTest.java
@@ -52,6 +52,8 @@ import io.quarkus.test.QuarkusUnitTest;
/*
* The scope of these tests is to check the resulting BuildItems as produced
by this drools-quarkus-extension.
*/
+
+
public class BuildItemsTest {
static final Logger LOG = LoggerFactory.getLogger(BuildItemsTest.class);
@@ -65,6 +67,7 @@ public class BuildItemsTest {
b.addBuildStep(new BuildStep() {
@Override
public void execute(BuildContext context) {
+
GlobalsBuildItem gbi =
context.consume(GlobalsBuildItem.class);
assertGlobals(gbi.getGlobals());
diff --git
a/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-multiunit/pom.xml
b/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-multiunit/pom.xml
index 461c155ba9..872069de54 100644
---
a/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-multiunit/pom.xml
+++
b/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-multiunit/pom.xml
@@ -29,7 +29,7 @@
<version>999-SNAPSHOT</version>
</parent>
- <name>Drools :: Quarkus Extension :: Examples :: Reactive</name>
+ <name>Drools :: Quarkus Extension :: Examples :: Multiunit</name>
<artifactId>drools-quarkus-examples-multiunit</artifactId>
<properties>
@@ -39,11 +39,7 @@
<dependencies>
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus</artifactId>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-ruleunits-engine</artifactId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
@@ -73,7 +69,7 @@
of it -->
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus-deployment</artifactId>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
diff --git
a/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-reactive/pom.xml
b/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-reactive/pom.xml
index 081ac97154..8c94031080 100644
---
a/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-reactive/pom.xml
+++
b/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-reactive/pom.xml
@@ -39,11 +39,7 @@
<dependencies>
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus</artifactId>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-ruleunits-engine</artifactId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
@@ -88,7 +84,7 @@
of it -->
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus-deployment</artifactId>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
diff --git a/drools-quarkus-extension/drools-quarkus-quickstart-test/guide.adoc
b/drools-quarkus-extension/drools-quarkus-quickstart-test/guide.adoc
index 40d7a74ee1..53a021ece9 100644
--- a/drools-quarkus-extension/drools-quarkus-quickstart-test/guide.adoc
+++ b/drools-quarkus-extension/drools-quarkus-quickstart-test/guide.adoc
@@ -66,11 +66,7 @@ When you have your Quarkus project configured, you can add
the Drools Quarkus ex
----
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus</artifactId>
-</dependency>
-<dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-ruleunits-engine</artifactId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
</dependency>
<dependency>
diff --git a/drools-quarkus-extension/drools-quarkus-quickstart-test/pom.xml
b/drools-quarkus-extension/drools-quarkus-quickstart-test/pom.xml
index 2e4724e4da..7dd782dd98 100644
--- a/drools-quarkus-extension/drools-quarkus-quickstart-test/pom.xml
+++ b/drools-quarkus-extension/drools-quarkus-quickstart-test/pom.xml
@@ -39,11 +39,7 @@
<dependencies>
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus</artifactId>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-ruleunits-engine</artifactId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
@@ -79,7 +75,7 @@
<!-- this is used implicitly by quarkus tests so let's make Maven aware of
it -->
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus-deployment</artifactId>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
<type>pom</type>
<scope>test</scope>
<exclusions>
diff --git
a/drools-quarkus-extension/drools-quarkus-ruleunit-integration-test/pom.xml
b/drools-quarkus-extension/drools-quarkus-ruleunit-integration-test/pom.xml
index f1df8766b4..e1e1a79e83 100644
--- a/drools-quarkus-extension/drools-quarkus-ruleunit-integration-test/pom.xml
+++ b/drools-quarkus-extension/drools-quarkus-ruleunit-integration-test/pom.xml
@@ -29,7 +29,7 @@
<version>999-SNAPSHOT</version>
</parent>
- <name>Drools :: Quarkus Extension :: Integration Test with Rule Unit</name>
+ <name>Drools :: Quarkus Extension :: Integration Test :: Ruleunits</name>
<artifactId>drools-quarkus-ruleunit-integration-test</artifactId>
<properties>
@@ -39,11 +39,7 @@
<dependencies>
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus</artifactId>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-ruleunits-engine</artifactId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
@@ -86,7 +82,7 @@
<!-- this is used implicitly by quarkus tests so let's make Maven aware of
it -->
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-quarkus-deployment</artifactId>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
<type>pom</type>
<scope>test</scope>
<exclusions>
@@ -231,4 +227,4 @@
</build>
</profile>
</profiles>
-</project>
\ No newline at end of file
+</project>
diff --git
a/drools-quarkus-extension/drools-quarkus-ruleunits-deployment/pom.xml
b/drools-quarkus-extension/drools-quarkus-ruleunits-deployment/pom.xml
new file mode 100644
index 0000000000..eb12c96de3
--- /dev/null
+++ b/drools-quarkus-extension/drools-quarkus-ruleunits-deployment/pom.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-extension</artifactId>
+ <version>999-SNAPSHOT</version>
+ </parent>
+
+ <name>Drools :: Quarkus Extension :: Deployment :: Ruleunits</name>
+ <artifactId>drools-quarkus-ruleunits-deployment</artifactId>
+
+ <properties>
+
<java.module.name>org.drools.quarkus.ruleunits.deployment</java.module.name>
+ </properties>
+
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.kie</groupId>
+ <artifactId>kie-drl-map-input-runtime</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-quarkus-util-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-xml-support</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-model-codegen</artifactId>
+ </dependency>
+
+ <!-- quarkus -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-core-deployment</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss</groupId>
+ <artifactId>jandex</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-arc-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-rest-server-spi-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-vertx-http-deployment-spi</artifactId>
+ </dependency>
+
+ <!-- test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5-internal</artifactId>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-xml</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-xml-impl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>io.rest-assured</groupId>
+ <artifactId>rest-assured</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>io.quarkus</groupId>
+
<artifactId>quarkus-extension-processor</artifactId>
+ <version>${version.io.quarkus}</version>
+ </path>
+ </annotationProcessorPaths>
+ <compilerArgs>
+ <arg>-AlegacyConfigRoot=true</arg>
+ </compilerArgs>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-test</id>
+ <phase>test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ <configuration>
+ <systemPropertyVariables>
+
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
+
+ <!-- quarkus-resteasy brings in a couple of dependencies in the
javax.* namespace that cannot be excluded -->
+ <!-- that's why it is necessary to disable the plugin that checks
for banned dependencies -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>ban-blacklisted-dependencies</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <fail>false</fail>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build></project>
diff --git
a/drools-quarkus-extension/drools-quarkus-ruleunits-deployment/src/main/java/org/drools/quarkus/deployment/ruleunit/DroolsAssetsProcessor.java
b/drools-quarkus-extension/drools-quarkus-ruleunits-deployment/src/main/java/org/drools/quarkus/deployment/ruleunit/DroolsAssetsProcessor.java
new file mode 100644
index 0000000000..87671b7de1
--- /dev/null
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits-deployment/src/main/java/org/drools/quarkus/deployment/ruleunit/DroolsAssetsProcessor.java
@@ -0,0 +1,68 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.drools.quarkus.deployment.ruleunit;
+
+
+import io.quarkus.arc.deployment.GeneratedBeanBuildItem;
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.ArchiveRootBuildItem;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.GeneratedResourceBuildItem;
+import io.quarkus.deployment.builditem.LiveReloadBuildItem;
+import
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
+import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
+import io.quarkus.resteasy.reactive.spi.GeneratedJaxRsResourceBuildItem;
+import io.quarkus.vertx.http.deployment.spi.AdditionalStaticResourceBuildItem;
+import org.drools.quarkus.util.deployment.AbstractDroolsAssetsProcessor;
+import org.drools.quarkus.util.deployment.GlobalsBuildItem;
+import org.drools.quarkus.util.deployment.KmoduleKieBaseModelsBuiltItem;
+import org.drools.quarkus.util.deployment.PatternsTypesBuildItem;
+
+public class DroolsAssetsProcessor extends AbstractDroolsAssetsProcessor{
+
+
+ public DroolsAssetsProcessor() {
+ super();
+ }
+
+ @BuildStep
+ public FeatureBuildItem feature() {
+ return new FeatureBuildItem(FEATURE);
+ }
+ private static final String FEATURE = "drools";
+
+ @BuildStep
+ public void generateSources(
+ ArchiveRootBuildItem root,
+ LiveReloadBuildItem liveReload,
+ CurateOutcomeBuildItem curateOutcomeBuildItem,
+ CombinedIndexBuildItem combinedIndexBuildItem,
+ BuildProducer<GeneratedBeanBuildItem> generatedBeans,
+ BuildProducer<NativeImageResourceBuildItem>
resource,
+
BuildProducer<AdditionalStaticResourceBuildItem> staticResProducer,
+ BuildProducer<GeneratedResourceBuildItem>
genResBI,
+ BuildProducer<PatternsTypesBuildItem>
otnClasesBI,
+ BuildProducer<KmoduleKieBaseModelsBuiltItem>
kbaseModelsBI,
+ BuildProducer<GlobalsBuildItem> globalsBI,
+
BuildProducer<GeneratedJaxRsResourceBuildItem> jaxrsProducer) {
+ super.generateSources(root, liveReload, curateOutcomeBuildItem,
combinedIndexBuildItem, generatedBeans, resource, staticResProducer, genResBI,
otnClasesBI, kbaseModelsBI, globalsBI, jaxrsProducer);
+ }
+}
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
b/drools-quarkus-extension/drools-quarkus-ruleunits-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
similarity index 92%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
copy to
drools-quarkus-extension/drools-quarkus-ruleunits-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
index d76f53f9cb..6830a11e32 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
@@ -17,4 +17,4 @@
# under the License.
#
-org.drools.quarkus.deployment.DroolsCompilationProvider
\ No newline at end of file
+org.drools.quarkus.util.deployment.DroolsCompilationProvider
\ No newline at end of file
diff --git a/drools-quarkus-extension/drools-quarkus/pom.xml
b/drools-quarkus-extension/drools-quarkus-ruleunits/pom.xml
similarity index 94%
copy from drools-quarkus-extension/drools-quarkus/pom.xml
copy to drools-quarkus-extension/drools-quarkus-ruleunits/pom.xml
index 5bf7e4d928..c0f0737dad 100644
--- a/drools-quarkus-extension/drools-quarkus/pom.xml
+++ b/drools-quarkus-extension/drools-quarkus-ruleunits/pom.xml
@@ -29,16 +29,20 @@
<version>999-SNAPSHOT</version>
</parent>
- <artifactId>drools-quarkus</artifactId>
- <name>Drools Quarkus - Runtime</name>
- <description>Define and execute your business rules with
Drools</description>
+ <artifactId>drools-quarkus-ruleunits</artifactId>
+ <name>Drools :: Quarkus Extension :: Runtime :: Ruleunits</name>
+ <description>Define and execute your business rules with Drools and
Ruleunits</description>
<url>https://www.drools.org/</url>
<properties>
- <java.module.name>org.drools.quarkus.runtime</java.module.name>
+
<java.module.name>org.drools.quarkus.ruleunits.runtime</java.module.name>
</properties>
<dependencies>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-ruleunits-engine</artifactId>
+ </dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
@@ -108,8 +112,7 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
-
- </dependencies>
+ </dependencies>
<build>
<plugins>
@@ -152,6 +155,7 @@
<groupId>io.smallrye</groupId>
<artifactId>jandex-maven-plugin</artifactId>
</plugin>
+
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
diff --git
a/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/codestart.yml
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/codestart.yml
new file mode 100644
index 0000000000..9f965077fe
--- /dev/null
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/codestart.yml
@@ -0,0 +1,26 @@
+ # Licensed to the Apache Software Foundation (ASF) under one
+ # or more contributor license agreements. See the NOTICE file
+ # distributed with this work for additional information
+ # regarding copyright ownership. The ASF licenses this file
+ # to you under the Apache License, Version 2.0 (the
+ # "License"); you may not use this file except in compliance
+ # with the License. You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing,
+ # software distributed under the License is distributed on an
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ # KIND, either express or implied. See the License for the
+ # specific language governing permissions and limitations
+ # under the License.
+
+
+name: quarkus-drools-ruleunits-codestart
+ref: quarkus-drools-ruleunits
+type: code
+tags: extension-codestart
+metadata:
+ title: Quarkus Drool Ruleunits Codestsart
+ description: Start to code with the Quarkus Drool Ruleunits Extension
+ related-guide-section: https://quarkus.io/guides/drools
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/FirstUnit.java
similarity index 52%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
copy to
drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/FirstUnit.java
index 885900c3af..c2a0662da5 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/FirstUnit.java
@@ -16,28 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.acme;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+import org.drools.ruleunits.api.DataSource;
+import org.drools.ruleunits.api.DataStream;
+import org.drools.ruleunits.api.RuleUnitData;
-import org.kie.api.io.ResourceType;
+public class FirstUnit implements RuleUnitData {
-public class DroolsCompilationProvider extends AbstractCompilationProvider {
+ private final DataStream<RuleInput> input = DataSource.createStream();
+ private final DataStream<RuleOutput1> output = DataSource.createStream();
- private static final Set<String> MANAGED_EXTENSIONS = initExtensions();
-
- private static Set<String> initExtensions() {
- Set<String> extensions = new HashSet<>();
- extensions.addAll(ResourceType.DRL.getAllExtensions());
- extensions.addAll(ResourceType.DTABLE.getAllExtensions());
- extensions.addAll(ResourceType.YAML.getAllExtensions());
- return Collections.unmodifiableSet(extensions);
+ public DataStream<RuleInput> getInput() {
+ return input;
}
- @Override
- public Set<String> handledExtensions() {
- return MANAGED_EXTENSIONS;
+ public DataStream<RuleOutput1> getOutput() {
+ return output;
}
}
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleInput.java
similarity index 52%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
copy to
drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleInput.java
index 885900c3af..4099812ffc 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleInput.java
@@ -16,28 +16,19 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.acme;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+import org.drools.ruleunits.api.RuleUnitData;
-import org.kie.api.io.ResourceType;
+public class RuleInput implements RuleUnitData {
-public class DroolsCompilationProvider extends AbstractCompilationProvider {
+ private final String text;
- private static final Set<String> MANAGED_EXTENSIONS = initExtensions();
-
- private static Set<String> initExtensions() {
- Set<String> extensions = new HashSet<>();
- extensions.addAll(ResourceType.DRL.getAllExtensions());
- extensions.addAll(ResourceType.DTABLE.getAllExtensions());
- extensions.addAll(ResourceType.YAML.getAllExtensions());
- return Collections.unmodifiableSet(extensions);
+ public RuleInput(String text) {
+ this.text = text;
}
- @Override
- public Set<String> handledExtensions() {
- return MANAGED_EXTENSIONS;
+ public String getText() {
+ return text;
}
}
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleOutput1.java
similarity index 52%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
copy to
drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleOutput1.java
index 885900c3af..bf6b92b1c3 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleOutput1.java
@@ -16,28 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.acme;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+public class RuleOutput1 {
-import org.kie.api.io.ResourceType;
+ private final String text;
-public class DroolsCompilationProvider extends AbstractCompilationProvider {
-
- private static final Set<String> MANAGED_EXTENSIONS = initExtensions();
-
- private static Set<String> initExtensions() {
- Set<String> extensions = new HashSet<>();
- extensions.addAll(ResourceType.DRL.getAllExtensions());
- extensions.addAll(ResourceType.DTABLE.getAllExtensions());
- extensions.addAll(ResourceType.YAML.getAllExtensions());
- return Collections.unmodifiableSet(extensions);
+ public RuleOutput1(String text) {
+ this.text = text;
}
- @Override
- public Set<String> handledExtensions() {
- return MANAGED_EXTENSIONS;
+ public String getText() {
+ return text;
}
}
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleOutput2.java
similarity index 52%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
copy to
drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleOutput2.java
index 885900c3af..b1693285cf 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/RuleOutput2.java
@@ -16,28 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.acme;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+public class RuleOutput2 {
+ private final String text;
-import org.kie.api.io.ResourceType;
-
-public class DroolsCompilationProvider extends AbstractCompilationProvider {
-
- private static final Set<String> MANAGED_EXTENSIONS = initExtensions();
-
- private static Set<String> initExtensions() {
- Set<String> extensions = new HashSet<>();
- extensions.addAll(ResourceType.DRL.getAllExtensions());
- extensions.addAll(ResourceType.DTABLE.getAllExtensions());
- extensions.addAll(ResourceType.YAML.getAllExtensions());
- return Collections.unmodifiableSet(extensions);
+ public RuleOutput2(String text) {
+ this.text = text;
}
- @Override
- public Set<String> handledExtensions() {
- return MANAGED_EXTENSIONS;
+ public String getText() {
+ return text;
}
}
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/SecondUnit.java
similarity index 52%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
copy to
drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/SecondUnit.java
index 885900c3af..818441fdac 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/java/org/acme/SecondUnit.java
@@ -16,28 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.acme;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+import org.drools.ruleunits.api.DataSource;
+import org.drools.ruleunits.api.DataStream;
+import org.drools.ruleunits.api.RuleUnitData;
-import org.kie.api.io.ResourceType;
+public class SecondUnit implements RuleUnitData {
-public class DroolsCompilationProvider extends AbstractCompilationProvider {
+ private final DataStream<RuleInput> input = DataSource.createStream();
+ private final DataStream<RuleOutput2> output = DataSource.createStream();
- private static final Set<String> MANAGED_EXTENSIONS = initExtensions();
-
- private static Set<String> initExtensions() {
- Set<String> extensions = new HashSet<>();
- extensions.addAll(ResourceType.DRL.getAllExtensions());
- extensions.addAll(ResourceType.DTABLE.getAllExtensions());
- extensions.addAll(ResourceType.YAML.getAllExtensions());
- return Collections.unmodifiableSet(extensions);
+ public DataStream<RuleInput> getInput() {
+ return input;
}
- @Override
- public Set<String> handledExtensions() {
- return MANAGED_EXTENSIONS;
+ public DataStream<RuleOutput2> getOutput() {
+ return output;
}
}
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/resources/org/acme/First.drl
similarity index 51%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
copy to
drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/resources/org/acme/First.drl
index 885900c3af..154ac7bc5d 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/resources/org/acme/First.drl
@@ -16,28 +16,19 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+package org.acme;
-import org.kie.api.io.ResourceType;
+unit FirstUnit;
-public class DroolsCompilationProvider extends AbstractCompilationProvider {
+import org.drools.ruleunits.api.DataSource;
+import org.drools.ruleunits.api.DataStream;
+import org.drools.ruleunits.api.RuleUnitData;
- private static final Set<String> MANAGED_EXTENSIONS = initExtensions();
-
- private static Set<String> initExtensions() {
- Set<String> extensions = new HashSet<>();
- extensions.addAll(ResourceType.DRL.getAllExtensions());
- extensions.addAll(ResourceType.DTABLE.getAllExtensions());
- extensions.addAll(ResourceType.YAML.getAllExtensions());
- return Collections.unmodifiableSet(extensions);
- }
-
- @Override
- public Set<String> handledExtensions() {
- return MANAGED_EXTENSIONS;
- }
-}
+rule "MyRule"
+when
+ /input [ text == "Hello" ];
+then
+ System.out.println("Hi 1");
+ output.append(new RuleOutput1("Hi 1"));
+end
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/resources/org/acme/Second.drl
similarity index 51%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
copy to
drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/resources/org/acme/Second.drl
index 885900c3af..2be9347bcb 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/codestarts/quarkus/drools-quarkus-ruleunits-codestart/java/src/main/resources/org/acme/Second.drl
@@ -16,28 +16,18 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+package org.acme;
-import org.kie.api.io.ResourceType;
+unit SecondUnit;
-public class DroolsCompilationProvider extends AbstractCompilationProvider {
+import org.drools.ruleunits.api.DataSource;
+import org.drools.ruleunits.api.DataStream;
+import org.drools.ruleunits.api.RuleUnitData;
- private static final Set<String> MANAGED_EXTENSIONS = initExtensions();
-
- private static Set<String> initExtensions() {
- Set<String> extensions = new HashSet<>();
- extensions.addAll(ResourceType.DRL.getAllExtensions());
- extensions.addAll(ResourceType.DTABLE.getAllExtensions());
- extensions.addAll(ResourceType.YAML.getAllExtensions());
- return Collections.unmodifiableSet(extensions);
- }
-
- @Override
- public Set<String> handledExtensions() {
- return MANAGED_EXTENSIONS;
- }
-}
+rule "MyRule"
+when
+ /input [ text == "Hello" ];
+then
+ output.append(new RuleOutput2("Hi 2"));
+end
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 65%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
copy to
drools-quarkus-extension/drools-quarkus-ruleunits/src/main/resources/META-INF/quarkus-extension.yaml
index d76f53f9cb..6c76af0c2d 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/resources/META-INF/services/io.quarkus.deployment.dev.CompilationProvider
+++
b/drools-quarkus-extension/drools-quarkus-ruleunits/src/main/resources/META-INF/quarkus-extension.yaml
@@ -17,4 +17,21 @@
# under the License.
#
-org.drools.quarkus.deployment.DroolsCompilationProvider
\ No newline at end of file
+---
+name: "Drools Ruleunits"
+metadata:
+ keywords:
+ - "drools"
+ - "rules"
+ - "rule engine"
+ - "artificial intelligence"
+ - "DRL"
+ guide: "https://quarkus.io/guides/drools"
+ categories:
+ - "business-automation"
+ status: "stable"
+ codestart:
+ name: quarkus-drools-ruleunits
+ languages:
+ - "java"
+ artifact:
"org.drools:drools-quarkus-ruleunits:codestarts:jar:${project.version}"
diff --git a/drools-quarkus-extension/drools-quarkus-util-deployment/pom.xml
b/drools-quarkus-extension/drools-quarkus-util-deployment/pom.xml
index 5ee6b05108..b9a3cbc0f0 100644
--- a/drools-quarkus-extension/drools-quarkus-util-deployment/pom.xml
+++ b/drools-quarkus-extension/drools-quarkus-util-deployment/pom.xml
@@ -49,6 +49,14 @@
<groupId>org.drools</groupId>
<artifactId>drools-codegen-common</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-xml-support</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-model-codegen</artifactId>
+ </dependency>
<!-- quarkus -->
<dependency>
@@ -69,6 +77,11 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-vertx-http-deployment-spi</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-rest-server-spi-deployment</artifactId>
+ </dependency>
+
</dependencies>
</project>
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/AbstractCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/AbstractCompilationProvider.java
similarity index 98%
rename from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/AbstractCompilationProvider.java
rename to
drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/AbstractCompilationProvider.java
index a854acde13..f36a5affd1 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/AbstractCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/AbstractCompilationProvider.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.drools.quarkus.util.deployment;
import java.io.File;
import java.io.IOException;
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsAssetsProcessor.java
b/drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/AbstractDroolsAssetsProcessor.java
similarity index 92%
copy from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsAssetsProcessor.java
copy to
drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/AbstractDroolsAssetsProcessor.java
index 6ad807ffa0..d11542d157 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsAssetsProcessor.java
+++
b/drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/AbstractDroolsAssetsProcessor.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.drools.quarkus.util.deployment;
import java.nio.file.Path;
import java.util.Arrays;
@@ -32,7 +32,6 @@ import java.util.stream.StreamSupport;
import io.quarkus.arc.deployment.GeneratedBeanBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
-import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.ArchiveRootBuildItem;
import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
@@ -44,16 +43,12 @@ import io.quarkus.maven.dependency.DependencyFlags;
import io.quarkus.maven.dependency.ResolvedDependency;
import io.quarkus.resteasy.reactive.spi.GeneratedJaxRsResourceBuildItem;
import io.quarkus.vertx.http.deployment.spi.AdditionalStaticResourceBuildItem;
-import jakarta.inject.Inject;
import org.drools.codegen.common.DroolsModelBuildContext;
import org.drools.codegen.common.GeneratedFile;
import org.drools.codegen.common.GeneratedFileType;
import org.drools.compiler.kproject.models.KieBaseModelImpl;
import org.drools.model.codegen.execmodel.PackageModel;
import org.drools.model.codegen.project.RuleCodegen;
-import org.drools.quarkus.util.deployment.GlobalsBuildItem;
-import org.drools.quarkus.util.deployment.KmoduleKieBaseModelsBuiltItem;
-import org.drools.quarkus.util.deployment.PatternsTypesBuildItem;
import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.ConfigProvider;
import org.kie.api.builder.model.KieBaseModel;
@@ -77,32 +72,23 @@ import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.getR
import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.registerResources;
import static
org.drools.quarkus.util.deployment.DroolsQuarkusResourceUtils.toClassName;
-public class DroolsAssetsProcessor {
+public class AbstractDroolsAssetsProcessor {
- private static final Logger LOGGER =
LoggerFactory.getLogger(DroolsAssetsProcessor.class);
+ private static final Logger LOGGER =
LoggerFactory.getLogger(AbstractDroolsAssetsProcessor.class);
- @Inject
- ArchiveRootBuildItem root;
- @Inject
- LiveReloadBuildItem liveReload;
- @Inject
- CurateOutcomeBuildItem curateOutcomeBuildItem;
- @Inject
- CombinedIndexBuildItem combinedIndexBuildItem;
- private static final String FEATURE = "drools";
private static final String CONFIG_PREFIX = "drools.kbase.";
private static final String ASSET_DEPENDENCIES_CONFIG =
"drools.asset.dependencies";
- @BuildStep
- public FeatureBuildItem feature() {
- return new FeatureBuildItem(FEATURE);
- }
- @BuildStep
- public void generateSources( BuildProducer<GeneratedBeanBuildItem>
generatedBeans,
+ public void generateSources( ArchiveRootBuildItem root,
+ LiveReloadBuildItem liveReload,
+ CurateOutcomeBuildItem curateOutcomeBuildItem,
+ CombinedIndexBuildItem combinedIndexBuildItem,
+
+ BuildProducer<GeneratedBeanBuildItem> generatedBeans,
BuildProducer<NativeImageResourceBuildItem>
resource,
BuildProducer<AdditionalStaticResourceBuildItem> staticResProducer,
BuildProducer<GeneratedResourceBuildItem>
genResBI,
@@ -113,7 +99,7 @@ public class DroolsAssetsProcessor {
DroolsModelBuildContext context =
createDroolsBuildContext(root.getPaths(), combinedIndexBuildItem.getIndex());
- Path[] assetPaths = getAssetPaths(context);
+ Path[] assetPaths = getAssetPaths(context, curateOutcomeBuildItem);
Collection<Resource> resources =
ResourceCollector.fromPaths(assetPaths);
RuleCodegen ruleCodegen = ofResources(context,
resources).withKieBaseModels(readKieBaseModels());
@@ -153,7 +139,7 @@ public class DroolsAssetsProcessor {
.forEach(b -> jaxrsProducer.produce(new
GeneratedJaxRsResourceBuildItem(b.getName(), b.getData())));
}
- private Path[] getAssetPaths(DroolsModelBuildContext context) {
+ private Path[] getAssetPaths(DroolsModelBuildContext context,
CurateOutcomeBuildItem curateOutcomeBuildItem) {
Path[] appPaths = context.getAppPaths().getPaths();
Config config = ConfigProvider.getConfig();
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
b/drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/DroolsCompilationProvider.java
similarity index 97%
rename from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
rename to
drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/DroolsCompilationProvider.java
index 885900c3af..8273101be0 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/DroolsCompilationProvider.java
+++
b/drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/DroolsCompilationProvider.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.drools.quarkus.util.deployment;
import java.util.Collections;
import java.util.HashSet;
diff --git
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/ResourceCollector.java
b/drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/ResourceCollector.java
similarity index 99%
rename from
drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/ResourceCollector.java
rename to
drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/ResourceCollector.java
index 746885d8a8..eb7a1d9289 100644
---
a/drools-quarkus-extension/drools-quarkus-deployment/src/main/java/org/drools/quarkus/deployment/ResourceCollector.java
+++
b/drools-quarkus-extension/drools-quarkus-util-deployment/src/main/java/org/drools/quarkus/util/deployment/ResourceCollector.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.drools.quarkus.deployment;
+package org.drools.quarkus.util.deployment;
import java.io.File;
import java.io.IOException;
diff --git a/drools-quarkus-extension/drools-quarkus/pom.xml
b/drools-quarkus-extension/drools-quarkus/pom.xml
index 5bf7e4d928..c733de8f9a 100644
--- a/drools-quarkus-extension/drools-quarkus/pom.xml
+++ b/drools-quarkus-extension/drools-quarkus/pom.xml
@@ -30,7 +30,7 @@
</parent>
<artifactId>drools-quarkus</artifactId>
- <name>Drools Quarkus - Runtime</name>
+ <name>Drools :: Quarkus Extension :: Runtime</name>
<description>Define and execute your business rules with
Drools</description>
<url>https://www.drools.org/</url>
@@ -38,7 +38,7 @@
<java.module.name>org.drools.quarkus.runtime</java.module.name>
</properties>
- <dependencies>
+ <dependencies>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
@@ -108,8 +108,7 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
-
- </dependencies>
+ </dependencies>
<build>
<plugins>
diff --git a/drools-quarkus-extension/pom.xml b/drools-quarkus-extension/pom.xml
index 71f86d688a..9d14268140 100644
--- a/drools-quarkus-extension/pom.xml
+++ b/drools-quarkus-extension/pom.xml
@@ -39,6 +39,8 @@
<module>drools-quarkus-util-deployment</module>
<module>drools-quarkus</module>
<module>drools-quarkus-deployment</module>
+ <module>drools-quarkus-ruleunits</module>
+ <module>drools-quarkus-ruleunits-deployment</module>
<module>drools-quarkus-integration-test</module>
<module>drools-quarkus-integration-test-kmodule</module>
<module>drools-quarkus-integration-test-hotreload</module>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]