Skip to content

Commit

Permalink
fix more comments from ivan
Browse files Browse the repository at this point in the history
  • Loading branch information
Yavor16 committed Feb 10, 2024
1 parent e6e54d7 commit 59ae69b
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,11 @@ protected ResourcePlaceholderResolver getResourceResolver(Resource resource) {
propertiesResolverBuilder,
parametersResolverBuilder,
singularToPluralMapping,
dynamicResolvableParameters);
dynamicResolvableParameters,
resourceLiveParameterResolver);
}

protected List<Resource> getResolvedResources() {
deploymentDescriptor.getResources()
.forEach(resourceLiveParameterResolver::resolveResource);
return deploymentDescriptor.getResources()
.stream()
.map(resource -> getResourceResolver(resource).resolve())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,25 @@
import java.util.Map;
import java.util.Optional;

import org.cloudfoundry.multiapps.mta.model.*;
import org.cloudfoundry.multiapps.mta.model.DeploymentDescriptor;
import org.cloudfoundry.multiapps.mta.model.Module;
import org.cloudfoundry.multiapps.mta.model.ProvidedDependency;
import org.cloudfoundry.multiapps.mta.model.Resource;
import org.cloudfoundry.multiapps.mta.resolvers.Reference;
import org.cloudfoundry.multiapps.mta.resolvers.ReferencePattern;

public class ResourceLiveParameterResolver {

private static final String CONFIG = "config";
private static final String DEFAULT_URL = "${default-url}";
private static final String DEFAULT_URL_PLACEHOLDER = "${default-url}";
private static final String DEFAULT_URI_PLACEHOLDER = "${default-uri}";
private static final String DEFAULT_HOST_PLACEHOLDER = "${default-host}";
private static final String DEFAULT_LIVE_URL = "default-live-url";
private static final String DEFAULT_LIVE_HOST = "default-live-host";
private static final String DEFAULT_LIVE_URI = "default-live-uri";
private static final Map<String, String> idleToLiveParameterPairs = Map.of(DEFAULT_URL_PLACEHOLDER, DEFAULT_LIVE_URL,
DEFAULT_URI_PLACEHOLDER, DEFAULT_LIVE_URI,
DEFAULT_HOST_PLACEHOLDER, DEFAULT_LIVE_HOST);
private DeploymentDescriptor deploymentDescriptor;

public ResourceLiveParameterResolver(DeploymentDescriptor deploymentDescriptor) {
Expand Down Expand Up @@ -70,13 +79,8 @@ private void updateMapFromModule(Resource resource, Reference ref, Module module
.filter(dp -> dp.getName()
.equals(ref.getDependencyName()))
.findAny();
Optional<RequiredDependency> resourceRequiredDependencyOpt = resource.getRequiredDependencies()
.stream()
.filter(reqDp -> reqDp.getName()
.equals(ref.getDependencyName()))
.findAny();

if (moduleProvidedDependencyOpt.isPresent() && resourceRequiredDependencyOpt.isPresent()) {
if (moduleProvidedDependencyOpt.isPresent()) {
Object requiredDependencyValue = moduleProvidedDependencyOpt.get()
.getProperties()
.get(ref.getKey());
Expand All @@ -92,13 +96,17 @@ private void updateMapFromModule(Resource resource, Reference ref, Module module
}

private boolean isStringValueReplaceable(Object object) {
return object instanceof String && castToString(object).contains(DEFAULT_URL);
return object instanceof String && idleToLiveParameterPairs.keySet()
.stream()
.anyMatch(defaultParamPlaceholder -> castToString(object).contains(defaultParamPlaceholder));
}

private void replaceValueInResourceParameter(Module module, String resourceParameterValue, Map.Entry<String, Object> resourceParameter,
Reference reference, String requiredDependencyValueString) {
requiredDependencyValueString = requiredDependencyValueString.replace(DEFAULT_URL, castToString(module.getParameters()
.get(DEFAULT_LIVE_URL)));
Map.Entry<String, String> requiredIdleToLiveParameterPair = getMapEntryOnCondition(requiredDependencyValueString);
requiredDependencyValueString = requiredDependencyValueString.replace(requiredIdleToLiveParameterPair.getKey(),
castToString(module.getParameters()
.get(requiredIdleToLiveParameterPair.getValue())));
requiredDependencyValueString = resourceParameterValue.replace(reference.getMatchedPattern(), requiredDependencyValueString);

resourceParameter.setValue(requiredDependencyValueString);
Expand All @@ -111,13 +119,22 @@ private void resolveModuleProvidedDependency(Map<String, Object> requiredDepende

private void updateModuleDependencyFromMap(Module module, Map.Entry<String, Object> entry) {
if (isStringValueReplaceable(entry.getValue())) {
entry.setValue(castToString(entry.getValue()).replace(DEFAULT_URL, castToString(module.getParameters()
.get(DEFAULT_LIVE_URL))));
var idleToLiveParameterPair = getMapEntryOnCondition(castToString(entry.getValue()));
entry.setValue(castToString(entry.getValue()).replace(idleToLiveParameterPair.getKey(), castToString(module.getParameters()
.get(idleToLiveParameterPair.getValue()))));
} else if (entry.getValue() instanceof Map) {
resolveModuleProvidedDependency(castToMap(entry.getValue()), module);
}
}

private Map.Entry<String, String> getMapEntryOnCondition(String replaceableString) {
return idleToLiveParameterPairs.entrySet()
.stream()
.filter(idleToLiveParameterPair -> replaceableString.contains(idleToLiveParameterPair.getKey()))
.findFirst()
.get();
}

private boolean isModuleNeeded(Module module, String name) {
return module.getProvidedDependencies()
.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,24 @@ public class ResourcePlaceholderResolver extends PlaceholderResolver<Resource> {
protected final ParametersChainBuilder parametersChainBuilder;
protected final ResolverBuilder propertiesResolverBuilder;
protected final ResolverBuilder parametersResolverBuilder;
protected final ResourceLiveParameterResolver resourceLiveParameterResolver;

public ResourcePlaceholderResolver(Resource resource, String prefix, ParametersChainBuilder parametersChainBuilder,
ResolverBuilder propertiesResolverBuilder, ResolverBuilder parametersResolverBuilder,
Map<String, String> singularToPluralMapping, Set<String> dynamicResolvableParameters) {
Map<String, String> singularToPluralMapping, Set<String> dynamicResolvableParameters,
ResourceLiveParameterResolver resourceLiveParameterResolver) {
super(resource.getName(), prefix, singularToPluralMapping, dynamicResolvableParameters);
this.resource = resource;
this.parametersChainBuilder = parametersChainBuilder;
this.propertiesResolverBuilder = propertiesResolverBuilder;
this.parametersResolverBuilder = parametersResolverBuilder;
this.resourceLiveParameterResolver = resourceLiveParameterResolver;
}

@Override
public Resource resolve() throws ContentException {
String resourceName = resource.getName();
resourceLiveParameterResolver.resolveResource(resource);
List<Map<String, Object>> parametersChain = parametersChainBuilder.buildResourceChain(resourceName);
addSingularParametersIfNecessary(parametersChain);
Map<String, Object> mergedParameters = PropertiesUtil.mergeProperties(parametersChain);
Expand All @@ -42,14 +46,14 @@ public Resource resolve() throws ContentException {

protected Map<String, Object> getResolvedProperties(Map<String, Object> mergedParametersChain) {
return new PropertiesPlaceholderResolver(propertiesResolverBuilder, dynamicResolvableParameters).resolve(resource.getProperties(),
mergedParametersChain,
prefix);
mergedParametersChain,
prefix);
}

protected Map<String, Object> getResolvedParameters(Map<String, Object> mergedParametersChain) {
return new PropertiesPlaceholderResolver(parametersResolverBuilder, dynamicResolvableParameters).resolve(resource.getParameters(),
mergedParametersChain,
prefix);
mergedParametersChain,
prefix);
}

}

0 comments on commit 59ae69b

Please sign in to comment.