Skip to content

Commit

Permalink
Merge pull request #159 from SpeedsterF2/javafuncs_dictionary
Browse files Browse the repository at this point in the history
Handle arrays of DictionaryType in javaFuncs.getJavaType()
  • Loading branch information
OkieOth committed Apr 3, 2024
2 parents a76f95f + ecc3607 commit 6b8b538
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 6 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# 6.5.1
* Handle arrays of DictionaryType in javaFuncs.getJavaType()

# 6.5.0
* Introduce 'format' attribute to StringType

Expand Down
35 changes: 32 additions & 3 deletions tests/generators/test_javaFuncs.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import yacg.model.model as model

from yacg.model.model import IntegerType, IntegerTypeFormatEnum, NumberType, NumberTypeFormatEnum
# from yacg.model.model import StringType, UuidType
# from yacg.model.model import EnumType, DateTimeType, TimeType
from yacg.model.model import StringType, EnumType, DictionaryType
from yacg.model.model import DateType, TimeType, DateTimeType, UuidType
from yacg.model.model import ComplexType, BytesType, ObjectType
import yacg.generators.helper.javaFuncs as javaFuncs
import yacg.model.modelFuncs as modelFuncs
Expand All @@ -21,7 +21,7 @@ def getExampleType():
return modelTypes[0]


# For executing these tests run: python -m unittest -v tests/generators/test_javaFuncs.py
# For executing these tests run: python3 -m unittest -v tests/generators/test_javaFuncs.py
class TestJavaFuncs (unittest.TestCase):

def testIsDouble(self):
Expand Down Expand Up @@ -131,6 +131,14 @@ def testgetJavaTypes(self):
self.assertEqual('Double', javaFuncs.getJavaType(numberType, False))
self.assertEqual('java.util.List<Double>', javaFuncs.getJavaType(numberType, True))

stringType = StringType()
self.assertEqual('String', javaFuncs.getJavaType(stringType, False))
self.assertEqual('java.util.List<String>', javaFuncs.getJavaType(stringType, True))

uuidType = UuidType()
self.assertEqual('java.util.UUID', javaFuncs.getJavaType(uuidType, False))
self.assertEqual('java.util.List<java.util.UUID>', javaFuncs.getJavaType(uuidType, True))

objectType = ObjectType()
self.assertEqual('Object', javaFuncs.getJavaType(objectType, False))
self.assertEqual('java.util.List<Object>', javaFuncs.getJavaType(objectType, True))
Expand All @@ -139,6 +147,27 @@ def testgetJavaTypes(self):
self.assertEqual('byte[]', javaFuncs.getJavaType(bytesType, False))
self.assertEqual('java.util.List<byte[]>', javaFuncs.getJavaType(bytesType, True))

dateType = DateType()
self.assertEqual('java.time.LocalDate', javaFuncs.getJavaType(dateType, False))
self.assertEqual('java.util.List<java.time.LocalDate>', javaFuncs.getJavaType(dateType, True))

timeType = TimeType()
self.assertEqual('java.time.LocalTime', javaFuncs.getJavaType(timeType, False))
self.assertEqual('java.util.List<java.time.LocalTime>', javaFuncs.getJavaType(timeType, True))

dateTimeType = DateTimeType()
self.assertEqual('java.time.LocalDateTime', javaFuncs.getJavaType(dateTimeType, False))
self.assertEqual('java.util.List<java.time.LocalDateTime>', javaFuncs.getJavaType(dateTimeType, True))

enumType = EnumType()
enumType.name = 'Foo'
self.assertEqual('Foo', javaFuncs.getJavaType(enumType, False))
self.assertEqual('java.util.List<Foo>', javaFuncs.getJavaType(enumType, True))

dictType = DictionaryType()
dictType.valueType = UuidType()
self.assertEqual('java.util.Map<String, java.util.UUID>', javaFuncs.getJavaType(dictType, False))
self.assertEqual('java.util.List<java.util.Map<String, java.util.UUID>>', javaFuncs.getJavaType(dictType, True))

def testJavaFuncs(self):
myType = getExampleType()
Expand Down
2 changes: 1 addition & 1 deletion tests/model/test_modelFunc.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def getComplexTypeWithBase():
return myType


# For executing these test run: python -m unittest -v tests/model/test_modelFunc.py
# For executing these test run: python3 -m unittest -v tests/model/test_modelFunc.py
class TestModelFuncs (unittest.TestCase):

def testHasPropertyOfTypeNoBaseType(self):
Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.5.0
6.5.1
2 changes: 1 addition & 1 deletion yacg/generators/helper/javaFuncs.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def getJavaType(typeObj, isArray):
elif isinstance(typeObj, model.DateTimeType):
return 'java.time.LocalDateTime' if not isArray else 'java.util.List<java.time.LocalDateTime>'
elif isinstance(typeObj, model.DictionaryType):
return 'java.util.Map<String, {}>'.format(getJavaType(typeObj.valueType, False))
return 'java.util.Map<String, {}>'.format(getJavaType(typeObj.valueType, False)) if not isArray else 'java.util.List<java.util.Map<String, {}>>'.format(getJavaType(typeObj.valueType, False))
elif isinstance(typeObj, model.ComplexType):
return typeObj.name if not isArray else 'java.util.List<{}>'.format(typeObj.name)
else:
Expand Down

0 comments on commit 6b8b538

Please sign in to comment.