Skip to content

Commit ffbda71

Browse files
committed
refactor: move restx.config from core to factory
- ConfigLoader is no more annotated with @component, a FactoryMachine have been implemented to provides ConfigLoader components: ConfigLoaderFactoryMachine - new FactoryMachine in restx-factory have been declared in META-INF/services/restx.factory.FactoryMachine (ConsolidatedConfigFactoryMachine, ElementsFromConfigFactoryMachine and ConfigLoaderFactoryMachine) - In FactoryTest ElementsFromConfig component is deactivated, it can not be build because of "missing.dependency" injected in "mandatory.dep.result1" component (from TestMandatoryDependency module). This commit don't change the fact that restx-core-annotation-processor and restx-core should be used as dependencies in order to use @Settings, @SettingsKey and ConfigSupplier. Next thing to do is to move SettingsAnnotationProcessor in restx-factory.
1 parent 1a48982 commit ffbda71

9 files changed

Lines changed: 96 additions & 19 deletions

File tree

restx-factory-testing/src/test/java/restx/factory/FactoryTest.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
package restx.factory;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.assertj.core.api.Assertions.tuple;
5+
6+
37
import com.google.common.base.Optional;
8+
import org.junit.BeforeClass;
49
import org.junit.Test;
5-
import restx.factory.TestComponentPriorities.V;
610

7-
import static org.assertj.core.api.Assertions.assertThat;
8-
import static org.assertj.core.api.Assertions.tuple;
11+
import restx.factory.TestComponentPriorities.V;
912

1013
/**
1114
* @author fcamblor
1215
*/
1316
public class FactoryTest {
17+
18+
/**
19+
* ElementsFromConfig component can not be build, because of module TestMandatoryDependency
20+
* which use a missing dependency.
21+
*/
22+
@BeforeClass
23+
public static void deactivateElementsFromConfig() {
24+
System.setProperty("restx.activation::restx.factory.FactoryMachine::ElementsFromConfig", "false");
25+
}
26+
1427
@Test
1528
public void should_optional_dependency_works_and_not_be_injected_when_absent(){
1629
// check that we don't get a stack overflow error due to box closing the factory

restx-core/src/main/java/restx/config/ConfigLoader.java renamed to restx-factory/src/main/java/restx/config/ConfigLoader.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,26 @@
66
import com.google.common.io.Resources;
77
import org.slf4j.Logger;
88
import org.slf4j.LoggerFactory;
9-
import restx.common.ConfigElement;
10-
import restx.common.RestxConfig;
11-
import restx.common.StdRestxConfig;
12-
import restx.factory.Component;
139

14-
import javax.inject.Named;
1510
import java.io.IOException;
1611
import java.net.URL;
1712
import java.util.ArrayList;
1813
import java.util.List;
14+
import restx.common.ConfigElement;
15+
import restx.common.RestxConfig;
16+
import restx.common.StdRestxConfig;
1917

2018
/**
2119
* User: xavierhanin
2220
* Date: 9/24/13
2321
* Time: 11:54 PM
2422
*/
25-
@Component
2623
public class ConfigLoader {
2724
private final static Logger logger = LoggerFactory.getLogger(ConfigLoader.class);
2825

2926
private final String env;
3027

31-
public ConfigLoader(@Named("env") Optional<String> env) {
28+
public ConfigLoader(Optional<String> env) {
3229
this.env = env.or("default");
3330
}
3431

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package restx.config;
2+
3+
import com.google.common.collect.ImmutableSet;
4+
5+
import restx.factory.BillOfMaterials;
6+
import restx.factory.BoundlessComponentBox;
7+
import restx.factory.Factory;
8+
import restx.factory.Machine;
9+
import restx.factory.Name;
10+
import restx.factory.SatisfiedBOM;
11+
import restx.factory.SingleNameFactoryMachine;
12+
import restx.factory.StdMachineEngine;
13+
14+
/**
15+
* Machine for {@link ConfigLoader}.
16+
*/
17+
@Machine
18+
public class ConfigLoaderFactoryMachine extends SingleNameFactoryMachine<ConfigLoader> {
19+
public static final Name<ConfigLoader> NAME = Name.of(ConfigLoader.class, "ConfigLoader");
20+
21+
public ConfigLoaderFactoryMachine() {
22+
super(0, new StdMachineEngine<ConfigLoader>(NAME, 0, BoundlessComponentBox.FACTORY) {
23+
private final Factory.Query<String> env = Factory.Query.byName(Name.of(String.class, "env")).optional();
24+
25+
@Override
26+
public BillOfMaterials getBillOfMaterial() {
27+
return new BillOfMaterials(ImmutableSet.<Factory.Query<?>>of(
28+
env
29+
));
30+
}
31+
32+
@Override
33+
protected ConfigLoader doNewComponent(SatisfiedBOM satisfiedBOM) {
34+
return new ConfigLoader(
35+
satisfiedBOM.getOneAsComponent(env)
36+
);
37+
}
38+
});
39+
}
40+
}

restx-core/src/main/java/restx/config/ConfigSupplier.java renamed to restx-factory/src/main/java/restx/config/ConfigSupplier.java

File renamed without changes.

restx-core/src/main/java/restx/config/ConsolidatedConfigFactoryMachine.java renamed to restx-factory/src/main/java/restx/config/ConsolidatedConfigFactoryMachine.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,29 @@
11
package restx.config;
22

3+
import static com.google.common.collect.Iterables.addAll;
4+
5+
36
import com.google.common.base.Optional;
47
import com.google.common.collect.Iterables;
8+
9+
import java.util.ArrayList;
10+
import java.util.Collections;
11+
import java.util.List;
12+
import java.util.Map;
13+
import java.util.Set;
514
import restx.common.ConfigElement;
615
import restx.common.RestxConfig;
716
import restx.common.StdRestxConfig;
8-
import restx.factory.*;
9-
10-
import java.util.*;
11-
12-
import static com.google.common.collect.Iterables.addAll;
17+
import restx.factory.BillOfMaterials;
18+
import restx.factory.BoundlessComponentBox;
19+
import restx.factory.Factory;
20+
import restx.factory.FactoryMachine;
21+
import restx.factory.Machine;
22+
import restx.factory.MachineEngine;
23+
import restx.factory.Name;
24+
import restx.factory.NamedComponent;
25+
import restx.factory.SatisfiedBOM;
26+
import restx.factory.StdMachineEngine;
1327

1428
/**
1529
* User: xavierhanin

restx-core/src/main/java/restx/config/ElementsFromConfigFactoryMachine.java renamed to restx-factory/src/main/java/restx/config/ElementsFromConfigFactoryMachine.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,22 @@
55
import com.google.common.base.Strings;
66
import com.google.common.collect.Iterables;
77
import com.google.common.collect.Sets;
8-
import restx.common.ConfigElement;
9-
import restx.common.RestxConfig;
10-
import restx.factory.*;
118

129
import java.util.Collections;
1310
import java.util.Set;
11+
import restx.common.ConfigElement;
12+
import restx.common.RestxConfig;
13+
import restx.factory.BillOfMaterials;
14+
import restx.factory.BoundlessComponentBox;
15+
import restx.factory.DefaultFactoryMachine;
16+
import restx.factory.Factory;
17+
import restx.factory.FactoryMachine;
18+
import restx.factory.Machine;
19+
import restx.factory.MachineEngine;
20+
import restx.factory.Name;
21+
import restx.factory.NoDepsMachineEngine;
22+
import restx.factory.SatisfiedBOM;
23+
import restx.factory.StdMachineEngine;
1424

1525
/**
1626
* User: xavierhanin
File renamed without changes.

restx-core/src/main/java/restx/config/SettingsKey.java renamed to restx-factory/src/main/java/restx/config/SettingsKey.java

File renamed without changes.
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
restx.factory.SystemPropertyFactoryMachine
1+
restx.factory.SystemPropertyFactoryMachine
2+
restx.config.ConfigLoaderFactoryMachine
3+
restx.config.ConsolidatedConfigFactoryMachine
4+
restx.config.ElementsFromConfigFactoryMachine

0 commit comments

Comments
 (0)