This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new bd7d6011b8 Make the majority of KuberenetesClusterService
configuration overridable at runtime
bd7d6011b8 is described below
commit bd7d6011b8c70a88d9749f098811541c2ff9bd79
Author: James Netherton <[email protected]>
AuthorDate: Tue Feb 13 11:50:19 2024 +0000
Make the majority of KuberenetesClusterService configuration overridable at
runtime
Fixes #5739
---
.../pages/reference/extensions/kubernetes.adoc | 38 ++++++++--------
.../KubernetesClusterServiceProcessor.java | 25 ++++++-----
...erServiceConfigEnabledWithRebalancingTest.java} | 2 +-
.../KubernetesClusterServiceBuildTimeConfig.java | 51 ++++++++++++++++++++++
.../cluster/KubernetesClusterServiceRecorder.java | 30 ++++++-------
... => KubernetesClusterServiceRuntimeConfig.java} | 30 ++-----------
6 files changed, 102 insertions(+), 74 deletions(-)
diff --git a/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
b/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
index a2a6e97a6c..97fc2967c9 100644
--- a/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
@@ -125,85 +125,85 @@ Whether a Kubernetes Cluster Service should be
automatically configured accordin
| `boolean`
| `false`
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.id]]`link:#quarkus.camel.cluster.kubernetes.id[quarkus.camel.cluster.kubernetes.id]`
+|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.rebalancing]]`link:#quarkus.camel.cluster.kubernetes.rebalancing[quarkus.camel.cluster.kubernetes.rebalancing]`
+
+Whether the camel master namespace leaders should be distributed evenly across
all the camel contexts in the cluster.
+| `boolean`
+| `true`
+
+|
[[quarkus.camel.cluster.kubernetes.id]]`link:#quarkus.camel.cluster.kubernetes.id[quarkus.camel.cluster.kubernetes.id]`
The cluster service ID (defaults to null).
| `string`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.master-url]]`link:#quarkus.camel.cluster.kubernetes.master-url[quarkus.camel.cluster.kubernetes.master-url]`
+|
[[quarkus.camel.cluster.kubernetes.master-url]]`link:#quarkus.camel.cluster.kubernetes.master-url[quarkus.camel.cluster.kubernetes.master-url]`
The URL of the Kubernetes master (read from Kubernetes client properties by
default).
| `string`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.connection-timeout-millis]]`link:#quarkus.camel.cluster.kubernetes.connection-timeout-millis[quarkus.camel.cluster.kubernetes.connection-timeout-millis]`
+|
[[quarkus.camel.cluster.kubernetes.connection-timeout-millis]]`link:#quarkus.camel.cluster.kubernetes.connection-timeout-millis[quarkus.camel.cluster.kubernetes.connection-timeout-millis]`
The connection timeout in milliseconds to use when making requests to the
Kubernetes API server.
| `java.lang.Integer`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.namespace]]`link:#quarkus.camel.cluster.kubernetes.namespace[quarkus.camel.cluster.kubernetes.namespace]`
+|
[[quarkus.camel.cluster.kubernetes.namespace]]`link:#quarkus.camel.cluster.kubernetes.namespace[quarkus.camel.cluster.kubernetes.namespace]`
The name of the Kubernetes namespace containing the pods and the configmap
(autodetected by default).
| `string`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.pod-name]]`link:#quarkus.camel.cluster.kubernetes.pod-name[quarkus.camel.cluster.kubernetes.pod-name]`
+|
[[quarkus.camel.cluster.kubernetes.pod-name]]`link:#quarkus.camel.cluster.kubernetes.pod-name[quarkus.camel.cluster.kubernetes.pod-name]`
The name of the current pod (autodetected from container host name by default).
| `string`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.jitter-factor]]`link:#quarkus.camel.cluster.kubernetes.jitter-factor[quarkus.camel.cluster.kubernetes.jitter-factor]`
+|
[[quarkus.camel.cluster.kubernetes.jitter-factor]]`link:#quarkus.camel.cluster.kubernetes.jitter-factor[quarkus.camel.cluster.kubernetes.jitter-factor]`
The jitter factor to apply in order to prevent all pods to call Kubernetes
APIs in the same instant (defaults to 1.2).
| `java.lang.Double`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.lease-duration-millis]]`link:#quarkus.camel.cluster.kubernetes.lease-duration-millis[quarkus.camel.cluster.kubernetes.lease-duration-millis]`
+|
[[quarkus.camel.cluster.kubernetes.lease-duration-millis]]`link:#quarkus.camel.cluster.kubernetes.lease-duration-millis[quarkus.camel.cluster.kubernetes.lease-duration-millis]`
The default duration of the lease for the current leader (defaults to 15000).
| `java.lang.Long`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.renew-deadline-millis]]`link:#quarkus.camel.cluster.kubernetes.renew-deadline-millis[quarkus.camel.cluster.kubernetes.renew-deadline-millis]`
+|
[[quarkus.camel.cluster.kubernetes.renew-deadline-millis]]`link:#quarkus.camel.cluster.kubernetes.renew-deadline-millis[quarkus.camel.cluster.kubernetes.renew-deadline-millis]`
The deadline after which the leader must stop its services because it may have
lost the leadership (defaults to 10000).
| `java.lang.Long`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.retry-period-millis]]`link:#quarkus.camel.cluster.kubernetes.retry-period-millis[quarkus.camel.cluster.kubernetes.retry-period-millis]`
+|
[[quarkus.camel.cluster.kubernetes.retry-period-millis]]`link:#quarkus.camel.cluster.kubernetes.retry-period-millis[quarkus.camel.cluster.kubernetes.retry-period-millis]`
The time between two subsequent attempts to check and acquire the leadership.
It is randomized using the jitter factor (defaults to 2000).
| `java.lang.Long`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.order]]`link:#quarkus.camel.cluster.kubernetes.order[quarkus.camel.cluster.kubernetes.order]`
+|
[[quarkus.camel.cluster.kubernetes.order]]`link:#quarkus.camel.cluster.kubernetes.order[quarkus.camel.cluster.kubernetes.order]`
Service lookup order/priority (defaults to 2147482647).
| `java.lang.Integer`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.resource-name]]`link:#quarkus.camel.cluster.kubernetes.resource-name[quarkus.camel.cluster.kubernetes.resource-name]`
+|
[[quarkus.camel.cluster.kubernetes.resource-name]]`link:#quarkus.camel.cluster.kubernetes.resource-name[quarkus.camel.cluster.kubernetes.resource-name]`
The name of the lease resource used to do optimistic locking (defaults to
'leaders'). The resource name is used as prefix when the underlying Kubernetes
resource can manage a single lock.
| `string`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.lease-resource-type]]`link:#quarkus.camel.cluster.kubernetes.lease-resource-type[quarkus.camel.cluster.kubernetes.lease-resource-type]`
+|
[[quarkus.camel.cluster.kubernetes.lease-resource-type]]`link:#quarkus.camel.cluster.kubernetes.lease-resource-type[quarkus.camel.cluster.kubernetes.lease-resource-type]`
The lease resource type used in Kubernetes, either 'config-map' or 'lease'
(defaults to 'lease').
| `org.apache.camel.component.kubernetes.cluster.LeaseResourceType`
|
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.rebalancing]]`link:#quarkus.camel.cluster.kubernetes.rebalancing[quarkus.camel.cluster.kubernetes.rebalancing]`
-
-Whether the camel master namespace leaders should be distributed evenly across
all the camel contexts in the cluster.
-| `boolean`
-| `true`
-
-|icon:lock[title=Fixed at build time]
[[quarkus.camel.cluster.kubernetes.labels]]`link:#quarkus.camel.cluster.kubernetes.labels[quarkus.camel.cluster.kubernetes.labels]`
+|
[[quarkus.camel.cluster.kubernetes.labels]]`link:#quarkus.camel.cluster.kubernetes.labels[quarkus.camel.cluster.kubernetes.labels]`
The labels key/value used to identify the pods composing the cluster, defaults
to empty map.
| ``Map<String,String>``
diff --git
a/extensions/kubernetes/deployment/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceProcessor.java
b/extensions/kubernetes/deployment/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceProcessor.java
index ff3962e3f5..96a9c34b9a 100644
---
a/extensions/kubernetes/deployment/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceProcessor.java
+++
b/extensions/kubernetes/deployment/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceProcessor.java
@@ -22,30 +22,31 @@ import io.quarkus.deployment.annotations.ExecutionTime;
import io.quarkus.deployment.annotations.Record;
import io.quarkus.runtime.RuntimeValue;
import org.apache.camel.component.kubernetes.cluster.KubernetesClusterService;
-import
org.apache.camel.quarkus.component.kubernetes.cluster.KubernetesClusterServiceConfig;
+import
org.apache.camel.quarkus.component.kubernetes.cluster.KubernetesClusterServiceBuildTimeConfig;
import
org.apache.camel.quarkus.component.kubernetes.cluster.KubernetesClusterServiceRecorder;
-import org.apache.camel.quarkus.core.deployment.spi.CamelBeanBuildItem;
+import
org.apache.camel.quarkus.component.kubernetes.cluster.KubernetesClusterServiceRuntimeConfig;
import org.apache.camel.quarkus.core.deployment.spi.CamelContextBuildItem;
+import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeBeanBuildItem;
import org.apache.camel.support.cluster.RebalancingCamelClusterService;
class KubernetesClusterServiceProcessor {
- @Record(ExecutionTime.STATIC_INIT)
- @BuildStep(onlyIf = KubernetesClusterServiceConfig.Enabled.class)
+ @Record(ExecutionTime.RUNTIME_INIT)
+ @BuildStep(onlyIf = KubernetesClusterServiceBuildTimeConfig.Enabled.class)
@Consume(CamelContextBuildItem.class)
- CamelBeanBuildItem setupKubernetesClusterService(
- KubernetesClusterServiceConfig config,
+ CamelRuntimeBeanBuildItem setupKubernetesClusterService(
+ KubernetesClusterServiceBuildTimeConfig buildTimeConfig,
+ KubernetesClusterServiceRuntimeConfig runtimeConfig,
KubernetesClusterServiceRecorder recorder) {
- if (config.rebalancing) {
+ if (buildTimeConfig.rebalancing) {
final RuntimeValue<RebalancingCamelClusterService> krcs = recorder
- .createKubernetesRebalancingClusterService(config);
- return new
CamelBeanBuildItem("kubernetesRebalancingClusterService",
+ .createKubernetesRebalancingClusterService(runtimeConfig);
+ return new
CamelRuntimeBeanBuildItem("kubernetesRebalancingClusterService",
RebalancingCamelClusterService.class.getName(), krcs);
} else {
- final RuntimeValue<KubernetesClusterService> kcs =
recorder.createKubernetesClusterService(config);
- return new CamelBeanBuildItem("kubernetesClusterService",
KubernetesClusterService.class.getName(), kcs);
+ final RuntimeValue<KubernetesClusterService> kcs =
recorder.createKubernetesClusterService(runtimeConfig);
+ return new CamelRuntimeBeanBuildItem("kubernetesClusterService",
KubernetesClusterService.class.getName(), kcs);
}
}
-
}
diff --git
a/extensions/kubernetes/deployment/src/test/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceConfigEnabledWithRebalancingtTest.java
b/extensions/kubernetes/deployment/src/test/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceConfigEnabledWithRebalancingTest.java
similarity index 99%
rename from
extensions/kubernetes/deployment/src/test/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceConfigEnabledWithRebalancingtTest.java
rename to
extensions/kubernetes/deployment/src/test/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceConfigEnabledWithRebalancingTest.java
index 28e41eb5cf..7c4196e2ca 100644
---
a/extensions/kubernetes/deployment/src/test/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceConfigEnabledWithRebalancingtTest.java
+++
b/extensions/kubernetes/deployment/src/test/java/org/apache/camel/quarkus/component/kubernetes/cluster/deployment/KubernetesClusterServiceConfigEnabledWithRebalancingTest.java
@@ -34,7 +34,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
-public class KubernetesClusterServiceConfigEnabledWithRebalancingtTest {
+public class KubernetesClusterServiceConfigEnabledWithRebalancingTest {
@RegisterExtension
static final QuarkusUnitTest CONFIG = new QuarkusUnitTest()
.setArchiveProducer(() ->
ShrinkWrap.create(JavaArchive.class).addAsResource(applicationProperties(),
diff --git
a/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceBuildTimeConfig.java
b/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceBuildTimeConfig.java
new file mode 100644
index 0000000000..7d992f6e8f
--- /dev/null
+++
b/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceBuildTimeConfig.java
@@ -0,0 +1,51 @@
+/*
+ * 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.apache.camel.quarkus.component.kubernetes.cluster;
+
+import java.util.function.BooleanSupplier;
+
+import io.quarkus.runtime.annotations.ConfigItem;
+import io.quarkus.runtime.annotations.ConfigPhase;
+import io.quarkus.runtime.annotations.ConfigRoot;
+
+@ConfigRoot(name = "camel.cluster.kubernetes", phase =
ConfigPhase.BUILD_AND_RUN_TIME_FIXED)
+public class KubernetesClusterServiceBuildTimeConfig {
+
+ /**
+ * Whether a Kubernetes Cluster Service should be automatically configured
+ * according to 'quarkus.camel.cluster.kubernetes.*' configurations.
+ */
+ @ConfigItem(defaultValue = "false")
+ public boolean enabled;
+
+ /**
+ * Whether the camel master namespace leaders should be distributed evenly
+ * across all the camel contexts in the cluster.
+ */
+ @ConfigItem(defaultValue = "true")
+ public boolean rebalancing;
+
+ public static final class Enabled implements BooleanSupplier {
+ KubernetesClusterServiceBuildTimeConfig config;
+
+ @Override
+ public boolean getAsBoolean() {
+ return config.enabled;
+ }
+ }
+
+}
diff --git
a/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceRecorder.java
b/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceRecorder.java
index 611abe87f8..548cf332ff 100644
---
a/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceRecorder.java
+++
b/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceRecorder.java
@@ -24,34 +24,34 @@ import
org.apache.camel.support.cluster.RebalancingCamelClusterService;
@Recorder
public class KubernetesClusterServiceRecorder {
- public RuntimeValue<KubernetesClusterService>
createKubernetesClusterService(KubernetesClusterServiceConfig config) {
+ public RuntimeValue<KubernetesClusterService>
createKubernetesClusterService(KubernetesClusterServiceRuntimeConfig config) {
KubernetesClusterService kcs =
setupKubernetesClusterServiceFromConfig(config);
return new RuntimeValue<KubernetesClusterService>(kcs);
}
public RuntimeValue<RebalancingCamelClusterService>
createKubernetesRebalancingClusterService(
- KubernetesClusterServiceConfig config) {
+ KubernetesClusterServiceRuntimeConfig config) {
KubernetesClusterService kcs =
setupKubernetesClusterServiceFromConfig(config);
RebalancingCamelClusterService rebalancingService = new
RebalancingCamelClusterService(kcs,
kcs.getRenewDeadlineMillis());
return new
RuntimeValue<RebalancingCamelClusterService>(rebalancingService);
}
- private KubernetesClusterService
setupKubernetesClusterServiceFromConfig(KubernetesClusterServiceConfig config) {
+ private KubernetesClusterService
setupKubernetesClusterServiceFromConfig(KubernetesClusterServiceRuntimeConfig
config) {
KubernetesClusterService clusterService = new
KubernetesClusterService();
- config.id.ifPresent(id -> clusterService.setId(id));
- config.masterUrl.ifPresent(url -> clusterService.setMasterUrl(url));
- config.connectionTimeoutMillis.ifPresent(ctm ->
clusterService.setConnectionTimeoutMillis(ctm));
- config.namespace.ifPresent(ns ->
clusterService.setKubernetesNamespace(ns));
- config.podName.ifPresent(pn -> clusterService.setPodName(pn));
- config.jitterFactor.ifPresent(jf ->
clusterService.setJitterFactor(jf));
- config.leaseDurationMillis.ifPresent(ldm ->
clusterService.setLeaseDurationMillis(ldm));
- config.renewDeadlineMillis.ifPresent(rdm ->
clusterService.setRenewDeadlineMillis(rdm));
- config.retryPeriodMillis.ifPresent(rpm ->
clusterService.setRetryPeriodMillis(rpm));
- config.order.ifPresent(o -> clusterService.setOrder(o));
- config.resourceName.ifPresent(krn ->
clusterService.setKubernetesResourceName(krn));
- config.leaseResourceType.ifPresent(lrt ->
clusterService.setLeaseResourceType(lrt));
+ config.id.ifPresent(clusterService::setId);
+ config.masterUrl.ifPresent(clusterService::setMasterUrl);
+
config.connectionTimeoutMillis.ifPresent(clusterService::setConnectionTimeoutMillis);
+ config.namespace.ifPresent(clusterService::setKubernetesNamespace);
+ config.podName.ifPresent(clusterService::setPodName);
+ config.jitterFactor.ifPresent(clusterService::setJitterFactor);
+
config.leaseDurationMillis.ifPresent(clusterService::setLeaseDurationMillis);
+
config.renewDeadlineMillis.ifPresent(clusterService::setRenewDeadlineMillis);
+
config.retryPeriodMillis.ifPresent(clusterService::setRetryPeriodMillis);
+ config.order.ifPresent(clusterService::setOrder);
+
config.resourceName.ifPresent(clusterService::setKubernetesResourceName);
+
config.leaseResourceType.ifPresent(clusterService::setLeaseResourceType);
clusterService.setClusterLabels(config.labels);
diff --git
a/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceConfig.java
b/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceRuntimeConfig.java
similarity index 78%
rename from
extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceConfig.java
rename to
extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceRuntimeConfig.java
index c95c42f801..26a3c8d2ef 100644
---
a/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceConfig.java
+++
b/extensions/kubernetes/runtime/src/main/java/org/apache/camel/quarkus/component/kubernetes/cluster/KubernetesClusterServiceRuntimeConfig.java
@@ -18,22 +18,14 @@ package
org.apache.camel.quarkus.component.kubernetes.cluster;
import java.util.Map;
import java.util.Optional;
-import java.util.function.BooleanSupplier;
import io.quarkus.runtime.annotations.ConfigItem;
+import io.quarkus.runtime.annotations.ConfigPhase;
import io.quarkus.runtime.annotations.ConfigRoot;
import org.apache.camel.component.kubernetes.cluster.LeaseResourceType;
-import org.eclipse.microprofile.config.ConfigProvider;
-@ConfigRoot(name = "camel.cluster.kubernetes")
-public class KubernetesClusterServiceConfig {
-
- /**
- * Whether a Kubernetes Cluster Service should be automatically configured
- * according to 'quarkus.camel.cluster.kubernetes.*' configurations.
- */
- @ConfigItem(defaultValue = "false")
- public boolean enabled;
+@ConfigRoot(name = "camel.cluster.kubernetes", phase = ConfigPhase.RUN_TIME)
+public class KubernetesClusterServiceRuntimeConfig {
/**
* The cluster service ID (defaults to null).
@@ -113,26 +105,10 @@ public class KubernetesClusterServiceConfig {
@ConfigItem
public Optional<LeaseResourceType> leaseResourceType;
- /**
- * Whether the camel master namespace leaders should be distributed evenly
- * across all the camel contexts in the cluster.
- */
- @ConfigItem(defaultValue = "true")
- public boolean rebalancing;
-
/**
* The labels key/value used to identify the pods composing the cluster,
* defaults to empty map.
*/
@ConfigItem
public Map<String, String> labels;
-
- public static final class Enabled implements BooleanSupplier {
- @Override
- public boolean getAsBoolean() {
- return
ConfigProvider.getConfig().getOptionalValue("quarkus.camel.cluster.kubernetes.enabled",
Boolean.class)
- .orElse(Boolean.FALSE);
- }
- }
-
}