Skip to content

Commit abd96ba

Browse files
authored
All Pico services should default to a lesser than DEFAULT_WEIGHT (helidon-io#6590)
* fix for issue# 6583
1 parent 1e25876 commit abd96ba

16 files changed

Lines changed: 39 additions & 29 deletions

File tree

builder/builder-config-processor/src/main/java/io/helidon/builder/config/processor/ConfigBeanBuilderCreator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
* @see GeneratedConfigBean
6969
* @see GeneratedConfigBeanBuilder
7070
*/
71-
@Weight(Weighted.DEFAULT_WEIGHT)
71+
@Weight(Weighted.DEFAULT_WEIGHT - 2) // allow all other creators to take precedence over us...
7272
public class ConfigBeanBuilderCreator extends DefaultBuilderCreatorProvider {
7373
static final String PICO_CONTRACT_TYPENAME = "io.helidon.pico.api.Contract";
7474
static final String PICO_EXTERNAL_CONTRACT_TYPENAME = "io.helidon.pico.api.ExternalContracts";

builder/builder-config/src/main/java/io/helidon/builder/config/spi/HelidonConfigResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
* not "full" Helidon config.
4141
*/
4242
@Singleton
43-
@Weight(Weighted.DEFAULT_WEIGHT - 1) // allow all other creators to take precedence over us...
43+
@Weight(Weighted.DEFAULT_WEIGHT - 2) // allow all other creators to take precedence over us...
4444
@SuppressWarnings({"unchecked", "rawtypes"})
4545
public class HelidonConfigResolver implements ConfigResolver, ConfigResolverProvider {
4646

builder/processor-tools/src/main/java/io/helidon/builder/processor/tools/BuilderTypeTools.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
* The default implementation for {@link io.helidon.builder.processor.spi.TypeInfoCreatorProvider}. This also contains an abundance of
6363
* other useful methods used for annotation processing.
6464
*/
65-
@Weight(Weighted.DEFAULT_WEIGHT - 1)
65+
@Weight(Weighted.DEFAULT_WEIGHT - 2) // allow all other creators to take precedence over us...
6666
public class BuilderTypeTools implements TypeInfoCreatorProvider {
6767
/**
6868
* Default constructor. Service loaded.

builder/processor-tools/src/main/java/io/helidon/builder/processor/tools/DefaultBuilderCreatorProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
/**
5858
* Default implementation for {@link io.helidon.builder.processor.spi.BuilderCreatorProvider}.
5959
*/
60-
@Weight(Weighted.DEFAULT_WEIGHT - 1) // allow all other creators to take precedence over us...
60+
@Weight(Weighted.DEFAULT_WEIGHT - 2) // allow all other creators to take precedence over us...
6161
public class DefaultBuilderCreatorProvider implements BuilderCreatorProvider {
6262
static final boolean DEFAULT_INCLUDE_META_ATTRIBUTES = true;
6363
static final boolean DEFAULT_REQUIRE_LIBRARY_DEPENDENCIES = true;

pico/api/src/main/java/io/helidon/pico/api/ServiceInfoBasics.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@
3232
public interface ServiceInfoBasics {
3333

3434
/**
35-
* Default weight for any weighted component (whether it implements this interface
36-
* or uses {@link io.helidon.common.Weight} annotation).
35+
* Default weight for any <i>internal</i> Pico service component. It is defined to be
36+
* {@link Weighted#DEFAULT_WEIGHT} {@code - 1} in order to allow any other service implementation to
37+
* naturally have a higher weight (since it will use the {@code DEFAULT_WEIGHT} unless explicitly overridden.
3738
*/
38-
double DEFAULT_WEIGHT = Weighted.DEFAULT_WEIGHT;
39+
double DEFAULT_PICO_WEIGHT = Weighted.DEFAULT_WEIGHT - 1;
3940

4041
/**
4142
* The managed service implementation {@link Class}.
@@ -96,13 +97,13 @@ default int realizedRunLevel() {
9697
Optional<Double> declaredWeight();
9798

9899
/**
99-
* The realized weight will use the default weight if no weight was specified directly.
100+
* The realized weight will use {@link Weighted#DEFAULT_WEIGHT} if no weight was specified directly.
100101
*
101102
* @return the realized weight
102103
* @see #declaredWeight()
103104
*/
104105
default double realizedWeight() {
105-
return declaredWeight().orElse(DEFAULT_WEIGHT);
106+
return declaredWeight().orElse(Weighted.DEFAULT_WEIGHT);
106107
}
107108

108109
}

pico/configdriven/runtime/src/main/java/io/helidon/pico/configdriven/runtime/DefaultConfigBeanBuilderValidatorProvider.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@
2020
import io.helidon.builder.config.spi.ConfigBeanBuilderValidatorProvider;
2121
import io.helidon.common.LazyValue;
2222
import io.helidon.common.Weight;
23-
import io.helidon.common.Weighted;
23+
24+
import static io.helidon.pico.api.ServiceInfoBasics.DEFAULT_PICO_WEIGHT;
2425

2526
/**
2627
* Service-loaded provider for {@link io.helidon.builder.config.spi.ConfigResolverProvider}.
2728
*/
28-
@Weight(Weighted.DEFAULT_WEIGHT)
29+
@Weight(DEFAULT_PICO_WEIGHT)
2930
public class DefaultConfigBeanBuilderValidatorProvider implements ConfigBeanBuilderValidatorProvider {
3031
static final LazyValue<ConfigBeanBuilderValidator<?>> INSTANCE = LazyValue.create(DefaultConfigBuilderValidator::new);
3132

pico/configdriven/runtime/src/main/java/io/helidon/pico/configdriven/runtime/DefaultConfigBeanRegistryProvider.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@
2020
import io.helidon.builder.config.spi.HelidonConfigBeanRegistry;
2121
import io.helidon.common.LazyValue;
2222
import io.helidon.common.Weight;
23-
import io.helidon.common.Weighted;
23+
24+
import static io.helidon.pico.api.ServiceInfoBasics.DEFAULT_PICO_WEIGHT;
2425

2526
/**
2627
* Service-loaded provider for {@link ConfigBeanRegistry}.
2728
*/
28-
@Weight(Weighted.DEFAULT_WEIGHT)
29+
@Weight(DEFAULT_PICO_WEIGHT)
2930
public class DefaultConfigBeanRegistryProvider implements ConfigBeanRegistryProvider {
3031
static final LazyValue<ConfigBeanRegistry> INSTANCE = LazyValue.create(DefaultPicoConfigBeanRegistry::new);
3132

pico/configdriven/runtime/src/main/java/io/helidon/pico/configdriven/runtime/DefaultConfigResolverProvider.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@
2020
import io.helidon.builder.config.spi.ConfigResolverProvider;
2121
import io.helidon.common.LazyValue;
2222
import io.helidon.common.Weight;
23-
import io.helidon.common.Weighted;
23+
24+
import static io.helidon.pico.api.ServiceInfoBasics.DEFAULT_PICO_WEIGHT;
2425

2526
/**
2627
* Service-loaded provider for {@link ConfigResolverProvider}.
2728
*/
28-
@Weight(Weighted.DEFAULT_WEIGHT)
29+
@Weight(DEFAULT_PICO_WEIGHT)
2930
public class DefaultConfigResolverProvider implements ConfigResolverProvider {
3031
static final LazyValue<ConfigResolver> INSTANCE = LazyValue.create(DefaultConfigResolver::new);
3132

pico/configdriven/runtime/src/main/java/io/helidon/pico/configdriven/runtime/DefaultStringValueParserProvider.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@
2020
import io.helidon.builder.config.spi.StringValueParserProvider;
2121
import io.helidon.common.LazyValue;
2222
import io.helidon.common.Weight;
23-
import io.helidon.common.Weighted;
23+
24+
import static io.helidon.pico.api.ServiceInfoBasics.DEFAULT_PICO_WEIGHT;
2425

2526
/**
2627
* Service-loaded provider for {@link StringValueParserProvider}.
2728
*/
28-
@Weight(Weighted.DEFAULT_WEIGHT)
29+
@Weight(DEFAULT_PICO_WEIGHT)
2930
public class DefaultStringValueParserProvider implements StringValueParserProvider {
3031
static final LazyValue<StringValueParser> INSTANCE = LazyValue.create(DefaultStringValueParser::new);
3132

pico/runtime/src/main/java/io/helidon/pico/runtime/DefaultPicoServicesProvider.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@
2020
import java.util.concurrent.atomic.AtomicReference;
2121

2222
import io.helidon.common.Weight;
23-
import io.helidon.common.Weighted;
2423
import io.helidon.pico.api.Bootstrap;
2524
import io.helidon.pico.api.PicoServices;
2625
import io.helidon.pico.api.Resettable;
2726
import io.helidon.pico.spi.PicoServicesProvider;
2827

2928
import jakarta.inject.Singleton;
3029

30+
import static io.helidon.pico.api.ServiceInfoBasics.DEFAULT_PICO_WEIGHT;
31+
3132
/**
3233
* The default implementation for {@link io.helidon.pico.spi.PicoServicesProvider}.
3334
* The first instance created (or first after calling deep {@link #reset}) will be the global services instance. The global
@@ -36,7 +37,7 @@
3637
* @see io.helidon.pico.api.PicoServices#picoServices()
3738
*/
3839
@Singleton
39-
@Weight(Weighted.DEFAULT_WEIGHT)
40+
@Weight(DEFAULT_PICO_WEIGHT)
4041
public class DefaultPicoServicesProvider implements PicoServicesProvider, Resettable {
4142
private static final AtomicReference<DefaultPicoServices> INSTANCE = new AtomicReference<>();
4243

0 commit comments

Comments
 (0)