diff --git a/lattice-model/pom.xml b/lattice-model/pom.xml
index 175bdd28..f63f368a 100644
--- a/lattice-model/pom.xml
+++ b/lattice-model/pom.xml
@@ -5,7 +5,7 @@
lattice
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
lattice-model
diff --git a/lattice-model/src/main/java/org/hiforce/lattice/annotation/Priority.java b/lattice-model/src/main/java/org/hiforce/lattice/annotation/Priority.java
new file mode 100644
index 00000000..6dc7acc7
--- /dev/null
+++ b/lattice-model/src/main/java/org/hiforce/lattice/annotation/Priority.java
@@ -0,0 +1,17 @@
+package org.hiforce.lattice.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author Rocky Yu
+ * @since 2023/1/28
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE, ElementType.METHOD})
+public @interface Priority {
+
+ int value() default 500;
+}
diff --git a/lattice-model/src/main/java/org/hiforce/lattice/annotation/model/PriorityAnnotation.java b/lattice-model/src/main/java/org/hiforce/lattice/annotation/model/PriorityAnnotation.java
new file mode 100644
index 00000000..0a1ba96d
--- /dev/null
+++ b/lattice-model/src/main/java/org/hiforce/lattice/annotation/model/PriorityAnnotation.java
@@ -0,0 +1,15 @@
+package org.hiforce.lattice.annotation.model;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author Rocky Yu
+ * @since 2023/1/28
+ */
+public class PriorityAnnotation {
+
+ @Getter
+ @Setter
+ private int value;
+}
diff --git a/lattice-model/src/main/java/org/hiforce/lattice/annotation/parser/DefaultPriorityAnnotationParser.java b/lattice-model/src/main/java/org/hiforce/lattice/annotation/parser/DefaultPriorityAnnotationParser.java
new file mode 100644
index 00000000..22c1b2b1
--- /dev/null
+++ b/lattice-model/src/main/java/org/hiforce/lattice/annotation/parser/DefaultPriorityAnnotationParser.java
@@ -0,0 +1,22 @@
+package org.hiforce.lattice.annotation.parser;
+
+import com.google.auto.service.AutoService;
+import org.hiforce.lattice.annotation.Priority;
+import org.hiforce.lattice.spi.annotation.PriorityAnnotationParser;
+
+/**
+ * @author Rocky Yu
+ * @since 2023/1/28
+ */
+@AutoService(PriorityAnnotationParser.class)
+public class DefaultPriorityAnnotationParser extends PriorityAnnotationParser {
+ @Override
+ public Class getAnnotationClass() {
+ return Priority.class;
+ }
+
+ @Override
+ public int getValue(Priority annotation) {
+ return annotation.value();
+ }
+}
diff --git a/lattice-model/src/main/java/org/hiforce/lattice/spi/LatticeAnnotationSpiFactory.java b/lattice-model/src/main/java/org/hiforce/lattice/spi/LatticeAnnotationSpiFactory.java
index 3fe17e9c..cd933340 100644
--- a/lattice-model/src/main/java/org/hiforce/lattice/spi/LatticeAnnotationSpiFactory.java
+++ b/lattice-model/src/main/java/org/hiforce/lattice/spi/LatticeAnnotationSpiFactory.java
@@ -36,6 +36,8 @@ public class LatticeAnnotationSpiFactory {
private List useCaseAnnotationParsers;
+ private List priorityAnnotationParsers;
+
private LatticeAnnotationSpiFactory() {
}
@@ -48,6 +50,13 @@ public static LatticeAnnotationSpiFactory getInstance() {
return instance;
}
+ public List getPriorityAnnotationParsers() {
+ if (null == priorityAnnotationParsers) {
+ priorityAnnotationParsers = getCustomServiceProviders(PriorityAnnotationParser.class);
+ }
+ return priorityAnnotationParsers;
+ }
+
/**
* @return The Ability's Custom Annotation Parsers..
*/
diff --git a/lattice-model/src/main/java/org/hiforce/lattice/spi/annotation/PriorityAnnotationParser.java b/lattice-model/src/main/java/org/hiforce/lattice/spi/annotation/PriorityAnnotationParser.java
new file mode 100644
index 00000000..54aae50e
--- /dev/null
+++ b/lattice-model/src/main/java/org/hiforce/lattice/spi/annotation/PriorityAnnotationParser.java
@@ -0,0 +1,49 @@
+package org.hiforce.lattice.spi.annotation;
+
+import org.hiforce.lattice.annotation.model.PriorityAnnotation;
+import org.hiforce.lattice.spi.LatticeAnnotationSpiFactory;
+import org.hiforce.lattice.utils.LatticeAnnotationUtils;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+
+/**
+ * @author Rocky Yu
+ * @since 2023/1/28
+ */
+@SuppressWarnings("all")
+public abstract class PriorityAnnotationParser extends LatticeAnnotationParser {
+
+ public abstract int getValue(T annotation);
+
+ public PriorityAnnotation buildAnnotationInfo(T annotation) {
+ if (null == annotation) {
+ return null;
+ }
+ PriorityAnnotation info = new PriorityAnnotation();
+ info.setValue(getValue(annotation));
+ return info;
+ }
+
+ public static PriorityAnnotation getPriorityAnnotationInfo(Class> targetClass) {
+ for (PriorityAnnotationParser parser : LatticeAnnotationSpiFactory.getInstance().getPriorityAnnotationParsers()) {
+ Annotation annotation = targetClass.getDeclaredAnnotation(parser.getAnnotationClass());
+ if (null == annotation) {
+ continue;
+ }
+ return parser.buildAnnotationInfo(annotation);
+ }
+ return null;
+ }
+
+ public static PriorityAnnotation getPriorityAnnotationInfo(Method method) {
+ for (PriorityAnnotationParser parser : LatticeAnnotationSpiFactory.getInstance().getPriorityAnnotationParsers()) {
+ Annotation annotation = LatticeAnnotationUtils.findAnnotation(method, parser.getAnnotationClass());
+ if (null == annotation) {
+ continue;
+ }
+ return parser.buildAnnotationInfo(annotation);
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/lattice-remote/lattice-remote-client/pom.xml b/lattice-remote/lattice-remote-client/pom.xml
index 8a2d9786..c5a414c7 100644
--- a/lattice-remote/lattice-remote-client/pom.xml
+++ b/lattice-remote/lattice-remote-client/pom.xml
@@ -5,7 +5,7 @@
lattice-remote
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-remote/lattice-remote-container/pom.xml b/lattice-remote/lattice-remote-container/pom.xml
index 96c659ae..cbde6a9a 100644
--- a/lattice-remote/lattice-remote-container/pom.xml
+++ b/lattice-remote/lattice-remote-container/pom.xml
@@ -5,7 +5,7 @@
lattice-remote
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-remote/lattice-remote-runner/lattice-remote-runner-dubbo/pom.xml b/lattice-remote/lattice-remote-runner/lattice-remote-runner-dubbo/pom.xml
index 6893ca3c..0b0d8d9c 100644
--- a/lattice-remote/lattice-remote-runner/lattice-remote-runner-dubbo/pom.xml
+++ b/lattice-remote/lattice-remote-runner/lattice-remote-runner-dubbo/pom.xml
@@ -5,7 +5,7 @@
lattice-remote-runner
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-remote/lattice-remote-runner/pom.xml b/lattice-remote/lattice-remote-runner/pom.xml
index 52aaca1c..a460cfe3 100644
--- a/lattice-remote/lattice-remote-runner/pom.xml
+++ b/lattice-remote/lattice-remote-runner/pom.xml
@@ -5,7 +5,7 @@
lattice-remote
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-remote/pom.xml b/lattice-remote/pom.xml
index ba08d3b5..ecab321a 100644
--- a/lattice-remote/pom.xml
+++ b/lattice-remote/pom.xml
@@ -5,7 +5,7 @@
lattice
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-runtime/pom.xml b/lattice-runtime/pom.xml
index b0ca87a9..0ed9b8a0 100644
--- a/lattice-runtime/pom.xml
+++ b/lattice-runtime/pom.xml
@@ -5,7 +5,7 @@
lattice
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/Lattice.java b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/Lattice.java
index 064e969f..baf5602a 100644
--- a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/Lattice.java
+++ b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/Lattice.java
@@ -19,6 +19,7 @@
import org.hiforce.lattice.model.config.builder.BusinessConfigBuilder;
import org.hiforce.lattice.model.register.*;
import org.hiforce.lattice.model.scenario.ScenarioRequest;
+import org.hiforce.lattice.runtime.ability.creator.DefaultAbilityCreator;
import org.hiforce.lattice.runtime.ability.register.AbilityBuildRequest;
import org.hiforce.lattice.runtime.ability.register.AbilityRegister;
import org.hiforce.lattice.runtime.ability.register.TemplateRegister;
@@ -81,6 +82,12 @@ private Lattice() {
}
+ public AbilitySpec getAbilitySpecByCode(String code) {
+ return registeredAbilities.stream()
+ .filter(p -> StringUtils.equals(code, p.getCode()))
+ .findFirst().orElse(null);
+ }
+
public static Lattice getInstance() {
if (null == instance) {
instance = new Lattice();
@@ -480,4 +487,55 @@ public BusinessTemplate getFirstMatchedBusiness(ScenarioRequest request) {
return TemplateRegister.getInstance().getFirstMatchedBusiness(request);
}
+ @SuppressWarnings("all")
+ public static List getAllAbilities(Class> abilityClass, IBizObject target) {
+ if( null == abilityClass ){
+ throw new LatticeRuntimeException("LATTICE-CORE-RT-0025");
+ }
+ return getAllAbilities(abilityClass.getName(), target);
+ }
+
+ @SuppressWarnings("all")
+ public static List getAllAbilities(String abilityCode, IBizObject target) {
+ DefaultAbilityCreator creator = new DefaultAbilityCreator(abilityCode, target);
+ List abilityList = creator.getAllAbilityInstancesWithCache();
+
+ if (abilityList.isEmpty()) {
+ return Collections.emptyList();
+ }
+ List abilities = new ArrayList<>(abilityList.size());
+ for (Ability ability : abilityList) {
+ boolean supportChecking = ability.supportChecking();
+ if (supportChecking) {
+ abilities.add(ability);
+ }
+ }
+ return abilities;
+ }
+
+ @SuppressWarnings("all")
+ public static Ability getFirstMatchedAbility(Class> abilityClass, IBizObject target) {
+ if( null == abilityClass ){
+ throw new LatticeRuntimeException("LATTICE-CORE-RT-0025");
+ }
+ return getFirstMatchedAbility(abilityClass.getName(), target);
+ }
+ @SuppressWarnings("all")
+ public static Ability getFirstMatchedAbility(String abilityCode, IBizObject target) {
+ DefaultAbilityCreator creator = new DefaultAbilityCreator(abilityCode, target);
+ List domainAbilitySet = creator.getAllAbilityInstancesWithCache();
+ if (domainAbilitySet.isEmpty()) {
+ return null;
+ }
+
+ for (Ability ability : domainAbilitySet) {
+ boolean supportChecking = ability.supportChecking();
+ if (supportChecking) {
+ return ability;
+ }
+ }
+ return null;
+ }
+
+
}
diff --git a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/cache/AbilityInstCache.java b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/cache/AbilityInstCache.java
new file mode 100644
index 00000000..1a43e68a
--- /dev/null
+++ b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/cache/AbilityInstCache.java
@@ -0,0 +1,50 @@
+package org.hiforce.lattice.runtime.ability.cache;
+
+import org.hiforce.lattice.model.ability.IAbility;
+import org.hiforce.lattice.runtime.cache.LatticeCache;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author Rocky Yu
+ * @since 2023/1/28
+ */
+public class AbilityInstCache implements LatticeCache {
+
+ private static AbilityInstCache instance;
+
+ private static final Object lock = new Object();
+
+ private static final Map>> ABILITY_INST_MAP = new ConcurrentHashMap<>();
+
+ public static AbilityInstCache getInstance() {
+ if (null == instance) {
+ synchronized (lock) {
+ if (null == instance) {
+ instance = new AbilityInstCache();
+ }
+ }
+ }
+ return instance;
+ }
+
+ public List> getAbilityInstCodes(String abilityCode){
+ return ABILITY_INST_MAP.get(abilityCode);
+ }
+
+ public void cacheAbilityInstanceRelation(String abilityCode, List> instanceClasses){
+ ABILITY_INST_MAP.put(abilityCode, instanceClasses);
+ }
+
+ @Override
+ public void init() {
+
+ }
+
+ @Override
+ public void clear() {
+ ABILITY_INST_MAP.clear();
+ }
+}
diff --git a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/cache/AbilityInstCacheKey.java b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/cache/AbilityInstCacheKey.java
new file mode 100644
index 00000000..74833fb2
--- /dev/null
+++ b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/cache/AbilityInstCacheKey.java
@@ -0,0 +1,39 @@
+package org.hiforce.lattice.runtime.ability.cache;
+
+
+import java.util.Objects;
+
+public final class AbilityInstCacheKey {
+ private String bizCode;
+ private String abilityCode;
+
+ private int hash;
+
+ private AbilityInstCacheKey() {
+ }
+
+ public AbilityInstCacheKey(String bizCode, String abilityCode) {
+ this.bizCode = bizCode;
+ this.abilityCode = abilityCode;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) { return true; }
+ if (o == null || getClass() != o.getClass()) { return false; }
+
+ AbilityInstCacheKey that = (AbilityInstCacheKey)o;
+
+ if (!Objects.equals(bizCode, that.bizCode)) { return false; }
+ return Objects.equals(abilityCode, that.abilityCode);
+ }
+
+ @Override
+ public int hashCode() {
+ if (hash == 0) {
+ int result = bizCode != null ? bizCode.hashCode() : 0;
+ hash = 31 * result + (abilityCode != null ? abilityCode.hashCode() : 0);
+ }
+ return hash;
+ }
+}
diff --git a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/creator/DefaultAbilityCreator.java b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/creator/DefaultAbilityCreator.java
new file mode 100644
index 00000000..5e8abd76
--- /dev/null
+++ b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/creator/DefaultAbilityCreator.java
@@ -0,0 +1,85 @@
+package org.hiforce.lattice.runtime.ability.creator;
+
+import org.apache.commons.lang3.StringUtils;
+import org.hiforce.lattice.model.ability.IAbility;
+import org.hiforce.lattice.model.business.IBizObject;
+import org.hiforce.lattice.model.register.AbilityInstSpec;
+import org.hiforce.lattice.model.register.AbilitySpec;
+import org.hiforce.lattice.runtime.Lattice;
+import org.hiforce.lattice.runtime.ability.cache.AbilityInstCache;
+import org.hiforce.lattice.runtime.ability.cache.AbilityInstCacheKey;
+
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.hiforce.lattice.runtime.utils.LatticeBeanUtils.getAndCreateSpringBeanViaClass;
+
+/**
+ * @author Rocky Yu
+ * @since 2023/1/26
+ */
+@SuppressWarnings("all")
+public class DefaultAbilityCreator {
+
+
+ private String abilityCode;
+ private IBizObject target;
+
+ private final Map> abilitySelectorCache
+ = new ConcurrentHashMap<>(1024);
+
+ public DefaultAbilityCreator(String abilityCode, IBizObject target) {
+ this.target = target;
+ this.abilityCode = abilityCode;
+ }
+
+ public List getAllAbilityInstancesWithCache() {
+ AbilityInstCacheKey selectorCacheKey = new AbilityInstCacheKey(target.getBizCode(), abilityCode);
+ List abilityList = abilitySelectorCache
+ .computeIfAbsent(selectorCacheKey, (key) -> {
+ LinkedHashSet abilities = new LinkedHashSet<>();
+ List> list = availableAbilities();
+ for (Class instanceClass : list) {
+ Ability ability = getAndCreateSpringBeanViaClass(instanceClass, target);
+ if (ability != null) {
+ abilities.add(ability);
+ }
+ }
+ return new ArrayList<>(abilities);
+ });
+
+ return abilityList;
+ }
+
+ private List> availableAbilities() {
+ List> returnValue = AbilityInstCache.getInstance().getAbilityInstCodes(abilityCode);
+ if (returnValue != null) {
+ return returnValue;
+ }
+
+ List> abilityClasses = new ArrayList<>(8);
+ AbilitySpec abilitySpec = Lattice.getInstance().getAbilitySpecByCode(abilityCode);
+ if (null == abilitySpec) {
+ AbilityInstCache.getInstance().cacheAbilityInstanceRelation(abilityCode, abilityClasses);
+ return abilityClasses;
+ }
+
+ Set abilityInstanceSpecList = abilitySpec.getAbilityInstances();
+ List result = new ArrayList<>();
+ for (AbilityInstSpec abilityInstanceSpec : abilityInstanceSpecList) {
+ if (StringUtils.isNotEmpty(abilityInstanceSpec.getInstanceClass())) {
+ result.add(abilityInstanceSpec);
+ }
+ }
+ result.sort(Comparator.comparingInt(AbilityInstSpec::getPriority));
+ for (AbilityInstSpec spec : result) {
+ try {
+ abilityClasses.add((Class) Class.forName(spec.getInstanceClass()));
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ AbilityInstCache.getInstance().cacheAbilityInstanceRelation(abilityCode, abilityClasses);
+ return abilityClasses;
+ }
+}
diff --git a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/register/AbilityRegister.java b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/register/AbilityRegister.java
index eb1dbfc6..e806ed47 100644
--- a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/register/AbilityRegister.java
+++ b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/ability/register/AbilityRegister.java
@@ -2,10 +2,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.tuple.Pair;
-import org.hiforce.lattice.annotation.model.AbilityAnnotation;
-import org.hiforce.lattice.annotation.model.ExtensionAnnotation;
-import org.hiforce.lattice.annotation.model.ProtocolType;
-import org.hiforce.lattice.annotation.model.ReduceType;
+import org.hiforce.lattice.annotation.model.*;
import org.hiforce.lattice.exception.LatticeRuntimeException;
import org.hiforce.lattice.message.Message;
import org.hiforce.lattice.model.ability.IAbility;
@@ -25,6 +22,7 @@
import java.util.*;
import static org.hiforce.lattice.runtime.utils.LatticeBeanUtils.getAndCreateSpringBeanViaClass;
+import static org.hiforce.lattice.spi.annotation.PriorityAnnotationParser.getPriorityAnnotationInfo;
import static org.hiforce.lattice.utils.LatticeAnnotationUtils.getExtensionAnnotation;
/**
@@ -174,6 +172,12 @@ private AbilityInstBuildResult buildAbilityInstanceSpec(
instanceDesc.setCode(instance.getInstanceCode());
instanceDesc.setName(instanceClass.getSimpleName());
instanceDesc.getExtensions().addAll(scanAbilityExtensions(instance, abilitySpec));
+
+ PriorityAnnotation annotation = getPriorityAnnotationInfo(instanceClass);
+ if (null != annotation) {
+ instanceDesc.setPriority(annotation.getValue());
+ }
+
abilitySpec.addAbilityInstance(instanceDesc);
return AbilityInstBuildResult.success(instanceDesc);
} catch (LatticeRuntimeException ex) {
diff --git a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/cache/LatticeRuntimeCache.java b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/cache/LatticeRuntimeCache.java
index 9cdb8e16..667bd7a4 100644
--- a/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/cache/LatticeRuntimeCache.java
+++ b/lattice-runtime/src/main/java/org/hiforce/lattice/runtime/cache/LatticeRuntimeCache.java
@@ -4,6 +4,7 @@
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.hiforce.lattice.cache.ILatticeRuntimeCache;
+import org.hiforce.lattice.runtime.ability.cache.AbilityInstCache;
import org.hiforce.lattice.runtime.ability.cache.BusinessExtCache;
import org.hiforce.lattice.runtime.ability.register.TemplateRegister;
import org.hiforce.lattice.runtime.cache.ability.AbilityCache;
@@ -66,6 +67,7 @@ public synchronized void init() {
getInvokeCache().init();
getBusinessConfigCache().init();
getBusinessExtCache().init();
+ AbilityInstCache.getInstance().init();
}
public synchronized void clear() {
@@ -75,5 +77,6 @@ public synchronized void clear() {
getInvokeCache().clear();
getBusinessConfigCache().clear();
getBusinessExtCache().clear();
+ AbilityInstCache.getInstance().clear();
}
}
diff --git a/lattice-runtime/src/main/resources/i18n/infos_en_AA.properties b/lattice-runtime/src/main/resources/i18n/infos_en_AA.properties
index 3d59c3c8..11b8e05e 100644
--- a/lattice-runtime/src/main/resources/i18n/infos_en_AA.properties
+++ b/lattice-runtime/src/main/resources/i18n/infos_en_AA.properties
@@ -21,4 +21,5 @@ LATTICE-CORE-RT-0020 = The ability [{0}] not support current bizObject: [1], ext
LATTICE-CORE-RT-0021 = No remote extension runner builder bean found, extCode: [{0}]
LATTICE-CORE-RT-0022 = The getDefaultRealization() of IAbility can not be anonymous class or a interface: {0}
LATTICE-CORE-RT-0023 = Lattice not initialized, maybe in reload process.
-LATTICE-CORE-RT-0024 = The BizSessionScope not defined when invoke ext: {0}
\ No newline at end of file
+LATTICE-CORE-RT-0024 = The BizSessionScope not defined when invoke ext: {0}
+LATTICE-CORE-RT-0025 = The ability class should not be null.
\ No newline at end of file
diff --git a/lattice-tools/lattice-dynamic-loading/pom.xml b/lattice-tools/lattice-dynamic-loading/pom.xml
index 2884c0c5..b3fd49fb 100644
--- a/lattice-tools/lattice-dynamic-loading/pom.xml
+++ b/lattice-tools/lattice-dynamic-loading/pom.xml
@@ -5,7 +5,7 @@
lattice-tools
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-tools/lattice-load-config-res/pom.xml b/lattice-tools/lattice-load-config-res/pom.xml
index 7b1d0c73..2604298e 100644
--- a/lattice-tools/lattice-load-config-res/pom.xml
+++ b/lattice-tools/lattice-load-config-res/pom.xml
@@ -5,7 +5,7 @@
lattice-tools
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-tools/lattice-maven-build/lattice-maven-build-model/pom.xml b/lattice-tools/lattice-maven-build/lattice-maven-build-model/pom.xml
index fa562c85..32fab9fe 100644
--- a/lattice-tools/lattice-maven-build/lattice-maven-build-model/pom.xml
+++ b/lattice-tools/lattice-maven-build/lattice-maven-build-model/pom.xml
@@ -5,7 +5,7 @@
lattice-maven-build
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
diff --git a/lattice-tools/lattice-maven-build/lattice-maven-build-plugin/pom.xml b/lattice-tools/lattice-maven-build/lattice-maven-build-plugin/pom.xml
index 589b2847..21c591e3 100644
--- a/lattice-tools/lattice-maven-build/lattice-maven-build-plugin/pom.xml
+++ b/lattice-tools/lattice-maven-build/lattice-maven-build-plugin/pom.xml
@@ -5,7 +5,7 @@
lattice-maven-build
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
maven-plugin
diff --git a/lattice-tools/lattice-maven-build/pom.xml b/lattice-tools/lattice-maven-build/pom.xml
index fa7f249e..3fc4beb3 100644
--- a/lattice-tools/lattice-maven-build/pom.xml
+++ b/lattice-tools/lattice-maven-build/pom.xml
@@ -5,7 +5,7 @@
lattice-tools
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
pom
diff --git a/lattice-tools/pom.xml b/lattice-tools/pom.xml
index 2907e1e4..06929437 100644
--- a/lattice-tools/pom.xml
+++ b/lattice-tools/pom.xml
@@ -5,7 +5,7 @@
lattice
org.hiforce.lattice
- 1.0.14.1
+ 1.0.15
4.0.0
pom
diff --git a/pom.xml b/pom.xml
index 7ba1d404..4fb6a47d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,9 +16,9 @@
https://github.com/hiforce/lattice
2022
- 1.0.14.1
+ 1.0.15
- 1.0.14.1
+ 1.0.15
5.3.23
2.7.4
1.2