mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-07-03 06:00:52 +00:00
removed null guards
This commit is contained in:
parent
a6af380833
commit
7b651dedcd
@ -55,15 +55,15 @@ class BasicJavaGenerator extends BasicGenerator {
|
|||||||
// location of templates
|
// location of templates
|
||||||
override def templateDir = "Java"
|
override def templateDir = "Java"
|
||||||
|
|
||||||
|
// where to write generated code
|
||||||
|
override def destinationDir = "generated-code/java/src/main/java"
|
||||||
|
|
||||||
// template used for models
|
// template used for models
|
||||||
modelTemplateFiles += "model.mustache" -> ".java"
|
modelTemplateFiles += "model.mustache" -> ".java"
|
||||||
|
|
||||||
// template used for models
|
// template used for models
|
||||||
apiTemplateFiles += "api.mustache" -> ".java"
|
apiTemplateFiles += "api.mustache" -> ".java"
|
||||||
|
|
||||||
// where to write generated code
|
|
||||||
override def destinationDir = "src/test/java"
|
|
||||||
|
|
||||||
override def reservedWords = Set("abstract", "continue", "for", "new", "switch", "assert",
|
override def reservedWords = Set("abstract", "continue", "for", "new", "switch", "assert",
|
||||||
"default", "if", "package", "synchronized", "boolean", "do", "goto", "private",
|
"default", "if", "package", "synchronized", "boolean", "do", "goto", "private",
|
||||||
"this", "break", "double", "implements", "protected", "throw", "byte", "else",
|
"this", "break", "double", "implements", "protected", "throw", "byte", "else",
|
||||||
@ -168,4 +168,12 @@ class BasicJavaGenerator extends BasicGenerator {
|
|||||||
throw new Exception("reserved word " + "\"" + word + "\" not allowed")
|
throw new Exception("reserved word " + "\"" + word + "\" not allowed")
|
||||||
else word
|
else word
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// supporting classes
|
||||||
|
// supporting classes
|
||||||
|
override def supportingFiles =
|
||||||
|
List(
|
||||||
|
("apiInvoker.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replaceAll("\\.", java.io.File.separator) + java.io.File.separator, "ApiInvoker.java"),
|
||||||
|
("apiException.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replaceAll("\\.", java.io.File.separator) + java.io.File.separator, "ApiException.java"),
|
||||||
|
("pom.mustache", "generated-code/java", "pom.xml"))
|
||||||
|
}
|
@ -29,7 +29,7 @@ object CoreUtils {
|
|||||||
val modelObjects = new HashMap[String, Model]
|
val modelObjects = new HashMap[String, Model]
|
||||||
apis.foreach(api => {
|
apis.foreach(api => {
|
||||||
for ((nm, model) <- extractApiModels(api)) modelObjects += nm -> model
|
for ((nm, model) <- extractApiModels(api)) modelObjects += nm -> model
|
||||||
if (api.models != null) api.models.foreach(model => modelObjects += model._1 -> model._2)
|
api.models.foreach(model => modelObjects += model._1 -> model._2)
|
||||||
})
|
})
|
||||||
modelObjects.toMap
|
modelObjects.toMap
|
||||||
}
|
}
|
||||||
@ -38,49 +38,13 @@ object CoreUtils {
|
|||||||
val modelNames = new HashSet[String]
|
val modelNames = new HashSet[String]
|
||||||
modelNames += op.responseClass
|
modelNames += op.responseClass
|
||||||
// POST, PUT, DELETE body
|
// POST, PUT, DELETE body
|
||||||
if (op.parameters != null) {
|
op.parameters.filter(p => p.paramType == "body")
|
||||||
op.parameters.filter(p => p.paramType == "body")
|
.foreach(p => modelNames += p.dataType)
|
||||||
.foreach(p => modelNames += p.dataType)
|
|
||||||
}
|
|
||||||
val baseNames = (for (modelName <- (modelNames.toList))
|
val baseNames = (for (modelName <- (modelNames.toList))
|
||||||
yield (extractBasePartFromType(modelName))).toSet
|
yield (extractBasePartFromType(modelName))).toSet
|
||||||
baseNames.toSet
|
baseNames.toSet
|
||||||
}
|
}
|
||||||
|
|
||||||
def extractModelNames2(modelObjects: Map[String, Model], ep: Operation): Set[String] = {
|
|
||||||
val modelNames = new HashSet[String]
|
|
||||||
|
|
||||||
modelNames += ep.responseClass
|
|
||||||
// POST, PUT, DELETE body
|
|
||||||
if (ep.parameters != null)
|
|
||||||
ep.parameters.filter(p => p.paramType == "body")
|
|
||||||
.foreach(p => modelNames += p.dataType)
|
|
||||||
|
|
||||||
val baseNames = (for (modelName <- (modelNames.toList))
|
|
||||||
yield (extractBasePartFromType(modelName))).toSet
|
|
||||||
|
|
||||||
// get complex models from base
|
|
||||||
val requiredModels = modelObjects.filter(obj => baseNames.contains(obj._1))
|
|
||||||
|
|
||||||
val subNames = new HashSet[String]
|
|
||||||
// look inside top-level models
|
|
||||||
requiredModels.map(model => {
|
|
||||||
// add top level model
|
|
||||||
subNames += model._1
|
|
||||||
model._2.properties.foreach(prop => {
|
|
||||||
val subObject = prop._2
|
|
||||||
if (containers.contains(subObject.`type`)) {
|
|
||||||
subObject.items match {
|
|
||||||
case Some(item) => subNames += item.ref.getOrElse(item.`type`)
|
|
||||||
case None =>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else subNames += subObject.`type`
|
|
||||||
})
|
|
||||||
})
|
|
||||||
subNames.toSet
|
|
||||||
}
|
|
||||||
|
|
||||||
def extractBasePartFromType(datatype: String): String = {
|
def extractBasePartFromType(datatype: String): String = {
|
||||||
val ComplexTypeMatcher = ".*\\[(.*)\\].*".r
|
val ComplexTypeMatcher = ".*\\[(.*)\\].*".r
|
||||||
datatype match {
|
datatype match {
|
||||||
@ -93,21 +57,16 @@ object CoreUtils {
|
|||||||
val modelNames = new HashSet[String]
|
val modelNames = new HashSet[String]
|
||||||
val modelObjects = new HashMap[String, Model]
|
val modelObjects = new HashMap[String, Model]
|
||||||
// return types
|
// return types
|
||||||
if(sd.apis != null){
|
sd.apis.foreach(api =>
|
||||||
sd.apis.foreach(api => {
|
api.operations.foreach(op => {
|
||||||
if (api.operations != null)
|
modelNames += op.responseClass
|
||||||
api.operations.foreach(op => {
|
// POST, PUT, DELETE body
|
||||||
modelNames += op.responseClass
|
op.parameters.filter(p => p.paramType == "body")
|
||||||
// POST, PUT, DELETE body
|
.foreach(p => modelNames += p.dataType)
|
||||||
if(op.parameters != null)
|
|
||||||
op.parameters.filter(p => p.paramType == "body")
|
|
||||||
.foreach(p => modelNames += p.dataType)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
)
|
||||||
if(sd.models != null)
|
for ((name, m) <- sd.models)
|
||||||
for ((name, m) <- sd.models)
|
modelObjects += name -> m
|
||||||
modelObjects += name -> m
|
|
||||||
|
|
||||||
// extract all base model names, strip away Containers like List[] and primitives
|
// extract all base model names, strip away Containers like List[] and primitives
|
||||||
val baseNames = (for (modelName <- (modelNames.toList filterNot primitives.contains))
|
val baseNames = (for (modelName <- (modelNames.toList filterNot primitives.contains))
|
||||||
|
@ -59,7 +59,6 @@ class ResourceListingValidationTest extends FlatSpec with ShouldMatchers {
|
|||||||
"""
|
"""
|
||||||
parse(jsonString).extract[ResourceListing] match {
|
parse(jsonString).extract[ResourceListing] match {
|
||||||
case e: ResourceListing => {
|
case e: ResourceListing => {
|
||||||
println(e)
|
|
||||||
e.apis.size should be (2)
|
e.apis.size should be (2)
|
||||||
}
|
}
|
||||||
case _ => fail("didn't parse the underlying apis")
|
case _ => fail("didn't parse the underlying apis")
|
||||||
|
@ -62,33 +62,3 @@ class ApiExtractorTest extends FlatSpec with ShouldMatchers {
|
|||||||
getOrderById.errorResponses.size should be (2)
|
getOrderById.errorResponses.size should be (2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@RunWith(classOf[JUnitRunner])
|
|
||||||
class CoreUtilsTest extends FlatSpec with ShouldMatchers {
|
|
||||||
sys.props += "fileMap" -> "src/test/resources/petstore"
|
|
||||||
|
|
||||||
behavior of "CoreUtils"
|
|
||||||
|
|
||||||
it should "verify models are extracted" in {
|
|
||||||
val resourceListing = ResourceExtractor.fetchListing("src/test/resources/petstore/resources.json")
|
|
||||||
val apis = ApiExtractor.extractApiOperations("src/test/resources/petstore", resourceListing.apis)
|
|
||||||
|
|
||||||
val cu = CoreUtils.extractAllModels2(apis)
|
|
||||||
cu.size should be (5)
|
|
||||||
|
|
||||||
(cu.keys.toSet & Set("User", "Tag", "Pet", "Category", "Order")).size should be (5)
|
|
||||||
}
|
|
||||||
|
|
||||||
it should "verify operation names" in {
|
|
||||||
val resourceListing = ResourceExtractor.fetchListing("src/test/resources/petstore/resources.json")
|
|
||||||
val apis = ApiExtractor.extractApiOperations("src/test/resources/petstore", resourceListing.apis)
|
|
||||||
|
|
||||||
val petApi = apis.filter(api => api.resourcePath == "/pet").head
|
|
||||||
val eps = petApi.apis.map(api => (api.path, api)).toMap
|
|
||||||
val ops = eps("/pet.{format}").operations.map(ep => (ep.nickname, ep)).toMap
|
|
||||||
|
|
||||||
ops.size should be (2)
|
|
||||||
|
|
||||||
(ops.keys.toSet & Set("addPet", "updatePet")).size should be (2)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user