This commit is contained in:
Vladimir Krivosheev
2015-07-02 14:10:06 +02:00
parent a6b1d4a2ec
commit 26c6d6157f
3 changed files with 9 additions and 12 deletions
@@ -88,7 +88,7 @@ class Generator(outputDir: String, rootPackage: String, requestClassName: String
}
fun resolveType(typedObject: ItemDescriptor, scope: ResolveAndGenerateScope): TypeDescriptor {
val optional = typedObject is ItemDescriptor.Named && (typedObject : ItemDescriptor.Named).optional()
val optional = typedObject is ItemDescriptor.Named && typedObject.optional()
return switchByType(typedObject, object : TypeVisitor<TypeDescriptor> {
override fun visitRef(refName: String): TypeDescriptor {
return TypeDescriptor(resolveRefType(scope.getDomainName(), refName, scope.getTypeDirection()), optional)
@@ -120,7 +120,7 @@ class Generator(outputDir: String, rootPackage: String, requestClassName: String
}
override fun visitArray(items: ProtocolMetaModel.ArrayItemType): TypeDescriptor {
val type = scope.resolveType<ProtocolMetaModel.ArrayItemType>(items).type
val type = scope.resolveType(items).type
return TypeDescriptor(ListType(type), optional, false, type == BoxableType.ANY_STRING)
}
@@ -244,7 +244,7 @@ fun capitalizeFirstChar(s: String): String {
}
fun <R> switchByType(typedObject: ItemDescriptor, visitor: TypeVisitor<R>): R {
val refName = if (typedObject is ItemDescriptor.Referenceable) (typedObject : ItemDescriptor.Referenceable).ref() else null
val refName = if (typedObject is ItemDescriptor.Referenceable) typedObject.ref() else null
if (refName != null) {
return visitor.visitRef(refName)
}
@@ -265,7 +265,7 @@ fun <R> switchByType(typedObject: ItemDescriptor, visitor: TypeVisitor<R>): R {
return visitor.visitObject(null)
}
val properties = (typedObject : ItemDescriptor.Type).properties()
val properties = typedObject.properties()
if (properties == null || properties.isEmpty()) {
return visitor.visitMap()
}
@@ -7,7 +7,7 @@ data class NamePath(val lastComponent: String, val parent: NamePath? = null) {
var current: NamePath? = this
while (current != null) {
res++
current = current!!.parent
current = current.parent
}
}
return res
@@ -15,10 +15,7 @@ class TypeMap {
private val typesToGenerate = ArrayList<StandaloneTypeBinding>()
fun resolve(domainName: String, typeName: String, direction: TypeData.Direction): BoxableType? {
val domainGenerator = domainGeneratorMap!!.get(domainName)
if (domainGenerator == null) {
throw RuntimeException("Failed to find domain generator: " + domainName)
}
val domainGenerator = domainGeneratorMap!!.get(domainName) ?: throw RuntimeException("Failed to find domain generator: " + domainName)
return direction.get(getTypeData(domainName, typeName)).resolve(this, domainGenerator)
}
@@ -28,7 +25,7 @@ class TypeMap {
fun generateRequestedTypes() {
// size may grow during iteration
var list = typesToGenerate.copyToArray()
var list = typesToGenerate.toTypedArray()
typesToGenerate.clear()
while (true) {
for (binding in list) {
@@ -39,7 +36,7 @@ class TypeMap {
break
}
else {
list = typesToGenerate.copyToArray()
list = typesToGenerate.toTypedArray()
typesToGenerate.clear()
}
}
@@ -52,6 +49,6 @@ class TypeMap {
result = TypeData(typeName)
map.put(key, result)
}
return result!!
return result
}
}