import java.util.List;
import org.junit.Test;
import org.opendaylight.mdsal.binding.javav2.generator.api.BindingGenerator;
+import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration;
import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedProperty;
import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTransferObject;
import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType;
public class BindingGeneratorImplTest {
+ @Test
+ public void generatedTypesEnumTest() throws Exception {
+ final BindingGenerator bg = new BindingGeneratorImpl(false);
+ final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/apple-test.yang");
+ final List<Type> generateTypes = bg.generateTypes(context);
+ assertNotNull(generateTypes);
+ assertTrue(!generateTypes.isEmpty());
+ for (final Type type : generateTypes) {
+ if (type.getName().equals("Apple") && type.getPackageName()
+ .equals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.apple.rev170503.data")) {
+ final GeneratedType gt = (GeneratedType) type;
+ final Enumeration enumeration = gt.getEnumerations().get(0);
+ assertEquals("Apple1", enumeration.getName());
+ assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.apple.rev170503.data.Apple",
+ enumeration.getPackageName());
+ assertEquals("apple", enumeration.getValues().get(0).getName());
+ assertEquals("APPLE", enumeration.getValues().get(0).getMappedName());
+ assertEquals("apple1", enumeration.getValues().get(1).getName());
+ assertEquals("APPLE1", enumeration.getValues().get(1).getMappedName());
+ }
+ }
+ }
+
@Test
public void generatedTypesTest() throws Exception {
final BindingGenerator bg = new BindingGeneratorImpl(false);
import com.google.common.collect.ListMultimap;
import java.util.List;
import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration;
import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration.Pair;
import org.opendaylight.mdsal.binding.javav2.util.BindingMapping;
final String[] packageNameParts = fullPackageName.split("\\.");
final StringBuilder sb = new StringBuilder();
for (int i = 0; i < packageNameParts.length; i++) {
- sb.append(normalizePartialPackageName(packageNameParts[i]));
+ String normalizedPartialPackageName = normalizePartialPackageName(packageNameParts[i]);
+
+ // check if fullPackageName contains class name at the end and
+ // capitalize last part of normalized package name
+ if (packageNameParts.length != 1 && i == packageNameParts.length - 1
+ && Character.isUpperCase(packageNameParts[i].charAt(FIRST_CHAR))) {
+ normalizedPartialPackageName = StringUtils.capitalize(normalizedPartialPackageName);
+ }
+
+ sb.append(normalizedPartialPackageName);
+
if (i != (packageNameParts.length - 1)) {
sb.append(".");
}
}
}
final String convertedClassName = normalizeSpecificIdentifier(className, JavaIdentifier.CLASS);
- return normalizeClassIdentifier(packageName, convertedClassName, convertedClassName, FIRST_INDEX);
+ // if packageName contains class name at the end, then the className is
+ // name of inner class
+ final String[] packageNameParts = packageName.split("\\.");
+ String suppInnerClassPackageName = packageName;
+ if (packageNameParts.length > 1) {
+ if (Character.isUpperCase(packageNameParts[packageNameParts.length - 1].charAt(FIRST_CHAR))) {
+ final StringBuilder sb = new StringBuilder();
+ // ignore class name in package name - inner class name has
+ // to be normalizing according to original package of parent
+ // class
+ for (int i = 0; i < packageNameParts.length - 1; i++) {
+ sb.append(packageNameParts[i]);
+ if (i != (packageNameParts.length - 2)) {
+ sb.append('.');
+ }
+ }
+ suppInnerClassPackageName = sb.toString();
+ }
+ }
+
+ return normalizeClassIdentifier(suppInnerClassPackageName, convertedClassName, convertedClassName, FIRST_INDEX);
}
/**