import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import java.util.regex.Pattern;
import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext;
import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration;
import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration.Pair;
private static final Splitter DOT_SPLITTER = Splitter.on('.');
private static final Splitter UNDERSCORE_SPLITTER = Splitter.on(UNDERSCORE);
+ private static final Pattern DOUBLE_UNDERSCORE_PATTERN = Pattern.compile("__", Pattern.LITERAL);
+
// Converted to lower case
private static final Set<String> WINDOWS_RESERVED_WORDS = BindingMapping.WINDOWS_RESERVED_WORDS.stream()
.map(String::toLowerCase).collect(ImmutableSet.toImmutableSet());
* @return - java acceptable identifier
*/
static String normalizeClassIdentifier(final String packageName, final String className,
- ModuleContext context) {
+ final ModuleContext context) {
if (packageName.isEmpty() && PRIMITIVE_TYPES.contains(className)) {
return className;
}
sb.append(actualChar);
}
}
+
// apply camel case in appropriate way
- return fixCasesByJavaType(sb.toString().replace("__", "_").toLowerCase(), javaIdentifier);
+ return fixCasesByJavaType(DOUBLE_UNDERSCORE_PATTERN.matcher(sb).replaceAll("_").toLowerCase(), javaIdentifier);
}
/**
* @return converted identifier
*/
private static String normalizeClassIdentifier(final String packageName, final String origClassName,
- final String actualClassName, final int rank, ModuleContext context) {
+ final String actualClassName, final int rank, final ModuleContext context) {
final ListMultimap<String, String> packagesMap = context.getPackagesMap();
for (final String existingName : packagesMap.get(packageName)) {
if (actualClassName.equalsIgnoreCase(existingName)) {
return normalizeClassIdentifier(packageName, origClassName, origClassName + rank,
- rank + 1, context);
+ rank + 1, context);
}
}
}
import com.google.common.collect.Lists;
import java.util.List;
import java.util.StringTokenizer;
+import java.util.regex.Pattern;
import org.opendaylight.mdsal.binding.javav2.generator.util.Types;
import org.opendaylight.mdsal.binding.javav2.model.api.AccessModifier;
import org.opendaylight.mdsal.binding.javav2.model.api.ConcreteType;
private static final CharMatcher LT_MATCHER = CharMatcher.is('<');
private static final Splitter NL_SPLITTER = Splitter.on(NL_MATCHER);
+ private static final Pattern TAIL_COMMENT_PATTERN = Pattern.compile("*/", Pattern.LITERAL);
+ private static final Pattern MULTIPLE_SPACES_PATTERN = Pattern.compile(" +");
+
private TextTemplateUtil() {
throw new UnsupportedOperationException("Util class");
}
.append(typeName)
.append(" set")
.append(toFirstUpper(field.getName()))
- .append("(")
+ .append('(')
.append(returnTypeName)
.append(" value) {\n this.")
.append(fieldName(field))
final StringBuilder lineBuilder = new StringBuilder();
final String lineIndent = Strings.repeat(" ", nextLineIndent);
final String textToFormat = NEWLINE_OR_TAB.removeFrom(encodeJavadocSymbols(text));
- final String formattedText = textToFormat.replaceAll(" +", " ");
+ final String formattedText = MULTIPLE_SPACES_PATTERN.matcher(textToFormat).replaceAll(" ");
final StringTokenizer tokenizer = new StringTokenizer(formattedText, " ", true);
while (tokenizer.hasMoreElements()) {
}
private static String encodeJavadocSymbols(final String description) {
- if (description == null || description.isEmpty()) {
- return description;
- }
- final String ret = description.replace("*/", "*/");
- return AMP_MATCHER.replaceFrom(ret, "&");
+ return Strings.isNullOrEmpty(description) ? description
+ : AMP_MATCHER.replaceFrom(TAIL_COMMENT_PATTERN.matcher(description).replaceAll("*/"), "&");
}
}
\ No newline at end of file