{"id":22440417,"url":"https://github.com/wwadge/swagger-annotation-processor","last_synced_at":"2025-03-27T09:28:04.390Z","repository":{"id":49966205,"uuid":"122604721","full_name":"wwadge/swagger-annotation-processor","owner":"wwadge","description":"Swagger-codegen annotation processor","archived":false,"fork":false,"pushed_at":"2021-06-07T16:47:02.000Z","size":77,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-01T14:24:42.822Z","etag":null,"topics":["swagger","swagger-annotation-processor","swagger-codegen"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wwadge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-23T10:05:44.000Z","updated_at":"2021-05-10T17:14:37.000Z","dependencies_parsed_at":"2022-09-02T06:54:27.485Z","dependency_job_id":null,"html_url":"https://github.com/wwadge/swagger-annotation-processor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wwadge%2Fswagger-annotation-processor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wwadge%2Fswagger-annotation-processor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wwadge%2Fswagger-annotation-processor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wwadge%2Fswagger-annotation-processor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wwadge","download_url":"https://codeload.github.com/wwadge/swagger-annotation-processor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245816629,"owners_count":20677137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["swagger","swagger-annotation-processor","swagger-codegen"],"created_at":"2024-12-06T01:21:00.466Z","updated_at":"2025-03-27T09:28:04.365Z","avatar_url":"https://github.com/wwadge.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Given an annotation somewhere in your code, this will generate all the swagger classes by means of an APT processor.\n\nHow to use? \n- Add to gradle dependencies (see below)\n\n- Add @EnableSwagger:\n\n```java\n    @EnableSwagger(scheme = EnableSwagger.Scheme.APIS)\n    package com.foo.account;\n\n    \n    import com.github.wwadge.swaggerapt.EnableSwagger;\n```\n\n- Add swagger.yml and swagger-config.json in src/main/resources. For example you can use this for model objects:\n\n```json\n    {\n      \"dateLibrary\": \"java8\",\n      \"modelPackage\" : \"com.foo.model\",\n      \"apiPackage\" : \"com.foo.account.controller\",\n      \"useBeanValidation\": \"true\",\n      \"delegatePattern\": \"true\",\n      \"typeMappings\":{\"Boolean\":\"boolean\"},\n      \"modelNamePrefix\": \"\",\n      \"importMappings\": {\n        \"MonetaryAmount\": \"org.javamoney.moneta.Money\",\n        \"EntityId\": \"com.foo.common.entities.EntityId\",\n        \"QueryDslBinder\": \"com.foo.common.util.QueryDslBinder\",\n        \"YearMonth\": \"java.time.YearMonth\",\n        \"InetAddress\": \"java.net.InetAddress\",\n        \"CurrencyUnit\": \"javax.money.CurrencyUnit\",\n        \"Email\": \"javax.validation.constraints.Email\"\n      }\n    }\n```\n\nGradle example that also configures for use with querydsl apt which means you can use @QueryEntity in your \nswagger template. Every time gradle or Intellij tries to compile, it will generate the swagger files followed by running the Querydsl APT on the resultant files\n(obviously querydsl is completely optional here).\n\n    apply plugin: 'java'\n    apply plugin: 'idea'\n\n    \n    configurations {\n        swagger\n        querydsl\n        testCompile.extendsFrom compile\n    }\n    \n    sourceSets {\n        swagger {\n            java {\n                srcDirs = [sourceSets.main.java.srcDirs, swagger.java.outputDir] // look to find the @EnableSwagger annotation\n            }\n        }\n        querydsl {\n            java {\n                srcDirs = [\"$buildDir/classes/java/swagger\"] // look at where swagger generated code (+anything else)\n            }\n        }\n    \n    \n        main{\n            java {\n                srcDirs += [sourceSets.querydsl.java.srcDirs, sourceSets.swagger.java.outputDir]\n            }\n        }\n    \n        sourceSets.swagger.compileClasspath +=   project.configurations.compile\n        sourceSets.querydsl.compileClasspath += project.configurations.compile  + sourceSets.swagger.compileClasspath\n        sourceSets.main.compileClasspath += sourceSets.querydsl.compileClasspath + sourceSets.swagger.compileClasspath+ swagger.output + querydsl.output\n        sourceSets.test.compileClasspath += sourceSets.main.compileClasspath + sourceSets.querydsl.compileClasspath + sourceSets.swagger.compileClasspath+ swagger.output + querydsl.output\n    }\n    \n    \n    \n    \n    \n    compileSwaggerJava {\n        options.annotationProcessorPath = configurations.swagger\n        options.compilerArgs +=  [\"-proc:only\"]\n    }\n    \n    compileQuerydslJava {\n        options.annotationProcessorPath = configurations.querydsl\n        options.compilerArgs +=  [\"-proc:only\"]\n    }\n    compileJava {\n        options.annotationProcessorPath = null\n    }\n    \n    compileTestJava {\n        options.annotationProcessorPath = null\n    }\n    \n    //compileTestJava.dependsOn(compileJava)\n    compileJava.dependsOn([swaggerClasses, querydslClasses])\n    querydslClasses.mustRunAfter(swaggerClasses)\n    \n    \n    \n    idea {\n        module {\n            // Marks the already(!) added srcDir as \"generated\"\n            generatedSourceDirs += [sourceSets.swagger.java.outputDir, sourceSets.querydsl.java.outputDir]\n            sourceDirs += [sourceSets.swagger.java.outputDir, sourceSets.querydsl.java.outputDir]\n        }\n    }\n    \n    clean{\n        delete sourceSets.swagger.java.outputDir\n        delete sourceSets.querydsl.java.outputDir\n    \n    }\n    \n    \n    dependencies{\n        // this little snippet gets the top level folder by asking git to avoid hard-coding paths\n        def getTopLevelCode = { -\u003e\n            def stdout = new ByteArrayOutputStream()\n            exec {\n                commandLine 'git', 'rev-parse', '--show-toplevel'\n                standardOutput = stdout\n            }\n            return stdout.toString().trim()\n        }\n    \n    \n        apply from: \"$getTopLevelCode/gradle-common/versions.gradle\"\n    \n    \n        compile \"com.github.wwadge:swagger-annotation-processor-interface:${swaggerAnnotationProcessor}\"\n        swagger \"com.github.wwadge:swagger-annotation-processor:${swaggerAnnotationProcessor}\"\n        compileOnly \"com.github.wwadge:swagger-annotation-processor:${swaggerAnnotationProcessor}\"\n        compileOnly \"io.swagger:swagger-codegen:${swaggerCodegenVersion}\"\n        swagger \"io.swagger:swagger-codegen:${swaggerCodegenVersion}\"\n        querydsl group: 'com.querydsl', name: 'querydsl-apt', version:'4.1.3'\n        querydsl group: 'com.querydsl', name: 'querydsl-apt', version:'4.1.3', classifier: \"general\"\n    }","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwwadge%2Fswagger-annotation-processor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwwadge%2Fswagger-annotation-processor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwwadge%2Fswagger-annotation-processor/lists"}