Skip to content

Commit

Permalink
Merge pull request #42 from noleme/feature/definitions-in-adjuster
Browse files Browse the repository at this point in the history
Parser: changed VaultAdjuster argument from Variables to the whole Definitions container (BC break)
  • Loading branch information
eledhwen authored May 1, 2022
2 parents bf44384 + b6d30e8 commit 7a28bed
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 19 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Add the following in your `pom.xml`:
<dependency>
<groupId>com.noleme</groupId>
<artifactId>noleme-vault</artifactId>
<version>0.16.4</version>
<version>0.17</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.noleme</groupId>
<artifactId>noleme-vault</artifactId>
<version>0.16.4</version>
<version>0.17</version>
<packaging>jar</packaging>

<name>Noleme Vault</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ public Services set(String name, ServiceDefinition value)
return (Services) super.set(name, value);
}

public Services set(ServiceDefinition def)
{
return this.set(def.getIdentifier(), def);
}

@Override
public Services remove(String name)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,9 @@ public Tags register(Tag tag)

return this;
}

public Tags register(String tag, String service)
{
return this.register(new Tag(tag, service, null));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public Definitions extract(Collection<Source> sources, Definitions definitions,
this.launchModules(this.preModules, json, definitions);

for (VaultAdjuster adjuster : adjusters)
adjuster.adjust(definitions.variables());
adjuster.adjust(definitions);

this.launchModules(this.postModules, json, definitions);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.noleme.vault.parser.adjuster;

import com.noleme.vault.container.register.index.Variables;
import com.noleme.vault.container.register.Definitions;
import com.noleme.vault.exception.VaultParserException;

/**
Expand All @@ -11,8 +11,8 @@ public interface VaultAdjuster
{
/**
*
* @param variables
* @param definitions
* @throws VaultParserException
*/
void adjust(Variables variables) throws VaultParserException;
void adjust(Definitions definitions) throws VaultParserException;
}
4 changes: 2 additions & 2 deletions src/test/java/com/noleme/vault/factory/VariableListTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ void listVariableTest__validReference()
setEnv("MY_VAR", "my_value");

Assertions.assertDoesNotThrow(() -> Vault.with(
vars -> vars.set("provider.list.value", vars.get("my_list")),
defs -> defs.variables().set("provider.list.value", defs.variables().get("my_list")),
"com/noleme/vault/parser/variable/list_variable.yml",
"com/noleme/vault/parser/provider/provider.list.yml"
));
Expand All @@ -83,7 +83,7 @@ void listVariableTest__invalidReference()
setEnv("MY_VAR", "my_value");

Assertions.assertThrows(VaultInjectionException.class, () -> Vault.with(
vars -> vars.set("provider.list.value", vars.get("my_list")),
defs -> defs.variables().set("provider.list.value", defs.variables().get("my_list")),
"com/noleme/vault/parser/variable/list_variable.yml",
"com/noleme/vault/parser/provider/provider.list.invalid_reference.yml"
));
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/com/noleme/vault/factory/VariableMapTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ void mapVariableTest__validReference()
setEnv("MY_VAR", "my_value");

Assertions.assertDoesNotThrow(() -> Vault.with(
vars -> vars.set("provider.map.value", vars.get("my_map")),
defs -> defs.variables().set("provider.map.value", defs.variables().get("my_map")),
"com/noleme/vault/parser/variable/map_variable.yml",
"com/noleme/vault/parser/provider/provider.map.yml"
));
Expand All @@ -83,7 +83,7 @@ void mapVariableTest__invalidReference()
setEnv("MY_VAR", "my_value");

Assertions.assertThrows(VaultInjectionException.class, () -> Vault.with(
vars -> vars.set("provider.map.value", vars.get("my_map")),
defs -> defs.variables().set("provider.map.value", defs.variables().get("my_map")),
"com/noleme/vault/parser/variable/map_variable.yml",
"com/noleme/vault/parser/provider/provider.map.invalid_reference.yml"
));
Expand Down
43 changes: 34 additions & 9 deletions src/test/java/com/noleme/vault/parser/AdjusterTest.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
package com.noleme.vault.parser;

import com.noleme.vault.container.register.Definitions;
import com.noleme.vault.Vault;
import com.noleme.vault.container.definition.ServiceProvider;
import com.noleme.vault.container.definition.ServiceValue;
import com.noleme.vault.container.register.Definitions;
import com.noleme.vault.exception.VaultException;
import com.noleme.vault.exception.VaultParserException;
import com.noleme.vault.service.tag.ComponentService;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.List;

/**
* @author Pierre Lecerf ([email protected])
* Created on 2020/11/28
Expand All @@ -18,40 +24,59 @@ void testVariable() throws VaultParserException
var parser = new VaultCompositeParser();
int value = 1234;

Definitions def = parser.extract("com/noleme/vault/parser/simple.json", new Definitions(), vars -> {
vars.set("my_variable", value);
Definitions def = parser.extract("com/noleme/vault/parser/simple.json", new Definitions(), defs -> {
defs.variables().set("my_variable", value);
});

Assertions.assertEquals(value, def.variables().get("my_variable"));
}

@Test
void testResolving() throws VaultParserException
void testService() throws VaultException
{
var component = new ComponentService("adjusted");

var vault = Vault.with("com/noleme/vault/parser/tag/composite.yml", defs -> {
defs.services().set(new ServiceValue<>("my_component", component));
defs.tags().register("composite_service_components", "my_component");
});

List<ComponentService> tagged = vault.instance(List.class, "composite_service_components");

Assertions.assertNotNull(vault.instance(ComponentService.class));
Assertions.assertEquals(1, tagged.size());
Assertions.assertEquals(component.value(), tagged.get(0).value());
}

@Test
void testVariableResolving() throws VaultParserException
{
var parser = new VaultCompositeParser();
var string = "this is an entirely new string";

Definitions defA = parser.extract("com/noleme/vault/parser/simple.json");
Assertions.assertEquals("SomeString", ((ServiceProvider)defA.services().get("provider.string")).getMethodArgs()[0]);

Definitions defB = parser.extract("com/noleme/vault/parser/simple.json", new Definitions(), vars -> {
vars.set("provider.string.base_value", string);
Definitions defB = parser.extract("com/noleme/vault/parser/simple.json", new Definitions(), defs -> {
defs.variables().set("provider.string.base_value", string);
});
Assertions.assertEquals(string, ((ServiceProvider)defB.services().get("provider.string")).getMethodArgs()[0]);
}

@Test
void testReplacement() throws VaultParserException
void testVariableReplacement() throws VaultParserException
{
var parser = new VaultCompositeParser();
var string = "this is an entirely new string";

Definitions defA = parser.extract("com/noleme/vault/parser/simple.json");
Assertions.assertEquals("SomeString", ((ServiceProvider)defA.services().get("provider.string")).getMethodArgs()[0]);

Definitions defB = parser.extract("com/noleme/vault/parser/simple.json", new Definitions(), vars -> {
vars.set("provider.string.value", string);
Definitions defB = parser.extract("com/noleme/vault/parser/simple.json", new Definitions(), defs -> {
defs.variables().set("provider.string.value", string);
});
Assertions.assertEquals(string, ((ServiceProvider)defB.services().get("provider.string")).getMethodArgs()[0]);
}

public static class AdjustedService {}
}

0 comments on commit 7a28bed

Please sign in to comment.