mirror of
https://github.com/valitydev/openapi-generator.git
synced 2024-11-07 10:58:55 +00:00
moved to petstore
This commit is contained in:
parent
256485ec5b
commit
5d42c8cc5f
@ -22,8 +22,8 @@ cd $APP_DIR
|
|||||||
|
|
||||||
|
|
||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties -DfileMap=samples/client/wordnik-api/spec-files/resources.json"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties "
|
||||||
ags="$@ SwaggerDocGenerator https://api.wordnik.com/v4/resources.json"
|
ags="$@ com.wordnik.swagger.codegen.SwaggerDocGenerator http://petstore.swagger.wordnik.com/api/api-docs"
|
||||||
|
|
||||||
if [ -f $APP_DIR/target/scala-$SCALA_RUNNER_VERSION/swagger-codegen.jar ]; then
|
if [ -f $APP_DIR/target/scala-$SCALA_RUNNER_VERSION/swagger-codegen.jar ]; then
|
||||||
scala -cp target/scala-$SCALA_RUNNER_VERSION/swagger-codegen.jar $ags
|
scala -cp target/scala-$SCALA_RUNNER_VERSION/swagger-codegen.jar $ags
|
||||||
|
@ -7,8 +7,6 @@ name := "swagger-codegen"
|
|||||||
|
|
||||||
version := "2.0.17-SNAPSHOT"
|
version := "2.0.17-SNAPSHOT"
|
||||||
|
|
||||||
scalaVersion := "2.10.0"
|
|
||||||
|
|
||||||
crossVersion := CrossVersion.full
|
crossVersion := CrossVersion.full
|
||||||
|
|
||||||
javacOptions ++= Seq("-target", "1.6", "-source", "1.6", "-Xlint:unchecked", "-Xlint:deprecation")
|
javacOptions ++= Seq("-target", "1.6", "-source", "1.6", "-Xlint:unchecked", "-Xlint:deprecation")
|
||||||
@ -17,6 +15,8 @@ scalacOptions ++= Seq("-optimize", "-unchecked", "-deprecation", "-Xcheckinit",
|
|||||||
|
|
||||||
crossScalaVersions := Seq("2.9.0", "2.9.0-1", "2.9.1", "2.9.1-1", "2.9.2", "2.9.3", "2.10.0", "2.10.1", "2.10.2", "2.10.3", "2.10.4", "2.11.0", "2.11.1")
|
crossScalaVersions := Seq("2.9.0", "2.9.0-1", "2.9.1", "2.9.1-1", "2.9.2", "2.9.3", "2.10.0", "2.10.1", "2.10.2", "2.10.3", "2.10.4", "2.11.0", "2.11.1")
|
||||||
|
|
||||||
|
scalaVersion := "2.10.0"
|
||||||
|
|
||||||
libraryDependencies ++= Seq(
|
libraryDependencies ++= Seq(
|
||||||
"org.json4s" %% "json4s-jackson" % "3.2.10",
|
"org.json4s" %% "json4s-jackson" % "3.2.10",
|
||||||
"io.backchat.inflector" %% "scala-inflector" % "1.3.5",
|
"io.backchat.inflector" %% "scala-inflector" % "1.3.5",
|
||||||
@ -66,7 +66,7 @@ publishTo <<= (version) { version: String =>
|
|||||||
Some("Sonatype Nexus Releases" at "https://oss.sonatype.org/service/local/staging/deploy/maven2")
|
Some("Sonatype Nexus Releases" at "https://oss.sonatype.org/service/local/staging/deploy/maven2")
|
||||||
}
|
}
|
||||||
|
|
||||||
//publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/.m2/repository")))
|
publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/.m2/repository")))
|
||||||
|
|
||||||
artifact in (Compile, assembly) ~= { art =>
|
artifact in (Compile, assembly) ~= { art =>
|
||||||
art.copy(`classifier` = Some("assembly"))
|
art.copy(`classifier` = Some("assembly"))
|
||||||
|
@ -43,134 +43,7 @@ object Codegen {
|
|||||||
|
|
||||||
class Codegen(config: CodegenConfig) {
|
class Codegen(config: CodegenConfig) {
|
||||||
implicit val formats = SwaggerSerializers.formats("1.2")
|
implicit val formats = SwaggerSerializers.formats("1.2")
|
||||||
/*
|
|
||||||
@deprecated
|
|
||||||
def generateSource(bundle: Map[String, AnyRef], templateFile: String): String = {
|
|
||||||
val allImports = new HashSet[String]
|
|
||||||
val includedModels = new HashSet[String]
|
|
||||||
val modelList = new ListBuffer[Map[String, AnyRef]]
|
|
||||||
val models = bundle("models").asInstanceOf[Tuple2[String, List[(String, AnyRef)]]]
|
|
||||||
|
|
||||||
models match {
|
|
||||||
case e: List[Tuple2[String, Model]] => {
|
|
||||||
e.foreach(m => {
|
|
||||||
includedModels += m._1
|
|
||||||
val modelMap = modelToMap(m._1, m._2)
|
|
||||||
modelMap.getOrElse("imports", None) match {
|
|
||||||
case im: Set[Map[String, String]] => im.foreach(m => m.map(e => allImports += e._2))
|
|
||||||
case None =>
|
|
||||||
}
|
|
||||||
modelList += modelMap
|
|
||||||
})
|
|
||||||
}
|
|
||||||
case _ =>
|
|
||||||
}
|
|
||||||
|
|
||||||
val modelData = Map[String, AnyRef]("model" -> modelList.toList)
|
|
||||||
val operationList = new ListBuffer[Map[String, AnyRef]]
|
|
||||||
val classNameToOperationList = new HashMap[String, ListBuffer[AnyRef]]
|
|
||||||
val apis = bundle("apis")
|
|
||||||
apis match {
|
|
||||||
case a: Map[String, List[(String, Operation)]] => {
|
|
||||||
a.map(op => {
|
|
||||||
val classname = op._1
|
|
||||||
val ops = op._2
|
|
||||||
for ((apiPath, operation) <- ops) {
|
|
||||||
val opList = classNameToOperationList.getOrElse(classname, {
|
|
||||||
val lb = new ListBuffer[AnyRef]
|
|
||||||
classNameToOperationList += classname -> lb
|
|
||||||
lb
|
|
||||||
})
|
|
||||||
opList += apiToMap(apiPath, operation)
|
|
||||||
|
|
||||||
CoreUtils.extractModelNames(operation).foreach(i => allImports += i)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
case None =>
|
|
||||||
}
|
|
||||||
|
|
||||||
val f = new ListBuffer[AnyRef]
|
|
||||||
classNameToOperationList.map(m => f += Map("classname" -> m._1, "operation" -> m._2))
|
|
||||||
|
|
||||||
val imports = new ListBuffer[Map[String, String]]
|
|
||||||
val importScope = config.modelPackage match {
|
|
||||||
case Some(s) => s + "."
|
|
||||||
case None => ""
|
|
||||||
}
|
|
||||||
// do the mapping before removing primitives!
|
|
||||||
allImports.foreach(i => {
|
|
||||||
val model = config.toModelName(i)
|
|
||||||
includedModels.contains(model) match {
|
|
||||||
case false => {
|
|
||||||
config.importMapping.containsKey(model) match {
|
|
||||||
case true => {
|
|
||||||
if(!imports.flatten.map(m => m._2).toSet.contains(config.importMapping(model))) {
|
|
||||||
imports += Map("import" -> config.importMapping(model))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case false =>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case true =>
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
allImports --= config.defaultIncludes
|
|
||||||
allImports --= primitives
|
|
||||||
allImports --= containers
|
|
||||||
allImports.foreach(i => {
|
|
||||||
val model = config.toModelName(i)
|
|
||||||
includedModels.contains(model) match {
|
|
||||||
case false => {
|
|
||||||
config.importMapping.containsKey(model) match {
|
|
||||||
case true =>
|
|
||||||
case false => {
|
|
||||||
if(!imports.flatten.map(m => m._2).toSet.contains(importScope + model)){
|
|
||||||
imports += Map("import" -> (importScope + model))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case true => // no need to add the model
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
val rootDir = new java.io.File(".")
|
|
||||||
val (resourcePath, (engine, template)) = Codegen.templates.getOrElseUpdate(templateFile, compileTemplate(templateFile, Some(rootDir)))
|
|
||||||
|
|
||||||
val requiredModels = {
|
|
||||||
for(i <- allImports) yield {
|
|
||||||
HashMap("name" -> i, "hasMore" -> "true")
|
|
||||||
}
|
|
||||||
}.toList
|
|
||||||
|
|
||||||
requiredModels.size match {
|
|
||||||
case i if (i > 0) => requiredModels.last += "hasMore" -> "false"
|
|
||||||
case _ =>
|
|
||||||
}
|
|
||||||
|
|
||||||
var data = Map[String, AnyRef](
|
|
||||||
"name" -> bundle("name"),
|
|
||||||
"modelPackage" -> bundle.getOrElse("modelPackage", None),
|
|
||||||
"package" -> bundle("package"),
|
|
||||||
"baseName" -> bundle.getOrElse("baseName", None),
|
|
||||||
"className" -> bundle("className"),
|
|
||||||
"invokerPackage" -> bundle("invokerPackage"),
|
|
||||||
"imports" -> imports,
|
|
||||||
"requiredModels" -> requiredModels,
|
|
||||||
"operations" -> f,
|
|
||||||
"models" -> modelData,
|
|
||||||
"basePath" -> bundle.getOrElse("basePath", ""))
|
|
||||||
var output = engine.layout(resourcePath, template, data.toMap)
|
|
||||||
|
|
||||||
// a shutdown method will be added to scalate in an upcoming release
|
|
||||||
engine.compiler.shutdown
|
|
||||||
output
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
def compileTemplate(templateFile: String, rootDir: Option[File] = None, engine: Option[TemplateEngine] = None): (String, (TemplateEngine, Template)) = {
|
def compileTemplate(templateFile: String, rootDir: Option[File] = None, engine: Option[TemplateEngine] = None): (String, (TemplateEngine, Template)) = {
|
||||||
val engine = new TemplateEngine(rootDir orElse Some(new File(".")))
|
val engine = new TemplateEngine(rootDir orElse Some(new File(".")))
|
||||||
val srcName = config.templateDir + "/" + templateFile
|
val srcName = config.templateDir + "/" + templateFile
|
||||||
|
@ -285,10 +285,8 @@ class ScalaAsyncClientGenerator(cfg: SwaggerGenConfig) extends BasicGenerator {
|
|||||||
modelTemplateFiles ++= cfg.api.modelTemplates
|
modelTemplateFiles ++= cfg.api.modelTemplates
|
||||||
apiTemplateFiles ++= cfg.api.apiTemplates
|
apiTemplateFiles ++= cfg.api.apiTemplates
|
||||||
|
|
||||||
|
|
||||||
codegen = new AsyncClientCodegen(cfg.api.clientName, this, Some(cfg.projectRoot))
|
codegen = new AsyncClientCodegen(cfg.api.clientName, this, Some(cfg.projectRoot))
|
||||||
|
|
||||||
|
|
||||||
override def getBasePath(host: String, basePath: String, fileMap: Option[String]): String =
|
override def getBasePath(host: String, basePath: String, fileMap: Option[String]): String =
|
||||||
cfg.api.baseUrl.getOrElse(super.getBasePath(host, basePath, fileMap))
|
cfg.api.baseUrl.getOrElse(super.getBasePath(host, basePath, fileMap))
|
||||||
/*
|
/*
|
||||||
|
@ -16,9 +16,9 @@ object SwaggerValidator {
|
|||||||
val errors = new ListBuffer[ValidationError]
|
val errors = new ListBuffer[ValidationError]
|
||||||
|
|
||||||
if(resource.apiVersion == "")
|
if(resource.apiVersion == "")
|
||||||
errors += ValidationError("resourceListing", "apiVersion", ERROR)
|
errors += ValidationError("resourceListing", "apiVersion is required", ERROR)
|
||||||
if(resource.swaggerVersion == "")
|
if(resource.swaggerVersion == "")
|
||||||
errors += ValidationError("resourceListing", "apiVersion", ERROR)
|
errors += ValidationError("resourceListing", "apiVersion is required", ERROR)
|
||||||
for(api <- resource.apis)
|
for(api <- resource.apis)
|
||||||
validate(api, errors, "resourceListing")
|
validate(api, errors, "resourceListing")
|
||||||
errors.toList
|
errors.toList
|
||||||
@ -26,26 +26,30 @@ object SwaggerValidator {
|
|||||||
|
|
||||||
def validate(ref: ApiListingReference, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
def validate(ref: ApiListingReference, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
||||||
if(ref.path == "")
|
if(ref.path == "")
|
||||||
errors += ValidationError(parent + ":api", "path", ERROR)
|
errors += ValidationError(parent + ":[api]", "path is required", ERROR)
|
||||||
}
|
}
|
||||||
|
|
||||||
def validate(api: ApiListing, errors: ListBuffer[ValidationError]): Unit = {
|
def validate(api: ApiListing, errors: ListBuffer[ValidationError]): Unit = {
|
||||||
if(api.swaggerVersion == "")
|
if(api.swaggerVersion == "")
|
||||||
errors += ValidationError("apiDeclaration", "swaggerVersion", ERROR)
|
errors += ValidationError("apiDeclaration", "swaggerVersion is required", ERROR)
|
||||||
if(api.apiVersion == "")
|
if(api.apiVersion == "")
|
||||||
errors += ValidationError("apiDeclaration", "apiVersion", ERROR)
|
errors += ValidationError("apiDeclaration", "apiVersion is required", ERROR)
|
||||||
if(api.basePath == "")
|
if(api.basePath == "")
|
||||||
errors += ValidationError("apiDeclaration", "basePath", ERROR)
|
errors += ValidationError("apiDeclaration", "basePath is required", ERROR)
|
||||||
if(api.resourcePath == "")
|
if(api.resourcePath == "")
|
||||||
errors += ValidationError("apiDeclaration", "resourcePath", ERROR)
|
errors += ValidationError("apiDeclaration", "resourcePath is required", ERROR)
|
||||||
|
|
||||||
|
val name = {
|
||||||
|
if(api.resourcePath == "") "[unknown]"
|
||||||
|
else api.resourcePath
|
||||||
|
}
|
||||||
for(a <- api.apis) {
|
for(a <- api.apis) {
|
||||||
validate(a, errors, api.resourcePath)
|
validate(a, errors, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
api.models match {
|
api.models match {
|
||||||
case Some(m) => for((name, model) <- m) {
|
case Some(m) => for((name, model) <- m) {
|
||||||
validate(model, errors, api.resourcePath)
|
validate(model, errors, name)
|
||||||
}
|
}
|
||||||
case None =>
|
case None =>
|
||||||
}
|
}
|
||||||
@ -53,23 +57,23 @@ object SwaggerValidator {
|
|||||||
|
|
||||||
def validate(model: Model, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
def validate(model: Model, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
||||||
if(model.id == "")
|
if(model.id == "")
|
||||||
errors += ValidationError(parent + ":model", "id", ERROR)
|
errors += ValidationError(parent + ":[model]", "id is required", ERROR)
|
||||||
}
|
}
|
||||||
|
|
||||||
def validate(desc: ApiDescription, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
def validate(desc: ApiDescription, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
||||||
if(desc.path == "")
|
if(desc.path == "")
|
||||||
errors += ValidationError(parent + ":api", "path", ERROR)
|
errors += ValidationError(parent + ":[api]", "path is required", ERROR)
|
||||||
for(op <- desc.operations)
|
for(op <- desc.operations)
|
||||||
validate(op, errors, parent + ":" + desc.path)
|
validate(op, errors, parent + ":" + desc.path)
|
||||||
}
|
}
|
||||||
|
|
||||||
def validate(op: Operation, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
def validate(op: Operation, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
||||||
if(op.method == "")
|
if(op.method == "")
|
||||||
errors += ValidationError(parent + ":operation", "method", ERROR)
|
errors += ValidationError(parent + ":[operation]", "method is required", ERROR)
|
||||||
if(op.nickname == "")
|
if(op.nickname == "")
|
||||||
errors += ValidationError(parent + ":" + op.method, "nickname", WARNING)
|
errors += ValidationError(parent + ":" + op.method, "nickname is recommended", WARNING)
|
||||||
if(op.responseClass == "")
|
if(op.responseClass == "")
|
||||||
errors += ValidationError(parent + ":" + op.method, "responseClass", ERROR)
|
errors += ValidationError(parent + ":" + op.method, "responseClass is required", ERROR)
|
||||||
for(resp <- op.responseMessages)
|
for(resp <- op.responseMessages)
|
||||||
validate(resp, errors, parent)
|
validate(resp, errors, parent)
|
||||||
for(param <- op.parameters)
|
for(param <- op.parameters)
|
||||||
@ -77,16 +81,23 @@ object SwaggerValidator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def validate(param: Parameter, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
def validate(param: Parameter, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
||||||
|
val name = if(param.name == "")
|
||||||
|
"[unknown]"
|
||||||
|
else
|
||||||
|
param.name
|
||||||
|
|
||||||
if(param.name == "")
|
if(param.name == "")
|
||||||
errors += ValidationError("Parameter", "name", ERROR)
|
errors += ValidationError(parent + ":[parameter]", "name is required", ERROR)
|
||||||
if(param.paramType == "")
|
if(param.paramType == "")
|
||||||
errors += ValidationError("Parameter", "paramType", ERROR)
|
errors += ValidationError(parent + name, "paramType is required", ERROR)
|
||||||
|
if(param.dataType == "")
|
||||||
|
errors += ValidationError(parent + name, "type is required", ERROR)
|
||||||
}
|
}
|
||||||
|
|
||||||
def validate(resp: ResponseMessage, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
def validate(resp: ResponseMessage, errors: ListBuffer[ValidationError], parent: String): Unit = {
|
||||||
if(resp.code == 0)
|
if(resp.code == 0)
|
||||||
errors += ValidationError("ResponseMessage", "code", ERROR)
|
errors += ValidationError(parent + ":[responseMessage]", "code is required", ERROR)
|
||||||
if(resp.message == 0)
|
if(resp.message == 0)
|
||||||
errors += ValidationError("ResponseMessage", "message", ERROR)
|
errors += ValidationError(parent + ":[responseMessage]", "message is required", ERROR)
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user