reading from src/main/swagger/api-admin-data.yml [WARNING] no property from null, null, {ENUM=null, TITLE=null, DESCRIPTION=null, DEFAULT=null, PATTERN=null, DESCRIMINATOR=null, MIN_ITEMS=null, MAX_ITEMS=null, MIN_PROPERTIES=null, MAX_PROPERTIES=null, MIN_LENGTH=null, MAX_LENGTH=null, MINIMUM=null, MAXIMUM=null, EXCLUSIVE_MINIMUM=null, EXCLUSIVE_MAXIMUM=null, UNIQUE_ITEMS=null, EXAMPLE=null, TYPE=null, FORMAT=null, READ_ONLY=null, VENDOR_EXTENSIONS={}} (was java.lang.NullPointerException) (through reference chain: io.swagger.models.Response["schema"]) (through reference chain: io.swagger.models.Path["get"]->io.swagger.models.Operation["responses"]->java.util.LinkedHashMap["400"]) (through reference chain: io.swagger.models.Swagger["paths"]->java.util.LinkedHashMap["/users"]) reading from src/main/swagger/api-admin-data.yml [WARNING] no property from null, null, {ENUM=null, TITLE=null, DESCRIPTION=null, DEFAULT=null, PATTERN=null, DESCRIMINATOR=null, MIN_ITEMS=null, MAX_ITEMS=null, MIN_PROPERTIES=null, MAX_PROPERTIES=null, MIN_LENGTH=null, MAX_LENGTH=null, MINIMUM=null, MAXIMUM=null, EXCLUSIVE_MINIMUM=null, EXCLUSIVE_MAXIMUM=null, UNIQUE_ITEMS=null, EXAMPLE=null, TYPE=null, FORMAT=null, READ_ONLY=null, VENDOR_EXTENSIONS={}} (was java.lang.NullPointerException) (through reference chain: io.swagger.models.Response["schema"]) (through reference chain: io.swagger.models.Path["get"]->io.swagger.models.Operation["responses"]->java.util.LinkedHashMap["400"]) (through reference chain: io.swagger.models.Swagger["paths"]->java.util.LinkedHashMap["/users"]) com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'swagger': was expecting ('true', 'false' or 'null') at [Source: src/main/swagger/api-admin-data.yml; line: 1, column: 9] at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1419) at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:508) at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3201) at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2360) at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:794) at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:690) at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3105) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3051) at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:1861) at io.swagger.parser.SwaggerCompatConverter.readResourceListing(SwaggerCompatConverter.java:147) at io.swagger.parser.SwaggerCompatConverter.read(SwaggerCompatConverter.java:82) at io.swagger.parser.SwaggerParser.read(SwaggerParser.java:36) at io.swagger.parser.SwaggerParser.read(SwaggerParser.java:15) at io.swagger.codegen.plugin.CodeGenMojo.execute(CodeGenMojo.java:122) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155) at org.jvnet.hudson.maven3.launcher.Maven32Launcher.main(Maven32Launcher.java:132) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238) at jenkins.maven3.agent.Maven32Main.launch(Maven32Main.java:181) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at hudson.maven.Maven3Builder.call(Maven3Builder.java:136) at hudson.maven.Maven3Builder.call(Maven3Builder.java:71) at hudson.remoting.UserRequest.perform(UserRequest.java:121) at hudson.remoting.UserRequest.perform(UserRequest.java:49) at hudson.remoting.Request$2.run(Request.java:324) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.1.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>src/main/swagger/api-admin-data.yml</inputSpec>
<language>spring-mvc</language>
<output>${project.build.directory}/generated-sources/swagger</output>
<templateDirectory>${project.basedir}/src/main/swagger/template/JavaSpringMVC</templateDirectory>
<modelPackage>com.orange.dsifapi.microservices.admindata.api.domain</modelPackage>
<apiPackage>com.orange.dsifapi.microservices.admindata.api</apiPackage>
<invokerPackage>com.orange.dsifapi.microservices.admindata.api.invoker</invokerPackage>
<configOptions>
<sourceFolder>src/main/java</sourceFolder>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<artifactVersion>${project.version}</artifactVersion>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
-----------------------------------------------------
my swagger spec in yaml is (sorry for the french ;) ):
swagger: '2.0'
info:
description: "API d'administration des données d'habilitation autour de l'utilisateur. Ces données vont servir aux différents moteurs de calculs d'habilitation pour calculer les habilitations de chaque utilisateur."
version: '0.1'
title: "API Admin d'Habilitation"
host: a_definir_plus_tard.fr
basePath: /apimocks/api/v1
schemes:
- http
consumes:
- application/json
produces:
- application/json
paths:
/users:
get:
tags:
- Users
operationId: searchForUsers
summary: >
- Permet de rechercher des utilisateurs en fonction de nom de famille, entité ou bien profil métier.
description: >
- Permet de faire des recherches dans la base client afin de trouver des utilisateurs en fonction d'un certains nombres de paramètres. Dans certains cas, on ne connait pas vraiment l'utilisateur à modifier donc il faut le trouver. Pour cela, on peut le trouver par code métier, entité ou bien nom. Au moins 1 des paramètres est obligatoire.
deprecated: false
parameters:
- name: name
description: "le nom de l'utilisateur que l'on cherche"
in: query
required: false
type: string
- name: profile
description: "l'ide du profil métier de l'utilisateur recherché"
in: query
required: false
type: string
- name: entity
description: "l'id de l'entité de l'utilisateur recherché"
in: query
required: false
type: string
- name: offset
description: "à partir de quel élément on commence à retourner la valeur (pagination avec limit)."
in: query
required: false
type: integer
format: int32
- name: limit
description: "nombre d'élément retourné par l'appel à l'API (entre 1 et 10.)"
in: query
required: false
type: integer
format: int32
responses:
'200':
description: Liste des utilisateurs trouvés
schema:
type: array
items:
$ref: '#/definitions/User'
'400':
description: la requête est mal construite
schema:
items:
$ref: '#/definitions/Error'
'500':
description: "Une erreur s'est produite durant le traitement du serveur"
schema:
items:
$ref: '#/definitions/Error'
post:
tags:
- Users
operationId: createUser
summary: >
- Permet de créer un utilisateur.
description: >
- Permet de créer un utilisateur à partir de son id. Actuellement, c'est le seul moyen de créer un utilisateur via l'API donc il faut itérer sur ce verbe pour faire des création en masse.
deprecated: false
parameters:
- name: user
description: "l'utilisateur que l'on veut créer"
in: body
required: true
schema:
$ref: '#/definitions/User'
responses:
'201':
description: L'utilisateur est créé. Son url d'accès se situe dans le header dans l'attribut Location.
'400':
description: la requête est mal construite
schema:
items:
$ref: '#/definitions/Error'
'500':
description: "Une erreur s'est produite durant le traitement du serveur"
schema:
items:
$ref: '#/definitions/Error'
/users/{cuid}:
get:
tags:
- Users
operationId: retreiveUserById
summary: >
- Permet de récupérer un utilisateur à partir de son CUID qui est sa clé.
description: >
- Permet de récupérer un utilisateur en connaissant son CUID. Ainsi il est possible de récupérer un et un seul utilisateur car le CUID est la clé.
deprecated: false
parameters:
- name: cuid
description: "le cuid de l'utilisateur que l'on veut récupérer"
in: path
required: true
type: string
responses:
'200':
description: Liste des utilisateurs trouvés
schema:
$ref: '#/definitions/User'
'400':
description: la requête est mal construite
schema:
items:
$ref: '#/definitions/Error'
'404':
description: l'utilisateur n'existe pas
schema:
items:
$ref: '#/definitions/Error'
'500':
description: "Une erreur s'est produite durant le traitement du serveur"
schema:
items:
$ref: '#/definitions/Error'
put:
tags:
- Users
operationId: updateUser
summary: >
- Permet de maitre à jour un utilisateur à partir de son CUID qui est sa clé.
description: >
- Permet de modifier un utilisateur en connaissant son CUID. On modifie complétement la ressource. Pour faire une mise à jour partielle qu'un certains nombres d'éléments, il faut passer par un PATCH.
deprecated: false
parameters:
- name: cuid
description: "le cuid de l'utilisateur que l'on veut récupérer"
in: path
required: true
type: string
- name: user
description: "l'utilisateur que l'on veut récupérer"
in: body
required: true
schema:
$ref: '#/definitions/User'
responses:
'200':
description: Liste des utilisateurs trouvés
schema:
$ref: '#/definitions/User'
'400':
description: la requête est mal construite
schema:
items:
$ref: '#/definitions/Error'
'404':
description: l'utilisateur n'existe pas
schema:
items:
$ref: '#/definitions/Error'
'500':
description: "Une erreur s'est produite durant le traitement du serveur"
schema:
items:
$ref: '#/definitions/Error'
delete:
tags:
- Users
operationId: deleteUser
summary: >
- Permet de créer un utilisateur.
description: >
- Permet de créer un utilisateur dans la base de données avec les différents qui sont obligatoires. Une fois l'utilisateur créé, on peut récupérer dans la réponse au niveau du header Location l'url de la nouvelle ressource qui vient d'être créée.
deprecated: false
parameters:
- name: cuid
description: "le cuid de l'utilisateur (code alliance)"
in: path
required: true
type: string
responses:
'204':
description: L'utilisateur est effacé. Rien n'est retourné dans la réponse.
'400':
description: la requête est mal construite
schema:
items:
$ref: '#/definitions/Error'
'500':
description: "Une erreur s'est produite durant le traitement du serveur"
schema:
items:
$ref: '#/definitions/Error'
/profiles:
get:
tags:
- Profiles
operationId: searchForProfiles
summary: >
- Permet de rechercher des profils métier en fonction du nom du profil.
description: >
- Permet de faire des recherches dans la base des profils afin de trouver des profils métier en fonction d'un certains nombres de paramètres. Dans certains cas, on ne connait pas vraiment le profil à modifier donc il faut le trouver. Pour cela, on peut le trouver par le nom du profil. Au moins 1 des paramètres est obligatoire.
deprecated: false
parameters:
- name: name
description: "le nom du profil que l'on cherche"
in: query
required: false
type: string
- name: offset
description: "à partir de quel élément on commence à retourner la valeur (pagination avec limit)."
in: query
required: false
type: integer
format: int32
- name: limit
description: "nombre d'élément retourné par l'appel à l'API (entre 1 et 10.)"
in: query
required: false
type: integer
format: int32
responses:
'200':
description: Liste des entités trouvées
schema:
type: array
items:
$ref: '#/definitions/Profile'
'400':
description: la requête est mal construite
schema:
items:
$ref: '#/definitions/Error'
'500':
description: "Une erreur s'est produite durant le traitement du serveur"
schema:
items:
$ref: '#/definitions/Error'
/entities:
get:
tags:
- Entities
operationId: searchForEntities
summary: >
- Permet de rechercher des entités d'organisation en fonction du nom de l'entité.
description: >
- Permet de faire des recherches dans la base des entités afin de trouver des entités en fonction d'un certains nombres de paramètres. Dans certains cas, on ne connait pas vraiment l'entité à modifier donc il faut la trouver. Pour cela, on peut le trouver par le nom de l'entité. Au moins 1 des paramètres est obligatoire.
deprecated: false
parameters:
- name: name
description: "le nom de l'entité que l'on cherche"
in: query
required: false
type: string
- name: offset
description: "à partir de quel élément on commence à retourner la valeur (pagination avec limit)."
in: query
required: false
type: integer
format: int32
- name: limit
description: "nombre d'élément retourné par l'appel à l'API (entre 1 et 10.)"
in: query
required: false
type: integer
format: int32
responses:
'200':
description: Liste des entités trouvées
schema:
type: array
items:
$ref: '#/definitions/Entity'
'400':
description: la requête est mal construite
schema:
items:
$ref: '#/definitions/Error'
'500':
description: "Une erreur s'est produite durant le traitement du serveur"
schema:
items:
$ref: '#/definitions/Error'
definitions:
User:
required:
- login
- firstname
- lastname
- activationDate
type: object
properties:
login:
description: login de l'utilisateur
type: string
firstname:
description: prénom de l'utilisateur
type: string
lastname:
description: nom de l'utilisateur
type: string
email:
description: email de l'utilisateur
type: string
activationDate:
description: date d'activation de l'utilisateur
type: string
format: date
inactivationDate:
description: email de l'utilisateur
type: string
format: date
lastModified:
description: dernière modification de l'utilisateur
type: string
format: date
businessProfileId:
description: le code du profil métier de l'utilisateur
type: string
entityOrganisationId:
description: le code de l'entitté d'organisation de l'utilisateur
type: string
Profile:
required:
- id
- name
type: object
properties:
id:
description: le code du profil métier
type: string
name:
description: le nom du proil métier
type: string
Entity:
required:
- id
- name
type: object
properties:
id:
description: le code de l'entité d'organisation
type: string
name:
description: le nom de l'entité d'organisation
type: string
Error:
required:
- code
- message
- description
type: object
properties:
code:
description: "code d'erreur applicatif"
type: string
message:
description: "message court expliquant l'erreur"
type: string
description:
description: "description longue expliquant l'erreur"
type: string
infoURL:
description: url vers de la documentation ou un formulaire de soutien
type: string
--
You received this message because you are subscribed to the Google Groups "Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.