spoon.pattern.internal.parameter.MapParameterInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spoon-core Show documentation
Show all versions of spoon-core Show documentation
Spoon is a tool for meta-programming, analysis and transformation of Java programs.
/*
* SPDX-License-Identifier: (MIT OR CECILL-C)
*
* Copyright (C) 2006-2023 INRIA and contributors
*
* Spoon is available either under the terms of the MIT License (see LICENSE-MIT.txt) or the Cecill-C License (see LICENSE-CECILL-C.txt). You as the user are entitled to choose the terms under which to adopt Spoon.
*/
package spoon.pattern.internal.parameter;
import java.util.Map;
import java.util.function.Function;
import spoon.support.util.ImmutableMap;
import spoon.support.util.ImmutableMapImpl;
/**
* A kind of {@link ParameterInfo} which returns value by the named parameter
* From a container of type {@link ImmutableMap} or {@link Map}
*/
public class MapParameterInfo extends AbstractParameterInfo {
private final String name;
public MapParameterInfo(String name) {
this(name, null);
}
public MapParameterInfo(AbstractParameterInfo next) {
this(null, next);
}
public MapParameterInfo(String name, AbstractParameterInfo next) {
super(next);
this.name = name;
}
@Override
protected String getPlainName() {
return getWrappedName(getContainerName());
}
@Override
protected String getWrappedName(String containerName) {
if (name == null) {
return containerName;
}
if (!containerName.isEmpty()) {
containerName += ".";
}
return containerName + name;
}
@Override
protected Object addValueAs(Object container, Function