import static com.google.common.base.Preconditions.checkState;
import static java.lang.String.format;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Optional;
+import com.google.common.collect.Lists;
import java.io.Closeable;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
-
+import javax.lang.model.element.Modifier;
import org.opendaylight.controller.config.api.runtime.HierarchicalRuntimeBeanRegistration;
import org.opendaylight.controller.config.api.runtime.RootRuntimeBeanRegistrator;
import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry;
import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Annotation;
-import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Annotation.Parameter;
import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Field;
import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.MethodDefinition;
import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.FullyQualifiedNameHelper;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Lists;
-
public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate {
private RuntimeRegistratorFtlTemplate(RuntimeBeanEntry runtimeBeanEntry,
String name, List<Field> fields, List<MethodDefinition> methods) {
// TODO header
super(null, runtimeBeanEntry.getPackageName(), name, Collections
- .<String> emptyList(), Arrays.asList(Closeable.class
+ .emptyList(), Collections.singletonList(Closeable.class
.getCanonicalName()), fields, methods);
}
private static String constructConstructorBody(
List<Field> constructorParameters) {
- StringBuffer constructorBody = new StringBuffer();
+ StringBuilder constructorBody = new StringBuilder();
for (Field field : constructorParameters) {
constructorBody.append("this.");
constructorBody.append(field.getName());
String registratorName = getJavaNameOfRuntimeRegistrator(rootRB);
List<MethodDefinition> methods = new ArrayList<>();
Field rootRuntimeBeanRegistratorField = new Field(
- Lists.newArrayList("final"),
+ Collections.singletonList(Modifier.FINAL),
RootRuntimeBeanRegistrator.class.getName(),
"rootRuntimeBeanRegistrator");
List<Field> constructorParameters = Lists
registratorName, constructorParameters, constructorBody);
methods.add(constructor);
- LinkedHashMap<String, RuntimeRegistratorFtlTemplate> RuntimeRegistratorFtlTemplates = createRegistrationHierarchy(
- rootRB, Collections.<String> emptySet());
+ LinkedHashMap<String, RuntimeRegistratorFtlTemplate> RuntimeRegistratorFtlTemplates =
+ createRegistrationHierarchy(rootRB, Collections.emptySet());
RuntimeRegistratorFtlTemplate rootFtlFile = RuntimeRegistratorFtlTemplates
.values().iterator().next();
StringBuilder registerBody = new StringBuilder();
registerBody.append(format("%s %s = this.%s.registerRoot(%s);\n",
HierarchicalRuntimeBeanRegistration.class
- .getCanonicalName(), hierachchicalRegistration
+ .getCanonicalName(), hierachicalRegistration
.getName(), rootRuntimeBeanRegistratorField
.getName(), rbParameter.getName()));
registerBody.append(format("return new %s(%s);\n",
rootFtlFile.getFullyQualifiedName(),
- hierachchicalRegistration.getName()));
+ hierachicalRegistration.getName()));
MethodDefinition registerMethod = new MethodDefinition(
childRegistratorFQN, "register",
- Arrays.asList(rbParameter), registerBody.toString());
+ Collections.singletonList(rbParameter), registerBody.toString());
methods.add(registerMethod);
}
// TODO add header
GeneralClassTemplate registrator = new GeneralClassTemplate(null,
rootRB.getPackageName(), registratorName,
- Collections.<String> emptyList(), Arrays.asList(Closeable.class
- .getCanonicalName()), constructorParameters, methods);
+ Collections.emptyList(), Collections.singletonList(Closeable.class
+ .getCanonicalName()), constructorParameters, methods);
- checkState(RuntimeRegistratorFtlTemplates.containsKey(registrator
- .getTypeDeclaration().getName()) == false, "Name conflict: "
+ checkState(!RuntimeRegistratorFtlTemplates.containsKey(registrator
+ .getTypeDeclaration().getName()), "Name conflict: "
+ registrator.getTypeDeclaration().getName());
Map<String, FtlTemplate> result = new HashMap<>();
result.putAll(RuntimeRegistratorFtlTemplates);
return result;
}
- private static Field hierachchicalRegistration = new Field(
- Lists.newArrayList("final"),
+ private static Field hierachicalRegistration = new Field(
+ Collections.singletonList(Modifier.FINAL),
HierarchicalRuntimeBeanRegistration.class.getCanonicalName(),
"registration");
Set<String> currentOccupiedKeys = new HashSet<>(occupiedKeys);
currentOccupiedKeys.add(parent.getJavaNamePrefix());
- Field registratorsMapField = new Field(Arrays.asList("final"),
+ Field registratorsMapField = new Field(Collections.singletonList(Modifier.FINAL),
TypeHelper.getGenericType(Map.class, String.class,
AtomicInteger.class), "unkeyedMap", "new "
+ TypeHelper.getGenericType(HashMap.class,
"String key = \"%s\"; //TODO: check for conflicts\n",
key));
- if (child.getKeyJavaName().isPresent()) {
- value = "bean.get" + child.getKeyJavaName().get() + "()";
+ Optional<String> childKeyJavaName = child.getKeyJavaName();
+ if (childKeyJavaName.isPresent()) {
+ value = "bean.get" + childKeyJavaName.get() + "()";
value = "String.valueOf(" + value + ")";
} else {
body.append("java.util.concurrent.atomic.AtomicInteger counter = unkeyedMap.get(key);\n"
body.append(format("String value = %s;\n", value));
body.append(format("%s r = %s.register(key, value, bean);\n",
HierarchicalRuntimeBeanRegistration.class
- .getCanonicalName(), hierachchicalRegistration
+ .getCanonicalName(), hierachicalRegistration
.getName()));
body.append(format("return new %s(r);",
childRegistrator.getFullyQualifiedName()));
- Field param = new Field(Lists.newArrayList("final"),
+ Field param = new Field(Collections.singletonList(Modifier.FINAL),
child.getJavaNameOfRuntimeMXBean(), "bean");
MethodDefinition register = new MethodDefinition(
- Arrays.asList("synchronized"),
+ Collections.singletonList(Modifier.SYNCHRONIZED),
childRegistrator.getFullyQualifiedName(), "register",
- Arrays.asList(param), Collections.<String> emptyList(),
- Collections.<Annotation> emptyList(), body.toString());
+ Collections.singletonList(param), Collections.emptyList(),
+ Collections.emptyList(), body.toString());
methods.add(register);
}
// create parent registration
String createdName = getJavaNameOfRuntimeRegistration(parent.getJavaNamePrefix());
- List<Field> constructorParameters = Arrays
- .asList(hierachchicalRegistration);
+ List<Field> constructorParameters = Collections.singletonList(hierachicalRegistration);
String constructorBody = constructConstructorBody(constructorParameters);
MethodDefinition constructor = MethodDefinition.createConstructor(
createdName, constructorParameters, constructorBody);
- MethodDefinition closeRegistrator = createCloseMethodToCloseField(hierachchicalRegistration);
+ MethodDefinition closeRegistrator = createCloseMethodToCloseField(hierachicalRegistration);
methods.add(closeRegistrator);
methods.add(constructor);
List<Field> privateFields = Lists.newArrayList(registratorsMapField);
LinkedHashMap<String, RuntimeRegistratorFtlTemplate> result = new LinkedHashMap<>();
result.put(created.getTypeDeclaration().getName(), created);
- checkState(unorderedResult.containsKey(created.getTypeDeclaration()
- .getName()) == false, "Naming conflict: "
+ checkState(!unorderedResult.containsKey(created.getTypeDeclaration()
+ .getName()), "Naming conflict: "
+ created.getTypeDeclaration().getName());
result.putAll(unorderedResult);
return result;
// Arrays.asList(IOException.class.getCanonicalName()),
// Collections.<Annotation> emptyList(), body);
List<Annotation> annotations = Lists.newArrayList(new Annotation(
- "Override", Collections.<Parameter> emptyList()));
- return new MethodDefinition(Collections.<String> emptyList(), "void",
- "close", Collections.<Field> emptyList(),
- Collections.<String> emptyList(), annotations, body);
+ "Override", Collections.emptyList()));
+ return new MethodDefinition(Collections.emptyList(), "void",
+ "close", Collections.emptyList(),
+ Collections.emptyList(), annotations, body);
}
@VisibleForTesting