This is an automated email from the ASF dual-hosted git repository.
fjtiradosarti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-apps.git
The following commit(s) were added to refs/heads/main by this push:
new e50ca030d [Fix_1983] Handling null version (#1984)
e50ca030d is described below
commit e50ca030d2533473d1b1404d31e271fb9c7f5c91
Author: Francisco Javier Tirado Sarti
<[email protected]>
AuthorDate: Fri Feb 9 18:18:12 2024 +0100
[Fix_1983] Handling null version (#1984)
Rather than composing string for postgres, we pass composite key from
businnes layer
---
.../kie/kogito/index/service/IndexingService.java | 7 +--
.../graphql/AbstractGraphQLSchemaManager.java | 9 +--
.../kie/kogito/index/model/ProcessDefinition.java | 15 -----
.../kogito/index/model/ProcessDefinitionKey.java} | 59 ++++++-----------
.../index/storage/DataIndexStorageService.java | 3 +-
.../org/kie/kogito/index/test/QueryTestBase.java | 4 +-
.../query/AbstractProcessDefinitionQueryIT.java | 35 ++++++-----
.../storage/ModelDataIndexStorageService.java | 5 +-
.../storage/ModelProcessDefinitionStorage.java | 73 ++++++++++++++++++++++
.../index/storage/ModelProcessInstanceStorage.java | 20 +++++-
.../kogito/index/storage/ModelStorageFetcher.java | 39 ++++++++++--
.../storage/ModelUserTaskInstanceStorage.java | 20 +++++-
.../storage/ModelDataIndexStorageServiceTest.java | 36 +++++++++++
.../index/jpa/model/ProcessDefinitionEntity.java | 4 +-
.../model/ProcessDefinitionEntityRepository.java | 4 +-
.../jpa/storage/AbstractJPAStorageFetcher.java | 10 +--
.../kogito/index/jpa/storage/AbstractStorage.java | 18 +++---
.../jpa/storage/JPADataIndexStorageService.java | 22 +++----
.../index/jpa/storage/JPAStorageService.java | 73 ----------------------
.../kogito/index/jpa/storage/JobEntityStorage.java | 2 +-
.../storage/ProcessDefinitionEntityStorage.java | 27 ++++----
.../jpa/storage/ProcessInstanceEntityStorage.java | 2 +-
.../jpa/storage/UserTaskInstanceEntityStorage.java | 2 +-
.../AbstractProcessDefinitionEntityQueryIT.java | 3 +-
.../index/jpa/storage/AbstractJobStorageIT.java | 18 ++----
.../AbstractProcessDefinitionStorageIT.java | 20 ++----
.../index/jpa/storage/AbstractStorageIT.java | 13 ++--
.../index/jdbc/JdbcStorageServiceProducer.java | 49 ---------------
.../model/ProcessDefinitionEntityMapper.java | 2 +-
.../mongodb/query/ProcessDefinitionQueryIT.java | 10 +--
.../storage/ProcessDefinitionStorageIT.java | 12 ++--
.../PostgreSqlStorageServiceProducer.java | 50 ---------------
.../index/addon/ProcessDefinitionRegister.java | 3 +-
33 files changed, 313 insertions(+), 356 deletions(-)
diff --git
a/data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java
b/data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java
index 4e9c733f3..2802fe8f9 100644
---
a/data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java
+++
b/data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java
@@ -41,7 +41,7 @@ import
org.kie.kogito.event.usertask.UserTaskInstanceDeadlineDataEvent;
import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent;
import org.kie.kogito.event.usertask.UserTaskInstanceVariableDataEvent;
import org.kie.kogito.index.model.Job;
-import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.storage.DataIndexStorageService;
import org.kie.kogito.index.storage.ProcessInstanceStorage;
import org.kie.kogito.index.storage.UserTaskInstanceStorage;
@@ -92,9 +92,8 @@ public class IndexingService {
//retry in case of rare but possible race condition during the insert for
the first registry
@Retry(maxRetries = 3, delay = 300, jitter = 100, retryOn =
ConcurrentModificationException.class)
public void indexProcessDefinition(ProcessDefinitionDataEvent
definitionDataEvent) {
- ProcessDefinition definition = ProcessDefinitionHelper
-
.merge(manager.getProcessDefinitionStorage().get(ProcessDefinition.toKey(definitionDataEvent.getKogitoProcessId(),
definitionDataEvent.getData().getVersion())), definitionDataEvent);
- manager.getProcessDefinitionStorage().put(definition.getKey(),
definition);
+ ProcessDefinitionKey key = new
ProcessDefinitionKey(definitionDataEvent.getKogitoProcessId(),
definitionDataEvent.getData().getVersion());
+ manager.getProcessDefinitionStorage().put(key,
ProcessDefinitionHelper.merge(manager.getProcessDefinitionStorage().get(key),
definitionDataEvent));
}
//retry in case of rare but possible race condition during the insert for
the first registry
diff --git
a/data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/AbstractGraphQLSchemaManager.java
b/data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/AbstractGraphQLSchemaManager.java
index bcb759c63..6dd81262b 100644
---
a/data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/AbstractGraphQLSchemaManager.java
+++
b/data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/AbstractGraphQLSchemaManager.java
@@ -34,6 +34,7 @@ import
org.kie.kogito.index.graphql.query.GraphQLQueryParserRegistry;
import org.kie.kogito.index.model.Job;
import org.kie.kogito.index.model.Node;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.model.ProcessInstance;
import org.kie.kogito.index.model.UserTaskInstance;
import org.kie.kogito.index.service.DataIndexServiceException;
@@ -137,7 +138,7 @@ public abstract class AbstractGraphQLSchemaManager
implements GraphQLSchemaManag
public ProcessDefinition getProcessDefinition(DataFetchingEnvironment env)
{
ProcessInstance source = env.getSource();
- return
cacheService.getProcessDefinitionStorage().get(ProcessDefinition.toKey(source.getProcessId(),
source.getVersion()));
+ return cacheService.getProcessDefinitionStorage().get(new
ProcessDefinitionKey(source.getProcessId(), source.getVersion()));
}
protected String getServiceUrl(String endpoint, String processId) {
@@ -188,7 +189,7 @@ public abstract class AbstractGraphQLSchemaManager
implements GraphQLSchemaManag
return
executeAdvancedQueryForCache(cacheService.getProcessInstanceStorage(), env);
}
- protected <T> List<T> executeAdvancedQueryForCache(StorageFetcher<String,
T> cache, DataFetchingEnvironment env) {
+ protected <K, T> List<T> executeAdvancedQueryForCache(StorageFetcher<K, T>
cache, DataFetchingEnvironment env) {
Objects.requireNonNull(cache, "Cache not found");
String inputTypeName = ((GraphQLNamedType)
env.getFieldDefinition().getArgument("where").getType()).getName();
@@ -231,7 +232,7 @@ public abstract class AbstractGraphQLSchemaManager
implements GraphQLSchemaManag
public CompletableFuture<String>
getProcessInstanceSource(DataFetchingEnvironment env) {
ProcessInstance pi = env.getSource();
- ProcessDefinition pd =
cacheService.getProcessDefinitionStorage().get(ProcessDefinition.toKey(pi.getProcessId(),
pi.getVersion()));
+ ProcessDefinition pd =
cacheService.getProcessDefinitionStorage().get(new
ProcessDefinitionKey(pi.getProcessId(), pi.getVersion()));
if (pd == null) {
return
dataIndexApiExecutor.getProcessDefinitionSourceFileContent(getServiceUrl(pi.getEndpoint(),
pi.getProcessId()), pi.getProcessId());
} else {
@@ -241,7 +242,7 @@ public abstract class AbstractGraphQLSchemaManager
implements GraphQLSchemaManag
public CompletableFuture<List<Node>>
getProcessInstanceNodes(DataFetchingEnvironment env) {
ProcessInstance pi = env.getSource();
- ProcessDefinition pd =
cacheService.getProcessDefinitionStorage().get(ProcessDefinition.toKey(pi.getProcessId(),
pi.getVersion()));
+ ProcessDefinition pd =
cacheService.getProcessDefinitionStorage().get(new
ProcessDefinitionKey(pi.getProcessId(), pi.getVersion()));
if (pd == null) {
return
dataIndexApiExecutor.getProcessDefinitionNodes(getServiceUrl(pi.getEndpoint(),
pi.getProcessId()), pi.getProcessId());
} else {
diff --git
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessDefinition.java
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessDefinition.java
index 200d4347f..e6e2450ea 100644
---
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessDefinition.java
+++
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessDefinition.java
@@ -21,9 +21,7 @@ package org.kie.kogito.index.model;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.Optional;
import java.util.Set;
-import java.util.regex.Pattern;
public class ProcessDefinition {
@@ -112,18 +110,6 @@ public class ProcessDefinition {
this.nodes = nodes;
}
- public String getKey() {
- return toKey(id, version);
- }
-
- public static String toKey(String processId, String version) {
- return processId + "$v:" + version;
- }
-
- public static String[] fromKey(String key) {
- return Optional.ofNullable(key).map(k ->
k.split(Pattern.quote("$v:"))).orElse(new String[0]);
- }
-
public String getDescription() {
return description;
}
@@ -176,5 +162,4 @@ public class ProcessDefinition {
", nodes='" + nodes + '\'' +
'}';
}
-
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntityId.java
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessDefinitionKey.java
similarity index 52%
rename from
data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntityId.java
rename to
data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessDefinitionKey.java
index 28f61990f..a850f9efd 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntityId.java
+++
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessDefinitionKey.java
@@ -16,74 +16,53 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.kie.kogito.index.jpa.model;
+package org.kie.kogito.index.model;
-import java.io.Serializable;
import java.util.Objects;
-import static org.kie.kogito.index.model.ProcessDefinition.fromKey;
-import static org.kie.kogito.index.model.ProcessDefinition.toKey;
-
-public class ProcessDefinitionEntityId implements Serializable {
+public class ProcessDefinitionKey {
private String id;
-
private String version;
- public ProcessDefinitionEntityId() {
- }
-
- public ProcessDefinitionEntityId(String key) {
- String[] fromKey = fromKey(key);
- this.id = fromKey[0];
- this.version = fromKey[1];
- }
-
- public ProcessDefinitionEntityId(String id, String version) {
+ public ProcessDefinitionKey(String id, String version) {
this.id = id;
this.version = version;
}
- public String getKey() {
- return toKey(id, version);
- }
-
public String getId() {
return id;
}
- public void setId(String id) {
- this.id = id;
- }
-
public String getVersion() {
return version;
}
- public void setVersion(String version) {
- this.version = version;
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, version);
}
@Override
- public boolean equals(Object o) {
- if (this == o)
+ public boolean equals(Object obj) {
+ if (this == obj) {
return true;
- if (o == null || getClass() != o.getClass())
+ }
+ if (!(obj instanceof ProcessDefinitionKey)) {
return false;
- ProcessDefinitionEntityId that = (ProcessDefinitionEntityId) o;
- return Objects.equals(id, that.id) && Objects.equals(version,
that.version);
+ }
+ ProcessDefinitionKey other = (ProcessDefinitionKey) obj;
+ return Objects.equals(id, other.id) && Objects.equals(version,
other.version);
}
@Override
- public int hashCode() {
- return Objects.hash(id, version);
+ public String toString() {
+ return "ProcessDefinitionKey [id=" + id + ", version=" + version + "]";
}
- @Override
- public String toString() {
- return "ProcessDefinitionEntityId{" +
- "id='" + id + '\'' +
- ", version='" + version + '\'' +
- '}';
+ @SuppressWarnings("unused")
+ private ProcessDefinitionKey() {
+ // needed by external tools
}
+
}
diff --git
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
index 5e8995d08..43c951fd8 100644
---
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
+++
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
@@ -20,13 +20,14 @@ package org.kie.kogito.index.storage;
import org.kie.kogito.index.model.Job;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.persistence.api.Storage;
import com.fasterxml.jackson.databind.node.ObjectNode;
public interface DataIndexStorageService {
- Storage<String, ProcessDefinition> getProcessDefinitionStorage();
+ Storage<ProcessDefinitionKey, ProcessDefinition>
getProcessDefinitionStorage();
ProcessInstanceStorage getProcessInstanceStorage();
diff --git
a/data-index/data-index-storage/data-index-storage-api/src/test/java/org/kie/kogito/index/test/QueryTestBase.java
b/data-index/data-index-storage/data-index-storage-api/src/test/java/org/kie/kogito/index/test/QueryTestBase.java
index c2a654df8..5e25817c6 100644
---
a/data-index/data-index-storage/data-index-storage-api/src/test/java/org/kie/kogito/index/test/QueryTestBase.java
+++
b/data-index/data-index-storage/data-index-storage-api/src/test/java/org/kie/kogito/index/test/QueryTestBase.java
@@ -34,8 +34,8 @@ public abstract class QueryTestBase<K, V> {
return true;
}
- public void queryAndAssert(BiConsumer<List<V>, String[]> assertConsumer,
StorageFetcher<K, V> storage, List<AttributeFilter<?>> filters,
List<AttributeSort> sort, Integer offset, Integer limit,
- String... ids) {
+ public void queryAndAssert(BiConsumer<List<V>, K[]> assertConsumer,
StorageFetcher<K, V> storage, List<AttributeFilter<?>> filters,
List<AttributeSort> sort, Integer offset, Integer limit,
+ K... ids) {
assertConsumer.accept(storage.query().filter(filters).sort(sort).offset(offset).limit(limit).execute(),
ids);
}
diff --git
a/data-index/data-index-storage/data-index-storage-api/src/test/java/org/kie/kogito/index/test/query/AbstractProcessDefinitionQueryIT.java
b/data-index/data-index-storage/data-index-storage-api/src/test/java/org/kie/kogito/index/test/query/AbstractProcessDefinitionQueryIT.java
index dc0bd2de9..a6e61fc01 100644
---
a/data-index/data-index-storage/data-index-storage-api/src/test/java/org/kie/kogito/index/test/query/AbstractProcessDefinitionQueryIT.java
+++
b/data-index/data-index-storage/data-index-storage-api/src/test/java/org/kie/kogito/index/test/query/AbstractProcessDefinitionQueryIT.java
@@ -22,8 +22,10 @@ import java.util.List;
import java.util.Set;
import java.util.function.BiConsumer;
+import org.assertj.core.groups.Tuple;
import org.junit.jupiter.api.Test;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.test.QueryTestBase;
import org.kie.kogito.index.test.TestUtils;
import org.kie.kogito.persistence.api.Storage;
@@ -41,34 +43,37 @@ import static
org.kie.kogito.persistence.api.query.QueryFilterFactory.isNull;
import static org.kie.kogito.persistence.api.query.QueryFilterFactory.notNull;
import static org.kie.kogito.persistence.api.query.QueryFilterFactory.orderBy;
-public abstract class AbstractProcessDefinitionQueryIT extends
QueryTestBase<String, ProcessDefinition> {
+public abstract class AbstractProcessDefinitionQueryIT extends
QueryTestBase<ProcessDefinitionKey, ProcessDefinition> {
- public abstract Storage<String, ProcessDefinition> getStorage();
+ public abstract Storage<ProcessDefinitionKey, ProcessDefinition>
getStorage();
@Test
void testProcessDefinitionQuery() {
String processId = "travels";
ProcessDefinition pdv1 = TestUtils.createProcessDefinition(processId,
"1.0", Set.of("admin", "kogito"));
- Storage<String, ProcessDefinition> storage = getStorage();
- storage.put(pdv1.getKey(), pdv1);
+ Storage<ProcessDefinitionKey, ProcessDefinition> storage =
getStorage();
+ ProcessDefinitionKey pdv1Key = new ProcessDefinitionKey(pdv1.getId(),
pdv1.getVersion());
+ storage.put(pdv1Key, pdv1);
ProcessDefinition pdv2 = TestUtils.createProcessDefinition(processId,
"2.0", Set.of("kogito"));
- storage.put(pdv2.getKey(), pdv2);
+ ProcessDefinitionKey pdv2Key = new ProcessDefinitionKey(pdv2.getId(),
pdv2.getVersion());
+ storage.put(pdv2Key, pdv2);
- queryAndAssert(assertWithKey(), storage,
singletonList(isNull("type")), null, null, null, pdv1.getKey(), pdv2.getKey());
- queryAndAssert(assertWithKey(), storage,
singletonList(notNull("version")), null, null, null, pdv1.getKey(),
pdv2.getKey());
- queryAndAssert(assertWithKey(), storage,
singletonList(equalTo("version", pdv1.getVersion())), null, null, null,
pdv1.getKey());
- queryAndAssert(assertWithKey(), storage,
singletonList(contains("roles", "admin")), null, null, null, pdv1.getKey());
- queryAndAssert(assertWithKey(), storage,
singletonList(containsAny("roles", asList("admin", "kogito"))), null, null,
null, pdv1.getKey(), pdv2.getKey());
- queryAndAssert(assertWithKey(), storage,
singletonList(containsAll("roles", asList("admin", "kogito"))), null, null,
null, pdv1.getKey());
+ queryAndAssert(assertWithKey(), storage,
singletonList(isNull("type")), null, null, null, pdv1Key, pdv2Key);
+ queryAndAssert(assertWithKey(), storage,
singletonList(notNull("version")), null, null, null, pdv1Key, pdv2Key);
+ queryAndAssert(assertWithKey(), storage,
singletonList(equalTo("version", pdv1.getVersion())), null, null, null,
pdv1Key);
+ queryAndAssert(assertWithKey(), storage,
singletonList(contains("roles", "admin")), null, null, null, pdv1Key);
+ queryAndAssert(assertWithKey(), storage,
singletonList(containsAny("roles", asList("admin", "kogito"))), null, null,
null, pdv1Key, pdv2Key);
+ queryAndAssert(assertWithKey(), storage,
singletonList(containsAll("roles", asList("admin", "kogito"))), null, null,
null, pdv1Key);
queryAndAssert(assertWithKey(), storage, asList(in("id",
asList(pdv1.getId(), pdv2.getId())),
in("version", asList(pdv1.getVersion(), pdv2.getVersion()))),
- singletonList(orderBy("version", SortDirection.ASC)), 1, 1,
pdv2.getKey());
+ singletonList(orderBy("version", SortDirection.ASC)), 1, 1,
pdv2Key);
queryAndAssert(assertWithKey(), storage, null,
singletonList(orderBy("version", SortDirection.DESC)), null,
- null, pdv2.getKey(), pdv1.getKey());
+ null, pdv2Key, pdv1Key);
}
- public static <V> BiConsumer<List<V>, String[]> assertWithKey() {
- return (instances, ids) -> assertThat(instances).hasSize(ids == null ?
0 : ids.length).extracting("key").containsExactly(ids);
+ public static <V> BiConsumer<List<V>, ProcessDefinitionKey[]>
assertWithKey() {
+ return (instances, ids) -> assertThat(instances).hasSize(ids == null ?
0 : ids.length).extracting("id", "version").map(Tuple::toArray)
+ .map(objs -> new ProcessDefinitionKey((String) objs[0],
(String) objs[1])).containsExactly(ids);
}
}
diff --git
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelDataIndexStorageService.java
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelDataIndexStorageService.java
index 007ecb51c..693928d99 100644
---
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelDataIndexStorageService.java
+++
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelDataIndexStorageService.java
@@ -20,6 +20,7 @@ package org.kie.kogito.index.storage;
import org.kie.kogito.index.model.Job;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.model.ProcessInstance;
import org.kie.kogito.index.model.UserTaskInstance;
import org.kie.kogito.persistence.api.Storage;
@@ -43,8 +44,8 @@ public class ModelDataIndexStorageService implements
DataIndexStorageService {
StorageService storageService;
@Override
- public Storage<String, ProcessDefinition> getProcessDefinitionStorage() {
- return storageService.getCache(PROCESS_DEFINITIONS_STORAGE,
ProcessDefinition.class);
+ public Storage<ProcessDefinitionKey, ProcessDefinition>
getProcessDefinitionStorage() {
+ return new
ModelProcessDefinitionStorage(storageService.getCache(PROCESS_DEFINITIONS_STORAGE,
ProcessDefinition.class));
}
@Override
diff --git
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelProcessDefinitionStorage.java
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelProcessDefinitionStorage.java
new file mode 100644
index 000000000..5462c4df0
--- /dev/null
+++
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelProcessDefinitionStorage.java
@@ -0,0 +1,73 @@
+/*
+ * 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.index.storage;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
+
+import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
+import org.kie.kogito.persistence.api.Storage;
+
+public class ModelProcessDefinitionStorage extends
ModelStorageFetcher<ProcessDefinitionKey, ProcessDefinition> implements
Storage<ProcessDefinitionKey, ProcessDefinition> {
+
+ private static final String VERSION_SEPARATOR = "$v:";
+
+ static ProcessDefinitionKey fromString(String key) {
+ int indexOf = key.indexOf(VERSION_SEPARATOR);
+ return indexOf == -1 ? new ProcessDefinitionKey(key, null)
+ : new ProcessDefinitionKey(key.substring(0, indexOf),
key.substring(indexOf + VERSION_SEPARATOR.length()));
+ }
+
+ static String toString(ProcessDefinitionKey key) {
+ String id = key.getId();
+ String version = key.getVersion();
+ return version == null ? id : id + VERSION_SEPARATOR + version;
+ }
+
+ public ModelProcessDefinitionStorage(Storage<String, ProcessDefinition>
storage) {
+ super(storage, ModelProcessDefinitionStorage::toString,
ModelProcessDefinitionStorage::fromString);
+ }
+
+ @Override
+ public ProcessDefinition put(ProcessDefinitionKey key, ProcessDefinition
value) {
+ return storage.put(toString(key), value);
+ }
+
+ @Override
+ public ProcessDefinition remove(ProcessDefinitionKey key) {
+ return storage.remove(toString(key));
+ }
+
+ @Override
+ public boolean containsKey(ProcessDefinitionKey key) {
+ return storage.containsKey(toString(key));
+ }
+
+ @Override
+ public Map<ProcessDefinitionKey, ProcessDefinition> entries() {
+ return
storage.entries().entrySet().stream().collect(Collectors.toMap(e ->
fromString(e.getKey()), Entry::getValue));
+ }
+
+ @Override
+ public String getRootType() {
+ return ProcessDefinition.class.getName();
+ }
+}
diff --git
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelProcessInstanceStorage.java
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelProcessInstanceStorage.java
index 52c8b5689..9f21497fc 100644
---
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelProcessInstanceStorage.java
+++
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelProcessInstanceStorage.java
@@ -1,3 +1,21 @@
+/*
+ * 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.index.storage;
import org.kie.kogito.event.process.ProcessInstanceDataEvent;
@@ -15,7 +33,7 @@ import
org.kie.kogito.index.storage.merger.ProcessInstanceStateDataEventMerger;
import
org.kie.kogito.index.storage.merger.ProcessInstanceVariableDataEventMerger;
import org.kie.kogito.persistence.api.Storage;
-public class ModelProcessInstanceStorage extends
ModelStorageFetcher<ProcessInstance> implements ProcessInstanceStorage {
+public class ModelProcessInstanceStorage extends ModelStorageFetcher<String,
ProcessInstance> implements ProcessInstanceStorage {
private final ProcessInstanceErrorDataEventMerger errorMerger = new
ProcessInstanceErrorDataEventMerger();
private final ProcessInstanceNodeDataEventMerger nodeMerger = new
ProcessInstanceNodeDataEventMerger();
private final ProcessInstanceSLADataEventMerger slaMerger = new
ProcessInstanceSLADataEventMerger();
diff --git
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelStorageFetcher.java
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelStorageFetcher.java
index cbadc33c5..8ea6b833d 100644
---
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelStorageFetcher.java
+++
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelStorageFetcher.java
@@ -1,17 +1,46 @@
+/*
+ * 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.index.storage;
+import java.util.function.Function;
+
import org.kie.kogito.persistence.api.Storage;
import org.kie.kogito.persistence.api.StorageFetcher;
import org.kie.kogito.persistence.api.query.Query;
import io.smallrye.mutiny.Multi;
-public abstract class ModelStorageFetcher<V> implements StorageFetcher<String,
V> {
+public abstract class ModelStorageFetcher<K, V> implements StorageFetcher<K,
V> {
protected final Storage<String, V> storage;
+ private final Function<K, String> toString;
+ private final Function<String, K> fromString;
+
public ModelStorageFetcher(Storage<String, V> storage) {
+ this(storage, Object::toString, s -> (K) s);
+ }
+
+ public ModelStorageFetcher(Storage<String, V> storage, Function<K, String>
toString, Function<String, K> fromString) {
this.storage = storage;
+ this.toString = toString;
+ this.fromString = fromString;
}
@Override
@@ -25,8 +54,8 @@ public abstract class ModelStorageFetcher<V> implements
StorageFetcher<String, V
}
@Override
- public Multi<String> objectRemovedListener() {
- return storage.objectRemovedListener();
+ public Multi<K> objectRemovedListener() {
+ return storage.objectRemovedListener().map(fromString);
}
@Override
@@ -35,8 +64,8 @@ public abstract class ModelStorageFetcher<V> implements
StorageFetcher<String, V
}
@Override
- public V get(String key) {
- return storage.get(key);
+ public V get(K key) {
+ return storage.get(toString.apply(key));
}
@Override
diff --git
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelUserTaskInstanceStorage.java
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelUserTaskInstanceStorage.java
index d5a46917a..20f98a396 100644
---
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelUserTaskInstanceStorage.java
+++
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelUserTaskInstanceStorage.java
@@ -1,3 +1,21 @@
+/*
+ * 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.index.storage;
import java.util.ArrayList;
@@ -19,7 +37,7 @@ import
org.kie.kogito.index.storage.merger.UserTaskInstanceStateEventMerger;
import
org.kie.kogito.index.storage.merger.UserTaskInstanceVariableDataEventMerger;
import org.kie.kogito.persistence.api.Storage;
-public class ModelUserTaskInstanceStorage extends
ModelStorageFetcher<UserTaskInstance> implements UserTaskInstanceStorage {
+public class ModelUserTaskInstanceStorage extends ModelStorageFetcher<String,
UserTaskInstance> implements UserTaskInstanceStorage {
private final UserTaskInstanceAssignmentDataEventMerger assignmentMerger =
new UserTaskInstanceAssignmentDataEventMerger();
private final UserTaskInstanceAttachmentDataEventMerger attachmentMerger =
new UserTaskInstanceAttachmentDataEventMerger();
diff --git
a/data-index/data-index-storage/data-index-storage-common/src/test/java/org/kie/kogito/index/storage/ModelDataIndexStorageServiceTest.java
b/data-index/data-index-storage/data-index-storage-common/src/test/java/org/kie/kogito/index/storage/ModelDataIndexStorageServiceTest.java
new file mode 100644
index 000000000..64ab4b0d7
--- /dev/null
+++
b/data-index/data-index-storage/data-index-storage-common/src/test/java/org/kie/kogito/index/storage/ModelDataIndexStorageServiceTest.java
@@ -0,0 +1,36 @@
+package org.kie.kogito.index.storage;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.junit.jupiter.api.Test;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ModelDataIndexStorageServiceTest {
+
+ @Test
+ void testIdAndVersion() {
+ assertKeyConversion(new ProcessDefinitionKey("Javierito", "1_0"));
+ }
+
+ @Test
+ void testIdEmptyVersion() {
+ assertKeyConversion(new ProcessDefinitionKey("Javierito", ""));
+ }
+
+ @Test
+ void testIdNullVersion() {
+ assertKeyConversion(new ProcessDefinitionKey("Javierito", null));
+ }
+
+ private void assertKeyConversion(ProcessDefinitionKey key) {
+ Set<ProcessDefinitionKey> set = new HashSet<>();
+ set.add(key);
+ ProcessDefinitionKey deserializedKey =
ModelProcessDefinitionStorage.fromString(ModelProcessDefinitionStorage.toString(key));
+ set.add(deserializedKey);
+ assertThat(deserializedKey).isEqualTo(key);
+ assertThat(set).hasSize(1);
+ }
+}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntity.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntity.java
index 5ffdec6e2..dd2db761a 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntity.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntity.java
@@ -23,6 +23,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.Set;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
+
import jakarta.persistence.CascadeType;
import jakarta.persistence.CollectionTable;
import jakarta.persistence.Column;
@@ -38,7 +40,7 @@ import jakarta.persistence.Table;
@Entity(name = "definitions")
@Table(name = "definitions")
-@IdClass(ProcessDefinitionEntityId.class)
+@IdClass(ProcessDefinitionKey.class)
public class ProcessDefinitionEntity extends AbstractEntity {
@Id
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntityRepository.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntityRepository.java
index a17d92a5f..c055cba6b 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntityRepository.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntityRepository.java
@@ -18,11 +18,13 @@
*/
package org.kie.kogito.index.jpa.model;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
+
import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
import jakarta.enterprise.context.ApplicationScoped;
@ApplicationScoped
-public class ProcessDefinitionEntityRepository implements
PanacheRepositoryBase<ProcessDefinitionEntity, ProcessDefinitionEntityId> {
+public class ProcessDefinitionEntityRepository implements
PanacheRepositoryBase<ProcessDefinitionEntity, ProcessDefinitionKey> {
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractJPAStorageFetcher.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractJPAStorageFetcher.java
index a87c7f8eb..c8ab20c38 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractJPAStorageFetcher.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractJPAStorageFetcher.java
@@ -29,18 +29,18 @@ import io.smallrye.mutiny.Multi;
import jakarta.transaction.Transactional;
-public class AbstractJPAStorageFetcher<E extends AbstractEntity, V> implements
StorageFetcher<String, V> {
+public class AbstractJPAStorageFetcher<K, E extends AbstractEntity, V>
implements StorageFetcher<K, V> {
private static final String LISTENER_NOT_AVAILABLE_IN_JPA = "Listener not
available in JPA database";
- protected PanacheRepositoryBase<E, String> repository;
+ protected PanacheRepositoryBase<E, K> repository;
protected Class<E> entityClass;
protected Function<E, V> mapToModel;
protected AbstractJPAStorageFetcher() {
}
- protected AbstractJPAStorageFetcher(PanacheRepositoryBase<E, String>
repository, Class<E> entityClass, Function<E, V> mapToModel) {
+ protected AbstractJPAStorageFetcher(PanacheRepositoryBase<E, K>
repository, Class<E> entityClass, Function<E, V> mapToModel) {
this.repository = repository;
this.entityClass = entityClass;
this.mapToModel = mapToModel;
@@ -57,7 +57,7 @@ public class AbstractJPAStorageFetcher<E extends
AbstractEntity, V> implements S
}
@Override
- public Multi<String> objectRemovedListener() {
+ public Multi<K> objectRemovedListener() {
throw new UnsupportedOperationException(LISTENER_NOT_AVAILABLE_IN_JPA);
}
@@ -68,7 +68,7 @@ public class AbstractJPAStorageFetcher<E extends
AbstractEntity, V> implements S
@Override
@Transactional
- public V get(String key) {
+ public V get(K key) {
return repository.findByIdOptional(key).map(mapToModel).orElse(null);
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractStorage.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractStorage.java
index abae372eb..4d339888e 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractStorage.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractStorage.java
@@ -33,18 +33,18 @@ import jakarta.transaction.Transactional;
import static java.util.stream.Collectors.toMap;
-public abstract class AbstractStorage<E extends AbstractEntity, V> extends
AbstractJPAStorageFetcher<E, V> implements Storage<String, V> {
+public abstract class AbstractStorage<K, E extends AbstractEntity, V> extends
AbstractJPAStorageFetcher<K, E, V> implements Storage<K, V> {
private Class<V> modelClass;
private Function<V, E> mapToEntity;
- private Function<E, String> mapEntityToKey;
+ private Function<E, K> mapEntityToKey;
protected AbstractStorage() {
}
- protected AbstractStorage(PanacheRepositoryBase<E, String> repository,
Class<V> modelClass, Class<E> entityClass, Function<E, V> mapToModel,
- Function<V, E> mapToEntity, Function<E, String> mapEntityToKey) {
+ protected AbstractStorage(PanacheRepositoryBase<E, K> repository, Class<V>
modelClass, Class<E> entityClass, Function<E, V> mapToModel,
+ Function<V, E> mapToEntity, Function<E, K> mapEntityToKey) {
super(repository, entityClass, mapToModel);
this.modelClass = modelClass;
this.mapToEntity = mapToEntity;
@@ -53,7 +53,7 @@ public abstract class AbstractStorage<E extends
AbstractEntity, V> extends Abstr
@Override
@Transactional
- public V put(String key, V value) {
+ public V put(K key, V value) {
//Pessimistic lock is used to lock the row to handle concurrency with
an exiting registry
E persistedEntity = repository.findById(key,
LockModeType.PESSIMISTIC_WRITE);
E newEntity = mapToEntity.apply(value);
@@ -72,7 +72,7 @@ public abstract class AbstractStorage<E extends
AbstractEntity, V> extends Abstr
@Override
@Transactional
- public V remove(String key) {
+ public V remove(K key) {
V value = get(key);
if (value != null) {
repository.deleteById(key);
@@ -82,12 +82,12 @@ public abstract class AbstractStorage<E extends
AbstractEntity, V> extends Abstr
@Transactional
@Override
- public boolean containsKey(String key) {
+ public boolean containsKey(K key) {
return repository.count("id = ?1", key) == 1;
}
@Override
- public Map<String, V> entries() {
+ public Map<K, V> entries() {
return repository.streamAll().collect(toMap(mapEntityToKey,
mapToModel));
}
@@ -102,7 +102,7 @@ public abstract class AbstractStorage<E extends
AbstractEntity, V> extends Abstr
return modelClass.getCanonicalName();
}
- protected PanacheRepositoryBase<E, String> getRepository() {
+ protected PanacheRepositoryBase<E, K> getRepository() {
return repository;
}
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPADataIndexStorageService.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPADataIndexStorageService.java
index 9a726a3a6..99bbccf0c 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPADataIndexStorageService.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPADataIndexStorageService.java
@@ -20,26 +20,25 @@ package org.kie.kogito.index.jpa.storage;
import org.kie.kogito.index.model.Job;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.storage.DataIndexStorageService;
import org.kie.kogito.index.storage.ProcessInstanceStorage;
import org.kie.kogito.index.storage.UserTaskInstanceStorage;
import org.kie.kogito.persistence.api.Storage;
-import org.kie.kogito.persistence.api.StorageService;
import com.fasterxml.jackson.databind.node.ObjectNode;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
-import static org.kie.kogito.index.storage.Constants.JOBS_STORAGE;
-import static
org.kie.kogito.index.storage.Constants.PROCESS_DEFINITIONS_STORAGE;
-import static org.kie.kogito.index.storage.Constants.PROCESS_ID_MODEL_STORAGE;
-
@ApplicationScoped
public class JPADataIndexStorageService implements DataIndexStorageService {
@Inject
- StorageService storageService;
+ ProcessDefinitionEntityStorage definitionStorage;
+
+ @Inject
+ JobEntityStorage jobsStorage;
@Inject
ProcessInstanceStorage processInstanceStorage;
@@ -48,8 +47,8 @@ public class JPADataIndexStorageService implements
DataIndexStorageService {
UserTaskInstanceStorage userTaskInstanceStorage;
@Override
- public Storage<String, ProcessDefinition> getProcessDefinitionStorage() {
- return storageService.getCache(PROCESS_DEFINITIONS_STORAGE,
ProcessDefinition.class);
+ public Storage<ProcessDefinitionKey, ProcessDefinition>
getProcessDefinitionStorage() {
+ return definitionStorage;
}
@Override
@@ -64,13 +63,12 @@ public class JPADataIndexStorageService implements
DataIndexStorageService {
@Override
public Storage<String, Job> getJobsStorage() {
- return storageService.getCache(JOBS_STORAGE, Job.class);
+ return jobsStorage;
}
@Override
public Storage<String, ObjectNode> getDomainModelCache(String processId) {
- String rootType = getProcessIdModelCache().get(processId);
- return rootType == null ? null :
storageService.getCache(getDomainModelCacheName(processId), ObjectNode.class,
rootType);
+ throw new UnsupportedOperationException("Generic custom type cache not
available in JPA");
}
@Override
@@ -80,6 +78,6 @@ public class JPADataIndexStorageService implements
DataIndexStorageService {
@Override
public Storage<String, String> getProcessIdModelCache() {
- return storageService.getCache(PROCESS_ID_MODEL_STORAGE);
+ throw new UnsupportedOperationException("Generic String cache not
available in JPA");
}
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPAStorageService.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPAStorageService.java
deleted file mode 100644
index 89446436f..000000000
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPAStorageService.java
+++ /dev/null
@@ -1,73 +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.index.jpa.storage;
-
-import org.kie.kogito.index.model.Job;
-import org.kie.kogito.index.model.ProcessDefinition;
-import org.kie.kogito.index.model.ProcessInstance;
-import org.kie.kogito.index.model.UserTaskInstance;
-import org.kie.kogito.persistence.api.Storage;
-import org.kie.kogito.persistence.api.StorageService;
-
-import static java.lang.String.format;
-
-public class JPAStorageService implements StorageService {
-
- private ProcessDefinitionEntityStorage definitionStorage;
- private ProcessInstanceEntityStorage processStorage;
- private JobEntityStorage jobStorage;
- private UserTaskInstanceEntityStorage taskStorage;
-
- public JPAStorageService(final ProcessDefinitionEntityStorage
definitionStorage,
- final ProcessInstanceEntityStorage processStorage,
- final JobEntityStorage jobStorage,
- final UserTaskInstanceEntityStorage taskStorage) {
- this.definitionStorage = definitionStorage;
- this.processStorage = processStorage;
- this.jobStorage = jobStorage;
- this.taskStorage = taskStorage;
- }
-
- @Override
- public Storage<String, String> getCache(String name) {
- throw new UnsupportedOperationException("Generic String cache not
available in PostgresSQL");
- }
-
- @Override
- public <T> Storage<String, T> getCache(String name, Class<T> type) {
- if (type == ProcessInstance.class) {
- return (Storage<String, T>) processStorage;
- }
- if (type == ProcessDefinition.class) {
- return (Storage<String, T>) definitionStorage;
- }
- if (type == Job.class) {
- return (Storage<String, T>) jobStorage;
- }
- if (type == UserTaskInstance.class) {
- return (Storage<String, T>) taskStorage;
- }
- throw new UnsupportedOperationException(format("Unknown class type:
%s, cache not available", type.getCanonicalName()));
- }
-
- @Override
- public <T> Storage<String, T> getCache(String name, Class<T> type, String
rootType) {
- throw new UnsupportedOperationException("Generic custom type cache not
available in PostgresSQL");
- }
-}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
index 697ed00c3..f5b9c270d 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
@@ -28,7 +28,7 @@ import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
@ApplicationScoped
-public class JobEntityStorage extends AbstractStorage<JobEntity, Job> {
+public class JobEntityStorage extends AbstractStorage<String, JobEntity, Job> {
protected JobEntityStorage() {
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessDefinitionEntityStorage.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessDefinitionEntityStorage.java
index 1bbe7d546..db641e4de 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessDefinitionEntityStorage.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessDefinitionEntityStorage.java
@@ -22,9 +22,9 @@ import java.util.Optional;
import org.kie.kogito.index.jpa.mapper.ProcessDefinitionEntityMapper;
import org.kie.kogito.index.jpa.model.ProcessDefinitionEntity;
-import org.kie.kogito.index.jpa.model.ProcessDefinitionEntityId;
import org.kie.kogito.index.jpa.model.ProcessDefinitionEntityRepository;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
@@ -35,25 +35,24 @@ import jakarta.persistence.LockModeType;
import jakarta.transaction.Transactional;
@ApplicationScoped
-public class ProcessDefinitionEntityStorage extends
AbstractStorage<ProcessDefinitionEntity, ProcessDefinition> {
+public class ProcessDefinitionEntityStorage extends
AbstractStorage<ProcessDefinitionKey, ProcessDefinitionEntity,
ProcessDefinition> {
protected ProcessDefinitionEntityStorage() {
}
@Inject
public ProcessDefinitionEntityStorage(ProcessDefinitionEntityRepository
repository, ProcessDefinitionEntityMapper mapper) {
- super(new RepositoryAdapter(repository), ProcessDefinition.class,
ProcessDefinitionEntity.class, mapper::mapToModel, mapper::mapToEntity, e ->
new ProcessDefinitionEntityId(e.getId(),
- e.getVersion()).getKey());
+ super(new RepositoryAdapter(repository), ProcessDefinition.class,
ProcessDefinitionEntity.class, mapper::mapToModel, mapper::mapToEntity, e ->
new ProcessDefinitionKey(e.getId(),
+ e.getVersion()));
}
@Transactional
@Override
- public boolean containsKey(String key) {
- ProcessDefinitionEntityId id = new ProcessDefinitionEntityId(key);
- return getRepository().count("id = ?1 and version = ?2", id.getId(),
id.getVersion()) == 1;
+ public boolean containsKey(ProcessDefinitionKey key) {
+ return getRepository().count("id = ?1 and version = ?2", key.getId(),
key.getVersion()) == 1;
}
- public static class RepositoryAdapter implements
PanacheRepositoryBase<ProcessDefinitionEntity, String> {
+ public static class RepositoryAdapter implements
PanacheRepositoryBase<ProcessDefinitionEntity, ProcessDefinitionKey> {
ProcessDefinitionEntityRepository repository;
@@ -62,18 +61,18 @@ public class ProcessDefinitionEntityStorage extends
AbstractStorage<ProcessDefin
}
@Override
- public boolean deleteById(String key) {
- return repository.deleteById(new ProcessDefinitionEntityId(key));
+ public boolean deleteById(ProcessDefinitionKey key) {
+ return repository.deleteById(key);
}
@Override
- public Optional<ProcessDefinitionEntity> findByIdOptional(String key) {
- return repository.findByIdOptional(new
ProcessDefinitionEntityId(key));
+ public Optional<ProcessDefinitionEntity>
findByIdOptional(ProcessDefinitionKey key) {
+ return repository.findByIdOptional(key);
}
@Override
- public ProcessDefinitionEntity findById(String s, LockModeType
lockModeType) {
- return repository.findById(new ProcessDefinitionEntityId(s),
lockModeType);
+ public ProcessDefinitionEntity findById(ProcessDefinitionKey s,
LockModeType lockModeType) {
+ return repository.findById(s, lockModeType);
}
@Override
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
index f86570fbd..ffd900462 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
@@ -55,7 +55,7 @@ import static
org.kie.kogito.event.process.ProcessInstanceNodeEventBody.EVENT_TY
import static org.kie.kogito.index.DateTimeUtils.toZonedDateTime;
@ApplicationScoped
-public class ProcessInstanceEntityStorage extends
AbstractJPAStorageFetcher<ProcessInstanceEntity, ProcessInstance> implements
ProcessInstanceStorage {
+public class ProcessInstanceEntityStorage extends
AbstractJPAStorageFetcher<String, ProcessInstanceEntity, ProcessInstance>
implements ProcessInstanceStorage {
protected ProcessInstanceEntityStorage() {
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/UserTaskInstanceEntityStorage.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/UserTaskInstanceEntityStorage.java
index 4d5cc4700..1e2c127a3 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/UserTaskInstanceEntityStorage.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/UserTaskInstanceEntityStorage.java
@@ -56,7 +56,7 @@ import static java.lang.String.format;
import static org.kie.kogito.index.DateTimeUtils.toZonedDateTime;
@ApplicationScoped
-public class UserTaskInstanceEntityStorage extends
AbstractJPAStorageFetcher<UserTaskInstanceEntity, UserTaskInstance> implements
UserTaskInstanceStorage {
+public class UserTaskInstanceEntityStorage extends
AbstractJPAStorageFetcher<String, UserTaskInstanceEntity, UserTaskInstance>
implements UserTaskInstanceStorage {
protected UserTaskInstanceEntityStorage() {
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/query/AbstractProcessDefinitionEntityQueryIT.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/query/AbstractProcessDefinitionEntityQueryIT.java
index 0eab6d2d8..1c9a84d66 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/query/AbstractProcessDefinitionEntityQueryIT.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/query/AbstractProcessDefinitionEntityQueryIT.java
@@ -20,6 +20,7 @@ package org.kie.kogito.index.jpa.query;
import org.kie.kogito.index.jpa.storage.ProcessDefinitionEntityStorage;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.test.query.AbstractProcessDefinitionQueryIT;
import org.kie.kogito.persistence.api.Storage;
@@ -31,7 +32,7 @@ public abstract class AbstractProcessDefinitionEntityQueryIT
extends AbstractPro
ProcessDefinitionEntityStorage storage;
@Override
- public Storage<String, ProcessDefinition> getStorage() {
+ public Storage<ProcessDefinitionKey, ProcessDefinition> getStorage() {
return storage;
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractJobStorageIT.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractJobStorageIT.java
index 75ea7aeb0..2510619cc 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractJobStorageIT.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractJobStorageIT.java
@@ -23,32 +23,23 @@ import java.util.UUID;
import org.apache.commons.lang3.RandomStringUtils;
import org.junit.jupiter.api.Test;
import org.kie.kogito.index.jpa.model.JobEntity;
-import org.kie.kogito.index.jpa.model.JobEntityRepository;
import org.kie.kogito.index.model.Job;
import org.kie.kogito.index.test.TestUtils;
-import org.kie.kogito.persistence.api.StorageService;
+import org.kie.kogito.persistence.api.Storage;
import jakarta.inject.Inject;
-public abstract class AbstractJobStorageIT extends
AbstractStorageIT<JobEntity, Job> {
+public abstract class AbstractJobStorageIT extends AbstractStorageIT<String,
JobEntity, Job> {
@Inject
- JobEntityRepository repository;
-
- @Inject
- StorageService storage;
+ JobEntityStorage storage;
public AbstractJobStorageIT() {
super(Job.class);
}
@Override
- public JobEntityRepository getRepository() {
- return repository;
- }
-
- @Override
- public StorageService getStorage() {
+ public Storage<String, Job> getStorage() {
return storage;
}
@@ -65,5 +56,4 @@ public abstract class AbstractJobStorageIT extends
AbstractStorageIT<JobEntity,
RandomStringUtils.randomAlphabetic(10), "SCHEDULED",
1000L);
testStorage(jobId, job1, job2);
}
-
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractProcessDefinitionStorageIT.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractProcessDefinitionStorageIT.java
index 5cbd6db8c..bba2ee7e7 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractProcessDefinitionStorageIT.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractProcessDefinitionStorageIT.java
@@ -23,32 +23,24 @@ import java.util.Set;
import org.apache.commons.lang3.RandomStringUtils;
import org.junit.jupiter.api.Test;
import org.kie.kogito.index.jpa.model.ProcessDefinitionEntity;
-import org.kie.kogito.index.jpa.model.ProcessDefinitionEntityRepository;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.test.TestUtils;
-import org.kie.kogito.persistence.api.StorageService;
+import org.kie.kogito.persistence.api.Storage;
import jakarta.inject.Inject;
-public abstract class AbstractProcessDefinitionStorageIT extends
AbstractStorageIT<ProcessDefinitionEntity, ProcessDefinition> {
+public abstract class AbstractProcessDefinitionStorageIT extends
AbstractStorageIT<ProcessDefinitionKey, ProcessDefinitionEntity,
ProcessDefinition> {
@Inject
- ProcessDefinitionEntityRepository repository;
-
- @Inject
- StorageService storage;
+ ProcessDefinitionEntityStorage storage;
public AbstractProcessDefinitionStorageIT() {
super(ProcessDefinition.class);
}
@Override
- public ProcessDefinitionEntityStorage.RepositoryAdapter getRepository() {
- return new
ProcessDefinitionEntityStorage.RepositoryAdapter(repository);
- }
-
- @Override
- public StorageService getStorage() {
+ public Storage<ProcessDefinitionKey, ProcessDefinition> getStorage() {
return storage;
}
@@ -58,7 +50,7 @@ public abstract class AbstractProcessDefinitionStorageIT
extends AbstractStorage
String version = "1.0";
ProcessDefinition pdv1 = TestUtils.createProcessDefinition(processId,
version, Set.of("admin", "kogito"));
ProcessDefinition pdv2 = TestUtils.createProcessDefinition(processId,
version, Set.of("kogito"));
- testStorage(pdv1.getKey(), pdv1, pdv2);
+ testStorage(new ProcessDefinitionKey(pdv1.getId(), pdv1.getVersion()),
pdv1, pdv2);
}
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractStorageIT.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractStorageIT.java
index b8d11a039..165ce328d 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractStorageIT.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractStorageIT.java
@@ -20,13 +20,10 @@ package org.kie.kogito.index.jpa.storage;
import org.kie.kogito.index.jpa.model.AbstractEntity;
import org.kie.kogito.persistence.api.Storage;
-import org.kie.kogito.persistence.api.StorageService;
-
-import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
import static org.assertj.core.api.Assertions.assertThat;
-public abstract class AbstractStorageIT<E extends AbstractEntity, T> {
+public abstract class AbstractStorageIT<K, E extends AbstractEntity, T> {
Class<T> type;
@@ -34,12 +31,10 @@ public abstract class AbstractStorageIT<E extends
AbstractEntity, T> {
this.type = type;
}
- abstract StorageService getStorage();
-
- abstract PanacheRepositoryBase<E, String> getRepository();
+ abstract Storage<K, T> getStorage();
- void testStorage(String key, T value1, T value2) {
- Storage<String, T> cache = getStorage().getCache("cache", type);
+ void testStorage(K key, T value1, T value2) {
+ Storage<K, T> cache = getStorage();
assertThat(cache.get(key)).isNull();
assertThat(cache.containsKey(key)).isFalse();
diff --git
a/data-index/data-index-storage/data-index-storage-jpa/src/main/java/org/kie/kogito/index/jdbc/JdbcStorageServiceProducer.java
b/data-index/data-index-storage/data-index-storage-jpa/src/main/java/org/kie/kogito/index/jdbc/JdbcStorageServiceProducer.java
deleted file mode 100644
index a5de13fbc..000000000
---
a/data-index/data-index-storage/data-index-storage-jpa/src/main/java/org/kie/kogito/index/jdbc/JdbcStorageServiceProducer.java
+++ /dev/null
@@ -1,49 +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.index.jdbc;
-
-import org.kie.kogito.index.jpa.storage.JPAStorageService;
-import org.kie.kogito.index.jpa.storage.JobEntityStorage;
-import org.kie.kogito.index.jpa.storage.ProcessDefinitionEntityStorage;
-import org.kie.kogito.index.jpa.storage.ProcessInstanceEntityStorage;
-import org.kie.kogito.index.jpa.storage.UserTaskInstanceEntityStorage;
-import org.kie.kogito.persistence.api.StorageService;
-
-import io.quarkus.arc.properties.IfBuildProperty;
-
-import jakarta.annotation.Priority;
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.enterprise.inject.Alternative;
-import jakarta.enterprise.inject.Produces;
-
-import static
org.kie.kogito.persistence.api.factory.Constants.PERSISTENCE_TYPE_PROPERTY;
-
-public class JdbcStorageServiceProducer {
- @Produces
- @Alternative
- @Priority(1)
- @ApplicationScoped
- @IfBuildProperty(name = PERSISTENCE_TYPE_PROPERTY, stringValue = "jdbc")
- StorageService PostgreSqlStorageService(final
ProcessDefinitionEntityStorage definitionStorage,
- final ProcessInstanceEntityStorage processStorage,
- final JobEntityStorage jobStorage,
- final UserTaskInstanceEntityStorage taskStorage) {
- return new JPAStorageService(definitionStorage, processStorage,
jobStorage, taskStorage);
- }
-}
diff --git
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessDefinitionEntityMapper.java
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessDefinitionEntityMapper.java
index 6dfc5573d..ea91176fb 100644
---
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessDefinitionEntityMapper.java
+++
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessDefinitionEntityMapper.java
@@ -40,7 +40,7 @@ public class ProcessDefinitionEntityMapper implements
MongoEntityMapper<ProcessD
}
ProcessDefinitionEntity entity = new ProcessDefinitionEntity();
- entity.setKey(pd.getKey());
+ entity.setKey(key);
entity.setId(pd.getId());
entity.setVersion(pd.getVersion());
entity.setName(pd.getName());
diff --git
a/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/query/ProcessDefinitionQueryIT.java
b/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/query/ProcessDefinitionQueryIT.java
index b2d18d392..1f126d801 100644
---
a/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/query/ProcessDefinitionQueryIT.java
+++
b/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/query/ProcessDefinitionQueryIT.java
@@ -20,8 +20,10 @@ package org.kie.kogito.index.mongodb.query;
import org.junit.jupiter.api.BeforeEach;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.mongodb.model.ProcessDefinitionEntity;
import org.kie.kogito.index.mongodb.model.ProcessDefinitionEntityMapper;
+import org.kie.kogito.index.storage.ModelProcessDefinitionStorage;
import org.kie.kogito.index.test.query.AbstractProcessDefinitionQueryIT;
import org.kie.kogito.persistence.api.Storage;
import org.kie.kogito.persistence.mongodb.client.MongoClientManager;
@@ -42,16 +44,16 @@ class ProcessDefinitionQueryIT extends
AbstractProcessDefinitionQueryIT {
@Inject
MongoClientManager mongoClientManager;
- Storage<String, ProcessDefinition> storage;
+ Storage<ProcessDefinitionKey, ProcessDefinition> storage;
@BeforeEach
void setUp() {
- this.storage = new
MongoStorage<>(mongoClientManager.getCollection(PROCESS_DEFINITIONS_STORAGE,
ProcessDefinitionEntity.class),
- ProcessDefinition.class.getName(), new
ProcessDefinitionEntityMapper());
+ this.storage = new ModelProcessDefinitionStorage(new
MongoStorage<>(mongoClientManager.getCollection(PROCESS_DEFINITIONS_STORAGE,
ProcessDefinitionEntity.class),
+ ProcessDefinition.class.getName(), new
ProcessDefinitionEntityMapper()));
}
@Override
- public Storage<String, ProcessDefinition> getStorage() {
+ public Storage<ProcessDefinitionKey, ProcessDefinition> getStorage() {
return storage;
}
}
diff --git
a/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/storage/ProcessDefinitionStorageIT.java
b/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/storage/ProcessDefinitionStorageIT.java
index ec88ef525..4aec97a2c 100644
---
a/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/storage/ProcessDefinitionStorageIT.java
+++
b/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/storage/ProcessDefinitionStorageIT.java
@@ -25,8 +25,10 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.mongodb.model.ProcessDefinitionEntity;
import org.kie.kogito.index.mongodb.model.ProcessDefinitionEntityMapper;
+import org.kie.kogito.index.storage.ModelProcessDefinitionStorage;
import org.kie.kogito.index.test.TestUtils;
import org.kie.kogito.persistence.api.Storage;
import org.kie.kogito.persistence.mongodb.client.MongoClientManager;
@@ -42,17 +44,17 @@ import static
org.kie.kogito.index.storage.Constants.PROCESS_DEFINITIONS_STORAGE
@QuarkusTest
@QuarkusTestResource(MongoDBQuarkusTestResource.class)
-class ProcessDefinitionStorageIT extends StorageTestBase<String,
ProcessDefinition> {
+class ProcessDefinitionStorageIT extends StorageTestBase<ProcessDefinitionKey,
ProcessDefinition> {
@Inject
MongoClientManager mongoClientManager;
- Storage<String, ProcessDefinition> storage;
+ Storage<ProcessDefinitionKey, ProcessDefinition> storage;
@BeforeEach
void setUp() {
- this.storage = new
MongoStorage<>(mongoClientManager.getCollection(PROCESS_DEFINITIONS_STORAGE,
ProcessDefinitionEntity.class),
- ProcessDefinition.class.getName(), new
ProcessDefinitionEntityMapper());
+ this.storage = new ModelProcessDefinitionStorage(new
MongoStorage<>(mongoClientManager.getCollection(PROCESS_DEFINITIONS_STORAGE,
ProcessDefinitionEntity.class),
+ ProcessDefinition.class.getName(), new
ProcessDefinitionEntityMapper()));
}
@AfterEach
@@ -66,6 +68,6 @@ class ProcessDefinitionStorageIT extends
StorageTestBase<String, ProcessDefiniti
String version = "1.0";
ProcessDefinition pdv1 = TestUtils.createProcessDefinition(processId,
version, Set.of("admin", "kogito"));
ProcessDefinition pdv2 = TestUtils.createProcessDefinition(processId,
version, Set.of("kogito"));
- testStorage(storage, pdv1.getKey(), pdv1, pdv2);
+ testStorage(storage, new ProcessDefinitionKey(processId, version),
pdv1, pdv2);
}
}
diff --git
a/data-index/data-index-storage/data-index-storage-postgresql/src/main/java/org/kie/kogito/index/postgresql/PostgreSqlStorageServiceProducer.java
b/data-index/data-index-storage/data-index-storage-postgresql/src/main/java/org/kie/kogito/index/postgresql/PostgreSqlStorageServiceProducer.java
deleted file mode 100644
index 4e495f107..000000000
---
a/data-index/data-index-storage/data-index-storage-postgresql/src/main/java/org/kie/kogito/index/postgresql/PostgreSqlStorageServiceProducer.java
+++ /dev/null
@@ -1,50 +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.index.postgresql;
-
-import org.kie.kogito.index.jpa.storage.JPAStorageService;
-import org.kie.kogito.index.jpa.storage.JobEntityStorage;
-import org.kie.kogito.index.jpa.storage.ProcessDefinitionEntityStorage;
-import org.kie.kogito.index.jpa.storage.ProcessInstanceEntityStorage;
-import org.kie.kogito.index.jpa.storage.UserTaskInstanceEntityStorage;
-import org.kie.kogito.persistence.api.StorageService;
-
-import io.quarkus.arc.properties.IfBuildProperty;
-
-import jakarta.annotation.Priority;
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.enterprise.inject.Alternative;
-import jakarta.enterprise.inject.Produces;
-
-import static
org.kie.kogito.persistence.api.factory.Constants.PERSISTENCE_TYPE_PROPERTY;
-import static
org.kie.kogito.persistence.postgresql.Constants.POSTGRESQL_STORAGE;
-
-public class PostgreSqlStorageServiceProducer {
- @Produces
- @Alternative
- @Priority(1)
- @ApplicationScoped
- @IfBuildProperty(name = PERSISTENCE_TYPE_PROPERTY, stringValue =
POSTGRESQL_STORAGE)
- StorageService PostgreSqlStorageService(final
ProcessDefinitionEntityStorage definitionStorage,
- final ProcessInstanceEntityStorage processStorage,
- final JobEntityStorage jobStorage,
- final UserTaskInstanceEntityStorage taskStorage) {
- return new JPAStorageService(definitionStorage, processStorage,
jobStorage, taskStorage);
- }
-}
diff --git
a/data-index/kogito-addons-quarkus-data-index-persistence/kogito-addons-quarkus-data-index-persistence-common/runtime/src/main/java/org/kie/kogito/index/addon/ProcessDefinitionRegister.java
b/data-index/kogito-addons-quarkus-data-index-persistence/kogito-addons-quarkus-data-index-persistence-common/runtime/src/main/java/org/kie/kogito/index/addon/ProcessDefinitionRegister.java
index d3f34c8c2..b291feb5d 100644
---
a/data-index/kogito-addons-quarkus-data-index-persistence/kogito-addons-quarkus-data-index-persistence-common/runtime/src/main/java/org/kie/kogito/index/addon/ProcessDefinitionRegister.java
+++
b/data-index/kogito-addons-quarkus-data-index-persistence/kogito-addons-quarkus-data-index-persistence-common/runtime/src/main/java/org/kie/kogito/index/addon/ProcessDefinitionRegister.java
@@ -26,6 +26,7 @@ import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.kie.kogito.Application;
import org.kie.kogito.index.api.KogitoRuntimeClient;
import org.kie.kogito.index.model.ProcessDefinition;
+import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.service.DataIndexServiceException;
import org.kie.kogito.index.storage.DataIndexStorageService;
import org.kie.kogito.process.Process;
@@ -57,7 +58,7 @@ public class ProcessDefinitionRegister {
.map(mapProcessDefinition(app.config().addons().availableAddons(),
kogitoServiceUrl.orElse(null), client))
.forEach(process -> {
LOGGER.debug("Registering process definition with id:
{}", process.getId());
-
storage.getProcessDefinitionStorage().put(process.getKey(), process);
+ storage.getProcessDefinitionStorage().put(new
ProcessDefinitionKey(process.getId(), process.getVersion()), process);
});
} else {
LOGGER.info("No process definitions to register.");
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]