You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2021/04/15 11:05:32 UTC
[ignite-3] branch main updated: IGNITE-14476 Explicit specification
of Storage class replaced with new ConfigurationType enum (#86)
This is an automated email from the ASF dual-hosted git repository.
sergeychugunov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 2b1404d IGNITE-14476 Explicit specification of Storage class replaced with new ConfigurationType enum (#86)
2b1404d is described below
commit 2b1404da45b7fd60790cdbac0086281f308fe0d6
Author: Semyon Danilov <sa...@yandex.ru>
AuthorDate: Thu Apr 15 14:05:07 2021 +0300
IGNITE-14476 Explicit specification of Storage class replaced with new ConfigurationType enum (#86)
Signed-off-by: Sergey Chugunov <se...@gmail.com>
---
.../processor/internal/Processor.java | 45 ++++++++++++----------
.../configuration/ConfigurationChangerTest.java | 11 ++++--
.../internal/util/ConfigurationUtilTest.java | 4 +-
.../internal/validation/ValidationUtilTest.java | 4 +-
.../notifications/ConfigurationListenerTest.java | 9 +++--
.../sample/LocalConfigurationSchema.java | 4 +-
.../sample/NetworkConfigurationSchema.java | 4 +-
.../storage/TestConfigurationStorage.java | 5 +++
.../ignite/configuration/ConfigurationChanger.java | 27 ++++++-------
.../configuration/ConfigurationRegistry.java | 7 ++--
.../org/apache/ignite/configuration/RootKey.java | 4 +-
.../annotation/ConfigurationRoot.java | 6 +--
.../ignite/configuration/internal/RootKeyImpl.java | 8 ++--
.../storage/ConfigurationStorage.java | 5 +++
.../configuration/storage/ConfigurationType.java} | 19 ++++-----
.../direct/stream/DirectByteBufferStream.java | 3 ++
.../InMemoryConfigurationStorage.java | 6 +++
.../configuration/RestConfigurationSchema.java | 3 +-
.../rest/presentation/json/JsonConverterTest.java | 3 +-
.../json/TestConfigurationStorage.java | 6 +++
.../extended/LocalConfigurationSchema.java | 4 +-
parent/pom.xml | 3 ++
22 files changed, 115 insertions(+), 75 deletions(-)
diff --git a/modules/configuration-annotation-processor/src/main/java/org/apache/ignite/configuration/processor/internal/Processor.java b/modules/configuration-annotation-processor/src/main/java/org/apache/ignite/configuration/processor/internal/Processor.java
index 9b4f2e0..b683e1a 100644
--- a/modules/configuration-annotation-processor/src/main/java/org/apache/ignite/configuration/processor/internal/Processor.java
+++ b/modules/configuration-annotation-processor/src/main/java/org/apache/ignite/configuration/processor/internal/Processor.java
@@ -29,6 +29,8 @@ import com.squareup.javapoet.TypeSpec;
import com.squareup.javapoet.TypeVariableName;
import com.squareup.javapoet.WildcardTypeName;
import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -47,9 +49,8 @@ import javax.lang.model.element.Modifier;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
-import javax.lang.model.type.MirroredTypesException;
-import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;
+import javax.tools.Diagnostic;
import org.apache.ignite.configuration.NamedConfigurationTree;
import org.apache.ignite.configuration.annotation.Config;
import org.apache.ignite.configuration.annotation.ConfigValue;
@@ -57,6 +58,7 @@ import org.apache.ignite.configuration.annotation.ConfigurationRoot;
import org.apache.ignite.configuration.annotation.NamedConfigValue;
import org.apache.ignite.configuration.annotation.Value;
import org.apache.ignite.configuration.internal.NamedListConfiguration;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.tree.ConfigurationSource;
import org.apache.ignite.configuration.tree.ConfigurationVisitor;
import org.apache.ignite.configuration.tree.InnerNode;
@@ -96,6 +98,23 @@ public class Processor extends AbstractProcessor {
/** {@inheritDoc} */
@Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnvironment) {
+ try {
+ return process0(roundEnvironment);
+ } catch (Throwable t) {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ t.printStackTrace(pw);
+ processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Failed to process configuration: " + sw.toString());
+ }
+ return false;
+ }
+
+ /**
+ * Processes a set of annotation types on type elements.
+ * @param roundEnvironment Processing environment.
+ * @return Whether or not the set of annotation types are claimed by this processor.
+ */
+ private boolean process0(RoundEnvironment roundEnvironment) {
final Elements elementUtils = processingEnv.getElementUtils();
Map<TypeName, ConfigurationDescription> props = new HashMap<>();
@@ -259,21 +278,7 @@ public class Processor extends AbstractProcessor {
createPojoBindings(clazz, fields, schemaClassName, configurationClassBuilder, configurationInterfaceBuilder);
if (isRoot) {
- TypeMirror storageType = null;
-
- try {
- // From JavaDocs: The annotation returned by this method could contain an element whose value is of type Class.
- // This value cannot be returned directly: information necessary to locate and load a class
- // (such as the class loader to use) is not available, and the class might not be loadable at all.
- // Attempting to read a Class object by invoking the relevant method on the returned annotation will
- // result in a MirroredTypeException, from which the corresponding TypeMirror may be extracted.
- // Similarly, attempting to read a Class[]-valued element will result in a MirroredTypesException.
- rootAnnotation.storage();
- }
- catch (MirroredTypesException e) {
- storageType = e.getTypeMirrors().get(0);
- }
-
+ ConfigurationType storageType = rootAnnotation.type();
createRootKeyField(configInterface, configurationInterfaceBuilder, configDesc, storageType, schemaClassName);
}
@@ -294,7 +299,7 @@ public class Processor extends AbstractProcessor {
ClassName configInterface,
TypeSpec.Builder configurationClassBuilder,
ConfigurationDescription configDesc,
- TypeMirror storageType,
+ ConfigurationType storageType,
ClassName schemaClassName
) {
ClassName viewClassName = Utils.getViewName(schemaClassName);
@@ -307,8 +312,8 @@ public class Processor extends AbstractProcessor {
FieldSpec keyField = FieldSpec.builder(fieldTypeName, "KEY", PUBLIC, STATIC, FINAL)
.initializer(
- "$T.newRootKey($S, $T.class, $T::new, $T::new)",
- cfgRegistryClassName, configDesc.getName(), storageType, nodeClassName,
+ "$T.newRootKey($S, $T.$L, $T::new, $T::new)",
+ cfgRegistryClassName, configDesc.getName(), ConfigurationType.class, storageType, nodeClassName,
Utils.getConfigurationName(schemaClassName)
)
.build();
diff --git a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/ConfigurationChangerTest.java b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/ConfigurationChangerTest.java
index e621c7a..47ae35a 100644
--- a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/ConfigurationChangerTest.java
+++ b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/ConfigurationChangerTest.java
@@ -29,6 +29,7 @@ import org.apache.ignite.configuration.annotation.ConfigValue;
import org.apache.ignite.configuration.annotation.ConfigurationRoot;
import org.apache.ignite.configuration.annotation.NamedConfigValue;
import org.apache.ignite.configuration.annotation.Value;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.storage.Data;
import org.apache.ignite.configuration.storage.TestConfigurationStorage;
import org.apache.ignite.configuration.validation.ValidationContext;
@@ -56,7 +57,7 @@ public class ConfigurationChangerTest {
}
/** */
- @ConfigurationRoot(rootName = "key", storage = TestConfigurationStorage.class)
+ @ConfigurationRoot(rootName = "key", type = ConfigurationType.LOCAL)
public static class AConfigurationSchema {
/** */
@ConfigValue
@@ -235,7 +236,7 @@ public class ConfigurationChangerTest {
}
/** */
- @ConfigurationRoot(rootName = "def", storage = TestConfigurationStorage.class)
+ @ConfigurationRoot(rootName = "def", type = ConfigurationType.LOCAL)
public static class DefaultsConfigurationSchema {
/** */
@ConfigValue
@@ -268,9 +269,11 @@ public class ConfigurationChangerTest {
changer.addRootKey(DefaultsConfiguration.KEY);
- changer.register(new TestConfigurationStorage());
+ TestConfigurationStorage storage = new TestConfigurationStorage();
- changer.initialize(TestConfigurationStorage.class);
+ changer.register(storage);
+
+ changer.initialize(storage.type());
DefaultsNode root = (DefaultsNode)changer.getRootNode(DefaultsConfiguration.KEY);
diff --git a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/internal/util/ConfigurationUtilTest.java b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/internal/util/ConfigurationUtilTest.java
index 6e8061d..7075090 100644
--- a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/internal/util/ConfigurationUtilTest.java
+++ b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/internal/util/ConfigurationUtilTest.java
@@ -25,7 +25,7 @@ import org.apache.ignite.configuration.annotation.ConfigurationRoot;
import org.apache.ignite.configuration.annotation.NamedConfigValue;
import org.apache.ignite.configuration.annotation.Value;
import org.apache.ignite.configuration.internal.SuperRoot;
-import org.apache.ignite.configuration.storage.TestConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.junit.jupiter.api.Test;
import static java.util.Collections.emptyMap;
@@ -76,7 +76,7 @@ public class ConfigurationUtilTest {
}
/** */
- @ConfigurationRoot(rootName = "root", storage = TestConfigurationStorage.class)
+ @ConfigurationRoot(rootName = "root", type = ConfigurationType.LOCAL)
public static class ParentConfigurationSchema {
/** */
@NamedConfigValue
diff --git a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/internal/validation/ValidationUtilTest.java b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/internal/validation/ValidationUtilTest.java
index a289bde..b97a3cb 100644
--- a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/internal/validation/ValidationUtilTest.java
+++ b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/internal/validation/ValidationUtilTest.java
@@ -31,7 +31,7 @@ import org.apache.ignite.configuration.annotation.NamedConfigValue;
import org.apache.ignite.configuration.annotation.Value;
import org.apache.ignite.configuration.internal.SuperRoot;
import org.apache.ignite.configuration.internal.util.ConfigurationUtil;
-import org.apache.ignite.configuration.storage.TestConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.tree.NamedListView;
import org.apache.ignite.configuration.validation.ValidationContext;
import org.apache.ignite.configuration.validation.ValidationIssue;
@@ -66,7 +66,7 @@ public class ValidationUtilTest {
}
/** */
- @ConfigurationRoot(rootName = "root", storage = TestConfigurationStorage.class)
+ @ConfigurationRoot(rootName = "root", type = ConfigurationType.LOCAL)
public static class ValidatedRootConfigurationSchema {
/** */
@InnerValidation
diff --git a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/notifications/ConfigurationListenerTest.java b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/notifications/ConfigurationListenerTest.java
index 8fa9320..c3dd2b2 100644
--- a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/notifications/ConfigurationListenerTest.java
+++ b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/notifications/ConfigurationListenerTest.java
@@ -26,6 +26,7 @@ import org.apache.ignite.configuration.annotation.ConfigValue;
import org.apache.ignite.configuration.annotation.ConfigurationRoot;
import org.apache.ignite.configuration.annotation.NamedConfigValue;
import org.apache.ignite.configuration.annotation.Value;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.storage.TestConfigurationStorage;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -40,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
/** */
public class ConfigurationListenerTest {
/** */
- @ConfigurationRoot(rootName = "parent", storage = TestConfigurationStorage.class)
+ @ConfigurationRoot(rootName = "parent", type = ConfigurationType.LOCAL)
public static class ParentConfigurationSchema {
/** */
@ConfigValue
@@ -70,9 +71,11 @@ public class ConfigurationListenerTest {
public void before() {
registry.registerRootKey(ParentConfiguration.KEY);
- registry.registerStorage(new TestConfigurationStorage());
+ TestConfigurationStorage storage = new TestConfigurationStorage();
- registry.startStorageConfigurations(TestConfigurationStorage.class);
+ registry.registerStorage(storage);
+
+ registry.startStorageConfigurations(storage.type());
configuration = registry.getConfiguration(ParentConfiguration.KEY);
}
diff --git a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/LocalConfigurationSchema.java b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/LocalConfigurationSchema.java
index fe7c2d7..ebae93e 100644
--- a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/LocalConfigurationSchema.java
+++ b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/LocalConfigurationSchema.java
@@ -19,12 +19,12 @@ package org.apache.ignite.configuration.sample;
import org.apache.ignite.configuration.annotation.ConfigValue;
import org.apache.ignite.configuration.annotation.ConfigurationRoot;
-import org.apache.ignite.configuration.storage.TestConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
/**
* Test local configuration schema.
*/
-@ConfigurationRoot(rootName = "local", storage = TestConfigurationStorage.class)
+@ConfigurationRoot(rootName = "local", type = ConfigurationType.LOCAL)
public class LocalConfigurationSchema {
/** Baseline. */
@ConfigValue
diff --git a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/NetworkConfigurationSchema.java b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/NetworkConfigurationSchema.java
index d9a8101..2bd1a55 100644
--- a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/NetworkConfigurationSchema.java
+++ b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/NetworkConfigurationSchema.java
@@ -19,12 +19,12 @@ package org.apache.ignite.configuration.sample;
import org.apache.ignite.configuration.annotation.ConfigValue;
import org.apache.ignite.configuration.annotation.ConfigurationRoot;
-import org.apache.ignite.configuration.storage.TestConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
/**
* Test network configuration schema.
*/
-@ConfigurationRoot(rootName = "network", storage = TestConfigurationStorage.class)
+@ConfigurationRoot(rootName = "network", type = ConfigurationType.LOCAL)
public class NetworkConfigurationSchema {
/** Discovery. */
@ConfigValue
diff --git a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/storage/TestConfigurationStorage.java b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/storage/TestConfigurationStorage.java
index f2c2982..82d47f6 100644
--- a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/storage/TestConfigurationStorage.java
+++ b/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/storage/TestConfigurationStorage.java
@@ -92,4 +92,9 @@ public class TestConfigurationStorage implements ConfigurationStorage {
/** {@inheritDoc} */
@Override public void notifyApplied(long storageRevision) {
}
+
+ /** {@inheritDoc} */
+ @Override public ConfigurationType type() {
+ return ConfigurationType.LOCAL;
+ }
}
diff --git a/modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationChanger.java b/modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationChanger.java
index 8d92cc4..8ee7a8f 100644
--- a/modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationChanger.java
+++ b/modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationChanger.java
@@ -33,6 +33,7 @@ import org.apache.ignite.configuration.internal.SuperRoot;
import org.apache.ignite.configuration.internal.validation.MemberKey;
import org.apache.ignite.configuration.internal.validation.ValidationUtil;
import org.apache.ignite.configuration.storage.ConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.storage.Data;
import org.apache.ignite.configuration.storage.StorageException;
import org.apache.ignite.configuration.tree.ConfigurationSource;
@@ -61,7 +62,7 @@ public final class ConfigurationChanger {
private final Map<String, RootKey<?, ?>> rootKeys = new TreeMap<>();
/** Map that has all the trees in accordance to their storages. */
- private final Map<Class<? extends ConfigurationStorage>, StorageRoots> storagesRootsMap = new ConcurrentHashMap<>();
+ private final Map<ConfigurationType, StorageRoots> storagesRootsMap = new ConcurrentHashMap<>();
/** Annotation classes mapped to validator objects. */
private Map<Class<? extends Annotation>, Set<Validator<?, ?>>> validators = new HashMap<>();
@@ -107,7 +108,7 @@ public final class ConfigurationChanger {
private final Map<MemberKey, Annotation[]> cachedAnnotations = new ConcurrentHashMap<>();
/** Storage instances by their classes. Comes in handy when all you have is {@link RootKey}. */
- private final Map<Class<? extends ConfigurationStorage>, ConfigurationStorage> storageInstances = new HashMap<>();
+ private final Map<ConfigurationType, ConfigurationStorage> storageInstances = new HashMap<>();
/**
* @param notificator Closure to execute when update from the storage is received.
@@ -125,7 +126,7 @@ public final class ConfigurationChanger {
/** */
public void addRootKey(RootKey<?, ?> rootKey) {
- assert !storageInstances.containsKey(rootKey.getStorageType());
+ assert !storageInstances.containsKey(rootKey.type());
rootKeys.put(rootKey.key(), rootKey);
}
@@ -135,10 +136,10 @@ public final class ConfigurationChanger {
*/
// ConfigurationChangeException, really?
public void register(ConfigurationStorage configurationStorage) throws ConfigurationChangeException {
- storageInstances.put(configurationStorage.getClass(), configurationStorage);
+ storageInstances.put(configurationStorage.type(), configurationStorage);
Set<RootKey<?, ?>> storageRootKeys = rootKeys.values().stream().filter(
- rootKey -> configurationStorage.getClass() == rootKey.getStorageType()
+ rootKey -> configurationStorage.type() == rootKey.type()
).collect(Collectors.toSet());
Data data;
@@ -167,16 +168,16 @@ public final class ConfigurationChanger {
StorageRoots storageRoots = new StorageRoots(superRoot, data.cfgVersion());
- storagesRootsMap.put(configurationStorage.getClass(), storageRoots);
+ storagesRootsMap.put(configurationStorage.type(), storageRoots);
configurationStorage.addListener(changedEntries -> updateFromListener(
- configurationStorage.getClass(),
+ configurationStorage.type(),
changedEntries
));
}
/** */
- public void initialize(Class<? extends ConfigurationStorage> storageType) {
+ public void initialize(ConfigurationType storageType) {
ConfigurationStorage configurationStorage = storageInstances.get(storageType);
assert configurationStorage != null : storageType;
@@ -235,7 +236,7 @@ public final class ConfigurationChanger {
* @param rootKey Root key.
*/
public InnerNode getRootNode(RootKey<?, ?> rootKey) {
- return storagesRootsMap.get(rootKey.getStorageType()).roots.getRoot(rootKey);
+ return storagesRootsMap.get(rootKey.type()).roots.getRoot(rootKey);
}
/**
@@ -246,8 +247,8 @@ public final class ConfigurationChanger {
if (changes.isEmpty())
return completedFuture(null);
- Set<Class<? extends ConfigurationStorage>> storagesTypes = changes.keySet().stream()
- .map(RootKey::getStorageType)
+ Set<ConfigurationType> storagesTypes = changes.keySet().stream()
+ .map(RootKey::type)
.collect(Collectors.toSet());
assert !storagesTypes.isEmpty();
@@ -281,7 +282,7 @@ public final class ConfigurationChanger {
SuperRoot changes,
ConfigurationStorage storage
) {
- StorageRoots storageRoots = storagesRootsMap.get(storage.getClass());
+ StorageRoots storageRoots = storagesRootsMap.get(storage.type());
return CompletableFuture
.supplyAsync(() -> {
@@ -351,7 +352,7 @@ public final class ConfigurationChanger {
* @param changedEntries Changed data.
*/
private void updateFromListener(
- Class<? extends ConfigurationStorage> storageType,
+ ConfigurationType storageType,
Data changedEntries
) {
StorageRoots oldStorageRoots = this.storagesRootsMap.get(storageType);
diff --git a/modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationRegistry.java b/modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationRegistry.java
index 73d60df..23b058b 100644
--- a/modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationRegistry.java
+++ b/modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationRegistry.java
@@ -39,6 +39,7 @@ import org.apache.ignite.configuration.internal.util.KeyNotFoundException;
import org.apache.ignite.configuration.internal.validation.MaxValidator;
import org.apache.ignite.configuration.internal.validation.MinValidator;
import org.apache.ignite.configuration.storage.ConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.tree.ConfigurationSource;
import org.apache.ignite.configuration.tree.ConfigurationVisitor;
import org.apache.ignite.configuration.tree.InnerNode;
@@ -84,7 +85,7 @@ public class ConfigurationRegistry {
}
/** */
- public void startStorageConfigurations(Class<? extends ConfigurationStorage> storageType) {
+ public void startStorageConfigurations(ConfigurationType storageType) {
changer.initialize(storageType);
}
@@ -168,13 +169,13 @@ public class ConfigurationRegistry {
* Does not register this root anywhere, used for static object initialization only.
*
* @param rootName Name of the root as described in {@link ConfigurationRoot#rootName()}.
- * @param storageType Storage class as described in {@link ConfigurationRoot#storage()}.
+ * @param storageType Storage class as described in {@link ConfigurationRoot#type()}.
* @param rootSupplier Closure to instantiate internal configuration tree roots.
* @param publicRootCreator Function to create public user-facing tree instance.
*/
public static <T extends ConfigurationTree<V, ?>, V> RootKey<T, V> newRootKey(
String rootName,
- Class<? extends ConfigurationStorage> storageType,
+ ConfigurationType storageType,
Supplier<InnerNode> rootSupplier,
BiFunction<RootKey<T, V>, ConfigurationChanger, T> publicRootCreator
) {
diff --git a/modules/configuration/src/main/java/org/apache/ignite/configuration/RootKey.java b/modules/configuration/src/main/java/org/apache/ignite/configuration/RootKey.java
index bd84c16..c4f5bda 100644
--- a/modules/configuration/src/main/java/org/apache/ignite/configuration/RootKey.java
+++ b/modules/configuration/src/main/java/org/apache/ignite/configuration/RootKey.java
@@ -17,7 +17,7 @@
package org.apache.ignite.configuration;
-import org.apache.ignite.configuration.storage.ConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.tree.InnerNode;
/** */
@@ -26,7 +26,7 @@ public abstract class RootKey<T extends ConfigurationTree<VIEW, ?>, VIEW> {
public abstract String key();
/** */
- protected abstract Class<? extends ConfigurationStorage> getStorageType();
+ protected abstract ConfigurationType type();
/** */
protected abstract InnerNode createRootNode();
diff --git a/modules/configuration/src/main/java/org/apache/ignite/configuration/annotation/ConfigurationRoot.java b/modules/configuration/src/main/java/org/apache/ignite/configuration/annotation/ConfigurationRoot.java
index 6406f6d..f897e0b 100644
--- a/modules/configuration/src/main/java/org/apache/ignite/configuration/annotation/ConfigurationRoot.java
+++ b/modules/configuration/src/main/java/org/apache/ignite/configuration/annotation/ConfigurationRoot.java
@@ -20,7 +20,7 @@ package org.apache.ignite.configuration.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
-import org.apache.ignite.configuration.storage.ConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
@@ -38,6 +38,6 @@ public @interface ConfigurationRoot {
/** @return Unique root name. */
String rootName();
- /** @return Class of storage where to store configuration of the given root. */
- Class<? extends ConfigurationStorage> storage() default ConfigurationStorage.class;
+ /** @return Type of the configuration. */
+ ConfigurationType type() default ConfigurationType.LOCAL;
}
diff --git a/modules/configuration/src/main/java/org/apache/ignite/configuration/internal/RootKeyImpl.java b/modules/configuration/src/main/java/org/apache/ignite/configuration/internal/RootKeyImpl.java
index 8710f4d..7bfae25 100644
--- a/modules/configuration/src/main/java/org/apache/ignite/configuration/internal/RootKeyImpl.java
+++ b/modules/configuration/src/main/java/org/apache/ignite/configuration/internal/RootKeyImpl.java
@@ -22,7 +22,7 @@ import java.util.function.Supplier;
import org.apache.ignite.configuration.ConfigurationChanger;
import org.apache.ignite.configuration.ConfigurationTree;
import org.apache.ignite.configuration.RootKey;
-import org.apache.ignite.configuration.storage.ConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.tree.InnerNode;
/** */
@@ -31,7 +31,7 @@ public class RootKeyImpl<T extends ConfigurationTree<VIEW, ?>, VIEW> extends Roo
private final String rootName;
/** */
- private final Class<? extends ConfigurationStorage> storageType;
+ private final ConfigurationType storageType;
/** */
private final Supplier<InnerNode> rootSupplier;
@@ -42,7 +42,7 @@ public class RootKeyImpl<T extends ConfigurationTree<VIEW, ?>, VIEW> extends Roo
/** */
public RootKeyImpl(
String rootName,
- Class<? extends ConfigurationStorage> storageType,
+ ConfigurationType storageType,
Supplier<InnerNode> rootSupplier,
BiFunction<RootKey<T, VIEW>, ConfigurationChanger, T> publicRootCreator
) {
@@ -58,7 +58,7 @@ public class RootKeyImpl<T extends ConfigurationTree<VIEW, ?>, VIEW> extends Roo
}
/** {@inheritDoc} */
- @Override protected Class<? extends ConfigurationStorage> getStorageType() {
+ @Override protected ConfigurationType type() {
return storageType;
}
diff --git a/modules/configuration/src/main/java/org/apache/ignite/configuration/storage/ConfigurationStorage.java b/modules/configuration/src/main/java/org/apache/ignite/configuration/storage/ConfigurationStorage.java
index edd0edf..1695fb9 100644
--- a/modules/configuration/src/main/java/org/apache/ignite/configuration/storage/ConfigurationStorage.java
+++ b/modules/configuration/src/main/java/org/apache/ignite/configuration/storage/ConfigurationStorage.java
@@ -57,4 +57,9 @@ public interface ConfigurationStorage {
* notification on node restart.
*/
void notifyApplied(long storageRevision);
+
+ /**
+ * @return Type of this configuration storage.
+ */
+ ConfigurationType type();
}
diff --git a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/LocalConfigurationSchema.java b/modules/configuration/src/main/java/org/apache/ignite/configuration/storage/ConfigurationType.java
similarity index 62%
copy from modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/LocalConfigurationSchema.java
copy to modules/configuration/src/main/java/org/apache/ignite/configuration/storage/ConfigurationType.java
index fe7c2d7..6efd5e2 100644
--- a/modules/configuration-annotation-processor/src/test/java/org/apache/ignite/configuration/sample/LocalConfigurationSchema.java
+++ b/modules/configuration/src/main/java/org/apache/ignite/configuration/storage/ConfigurationType.java
@@ -15,18 +15,15 @@
* limitations under the License.
*/
-package org.apache.ignite.configuration.sample;
-
-import org.apache.ignite.configuration.annotation.ConfigValue;
-import org.apache.ignite.configuration.annotation.ConfigurationRoot;
-import org.apache.ignite.configuration.storage.TestConfigurationStorage;
+package org.apache.ignite.configuration.storage;
/**
- * Test local configuration schema.
+ * Type of configuration storage.
*/
-@ConfigurationRoot(rootName = "local", storage = TestConfigurationStorage.class)
-public class LocalConfigurationSchema {
- /** Baseline. */
- @ConfigValue
- private BaselineConfigurationSchema baseline;
+public enum ConfigurationType {
+ /** Local configuration. */
+ LOCAL,
+
+ /** Distributed configuration. */
+ DISTRIBUTED;
}
diff --git a/modules/network/src/main/java/org/apache/ignite/network/internal/direct/stream/DirectByteBufferStream.java b/modules/network/src/main/java/org/apache/ignite/network/internal/direct/stream/DirectByteBufferStream.java
index a0596dc..def5c35 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/internal/direct/stream/DirectByteBufferStream.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/internal/direct/stream/DirectByteBufferStream.java
@@ -28,6 +28,9 @@ import org.apache.ignite.network.internal.MessageWriter;
import org.apache.ignite.network.message.NetworkMessage;
import org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
+/**
+ * Direct marshalling I/O stream.
+ */
public interface DirectByteBufferStream {
/**
* @param buf Buffer.
diff --git a/modules/rest/src/main/java/org/apache/ignite/rest/configuration/InMemoryConfigurationStorage.java b/modules/rest/src/main/java/org/apache/ignite/rest/configuration/InMemoryConfigurationStorage.java
index 00e06c5..b4a3e3e 100644
--- a/modules/rest/src/main/java/org/apache/ignite/rest/configuration/InMemoryConfigurationStorage.java
+++ b/modules/rest/src/main/java/org/apache/ignite/rest/configuration/InMemoryConfigurationStorage.java
@@ -26,6 +26,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.ignite.configuration.storage.ConfigurationStorage;
import org.apache.ignite.configuration.storage.ConfigurationStorageListener;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.storage.Data;
import org.apache.ignite.configuration.storage.StorageException;
@@ -80,4 +81,9 @@ public class InMemoryConfigurationStorage implements ConfigurationStorage {
@Override public void notifyApplied(long storageRevision) {
// No-op.
}
+
+ /** {@inheritDoc} */
+ @Override public ConfigurationType type() {
+ return ConfigurationType.LOCAL;
+ }
}
diff --git a/modules/rest/src/main/java/org/apache/ignite/rest/configuration/RestConfigurationSchema.java b/modules/rest/src/main/java/org/apache/ignite/rest/configuration/RestConfigurationSchema.java
index 31e7160..66eaa51 100644
--- a/modules/rest/src/main/java/org/apache/ignite/rest/configuration/RestConfigurationSchema.java
+++ b/modules/rest/src/main/java/org/apache/ignite/rest/configuration/RestConfigurationSchema.java
@@ -21,13 +21,14 @@ import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import org.apache.ignite.configuration.annotation.ConfigurationRoot;
import org.apache.ignite.configuration.annotation.Value;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import static org.apache.ignite.rest.RestModule.DFLT_PORT;
/**
* Configuration schema for REST endpoint subtree.
*/
-@ConfigurationRoot(rootName = "rest", storage = InMemoryConfigurationStorage.class)
+@ConfigurationRoot(rootName = "rest", type = ConfigurationType.LOCAL)
public class RestConfigurationSchema {
/** */
@Min(1024)
diff --git a/modules/rest/src/test/java/org/apache/ignite/rest/presentation/json/JsonConverterTest.java b/modules/rest/src/test/java/org/apache/ignite/rest/presentation/json/JsonConverterTest.java
index 8326a07..128d70f 100644
--- a/modules/rest/src/test/java/org/apache/ignite/rest/presentation/json/JsonConverterTest.java
+++ b/modules/rest/src/test/java/org/apache/ignite/rest/presentation/json/JsonConverterTest.java
@@ -24,6 +24,7 @@ import org.apache.ignite.configuration.annotation.Config;
import org.apache.ignite.configuration.annotation.ConfigurationRoot;
import org.apache.ignite.configuration.annotation.NamedConfigValue;
import org.apache.ignite.configuration.annotation.Value;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -38,7 +39,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
/** */
public class JsonConverterTest {
/** */
- @ConfigurationRoot(rootName = "root", storage = TestConfigurationStorage.class)
+ @ConfigurationRoot(rootName = "root", type = ConfigurationType.LOCAL)
public static class JsonRootConfigurationSchema {
/** */
@NamedConfigValue
diff --git a/modules/rest/src/test/java/org/apache/ignite/rest/presentation/json/TestConfigurationStorage.java b/modules/rest/src/test/java/org/apache/ignite/rest/presentation/json/TestConfigurationStorage.java
index 3a6834e..f525b1a 100644
--- a/modules/rest/src/test/java/org/apache/ignite/rest/presentation/json/TestConfigurationStorage.java
+++ b/modules/rest/src/test/java/org/apache/ignite/rest/presentation/json/TestConfigurationStorage.java
@@ -25,6 +25,7 @@ import java.util.Set;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.configuration.storage.ConfigurationStorage;
import org.apache.ignite.configuration.storage.ConfigurationStorageListener;
+import org.apache.ignite.configuration.storage.ConfigurationType;
import org.apache.ignite.configuration.storage.Data;
import org.apache.ignite.configuration.storage.StorageException;
@@ -58,4 +59,9 @@ class TestConfigurationStorage implements ConfigurationStorage {
@Override public void notifyApplied(long storageRevision) {
}
+
+ /** {@inheritDoc} */
+ @Override public ConfigurationType type() {
+ return ConfigurationType.LOCAL;
+ }
}
diff --git a/modules/runner/src/main/java/org/apache/ignite/configuration/extended/LocalConfigurationSchema.java b/modules/runner/src/main/java/org/apache/ignite/configuration/extended/LocalConfigurationSchema.java
index 346ae43..0097528 100644
--- a/modules/runner/src/main/java/org/apache/ignite/configuration/extended/LocalConfigurationSchema.java
+++ b/modules/runner/src/main/java/org/apache/ignite/configuration/extended/LocalConfigurationSchema.java
@@ -19,13 +19,13 @@ package org.apache.ignite.configuration.extended;
import org.apache.ignite.configuration.annotation.ConfigValue;
import org.apache.ignite.configuration.annotation.ConfigurationRoot;
-import org.apache.ignite.rest.configuration.InMemoryConfigurationStorage;
+import org.apache.ignite.configuration.storage.ConfigurationType;
/**
*
*/
@SuppressWarnings("PMD.UnusedPrivateField")
-@ConfigurationRoot(rootName = "local", storage = InMemoryConfigurationStorage.class)
+@ConfigurationRoot(rootName = "local", type = ConfigurationType.LOCAL)
public class LocalConfigurationSchema {
/** */
@ConfigValue
diff --git a/parent/pom.xml b/parent/pom.xml
index 2f32870..4b84ee6 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -479,6 +479,9 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
+ <configuration>
+ <useModulePath>false</useModulePath>
+ </configuration>
<executions>
<execution>
<phase>integration-test</phase>