tkalkirill commented on code in PR #2386:
URL: https://github.com/apache/ignite-3/pull/2386#discussion_r1287961892
##########
modules/configuration/src/main/java/org/apache/ignite/internal/configuration/asm/ConfigurationAsmGenerator.java:
##########
@@ -160,14 +161,14 @@ public synchronized InnerNode instantiateNode(Class<?>
schemaClass) {
* Generates, defines, loads and initializes all dynamic classes required
for the given configuration schema.
*
* @param rootSchemaClass Class of the root configuration
schema.
- * @param internalSchemaExtensions Internal extensions ({@link
InternalConfiguration}) of configuration schemas ({@link
- * ConfigurationRoot} and {@link
Config}). Mapping: original schema -> extensions.
+ * @param schemaExtensions All extensions (public and internal)
({@link ConfigurationExtension}) of configuration schemas
Review Comment:
```suggestion
* @param schemaExtensions Extensions (public and internal) ({@link
ConfigurationExtension}) of configuration schemas
```
##########
modules/configuration-api/src/main/java/org/apache/ignite/configuration/annotation/ConfigurationExtension.java:
##########
@@ -39,5 +40,11 @@
@Target(TYPE)
@Retention(RUNTIME)
@Documented
-public @interface InternalConfiguration {
+public @interface ConfigurationExtension {
+ /**
+ * Controls whether this configuration is part of the public configuration
or is hidden from the end user.
+ * An extension is public by default.
+ */
+ boolean internal() default false;
+
Review Comment:
```suggestion
```
##########
modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java:
##########
@@ -548,42 +549,64 @@ void testCheckConfigurationTypeNoError() {
}
@Test
- void testInternalSchemaExtensions() {
- assertTrue(internalSchemaExtensions(List.of()).isEmpty());
+ void testExtensionsType() {
+ // public extensions
+
assertTrue(ConfigurationUtil.isPublicExtension(PublicConfigurationSchema.class));
Review Comment:
```suggestion
// Public extensions.
assertTrue(ConfigurationUtil.isPublicExtension(PublicConfigurationSchema.class));
```
##########
modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java:
##########
@@ -548,42 +549,64 @@ void testCheckConfigurationTypeNoError() {
}
@Test
- void testInternalSchemaExtensions() {
- assertTrue(internalSchemaExtensions(List.of()).isEmpty());
+ void testExtensionsType() {
Review Comment:
It is better to divide the test into several: public/internal
##########
modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java:
##########
@@ -728,6 +774,84 @@ void testGetInternalConfigs() {
assertEquals("foo", subConfig.get("str02"));
}
+ @Test
+ void testGetPublicWithInternalConfigs() {
+ Map<Class<?>, Set<Class<?>>> extensions = schemaExtensions(List.of(
+ InternalFirstRootConfigurationSchema.class,
+ InternalSecondRootConfigurationSchema.class,
+ PublicRootConfigurationSchema.class,
+ InternalFirstConfigurationSchema.class,
+ InternalSecondConfigurationSchema.class,
+ PublicConfigurationSchema.class
+ ));
+
+ ConfigurationAsmGenerator generator = new ConfigurationAsmGenerator();
+ generator.compileRootSchema(InternalRootConfigurationSchema.class,
extensions, Map.of());
+
+ InnerNode innerNode =
generator.instantiateNode(InternalRootConfigurationSchema.class);
+
+ addDefaults(innerNode);
+
+ Map<String, Object> config = (Map<String, Object>) innerNode.accept(
+ null,
+ null,
+ ConverterToMapVisitor.builder()
+ .includeInternal(false)
+ .build()
+ );
+
+ // Check that public configuration will still be received.
+
Review Comment:
```suggestion
```
##########
modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java:
##########
@@ -548,42 +549,64 @@ void testCheckConfigurationTypeNoError() {
}
@Test
- void testInternalSchemaExtensions() {
- assertTrue(internalSchemaExtensions(List.of()).isEmpty());
+ void testExtensionsType() {
+ // public extensions
+
assertTrue(ConfigurationUtil.isPublicExtension(PublicConfigurationSchema.class));
- assertThrows(IllegalArgumentException.class, () ->
internalSchemaExtensions(List.of(Object.class)));
+
assertTrue(ConfigurationUtil.isPublicExtension(PublicRootConfigurationSchema.class));
+
+ //internal extensions
Review Comment:
same
##########
modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java:
##########
@@ -548,42 +549,64 @@ void testCheckConfigurationTypeNoError() {
}
@Test
- void testInternalSchemaExtensions() {
- assertTrue(internalSchemaExtensions(List.of()).isEmpty());
+ void testExtensionsType() {
+ // public extensions
+
assertTrue(ConfigurationUtil.isPublicExtension(PublicConfigurationSchema.class));
- assertThrows(IllegalArgumentException.class, () ->
internalSchemaExtensions(List.of(Object.class)));
+
assertTrue(ConfigurationUtil.isPublicExtension(PublicRootConfigurationSchema.class));
+
+ //internal extensions
+
assertTrue(ConfigurationUtil.isInternalExtension(InternalSecondConfigurationSchema.class));
+
+
assertTrue(ConfigurationUtil.isInternalExtension(InternalSecondRootConfigurationSchema.class));
+
+ //this one is not an extension at all
Review Comment:
same
##########
modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java:
##########
@@ -728,6 +774,84 @@ void testGetInternalConfigs() {
assertEquals("foo", subConfig.get("str02"));
}
+ @Test
+ void testGetPublicWithInternalConfigs() {
+ Map<Class<?>, Set<Class<?>>> extensions = schemaExtensions(List.of(
+ InternalFirstRootConfigurationSchema.class,
+ InternalSecondRootConfigurationSchema.class,
+ PublicRootConfigurationSchema.class,
+ InternalFirstConfigurationSchema.class,
+ InternalSecondConfigurationSchema.class,
+ PublicConfigurationSchema.class
+ ));
+
+ ConfigurationAsmGenerator generator = new ConfigurationAsmGenerator();
+ generator.compileRootSchema(InternalRootConfigurationSchema.class,
extensions, Map.of());
+
+ InnerNode innerNode =
generator.instantiateNode(InternalRootConfigurationSchema.class);
+
+ addDefaults(innerNode);
+
+ Map<String, Object> config = (Map<String, Object>) innerNode.accept(
+ null,
+ null,
+ ConverterToMapVisitor.builder()
+ .includeInternal(false)
+ .build()
+ );
+
+ // Check that public configuration will still be received.
+
+ assertEquals(5, config.size());
+ assertNull(config.get("str0"));
+ assertEquals("foo", config.get("str1"));
+ assertNotNull(config.get("subCfg"));
+ assertNotNull(config.get("namedCfg"));
+ assertNotNull(config.get("publicSubCfg1"));
+
+ Map<String, Object> subConfig = (Map<String, Object>)
config.get("subCfg");
+
+ assertEquals(2, subConfig.size());
+ assertEquals("foo", subConfig.get("str00"));
+ assertEquals("bar", subConfig.get("publicStr03"));
+
+ // Check that public configuration will be received along with the
internal one.
+
Review Comment:
```suggestion
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]