@Override
protected CharSequence getSerializerBody() {
- final StringBuilder sb = new StringBuilder();
- sb.append("{\n");
- sb.append(statement(assign(DataObjectSerializerRegistry.class.getName(), REGISTRY, "$1")));
- sb.append(statement(assign(dtoType.getFullyQualifiedName(), INPUT,
- cast(dtoType.getFullyQualifiedName(), "$2"))));
- sb.append(statement(assign(BindingStreamEventWriter.class.getName(), STREAM,
- cast(BindingStreamEventWriter.class.getName(), "$3"))));
- sb.append(statement(assign(BindingSerializer.class.getName(), SERIALIZER, null)));
- sb.append("if (");
- sb.append(STREAM);
- sb.append(" instanceof ");
- sb.append(BindingSerializer.class.getName());
- sb.append(") {");
- sb.append(statement(assign(SERIALIZER, cast(BindingSerializer.class.getName(), STREAM))));
- sb.append('}');
- sb.append(statement(emitStartEvent()));
+ final StringBuilder sb = new StringBuilder()
+ .append("{\n")
+ .append(statement(assign(DataObjectSerializerRegistry.class, REGISTRY, "$1")))
+ .append(statement(assign(dtoType, INPUT, cast(dtoType, "$2"))))
+ .append(statement(assign(BindingStreamEventWriter.class, STREAM,
+ cast(BindingStreamEventWriter.class, "$3"))))
+ .append(statement(assign(BindingSerializer.class, SERIALIZER, null)))
+ .append("if (")
+ .append(STREAM)
+ .append(" instanceof ")
+ .append(BindingSerializer.class.getName())
+ .append(") {")
+ .append(statement(assign(SERIALIZER, cast(BindingSerializer.class, STREAM))))
+ .append('}')
+ .append(statement(emitStartEvent()));
emitBody(sb);
emitAfterBody(sb);
- sb.append(statement(endNode()));
- sb.append(statement("return null"));
- sb.append('}');
- return sb;
+
+ return sb.append(statement(endNode()))
+ .append(statement("return null"))
+ .append('}');
}
/**
staticConstant(propertyName, DataObjectSerializerImplementation.class,
ChoiceDispatchSerializer.from(loadClass(childType)));
sb.append(tryToUseCacheElse(getterName, statement(invoke(propertyName,
- StreamWriterGenerator.SERIALIZE_METHOD_NAME, REGISTRY, cast(DataObject.class.getName(), getterName),
- STREAM))));
+ StreamWriterGenerator.SERIALIZE_METHOD_NAME, REGISTRY, cast(DataObject.class, getterName), STREAM))));
}
}
import com.google.common.collect.UnmodifiableIterator;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
import org.opendaylight.mdsal.binding.model.api.Type;
+// FIXME: 5.0.0: consider optimizing streaming use through returning StringBuilder from common methods
public abstract class AbstractSource {
private final Set<StaticConstantDefinition> staticConstants = new HashSet<>();
private static StringBuilder commonInvoke(final CharSequence object, final String methodName) {
final StringBuilder sb = new StringBuilder();
if (object != null) {
- sb.append(object);
- sb.append('.');
+ sb.append(object).append('.');
}
return sb.append(methodName).append('(');
}
protected static final CharSequence assign(final String type, final String var, final CharSequence value) {
final StringBuilder sb = new StringBuilder();
if (type != null) {
- sb.append(type);
- sb.append(' ');
+ sb.append(type).append(' ');
}
return sb.append(var).append(" = ").append(value);
}
+ protected static final CharSequence assign(final Class<?> type, final String var, final CharSequence value) {
+ return assign(type.getName(), var, value);
+ }
+
protected static final CharSequence assign(final Type type, final String var, final CharSequence value) {
return assign(type.getFullyQualifiedName(), var, value);
}
+ protected static final CharSequence cast(final Class<?> type, final CharSequence value) {
+ return cast(type.getName(), value);
+ }
+
protected static final CharSequence cast(final Type type, final CharSequence value) {
return cast(type.getFullyQualifiedName(), value);
}
protected static final CharSequence forEach(final String iterable, final String iteratorName,
final String valueType, final String valueName, final CharSequence body) {
- final StringBuilder sb = new StringBuilder();
- sb.append(statement(assign(java.util.Iterator.class.getName(), iteratorName, invoke(iterable, "iterator"))));
- sb.append("while (").append(invoke(iteratorName, "hasNext")).append(") {\n");
- sb.append(statement(assign(valueType, valueName,cast(valueType, invoke(iteratorName, "next")))));
- sb.append(body);
- return sb.append("\n}\n");
+ return new StringBuilder()
+ .append(statement(assign(Iterator.class, iteratorName, invoke(iterable, "iterator"))))
+ .append("while (").append(invoke(iteratorName, "hasNext")).append(") {\n")
+ .append(statement(assign(valueType, valueName, cast(valueType, invoke(iteratorName, "next")))))
+ .append(body)
+ .append("\n}\n");
}
protected static final CharSequence statement(final CharSequence statement) {