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-kogito-runtimes.git
The following commit(s) were added to refs/heads/main by this push:
new 0438d41360 [DROOLS-7555] move automatic rest endpoints generation from
Kogito to Drools (#3248)
0438d41360 is described below
commit 0438d41360b23c0c3b34bb4f7ea750488779edb1
Author: Mario Fusco <[email protected]>
AuthorDate: Wed Oct 11 11:26:09 2023 +0200
[DROOLS-7555] move automatic rest endpoints generation from Kogito to
Drools (#3248)
---
.../codegen/api/context/KogitoBuildContext.java | 14 +-
.../context/impl/AbstractKogitoBuildContext.java | 4 +-
.../api/context/impl/JavaKogitoBuildContext.java | 5 +
.../context/impl/QuarkusKogitoBuildContext.java | 9 +-
.../context/impl/SpringBootKogitoBuildContext.java | 9 +-
.../api/di/DependencyInjectionAnnotator.java | 270 ---------------------
.../di/impl/CDIDependencyInjectionAnnotator.java | 187 --------------
.../impl/SpringDependencyInjectionAnnotator.java | 190 ---------------
.../kie/kogito/codegen/api/rest/RestAnnotator.java | 29 ---
.../codegen/api/rest/impl/CDIRestAnnotator.java | 43 ----
.../codegen/api/rest/impl/SpringRestAnnotator.java | 48 ----
.../impl/AbstractKogitoBuildContextTest.java | 5 +
.../prediction/PMMLRestResourceGeneratorTest.java | 2 +-
.../prediction/PredictionCodegenUtilsTest.java | 2 +-
.../codegen/rules/QueryEndpointGenerator.java | 6 +-
.../kie/kogito/codegen/rules/QueryGenerator.java | 4 +-
.../org/kie/kogito/codegen/rules/RuleCodegen.java | 25 +-
.../kie/kogito/codegen/rules/RuleCodegenUtils.java | 77 ------
.../codegen/rules/RuleObjectMapperCodegen.java | 43 ----
.../codegen/rules/RuleUnitExtendedCodegen.java | 12 +-
.../kogito/codegen/rules/RuleUnitGenerator.java | 10 -
.../kie/kogito/codegen/rules/RuleUnitHelper.java | 57 -----
.../kogito/codegen/rules/RuleUnitMainCodegen.java | 84 -------
.../codegen/rules/RuleUnitPojoGenerator.java | 95 --------
.../codegen/rules/RuleUnitQueryRestCodegen.java | 46 ----
.../rules/KogitoObjectMapperQuarkusTemplate.java | 131 ----------
.../rules/KogitoObjectMapperSpringTemplate.java | 123 ----------
.../rules/RestQueryJavaTemplate.java | 66 -----
.../rules/RestQueryQuarkusTemplate.java | 67 -----
.../rules/RestQuerySpringTemplate.java | 65 -----
.../rules/RuleUnitQueryJavaTemplate.java | 37 ---
.../kie/kogito/codegen/rules/RuleCodegenTest.java | 6 +-
32 files changed, 62 insertions(+), 1709 deletions(-)
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/KogitoBuildContext.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/KogitoBuildContext.java
index 48406f10ab..5bb7f95dc7 100644
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/KogitoBuildContext.java
+++
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/KogitoBuildContext.java
@@ -30,13 +30,13 @@ import java.util.stream.Collectors;
import org.drools.codegen.common.AppPaths;
import org.drools.codegen.common.DroolsModelBuildContext;
+import org.drools.codegen.common.di.DependencyInjectionAnnotator;
+import org.drools.codegen.common.rest.RestAnnotator;
import org.kie.kogito.KogitoGAV;
import org.kie.kogito.codegen.api.AddonsConfig;
import org.kie.kogito.codegen.api.ApplicationSection;
import org.kie.kogito.codegen.api.Generator;
import org.kie.kogito.codegen.api.SourceFileCodegenBindNotifier;
-import org.kie.kogito.codegen.api.di.DependencyInjectionAnnotator;
-import org.kie.kogito.codegen.api.rest.RestAnnotator;
import org.kie.kogito.codegen.api.utils.KogitoCodeGenConstants;
public interface KogitoBuildContext extends DroolsModelBuildContext {
@@ -49,11 +49,6 @@ public interface KogitoBuildContext extends
DroolsModelBuildContext {
boolean hasImplementationClassAvailable(Class<?> clazz);
- /**
- * Return DependencyInjectionAnnotator if available or null
- */
- DependencyInjectionAnnotator getDependencyInjectionAnnotator();
-
/**
* Method to override default dependency injection annotator
*/
@@ -69,11 +64,6 @@ public interface KogitoBuildContext extends
DroolsModelBuildContext {
"true".equalsIgnoreCase(getApplicationProperty(KOGITO_GENERATE_DI).orElse("true"));
}
- /**
- * Return RestAnnotator if available or null
- */
- RestAnnotator getRestAnnotator();
-
/**
* Method to override default REST annotator
*/
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java
index 75242cf28a..25a0e8794d 100644
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java
+++
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java
@@ -37,14 +37,14 @@ import java.util.function.Predicate;
import javax.lang.model.SourceVersion;
import org.drools.codegen.common.AppPaths;
+import org.drools.codegen.common.di.DependencyInjectionAnnotator;
+import org.drools.codegen.common.rest.RestAnnotator;
import org.kie.kogito.KogitoGAV;
import org.kie.kogito.codegen.api.AddonsConfig;
import org.kie.kogito.codegen.api.ApplicationSection;
import org.kie.kogito.codegen.api.SourceFileCodegenBindNotifier;
import org.kie.kogito.codegen.api.context.KogitoApplicationPropertyProvider;
import org.kie.kogito.codegen.api.context.KogitoBuildContext;
-import org.kie.kogito.codegen.api.di.DependencyInjectionAnnotator;
-import org.kie.kogito.codegen.api.rest.RestAnnotator;
import org.kie.kogito.codegen.api.utils.AddonsConfigDiscovery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/JavaKogitoBuildContext.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/JavaKogitoBuildContext.java
index e0c549332b..2af68b401e 100644
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/JavaKogitoBuildContext.java
+++
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/JavaKogitoBuildContext.java
@@ -30,6 +30,11 @@ public class JavaKogitoBuildContext extends
AbstractKogitoBuildContext {
return new JavaKogitoBuildContextBuilder();
}
+ @Override
+ public boolean hasRest() {
+ return false;
+ }
+
protected static class JavaKogitoBuildContextBuilder extends
AbstractBuilder {
protected JavaKogitoBuildContextBuilder() {
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/QuarkusKogitoBuildContext.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/QuarkusKogitoBuildContext.java
index 9a888b9c4e..a845270664 100644
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/QuarkusKogitoBuildContext.java
+++
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/QuarkusKogitoBuildContext.java
@@ -18,8 +18,8 @@
*/
package org.kie.kogito.codegen.api.context.impl;
-import org.kie.kogito.codegen.api.di.impl.CDIDependencyInjectionAnnotator;
-import org.kie.kogito.codegen.api.rest.impl.CDIRestAnnotator;
+import org.drools.codegen.common.di.impl.CDIDependencyInjectionAnnotator;
+import org.drools.codegen.common.rest.impl.CDIRestAnnotator;
public class QuarkusKogitoBuildContext extends AbstractKogitoBuildContext {
@@ -35,6 +35,11 @@ public class QuarkusKogitoBuildContext extends
AbstractKogitoBuildContext {
return new QuarkusKogitoBuildContextBuilder();
}
+ @Override
+ public boolean hasRest() {
+ return hasClassAvailable(QUARKUS_REST);
+ }
+
protected static class QuarkusKogitoBuildContextBuilder extends
AbstractBuilder {
protected QuarkusKogitoBuildContextBuilder() {
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/SpringBootKogitoBuildContext.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/SpringBootKogitoBuildContext.java
index ddb5da3657..baa4fc4863 100644
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/SpringBootKogitoBuildContext.java
+++
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/SpringBootKogitoBuildContext.java
@@ -18,8 +18,8 @@
*/
package org.kie.kogito.codegen.api.context.impl;
-import org.kie.kogito.codegen.api.di.impl.SpringDependencyInjectionAnnotator;
-import org.kie.kogito.codegen.api.rest.impl.SpringRestAnnotator;
+import org.drools.codegen.common.di.impl.SpringDependencyInjectionAnnotator;
+import org.drools.codegen.common.rest.impl.SpringRestAnnotator;
public class SpringBootKogitoBuildContext extends AbstractKogitoBuildContext {
@@ -35,6 +35,11 @@ public class SpringBootKogitoBuildContext extends
AbstractKogitoBuildContext {
return new SpringBootKogitoBuildContextBuilder();
}
+ @Override
+ public boolean hasRest() {
+ return hasClassAvailable(SPRING_REST);
+ }
+
protected static class SpringBootKogitoBuildContextBuilder extends
AbstractBuilder {
protected SpringBootKogitoBuildContextBuilder() {
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/DependencyInjectionAnnotator.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/DependencyInjectionAnnotator.java
deleted file mode 100644
index 54db958521..0000000000
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/DependencyInjectionAnnotator.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * 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.kie.kogito.codegen.api.di;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.github.javaparser.ast.NodeList;
-import com.github.javaparser.ast.expr.ArrayInitializerExpr;
-import com.github.javaparser.ast.expr.Expression;
-import com.github.javaparser.ast.expr.MemberValuePair;
-import com.github.javaparser.ast.expr.MethodCallExpr;
-import com.github.javaparser.ast.expr.Name;
-import com.github.javaparser.ast.expr.NameExpr;
-import com.github.javaparser.ast.expr.SingleMemberAnnotationExpr;
-import com.github.javaparser.ast.expr.StringLiteralExpr;
-import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
-
-/**
- * Generic abstraction for dependency injection annotations that allow to
- * use different frameworks based needs.
- * <p>
- * Currently in scope
- *
- * <ul>
- * <li>CDI</li>
- * <li>Spring</li>
- * </ul>
- */
-public interface DependencyInjectionAnnotator {
-
- /**
- * Annotates the given node with an annotation to produce a DI instance of
the node target class, e.g. Produces,
- * Bean. This is used by configuration classes in the DI, like a factory
method.
- *
- * @param node
- * @param isDefault indicates if the bean instance is created only if
there are not any other bean of this type
- * already declared in the application, e.g DefaultBean
- */
- <T extends NodeWithAnnotations<?>> T withProduces(T node, boolean
isDefault);
-
- /**
- * Annotates given node with name annotation e.g. Named, Qualifier
- *
- * @param node node to be annotated
- */
- <T extends NodeWithAnnotations<?>> T withNamed(T node, String name);
-
- /**
- * Annotates given node with application level annotations e.g.
ApplicationScoped, Component
- *
- * @param node node to be annotated
- */
- <T extends NodeWithAnnotations<?>> T withApplicationComponent(T node);
-
- /**
- * Annotates given node with application level annotations e.g.
ApplicationScoped, Component
- * additionally adding name to it
- *
- * @param node node to be annotated
- * @param name name to be assigned to given node
- */
- <T extends NodeWithAnnotations<?>> T withNamedApplicationComponent(T node,
String name);
-
- /**
- * Annotates given node with singleton level annotations e.g. Singleton,
Component
- *
- * @param node node to be annotated
- */
- <T extends NodeWithAnnotations<?>> T withSingletonComponent(T node);
-
- /**
- * Annotates given node with singleton level annotations e.g. Singleton,
Component
- * additionally adding name to it
- *
- * @param node node to be annotated
- * @param name name to be assigned to given node
- */
- <T extends NodeWithAnnotations<?>> T withNamedSingletonComponent(T node,
String name);
-
- /**
- * Annotates given node with injection annotations e.g. Inject, Autowire
- *
- * @param node node to be annotated
- * @boolean forceLazyInit use lazy initialization (for those container
that applies)
- */
- <T extends NodeWithAnnotations<?>> T withInjection(T node, boolean
forceLazyInit);
-
- /**
- * Annotates given node with injection annotations e.g. Inject, Autowire
- *
- * @param node node to be annotated
- */
- default <T extends NodeWithAnnotations<?>> T withInjection(T node) {
- return withInjection(node, false);
- }
-
- /**
- * Annotates given node with injection annotations e.g. Inject, Autowire
- * additionally adding name to it
- *
- * @param node node to be annotated
- * @param name name to be assigned to given node
- */
- <T extends NodeWithAnnotations<?>> T withNamedInjection(T node, String
name);
-
- /**
- * Annotates given node with optional injection annotations e.g. Inject,
Autowire
- *
- * @param node node to be annotated
- */
- <T extends NodeWithAnnotations<?>> T withOptionalInjection(T node);
-
- /**
- * Annotates given node with incoming message that it should consume from
- *
- * @param node node to be annotated
- * @param channel name of the channel messages should be consumer from
- */
- <T extends NodeWithAnnotations<?>> T withIncomingMessage(T node, String
channel);
-
- /**
- * Annotates given node with outgoing message that it should send to
- *
- * @param node node to be annotated
- * @param channel name of the channel messages should be send to
- */
- <T extends NodeWithAnnotations<?>> T withOutgoingMessage(T node, String
channel);
-
- /**
- * Annotates given node with configuration parameter injection
- *
- * @param node node to be annotated
- * @param configKey name of the configuration property to be injected
- */
- <T extends NodeWithAnnotations<?>> T withConfigInjection(T node, String
configKey);
-
- /**
- * Annotates given node with configuration parameter injection with
default value
- *
- * @param node node to be annotated
- * @param configKey name of the configuration property to be injected
- * @param defaultValue value to be used in case there is no config
parameter defined
- */
- <T extends NodeWithAnnotations<?>> T withConfigInjection(T node, String
configKey, String defaultValue);
-
- /**
- * Annotates and enhances method used to produce messages
- *
- * @param produceMethod method to be annotated
- * @param channel channel on which messages should be produced
- * @param event actual data to be send
- */
- MethodCallExpr withMessageProducer(MethodCallExpr produceMethod, String
channel, Expression event);
-
- /**
- * Annotates given node with set of roles to enforce security
- *
- * @param node node to be annotated
- * @param roles roles that are allowed
- */
- default <T extends NodeWithAnnotations<?>> T withSecurityRoles(T node,
String[] roles) {
- if (roles != null && roles.length > 0) {
- List<Expression> rolesExpr = new ArrayList<>();
-
- for (String role : roles) {
- rolesExpr.add(new StringLiteralExpr(role.trim()));
- }
-
- node.addAnnotation(new SingleMemberAnnotationExpr(new
Name("javax.annotation.security.RolesAllowed"), new
ArrayInitializerExpr(NodeList.nodeList(rolesExpr))));
- }
- return node;
- }
-
- /**
- * Returns type that allows to inject optional instances of the same type
- *
- * @return fully qualified class name
- */
- String optionalInstanceInjectionType();
-
- /**
- * Creates an expression that represents optional instance for given field
- *
- * @param fieldName name of the field that should be considered optional
- * @return complete expression for optional instance
- */
- Expression optionalInstanceExists(String fieldName);
-
- /**
- * Creates an expression that returns instance for given optional field
- *
- * @param fieldName name of the optional field that should be accessed
- * @return complete expression for optional instance
- */
- default Expression getOptionalInstance(String fieldName) {
- return new MethodCallExpr(new NameExpr(fieldName), "get");
- }
-
- /**
- * Returns type that allows to inject multiple instances of the same type
- *
- * @return fully qualified class name
- */
- String multiInstanceInjectionType();
-
- /**
- * Creates an expression that returns a list of instances for given multi
instance field
- *
- * @param fieldName name of the multi field that should be accessed
- * @return complete expression for multi instance
- */
- Expression getMultiInstance(String fieldName);
-
- /**
- * Returns type that allows to mark instance as application component e.g.
ApplicationScoped, Component
- *
- * @return fully qualified class name
- */
- String applicationComponentType();
-
- /**
- * Returns type to be used as message emitter
- *
- * @param dataType type of the data produces by the emitter
- * @return fully qualified class name
- */
- String emitterType(String dataType);
-
- /**
- * Annotates given node with a initializing annotation e.g. Startup
- *
- * @param node node to be annotated
- */
- <T extends NodeWithAnnotations<?>> T withEagerStartup(T node);
-
- /**
- * Annotates given node with factory class annotations e.g. Configuration
for Spring Boot
- *
- * @param node node to be annotated
- */
- <T extends NodeWithAnnotations<?>> T withFactoryClass(T node);
-
- /**
- * Annotates given node with factory method annotations e.g. Produces, Bean
- *
- * @param node node to be annotated
- */
- <T extends NodeWithAnnotations<?>> T withFactoryMethod(T node);
-
- default <T extends NodeWithAnnotations<?>> T withTagAnnotation(T node,
NodeList<MemberValuePair> attributes) {
- return node;
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/impl/CDIDependencyInjectionAnnotator.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/impl/CDIDependencyInjectionAnnotator.java
deleted file mode 100644
index c95e834bb0..0000000000
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/impl/CDIDependencyInjectionAnnotator.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * 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.kie.kogito.codegen.api.di.impl;
-
-import org.kie.kogito.codegen.api.di.DependencyInjectionAnnotator;
-
-import com.github.javaparser.ast.NodeList;
-import com.github.javaparser.ast.expr.BinaryExpr;
-import com.github.javaparser.ast.expr.BooleanLiteralExpr;
-import com.github.javaparser.ast.expr.Expression;
-import com.github.javaparser.ast.expr.MemberValuePair;
-import com.github.javaparser.ast.expr.MethodCallExpr;
-import com.github.javaparser.ast.expr.Name;
-import com.github.javaparser.ast.expr.NameExpr;
-import com.github.javaparser.ast.expr.NormalAnnotationExpr;
-import com.github.javaparser.ast.expr.SingleMemberAnnotationExpr;
-import com.github.javaparser.ast.expr.StringLiteralExpr;
-import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
-
-public class CDIDependencyInjectionAnnotator implements
DependencyInjectionAnnotator {
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withProduces(T node, boolean
isDefault) {
- node.addAndGetAnnotation("javax.enterprise.inject.Produces");
- if (isDefault) {
- node.addAndGetAnnotation("io.quarkus.arc.DefaultBean");
- }
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withNamed(T node, String name)
{
- node.addAnnotation(new SingleMemberAnnotationExpr(new
Name("javax.inject.Named"), new StringLiteralExpr(name)));
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withApplicationComponent(T
node) {
- node.addAnnotation("javax.enterprise.context.ApplicationScoped");
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T
withNamedApplicationComponent(T node, String name) {
- return withNamed(withApplicationComponent(node), name);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withSingletonComponent(T node)
{
- node.addAnnotation("javax.inject.Singleton");
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withNamedSingletonComponent(T
node, String name) {
- return withNamed(withSingletonComponent(node), name);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withInjection(T node, boolean
lazy) {
- node.addAnnotation("javax.inject.Inject");
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withNamedInjection(T node,
String name) {
- return withNamed(withInjection(node), name);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withOptionalInjection(T node) {
- return withInjection(node);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withIncomingMessage(T node,
String channel) {
- node.addAnnotation(new SingleMemberAnnotationExpr(new
Name("org.eclipse.microprofile.reactive.messaging.Incoming"), new
StringLiteralExpr(channel)));
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withOutgoingMessage(T node,
String channel) {
- node.addAnnotation(new SingleMemberAnnotationExpr(new
Name("org.eclipse.microprofile.reactive.messaging.Channel"), new
StringLiteralExpr(channel)));
- return node;
- }
-
- @Override
- public MethodCallExpr withMessageProducer(MethodCallExpr produceMethod,
String channel, Expression event) {
- produceMethod.addArgument(event);
- return produceMethod;
- }
-
- @Override
- public String optionalInstanceInjectionType() {
- return "javax.enterprise.inject.Instance";
- }
-
- @Override
- public Expression optionalInstanceExists(String fieldName) {
- MethodCallExpr condition = new MethodCallExpr(new NameExpr(fieldName),
"isUnsatisfied");
- return new BinaryExpr(condition, new BooleanLiteralExpr(false),
BinaryExpr.Operator.EQUALS);
- }
-
- @Override
- public String multiInstanceInjectionType() {
- return optionalInstanceInjectionType();
- }
-
- @Override
- public Expression getMultiInstance(String fieldName) {
- return new MethodCallExpr(
- new MethodCallExpr(new
NameExpr("java.util.stream.StreamSupport"), "stream", NodeList.nodeList(
- new MethodCallExpr(new NameExpr(fieldName),
"spliterator"),
- new BooleanLiteralExpr(false))),
- "collect",
- NodeList.nodeList(
- new MethodCallExpr(new
NameExpr("java.util.stream.Collectors"), "toList")));
- }
-
- @Override
- public String applicationComponentType() {
- return "javax.enterprise.context.ApplicationScoped";
- }
-
- @Override
- public String emitterType(String dataType) {
- return "org.eclipse.microprofile.reactive.messaging.Emitter<" +
dataType + ">";
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withConfigInjection(T node,
String configKey) {
- node.addAnnotation(new NormalAnnotationExpr(
- new
Name("org.eclipse.microprofile.config.inject.ConfigProperty"),
- NodeList.nodeList(
- new MemberValuePair("name", new
StringLiteralExpr(configKey)))));
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withConfigInjection(T node,
String configKey, String defaultValue) {
- node.addAnnotation(new NormalAnnotationExpr(
- new
Name("org.eclipse.microprofile.config.inject.ConfigProperty"),
- NodeList.nodeList(
- new MemberValuePair("name", new
StringLiteralExpr(configKey)),
- new MemberValuePair("defaultValue", new
StringLiteralExpr(defaultValue)))));
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withEagerStartup(T node) {
- node.addAnnotation("io.quarkus.runtime.Startup");
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withFactoryClass(T node) {
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withFactoryMethod(T node) {
- node.addAnnotation("javax.enterprise.inject.Produces");
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withTagAnnotation(T node,
NodeList<MemberValuePair> attributes) {
- node.addAnnotation(new NormalAnnotationExpr(new
Name("org.eclipse.microprofile.openapi.annotations.tags.Tag"), attributes));
- return node;
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/impl/SpringDependencyInjectionAnnotator.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/impl/SpringDependencyInjectionAnnotator.java
deleted file mode 100644
index 7cdeeece4b..0000000000
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/di/impl/SpringDependencyInjectionAnnotator.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * 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.kie.kogito.codegen.api.di.impl;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
-import org.kie.kogito.codegen.api.di.DependencyInjectionAnnotator;
-
-import com.github.javaparser.ast.NodeList;
-import com.github.javaparser.ast.expr.BinaryExpr;
-import com.github.javaparser.ast.expr.BooleanLiteralExpr;
-import com.github.javaparser.ast.expr.ConditionalExpr;
-import com.github.javaparser.ast.expr.Expression;
-import com.github.javaparser.ast.expr.MemberValuePair;
-import com.github.javaparser.ast.expr.MethodCallExpr;
-import com.github.javaparser.ast.expr.Name;
-import com.github.javaparser.ast.expr.NameExpr;
-import com.github.javaparser.ast.expr.NormalAnnotationExpr;
-import com.github.javaparser.ast.expr.NullLiteralExpr;
-import com.github.javaparser.ast.expr.SingleMemberAnnotationExpr;
-import com.github.javaparser.ast.expr.StringLiteralExpr;
-import com.github.javaparser.ast.expr.TypeExpr;
-import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
-import com.github.javaparser.ast.type.ClassOrInterfaceType;
-
-public class SpringDependencyInjectionAnnotator implements
DependencyInjectionAnnotator {
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withProduces(T node, boolean
isDefault) {
- node.addAnnotation("org.springframework.context.annotation.Bean");
- if (isDefault) {
-
node.addAnnotation("org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean");
- }
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withNamed(T node, String name)
{
- node.addAnnotation(new SingleMemberAnnotationExpr(new
Name("org.springframework.beans.factory.annotation.Qualifier"), new
StringLiteralExpr(name)));
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withApplicationComponent(T
node) {
- node.addAnnotation("org.springframework.stereotype.Component");
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T
withNamedApplicationComponent(T node, String name) {
- node.addAnnotation(new SingleMemberAnnotationExpr(new
Name("org.springframework.stereotype.Component"), new StringLiteralExpr(name)));
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withSingletonComponent(T node)
{
- return withApplicationComponent(node);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withNamedSingletonComponent(T
node, String name) {
- return withNamedApplicationComponent(node, name);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withInjection(T node, boolean
lazy) {
-
node.addAnnotation("org.springframework.beans.factory.annotation.Autowired");
- if (lazy) {
- node.addAnnotation("org.springframework.context.annotation.Lazy");
- }
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withNamedInjection(T node,
String name) {
- return withNamed(withInjection(node), name);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withOptionalInjection(T node) {
- node.addAnnotation(
- new NormalAnnotationExpr(new
Name("org.springframework.beans.factory.annotation.Autowired"),
NodeList.nodeList(new MemberValuePair("required", new
BooleanLiteralExpr(false)))));
- node.addAnnotation("org.springframework.context.annotation.Lazy");
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withIncomingMessage(T node,
String channel) {
- node.addAnnotation(new NormalAnnotationExpr(new
Name("org.springframework.kafka.annotation.KafkaListener"),
NodeList.nodeList(new MemberValuePair("topics", new
StringLiteralExpr(channel)))));
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withOutgoingMessage(T node,
String channel) {
- // currently no-op
- return node;
- }
-
- @Override
- public MethodCallExpr withMessageProducer(MethodCallExpr produceMethod,
String channel, Expression event) {
- produceMethod.addArgument(new
StringLiteralExpr(channel)).addArgument(event);
- return produceMethod;
- }
-
- @Override
- public String optionalInstanceInjectionType() {
- return Optional.class.getCanonicalName();
- }
-
- @Override
- public Expression optionalInstanceExists(String fieldName) {
- return new MethodCallExpr(new NameExpr(fieldName), "isPresent");
- }
-
- @Override
- public String multiInstanceInjectionType() {
- return Collection.class.getCanonicalName();
- }
-
- @Override
- public Expression getMultiInstance(String fieldName) {
- return new ConditionalExpr(
- new BinaryExpr(new NameExpr(fieldName), new NullLiteralExpr(),
BinaryExpr.Operator.NOT_EQUALS),
- new NameExpr(fieldName),
- new MethodCallExpr(new TypeExpr(new ClassOrInterfaceType(null,
Collections.class.getCanonicalName())), "emptyList"));
- }
-
- @Override
- public String applicationComponentType() {
- return "org.springframework.stereotype.Component";
- }
-
- @Override
- public String emitterType(String dataType) {
- return "org.springframework.kafka.core.KafkaTemplate<String, " +
dataType + ">";
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withConfigInjection(T node,
String configKey) {
- node.addAnnotation(new SingleMemberAnnotationExpr(new
Name("org.springframework.beans.factory.annotation.Value"), new
StringLiteralExpr("${" + configKey + ":#{null}}")));
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withConfigInjection(T node,
String configKey, String defaultValue) {
- node.addAnnotation(new SingleMemberAnnotationExpr(new
Name("org.springframework.beans.factory.annotation.Value"), new
StringLiteralExpr("${" + configKey + ":" + defaultValue + "}")));
- return node;
- }
-
- /**
- * no-op, Spring beans are not lazy by default.
- *
- * @param node node to be annotated
- * @return
- */
- @Override
- public <T extends NodeWithAnnotations<?>> T withEagerStartup(T node) {
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withFactoryClass(T node) {
-
node.addAnnotation("org.springframework.context.annotation.Configuration");
- return node;
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> T withFactoryMethod(T node) {
- node.addAnnotation("org.springframework.context.annotation.Bean");
- return node;
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/RestAnnotator.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/RestAnnotator.java
deleted file mode 100644
index be952e6cff..0000000000
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/RestAnnotator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.kie.kogito.codegen.api.rest;
-
-import java.util.Optional;
-
-import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
-
-public interface RestAnnotator {
- <T extends NodeWithAnnotations<?>> boolean isRestAnnotated(T node);
-
- <T extends NodeWithAnnotations<?>> Optional<String> getEndpointValue(T
node);
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/impl/CDIRestAnnotator.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/impl/CDIRestAnnotator.java
deleted file mode 100644
index 66fecd0f80..0000000000
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/impl/CDIRestAnnotator.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.kie.kogito.codegen.api.rest.impl;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.kie.kogito.codegen.api.rest.RestAnnotator;
-
-import com.github.javaparser.ast.expr.AnnotationExpr;
-import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
-
-public class CDIRestAnnotator implements RestAnnotator {
-
- @Override
- public <T extends NodeWithAnnotations<?>> boolean isRestAnnotated(T node) {
- return Stream.of("POST", "GET", "PUT", "DELETE")
- .map(node::getAnnotationByName)
- .anyMatch(Optional::isPresent);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> Optional<String>
getEndpointValue(T node) {
- Optional<AnnotationExpr> path = node.getAnnotationByName("Path");
- return path.map(annotationExpr ->
annotationExpr.asSingleMemberAnnotationExpr().getMemberValue().asStringLiteralExpr().asString());
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/impl/SpringRestAnnotator.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/impl/SpringRestAnnotator.java
deleted file mode 100644
index e9dfe39361..0000000000
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/rest/impl/SpringRestAnnotator.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.kie.kogito.codegen.api.rest.impl;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.kie.kogito.codegen.api.rest.RestAnnotator;
-
-import com.github.javaparser.ast.expr.AnnotationExpr;
-import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
-
-public class SpringRestAnnotator implements RestAnnotator {
-
- @Override
- public <T extends NodeWithAnnotations<?>> boolean isRestAnnotated(T node) {
- return Stream.of("PostMapping", "GetMapping", "PutMapping",
"DeleteMapping")
- .map(node::getAnnotationByName)
- .anyMatch(Optional::isPresent);
- }
-
- @Override
- public <T extends NodeWithAnnotations<?>> Optional<String>
getEndpointValue(T node) {
- Optional<AnnotationExpr> path =
node.getAnnotationByName("PostMapping");
- return path
- .flatMap(p -> p.asNormalAnnotationExpr()
- .getPairs()
- .stream()
- .filter(x ->
"value".equals(x.getName().asString())).findFirst())
- .map(value ->
value.getValue().asStringLiteralExpr().asString());
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/test/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContextTest.java
b/kogito-codegen-modules/kogito-codegen-api/src/test/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContextTest.java
index c41878539a..61b4e50dfa 100644
---
a/kogito-codegen-modules/kogito-codegen-api/src/test/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContextTest.java
+++
b/kogito-codegen-modules/kogito-codegen-api/src/test/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContextTest.java
@@ -97,6 +97,11 @@ class AbstractKogitoBuildContextTest {
super(builder, null, null, "Mock");
}
+ @Override
+ public boolean hasRest() {
+ return false;
+ }
+
public static class MockKogiotBuildContextBuilder extends
AbstractKogitoBuildContext.AbstractBuilder {
protected MockKogiotBuildContextBuilder() {
diff --git
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PMMLRestResourceGeneratorTest.java
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PMMLRestResourceGeneratorTest.java
index 3295646907..8fe6c0dd94 100644
---
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PMMLRestResourceGeneratorTest.java
+++
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PMMLRestResourceGeneratorTest.java
@@ -22,6 +22,7 @@ import java.net.URLEncoder;
import java.util.NoSuchElementException;
import java.util.Optional;
+import org.drools.codegen.common.di.impl.CDIDependencyInjectionAnnotator;
import org.drools.util.StringUtils;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
@@ -30,7 +31,6 @@ import org.kie.dmn.feel.codegen.feel11.CodegenStringUtil;
import org.kie.kogito.codegen.api.context.KogitoBuildContext;
import org.kie.kogito.codegen.api.context.impl.QuarkusKogitoBuildContext;
import org.kie.kogito.codegen.api.context.impl.SpringBootKogitoBuildContext;
-import org.kie.kogito.codegen.api.di.impl.CDIDependencyInjectionAnnotator;
import org.kie.kogito.codegen.api.template.TemplatedGenerator;
import org.kie.pmml.commons.model.KiePMMLModel;
diff --git
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenUtilsTest.java
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenUtilsTest.java
index 93dda1c71b..3442c2de18 100644
---
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenUtilsTest.java
+++
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenUtilsTest.java
@@ -42,8 +42,8 @@ import org.kie.pmml.commons.model.KiePMMLModelWithSources;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.drools.codegen.common.GeneratedFileType.COMPILED_CLASS;
+import static org.drools.codegen.common.GeneratedFileType.REST;
import static org.drools.codegen.common.GeneratedFileType.STATIC_HTTP_RESOURCE;
-import static org.drools.model.codegen.execmodel.GeneratedFile.Type.REST;
import static org.kie.kogito.pmml.CommonTestUtility.getKiePMMLModelInternal;
import static org.kie.kogito.pmml.CommonTestUtility.getRandomMiningFields;
import static org.kie.kogito.pmml.CommonTestUtility.getRandomOutputField;
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/QueryEndpointGenerator.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/QueryEndpointGenerator.java
index c0c6e9386d..ef34f2e81d 100644
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/QueryEndpointGenerator.java
+++
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/QueryEndpointGenerator.java
@@ -47,10 +47,10 @@ import com.github.javaparser.ast.stmt.TryStmt;
import com.github.javaparser.ast.type.Type;
import static com.github.javaparser.StaticJavaParser.parseStatement;
+import static
org.drools.model.codegen.execmodel.util.RuleCodegenUtils.setGeneric;
+import static
org.drools.model.codegen.execmodel.util.RuleCodegenUtils.toKebabCase;
+import static
org.drools.model.codegen.execmodel.util.RuleCodegenUtils.toNonPrimitiveType;
import static org.kie.kogito.codegen.api.Generator.REST_TYPE;
-import static org.kie.kogito.codegen.rules.RuleCodegenUtils.setGeneric;
-import static org.kie.kogito.codegen.rules.RuleCodegenUtils.toKebabCase;
-import static org.kie.kogito.codegen.rules.RuleCodegenUtils.toNonPrimitiveType;
public class QueryEndpointGenerator extends AbstractQueryEntrypointGenerator {
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/QueryGenerator.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/QueryGenerator.java
index d2f4c4c237..d0e98d00c1 100644
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/QueryGenerator.java
+++
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/QueryGenerator.java
@@ -50,10 +50,10 @@ import com.github.javaparser.ast.stmt.ReturnStmt;
import com.github.javaparser.ast.stmt.Statement;
import static
org.drools.model.codegen.execmodel.generator.DrlxParseUtil.classToReferenceType;
+import static
org.drools.model.codegen.execmodel.util.RuleCodegenUtils.setGeneric;
+import static
org.drools.model.codegen.execmodel.util.RuleCodegenUtils.toCamelCase;
import static org.drools.util.StringUtils.ucFirst;
import static org.kie.kogito.codegen.rules.RuleCodegen.TEMPLATE_RULE_FOLDER;
-import static org.kie.kogito.codegen.rules.RuleCodegenUtils.setGeneric;
-import static org.kie.kogito.codegen.rules.RuleCodegenUtils.toCamelCase;
public class QueryGenerator implements RuleFileGenerator {
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleCodegen.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleCodegen.java
index 642acfbc1d..c042be4002 100644
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleCodegen.java
+++
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleCodegen.java
@@ -29,6 +29,7 @@ import java.util.Optional;
import org.drools.codegen.common.GeneratedFile;
import org.drools.codegen.common.GeneratedFileType;
import org.drools.drl.extensions.DecisionTableFactory;
+import org.drools.drl.parser.DroolsError;
import org.drools.model.codegen.execmodel.PackageModelWriter;
import org.drools.model.codegen.project.CodegenPackageSources;
import org.drools.model.codegen.project.DroolsModelBuilder;
@@ -140,9 +141,8 @@ public class RuleCodegen extends AbstractGenerator {
.flatMap(pkgSrc -> pkgSrc.getRuleUnits().stream())
.forEach(ru -> kieModuleModelWrapper.addRuleUnitConfig(ru,
configs.get(ru.getCanonicalName())));
- // main codegen procedure (rule units, rule unit instances,
queries, generated pojos)
- RuleUnitMainCodegen ruleUnitCodegen = new
RuleUnitMainCodegen(context(), ruleUnitGenerators, hotReloadMode);
- generatedFiles.addAll(ruleUnitCodegen.generate());
+ List<DroolsError> errors = new ArrayList<>();
+ List<QueryGenerator> validQueries = validateQueries(errors);
// dashboard for rule unit
RuleUnitDashboardCodegen dashboardCodegen = new
RuleUnitDashboardCodegen(context(), ruleUnitGenerators);
@@ -150,13 +150,12 @@ public class RuleCodegen extends AbstractGenerator {
// "extended" procedure: REST + Event handlers + query dashboards
if (context().hasRESTForGenerator(this)) {
- Collection<QueryGenerator> validQueries =
ruleUnitCodegen.validQueries();
RuleUnitExtendedCodegen ruleUnitExtendedCodegen = new
RuleUnitExtendedCodegen(context(), validQueries);
generatedFiles.addAll(ruleUnitExtendedCodegen.generate());
}
- if (!ruleUnitCodegen.errors().isEmpty()) {
- throw new RuleCodegenError(ruleUnitCodegen.errors());
+ if (!errors.isEmpty()) {
+ throw new RuleCodegenError(errors);
}
} else {
LOGGER.info("No rule unit is present: generate KieRuntimeBuilder
implementation.");
@@ -168,6 +167,20 @@ public class RuleCodegen extends AbstractGenerator {
return generatedFiles;
}
+ private List<QueryGenerator> validateQueries(List<DroolsError> errors) {
+ List<QueryGenerator> validQueries = new ArrayList<>();
+ for (RuleUnitGenerator ruleUnit : ruleUnitGenerators) {
+ for (QueryGenerator queryGenerator : ruleUnit.queries()) {
+ if (queryGenerator.validate()) {
+ validQueries.add(queryGenerator);
+ } else {
+ errors.add(queryGenerator.getError());
+ }
+ }
+ }
+ return validQueries;
+ }
+
public RuleCodegen withHotReloadMode() { // fixme this is currently only
used in test cases. Drop?
this.hotReloadMode = true;
return this;
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleCodegenUtils.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleCodegenUtils.java
deleted file mode 100644
index 22e66798a0..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleCodegenUtils.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.kie.kogito.codegen.rules;
-
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.kie.internal.ruleunit.RuleUnitDescription;
-
-import com.github.javaparser.ast.type.Type;
-
-import static com.github.javaparser.StaticJavaParser.parseClassOrInterfaceType;
-import static
org.drools.model.codegen.execmodel.generator.DrlxParseUtil.toClassOrInterfaceType;
-
-public class RuleCodegenUtils {
-
- private RuleCodegenUtils() {
- // utility class
- }
-
- public static void setGeneric(Type type, RuleUnitDescription ruleUnit) {
-
type.asClassOrInterfaceType().setTypeArguments(toClassOrInterfaceType(ruleUnit.getCanonicalName()));
- }
-
- public static void setGeneric(Type type, String typeArgument) {
-
type.asClassOrInterfaceType().setTypeArguments(parseClassOrInterfaceType(toNonPrimitiveType(typeArgument)));
- }
-
- public static String toNonPrimitiveType(String type) {
- switch (type) {
- case "int":
- return "Integer";
- case "long":
- return "Long";
- case "double":
- return "Double";
- case "float":
- return "Float";
- case "short":
- return "Short";
- case "byte":
- return "Byte";
- case "char":
- return "Character";
- case "boolean":
- return "Boolean";
- default:
- return type;
- }
- }
-
- public static String toCamelCase(String inputString) {
- return Stream.of(inputString.split(" "))
- .map(s -> s.length() > 1 ? s.substring(0, 1).toUpperCase() +
s.substring(1) : s.substring(0, 1).toUpperCase())
- .collect(Collectors.joining());
- }
-
- public static String toKebabCase(String inputString) {
- return inputString.replaceAll("(.)(\\p{Upper})",
"$1-$2").toLowerCase();
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleObjectMapperCodegen.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleObjectMapperCodegen.java
deleted file mode 100644
index 4f753f38ef..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleObjectMapperCodegen.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.kie.kogito.codegen.rules;
-
-import org.drools.codegen.common.GeneratedFile;
-import org.kie.kogito.codegen.api.Generator;
-import org.kie.kogito.codegen.api.context.KogitoBuildContext;
-import org.kie.kogito.codegen.api.template.TemplatedGenerator;
-
-public class RuleObjectMapperCodegen {
-
- private final KogitoBuildContext context;
-
- public RuleObjectMapperCodegen(KogitoBuildContext context) {
- this.context = context;
- }
-
- GeneratedFile generate() {
- TemplatedGenerator generator = TemplatedGenerator.builder()
- .withTemplateBasePath(RuleCodegen.TEMPLATE_RULE_FOLDER)
- .build(context, "KogitoObjectMapper");
-
- return new GeneratedFile(Generator.REST_TYPE,
- generator.generatedFilePath(),
- generator.compilationUnitOrThrow().toString());
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitExtendedCodegen.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitExtendedCodegen.java
index d9e21468ef..c4e6d93c60 100644
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitExtendedCodegen.java
+++
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitExtendedCodegen.java
@@ -21,6 +21,7 @@ package org.kie.kogito.codegen.rules;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.stream.Collectors;
import org.drools.codegen.common.GeneratedFile;
import org.kie.kogito.codegen.api.context.KogitoBuildContext;
@@ -28,25 +29,22 @@ import
org.kie.kogito.codegen.api.context.KogitoBuildContext;
public class RuleUnitExtendedCodegen {
private final RuleUnitQueryDashboardCodegen dashboards;
private final RuleUnitQueryEventCodegen events;
- private final RuleUnitQueryRestCodegen rest;
- private final RuleObjectMapperCodegen objectMapper;
public RuleUnitExtendedCodegen(
KogitoBuildContext context,
Collection<QueryGenerator> validQueries) {
- this.rest = new RuleUnitQueryRestCodegen(validQueries);
this.events = new RuleUnitQueryEventCodegen(context, validQueries);
- this.dashboards = new RuleUnitQueryDashboardCodegen(context,
rest.endpointGenerators());
- this.objectMapper = new RuleObjectMapperCodegen(context);
+ Collection<QueryEndpointGenerator> endpointGenerators =
validQueries.stream()
+ .map(QueryEndpointGenerator::new)
+ .collect(Collectors.toUnmodifiableList());
+ this.dashboards = new RuleUnitQueryDashboardCodegen(context,
endpointGenerators);
}
Collection<GeneratedFile> generate() {
List<GeneratedFile> generatedFiles = new ArrayList<>();
generatedFiles.addAll(events.generate());
- generatedFiles.addAll(rest.generate());
generatedFiles.addAll(dashboards.generate());
- generatedFiles.add(objectMapper.generate());
return generatedFiles;
}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitGenerator.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitGenerator.java
index c5ffe08ac0..0c6ee8be27 100644
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitGenerator.java
+++
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitGenerator.java
@@ -20,13 +20,11 @@ package org.kie.kogito.codegen.rules;
import java.util.Collection;
import java.util.List;
-import java.util.Optional;
import org.drools.model.codegen.execmodel.QueryModel;
import org.drools.ruleunits.api.RuleUnit;
import org.drools.ruleunits.api.conf.RuleUnitConfig;
import org.drools.ruleunits.impl.AbstractRuleUnitDescription;
-import org.drools.ruleunits.impl.GeneratedRuleUnitDescription;
import org.kie.internal.ruleunit.RuleUnitDescription;
import org.kie.kogito.codegen.api.context.KogitoBuildContext;
@@ -77,14 +75,6 @@ public class RuleUnitGenerator {
return typeName;
}
- public Optional<RuleUnitPojoGenerator> pojo(RuleUnitHelper ruleUnitHelper)
{
- if (ruleUnit instanceof GeneratedRuleUnitDescription) {
- return Optional.of(new
RuleUnitPojoGenerator((GeneratedRuleUnitDescription) ruleUnit, ruleUnitHelper));
- } else {
- return Optional.empty();
- }
- }
-
public static ClassOrInterfaceType ruleUnitType(String canonicalName) {
return new ClassOrInterfaceType(null,
RuleUnit.class.getCanonicalName())
.setTypeArguments(new ClassOrInterfaceType(null,
canonicalName));
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitHelper.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitHelper.java
deleted file mode 100644
index d66e14eb39..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitHelper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.kie.kogito.codegen.rules;
-
-import org.drools.ruleunits.impl.AssignableChecker;
-import org.drools.ruleunits.impl.ReflectiveRuleUnitDescription;
-import org.kie.internal.ruleunit.RuleUnitDescription;
-
-public class RuleUnitHelper {
- private AssignableChecker defaultChecker;
- private AssignableChecker assignableChecker;
-
- public RuleUnitHelper() {
- }
-
- public RuleUnitHelper(ClassLoader cl, boolean hotReloadMode) {
- this.defaultChecker = AssignableChecker.create(cl, hotReloadMode);
- }
-
- public RuleUnitHelper(AssignableChecker assignableChecker) {
- this.assignableChecker = assignableChecker;
- }
-
- void initRuleUnitHelper(RuleUnitDescription ruleUnitDesc) {
- if (ruleUnitDesc instanceof ReflectiveRuleUnitDescription) {
- assignableChecker = ((ReflectiveRuleUnitDescription)
ruleUnitDesc).getAssignableChecker();
- } else {
- if (assignableChecker == null) {
- assignableChecker = defaultChecker;
- }
- }
- }
-
- public AssignableChecker getAssignableChecker() {
- return assignableChecker;
- }
-
- public boolean isAssignableFrom(Class<?> source, Class<?> target) {
- return assignableChecker.isAssignableFrom(source, target);
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitMainCodegen.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitMainCodegen.java
deleted file mode 100644
index 33ee944c5d..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitMainCodegen.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.kie.kogito.codegen.rules;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.drools.codegen.common.GeneratedFile;
-import org.drools.drl.parser.DroolsError;
-import org.kie.kogito.codegen.api.context.KogitoBuildContext;
-
-/**
- * Generates rule units, rule unit instances, pojos, queries
- */
-public class RuleUnitMainCodegen {
- private final KogitoBuildContext context;
- private final Collection<RuleUnitGenerator> ruleUnitGenerators;
- private final boolean hotReloadMode;
- private final List<QueryGenerator> validQueries;
- private List<DroolsError> errors = new ArrayList<>();
-
- public RuleUnitMainCodegen(KogitoBuildContext context,
Collection<RuleUnitGenerator> ruleUnitGenerators, boolean hotReloadMode) {
- this.context = context;
- this.ruleUnitGenerators = ruleUnitGenerators;
- this.hotReloadMode = hotReloadMode;
- this.validQueries = validateQueries();
- }
-
- Collection<QueryGenerator> validQueries() {
- return validQueries;
- }
-
- Collection<DroolsError> errors() {
- return errors;
- }
-
- Collection<GeneratedFile> generate() {
- List<GeneratedFile> generatedFiles = new ArrayList<>();
-
- RuleUnitHelper ruleUnitHelper = new
RuleUnitHelper(context.getClassLoader(), hotReloadMode);
-
- for (RuleUnitGenerator ruleUnit : ruleUnitGenerators) {
-
ruleUnitHelper.initRuleUnitHelper(ruleUnit.getRuleUnitDescription());
- ruleUnit.pojo(ruleUnitHelper).ifPresent(p ->
generatedFiles.add(p.generate()));
- }
-
- for (QueryGenerator query : validQueries) {
- generatedFiles.add(query.generate());
- }
- return generatedFiles;
- }
-
- private List<QueryGenerator> validateQueries() {
- List<QueryGenerator> validQueries = new ArrayList<>();
- for (RuleUnitGenerator ruleUnit : ruleUnitGenerators) {
- for (QueryGenerator queryGenerator : ruleUnit.queries()) {
- if (queryGenerator.validate()) {
- validQueries.add(queryGenerator);
- } else {
- errors.add(queryGenerator.getError());
- }
- }
- }
- return validQueries;
- }
-
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitPojoGenerator.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitPojoGenerator.java
deleted file mode 100644
index 4659172bef..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitPojoGenerator.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.kie.kogito.codegen.rules;
-
-import java.util.Collections;
-
-import org.drools.codegen.common.GeneratedFile;
-import org.drools.model.codegen.execmodel.JavaParserCompiler;
-import org.drools.ruleunits.api.DataStore;
-import org.drools.ruleunits.api.RuleUnitData;
-import org.drools.ruleunits.impl.GeneratedRuleUnitDescription;
-import org.kie.internal.ruleunit.RuleUnitVariable;
-
-import com.github.javaparser.StaticJavaParser;
-import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
-import com.github.javaparser.ast.body.FieldDeclaration;
-import com.github.javaparser.ast.body.VariableDeclarator;
-import com.github.javaparser.ast.type.ClassOrInterfaceType;
-
-import static org.drools.util.ClassUtils.rawType;
-import static org.kie.kogito.codegen.rules.RuleCodegen.RULE_TYPE;
-
-public class RuleUnitPojoGenerator implements RuleFileGenerator {
-
- private final GeneratedRuleUnitDescription ruleUnitDescription;
- private final RuleUnitHelper ruleUnitHelper;
-
- public RuleUnitPojoGenerator(GeneratedRuleUnitDescription
ruleUnitDescription, RuleUnitHelper ruleUnitHelper) {
- this.ruleUnitDescription = ruleUnitDescription;
- this.ruleUnitHelper = ruleUnitHelper;
- }
-
- @Override
- public GeneratedFile generate() {
- String pojoSource = JavaParserCompiler.toPojoSource(
- ruleUnitDescription.getPackageName(),
- Collections.emptyList(),
- Collections.emptyList(),
- classOrInterfaceDeclaration());
- return new GeneratedFile(RULE_TYPE,
- generatedFilePath(),
- pojoSource);
- }
-
- private ClassOrInterfaceDeclaration classOrInterfaceDeclaration() {
- ClassOrInterfaceDeclaration c =
- new ClassOrInterfaceDeclaration()
- .setPublic(true)
-
.addImplementedType(RuleUnitData.class.getCanonicalName())
- .setName(ruleUnitDescription.getSimpleName());
-
- for (RuleUnitVariable v :
ruleUnitDescription.getUnitVarDeclarations()) {
- ClassOrInterfaceType t = new ClassOrInterfaceType()
- .setName(rawType(v.getType()).getCanonicalName());
- FieldDeclaration f = new FieldDeclaration();
- VariableDeclarator vd = new VariableDeclarator(t, v.getName());
- f.getVariables().add(vd);
- if (v.isDataSource()) {
-
t.setTypeArguments(StaticJavaParser.parseType(v.getDataSourceParameterType().getCanonicalName()));
- if (ruleUnitHelper.isAssignableFrom(DataStore.class,
rawType(v.getType()))) {
-
vd.setInitializer("org.drools.ruleunits.api.DataSource.createStore()");
- } else {
-
vd.setInitializer("org.drools.ruleunits.api.DataSource.createSingleton()");
- }
- }
- c.addMember(f);
- f.createGetter();
- if (v.setter() != null) {
- f.createSetter();
- }
- }
-
- return c;
- }
-
- public String generatedFilePath() {
- return ruleUnitDescription.getPackageName().replace('.', '/') + "/" +
ruleUnitDescription.getSimpleName() + ".java";
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitQueryRestCodegen.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitQueryRestCodegen.java
deleted file mode 100644
index b8705d7443..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/java/org/kie/kogito/codegen/rules/RuleUnitQueryRestCodegen.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.kie.kogito.codegen.rules;
-
-import java.util.Collection;
-import java.util.stream.Collectors;
-
-import org.drools.codegen.common.GeneratedFile;
-
-public class RuleUnitQueryRestCodegen {
-
- private final Collection<QueryEndpointGenerator> endpointGenerators;
-
- public RuleUnitQueryRestCodegen(Collection<QueryGenerator> validQueries) {
- this.endpointGenerators =
- validQueries.stream().map(QueryEndpointGenerator::new)
- .collect(Collectors.toUnmodifiableList());
- }
-
- Collection<QueryEndpointGenerator> endpointGenerators() {
- return endpointGenerators;
- }
-
- Collection<GeneratedFile> generate() {
- return endpointGenerators.stream()
- .map(QueryEndpointGenerator::generate)
- .collect(Collectors.toUnmodifiableList());
- }
-
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/KogitoObjectMapperQuarkusTemplate.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/KogitoObjectMapperQuarkusTemplate.java
deleted file mode 100644
index e5dc9e080f..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/KogitoObjectMapperQuarkusTemplate.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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 $Package$;
-
-import java.util.List;
-
-import java.io.IOException;
-import java.util.List;
-
-import com.fasterxml.jackson.databind.JavaType;
-import javax.inject.Singleton;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.type.CollectionType;
-
-import org.drools.ruleunits.api.DataSource;
-import org.drools.ruleunits.api.DataStore;
-import org.drools.ruleunits.api.DataStream;
-import org.drools.ruleunits.api.SingletonStore;
-
-import io.quarkus.jackson.ObjectMapperCustomizer;
-
-@Singleton
-public class KogitoObjectMapper implements ObjectMapperCustomizer {
-
- public void customize(ObjectMapper mapper) {
- mapper.registerModule(new KogitoModule());
- }
-
- public static class KogitoModule extends SimpleModule {
-
- public KogitoModule() {
- addDefaultSerializers();
- addDefaultDeserializers();
- }
-
- private void addDefaultSerializers() {
- }
-
- private void addDefaultDeserializers() {
- addDeserializer( DataStream.class, new DataStreamDeserializer() );
- addDeserializer( DataStore.class, new DataStoreDeserializer() );
- addDeserializer( SingletonStore.class, new
SingletonStoreDeserializer() );
- }
-
- public static class DataStreamDeserializer extends
JsonDeserializer<DataStream<?>> implements ContextualDeserializer {
-
- private CollectionType collectionType;
-
- @Override
- public DataStream deserialize( JsonParser jp,
DeserializationContext ctxt) throws IOException {
- DataStream stream = DataSource.createBufferedStream(16);
- List list = ctxt.readValue( jp, collectionType );
- list.forEach( stream::append );
- return stream;
- }
-
- @Override
- public JsonDeserializer<?> createContextual(
DeserializationContext ctxt, BeanProperty property) throws JsonMappingException
{
- CollectionType collectionType =
ctxt.getTypeFactory().constructCollectionType(List.class,
property.getType().containedType(0));
- DataStreamDeserializer deserializer = new
DataStreamDeserializer();
- deserializer.collectionType = collectionType;
- return deserializer;
- }
- }
-
- public static class DataStoreDeserializer extends
JsonDeserializer<DataStore<?>> implements ContextualDeserializer {
-
- private CollectionType collectionType;
-
- @Override
- public DataStore deserialize(JsonParser jp, DeserializationContext
ctxt) throws IOException {
- DataStore store = DataSource.createStore();
- List list = ctxt.readValue( jp, collectionType );
- list.forEach( store::add );
- return store;
- }
-
- @Override
- public JsonDeserializer<?> createContextual(DeserializationContext
ctxt, BeanProperty property) throws JsonMappingException {
- CollectionType collectionType =
ctxt.getTypeFactory().constructCollectionType(List.class,
property.getType().containedType(0));
- DataStoreDeserializer deserializer = new
DataStoreDeserializer();
- deserializer.collectionType = collectionType;
- return deserializer;
- }
- }
-
- public static class SingletonStoreDeserializer extends
JsonDeserializer<SingletonStore<?>> implements ContextualDeserializer {
-
- private JavaType javaType ;
-
- @Override
- public SingletonStore deserialize(JsonParser jp,
DeserializationContext ctxt) throws IOException {
- SingletonStore store = DataSource.createSingleton();
- store.set( ctxt.readValue( jp, javaType ) );
- return store;
- }
-
- @Override
- public JsonDeserializer<?> createContextual(DeserializationContext
ctxt, BeanProperty property) throws JsonMappingException {
- JavaType javaType = property.getType().containedType(0);
- SingletonStoreDeserializer deserializer = new
KogitoModule.SingletonStoreDeserializer();
- deserializer.javaType = javaType;
- return deserializer;
- }
- }
- }
-}
\ No newline at end of file
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/KogitoObjectMapperSpringTemplate.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/KogitoObjectMapperSpringTemplate.java
deleted file mode 100644
index 95599886fd..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/KogitoObjectMapperSpringTemplate.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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 $Package$;
-
-import java.util.List;
-
-import java.io.IOException;
-import java.util.List;
-
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
-import com.fasterxml.jackson.databind.type.CollectionType;
-
-import org.drools.ruleunits.api.DataSource;
-import org.drools.ruleunits.api.DataStore;
-import org.drools.ruleunits.api.DataStream;
-import org.drools.ruleunits.api.SingletonStore;
-
-import
org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
-import org.springframework.boot.SpringBootConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
-
-@SpringBootConfiguration
-public class KogitoObjectMapper {
-
- @Bean
- public Jackson2ObjectMapperBuilderCustomizer customizeObjectMapper() {
- return new Jackson2ObjectMapperBuilderCustomizer() {
- @Override
- public void customize(Jackson2ObjectMapperBuilder builder) {
- //addDefaultDeserializers
- builder.deserializerByType(DataStream.class, new
DataStreamDeserializer());
- builder.deserializerByType(DataStore.class, new
DataStoreDeserializer());
- builder.deserializerByType(SingletonStore.class, new
SingletonStoreDeserializer());
- }
- };
- }
-
- public static class DataStreamDeserializer extends
JsonDeserializer<DataStream<?>> implements ContextualDeserializer {
-
- private CollectionType collectionType;
-
- @Override
- public DataStream deserialize(JsonParser jp, DeserializationContext
ctxt) throws IOException {
- DataStream stream = DataSource.createBufferedStream(16);
- List list = ctxt.readValue(jp, collectionType);
- list.forEach(stream::append);
- return stream;
- }
-
- @Override
- public JsonDeserializer<?> createContextual(DeserializationContext
ctxt, BeanProperty property) throws JsonMappingException {
- CollectionType collectionType =
ctxt.getTypeFactory().constructCollectionType(List.class,
property.getType().containedType(0));
- DataStreamDeserializer deserializer = new DataStreamDeserializer();
- deserializer.collectionType = collectionType;
- return deserializer;
- }
- }
-
- public static class DataStoreDeserializer extends
JsonDeserializer<DataStore<?>> implements ContextualDeserializer {
-
- private CollectionType collectionType;
-
- @Override
- public DataStore deserialize(JsonParser jp, DeserializationContext
ctxt) throws IOException {
- DataStore store = DataSource.createStore();
- List list = ctxt.readValue(jp, collectionType);
- list.forEach(store::add);
- return store;
- }
-
- @Override
- public JsonDeserializer<?> createContextual(DeserializationContext
ctxt, BeanProperty property) throws JsonMappingException {
- CollectionType collectionType =
ctxt.getTypeFactory().constructCollectionType(List.class,
property.getType().containedType(0));
- DataStoreDeserializer deserializer = new DataStoreDeserializer();
- deserializer.collectionType = collectionType;
- return deserializer;
- }
- }
-
- public static class SingletonStoreDeserializer extends
JsonDeserializer<SingletonStore<?>> implements ContextualDeserializer {
-
- private JavaType javaType;
-
- @Override
- public SingletonStore deserialize(JsonParser jp,
DeserializationContext ctxt) throws IOException {
- SingletonStore store = DataSource.createSingleton();
- store.set(ctxt.readValue(jp, javaType));
- return store;
- }
-
- @Override
- public JsonDeserializer<?> createContextual(DeserializationContext
ctxt, BeanProperty property) throws JsonMappingException {
- JavaType javaType = property.getType().containedType(0);
- SingletonStoreDeserializer deserializer = new
SingletonStoreDeserializer();
- deserializer.javaType = javaType;
- return deserializer;
- }
- }
-}
\ No newline at end of file
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQueryJavaTemplate.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQueryJavaTemplate.java
deleted file mode 100644
index b9c7d8ed0a..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQueryJavaTemplate.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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 com.myspace.demo;
-
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-
-import org.drools.ruleunits.api.RuleUnit;
-import org.drools.ruleunits.api.RuleUnitInstance;
-
-import static java.util.stream.Collectors.toList;
-
-@Path("/$endpointName$")
-public class $unit$Query$name$Endpoint {
-
- RuleUnit<$UnitType$> ruleUnit;
-
- public $unit$Query$name$Endpoint() { }
-
- public $unit$Query$name$Endpoint(RuleUnit<$UnitType$> ruleUnit) {
- this.ruleUnit = ruleUnit;
- }
-
- @POST()
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- public List<$ReturnType$> executeQuery($UnitTypeDTO$ unitDTO) {
- RuleUnitInstance<$UnitType$> instance = ruleUnit.createInstance();
- // Do not return the result directly to allow post execution codegen
(like monitoring)
- List<$ReturnType$> response = $unit$Query$name$.execute(instance);
- instance.close();
- return response;
- }
-
- @POST()
- @Path("/first")
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- public $ReturnType$ executeQueryFirst($UnitTypeDTO$ unitDTO) {
- List<$ReturnType$> results = executeQuery(unitDTO);
- $ReturnType$ response = results.isEmpty() ? null : results.get(0);
- return response;
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQueryQuarkusTemplate.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQueryQuarkusTemplate.java
deleted file mode 100644
index 59492c3e68..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQueryQuarkusTemplate.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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 com.myspace.demo;
-
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-
-import org.drools.ruleunits.api.RuleUnit;
-import org.drools.ruleunits.api.RuleUnitInstance;
-
-import static java.util.stream.Collectors.toList;
-
-@Path("/$endpointName$")
-public class $unit$Query$name$Endpoint {
-
- @javax.inject.Inject
- RuleUnit<$UnitType$> ruleUnit;
-
- public $unit$Query$name$Endpoint() { }
-
- public $unit$Query$name$Endpoint(RuleUnit<$UnitType$> ruleUnit) {
- this.ruleUnit = ruleUnit;
- }
-
- @POST()
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- public List<$ReturnType$> executeQuery($UnitTypeDTO$ unitDTO) {
- RuleUnitInstance<$UnitType$> instance = ruleUnit.createInstance();
- // Do not return the result directly to allow post execution codegen
(like monitoring)
- List<$ReturnType$> response = $unit$Query$name$.execute(instance);
- instance.close();
- return response;
- }
-
- @POST()
- @Path("/first")
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- public $ReturnType$ executeQueryFirst($UnitTypeDTO$ unitDTO) {
- List<$ReturnType$> results = executeQuery(unitDTO);
- $ReturnType$ response = results.isEmpty() ? null : results.get(0);
- return response;
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQuerySpringTemplate.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQuerySpringTemplate.java
deleted file mode 100644
index 905456e1ab..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RestQuerySpringTemplate.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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 com.myspace.demo;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import org.drools.ruleunits.api.RuleUnit;
-import org.drools.ruleunits.api.RuleUnitInstance;
-
-import static java.util.stream.Collectors.toList;
-
-@RestController
-@RequestMapping("/$endpointName$")
-public class $unit$Query$name$Endpoint {
-
- @Autowired
- RuleUnit<$UnitType$> ruleUnit;
-
- public $unit$Query$name$Endpoint() { }
-
- public $unit$Query$name$Endpoint(RuleUnit<$UnitType$> ruleUnit) {
- this.ruleUnit = ruleUnit;
- }
-
- @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE, consumes =
MediaType.APPLICATION_JSON_VALUE)
- public List<$ReturnType$> executeQuery(@RequestBody(required = true)
$UnitTypeDTO$ unitDTO) {
- RuleUnitInstance<$UnitType$> instance = ruleUnit.createInstance();
- // Do not return the result directly to allow post execution codegen
(like monitoring)
- List<$ReturnType$> response = $unit$Query$name$.execute(instance);
- instance.close();
- return response;
- }
-
- @PostMapping(value = "/first", produces =
MediaType.APPLICATION_JSON_VALUE, consumes =
- MediaType.APPLICATION_JSON_VALUE)
- public $ReturnType$ executeQueryFirst(@RequestBody(required = true)
$UnitTypeDTO$ unitDTO) {
- List<$ReturnType$> results = executeQuery(unitDTO);
- $ReturnType$ response = results.isEmpty() ? null : results.get(0);
- return response;
- }
-}
\ No newline at end of file
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RuleUnitQueryJavaTemplate.java
b/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RuleUnitQueryJavaTemplate.java
deleted file mode 100644
index 0a681b9b43..0000000000
---
a/kogito-codegen-modules/kogito-codegen-rules/src/main/resources/class-templates/rules/RuleUnitQueryJavaTemplate.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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 com.myspace.demo;
-
-import org.drools.ruleunits.api.RuleUnitInstance;
-
-import java.util.List;
-import java.util.Map;
-
-import static java.util.stream.Collectors.toList;
-
-public class $unit$Query$name$ {
-
- public static List<$ReturnType$> execute(RuleUnitInstance<$UnitType$>
instance) {
- return instance.executeQuery( "$queryName$"
).toList().stream().map($unit$Query$name$::toResult).collect(toList());
- }
-
- private static $ReturnType$ toResult(Map<String, Object> tuple) {
- return ($ReturnType$) tuple.get("");
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-rules/src/test/java/org/kie/kogito/codegen/rules/RuleCodegenTest.java
b/kogito-codegen-modules/kogito-codegen-rules/src/test/java/org/kie/kogito/codegen/rules/RuleCodegenTest.java
index 24e4636fa9..af70cbb198 100644
---
a/kogito-codegen-modules/kogito-codegen-rules/src/test/java/org/kie/kogito/codegen/rules/RuleCodegenTest.java
+++
b/kogito-codegen-modules/kogito-codegen-rules/src/test/java/org/kie/kogito/codegen/rules/RuleCodegenTest.java
@@ -286,10 +286,10 @@ public class RuleCodegenTest {
Collection<GeneratedFile> generatedFiles =
incrementalRuleCodegen.withHotReloadMode().generate();
assertThat(generatedFiles).hasSizeGreaterThan(0);
- if (contextBuilder.build().hasRESTGloballyAvailable()) {
- assertThat(generatedFiles.stream()).anyMatch(f ->
f.relativePath().endsWith("KogitoObjectMapper.java"));
+ if (contextBuilder.build().hasRest()) {
+ assertThat(generatedFiles.stream()).anyMatch(f ->
f.relativePath().endsWith("ObjectMapper.java"));
} else {
- assertThat(generatedFiles.stream()).noneMatch(f ->
f.relativePath().endsWith("KogitoObjectMapper.java"));
+ assertThat(generatedFiles.stream()).noneMatch(f ->
f.relativePath().endsWith("ObjectMapper.java"));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]