Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

import com.predic8.membrane.annot.*;

import java.util.List;
import java.util.*;

public interface BeanRegistry {

Expand All @@ -25,6 +25,8 @@ public interface BeanRegistry {

void registerBeanDefinitions(List<BeanDefinition> beanDefinitions);

void start();

Grammar getGrammar();

}
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ public class BeanRegistryImplementation implements BeanRegistry {
/**
* TODO Rename give meaningful name
*/
private final ConcurrentHashMap<String, Object> uuidMap = new ConcurrentHashMap<>();
private final ConcurrentHashMap<String, Object> uuidMap = new ConcurrentHashMap<>(); // Order is here not critical

private final BlockingQueue<ChangeEvent> changeEvents = new LinkedBlockingDeque<>();

// uid -> bean definition
private final Map<String, BeanDefinition> bds = new ConcurrentHashMap<>();
private final Set<String> uidsToActivate = ConcurrentHashMap.newKeySet();
private final Map<String, BeanDefinition> bds = new ConcurrentHashMap<>(); // Order is not critical. Order is determined by uidsToActivate
private final Set<String> uidsToActivate = new LinkedHashSet<>(); // Provides order

public BeanRegistryImplementation(BeanCacheObserver observer, Grammar grammar) {
this.observer = observer;
Expand All @@ -51,12 +51,8 @@ public BeanRegistryImplementation(BeanCacheObserver observer, Grammar grammar) {
public void registerBeanDefinitions(List<BeanDefinition> bds) {
bds.forEach(bd -> handle(ADDED, bd));
fireConfigurationLoaded(); // Only put event in the queue
start();
}

/**
* Blocks until all events have been processed. For Kubernets use that block in a separate thread e.g. in KubernetsWatcher.
*/
public void start() {
while (!changeEvents.isEmpty()) {
try {
Expand Down Expand Up @@ -92,7 +88,6 @@ public void handle(WatchAction action, JsonNode node) {

/**
* May be called from multiple threads.
*
* TODO remove action?
*/
public void handle(WatchAction action, BeanDefinition bd) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public YamlParser(String resourceName) throws ClassNotFoundException, NoSuchMeth
beanRegistry = new BeanRegistryImplementation(getLatchObserver(cdl),generator);
beanRegistry.registerBeanDefinitions(GenericYamlParser.parseMembraneResources(
requireNonNull(cl.getResourceAsStream(normalized)), generator));
beanRegistry.start();

cdl.await();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,10 @@ private static Router initRouterByYAML(String location) throws Exception {
router.setAsynchronousInitialization(true);
router.start();

new BeanRegistryImplementation(router, new GrammarAutoGenerated()).registerBeanDefinitions(parseMembraneResources(router.getResolverMap().resolve(location), new GrammarAutoGenerated()));
GrammarAutoGenerated grammar = new GrammarAutoGenerated();
BeanRegistry registry = new BeanRegistryImplementation(router, grammar);
registry.registerBeanDefinitions(parseMembraneResources(router.getResolverMap().resolve(location), grammar));
registry.start();

return router;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,11 @@ public void registerBeanDefinitions(List<BeanDefinition> beanDefinitions) {

}

@Override
public void start() {

}

@Override
public Grammar getGrammar() {
return null;
Expand Down
Loading