igushkin / java-explore-with-me Goto Github PK
View Code? Open in Web Editor NEWTemplate repository for ExploreWithMe project.
Template repository for ExploreWithMe project.
In case of code generation via swagger-codegen-maven-plugin there are problems with escaping some quote symbols in the sources generated. This causes compilation errors.
The following plugin settings are used for repro:
<build>
<plugins>
<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.41</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/../ewm-main-service-spec.json</inputSpec>
<language>spring</language>
<library>spring-boot</library>
<apiPackage>${apiPackage}</apiPackage>
<modelPackage>${modelPackage}</modelPackage>
<configOptions>
<sourceFolder>src/main/java/</sourceFolder>
<dateLibrary>java8</dateLibrary>
<interfaceOnly>true</interfaceOnly>
<useBeanValidation>true</useBeanValidation>
<performBeanValidation>true</performBeanValidation>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
See the whole demo pom.xml in terekhovmv/java-explore-with-me-fixes@da018e0 .
This issue is not reproduced for specs of stats service.
Prerequisite: It is highly recommended to merge yandex-praktikum/java-explore-with-me#22 changes, since generation via swagger-codegen-maven-plugin does not work correctly for original ewm-main-service-spec.json file.
In case of code generation via swagger-codegen-maven-plugin there are several problems with operationId
s provided in ewm-main-service-spec.json file (see demo pom.xml in terekhovmv/java-explore-with-me-fixes@da018e0).
operationId
s contain numeric suffixes, and this suffixes appear in methods of generated *Api
interfaces (getEvents_2
, getEvent_1
). Solution: remove suffixes at least.delete
/ deleteCompilation
, registerUser
/ addEvent
/ saveCompilation
). Solution: provide consistent naming.*Api
interfaces are generated for top level endpoint components (/users/*
=> UsersApi
) there are problems with identifying endpoint methods for different roles (e.g. cancelRequest
and changeRequestStatus
in the UsersApi
interface). Solution: put the role as prefix in operationId
s.operationId
s must be unique among all operations described in your API (see https://swagger.io/docs/specification/paths-and-operations/), we should provide enough global descriptive names (delete
or getEvent_1
does not work).Tabular view of changes proposed in this PR:
Method | Original operationId | Recommended operationId |
---|---|---|
PUBLIC | ||
GET /categories |
getCategories |
getCategories (no changes) |
GET /categories/{catId} |
getCategory |
getCategory (no changes) |
GET /compilations |
getCompilations |
getCompilations (no changes) |
GET /compilations/{compId} |
getCompilation |
getCompilation (no changes) |
GET /events |
getEvents_1 |
findEvents |
GET /events/{id} |
getEvent_1 |
getEvent |
ADMIN | ||
GET /admin/users |
getUsers |
adminGetUsers |
POST /admin/users |
registerUser |
adminAddUser |
DELETE /admin/users/{userId} |
delete |
adminRemoveUser |
POST /admin/categories |
addCategory |
adminAddCategory |
DELETE /admin/categories/{catId} |
deleteCategory |
adminRemoveCategory |
PATCH /admin/categories/{catId} |
updateCategory |
adminUpdateCategory |
GET /admin/events |
getEvents_2 |
adminFindEvents |
PATCH /admin/events/{eventId} |
updateEvent_1 |
adminUpdateEvent |
POST /admin/compilations |
saveCompilation |
adminAddCompilation |
DELETE /admin/compilations/{compId} |
deleteCompilation |
adminRemoveCompilation |
PATCH /admin/compilations/{compId} |
updateCompilation |
adminUpdateCompilation |
INITIATOR | ||
GET /users/{userId}/events |
getEvents |
initiatorGetEvents |
GET /users/{userId}/events/{eventId} |
getEvents |
initiatorGetEvent |
POST /users/{userId}/events |
addEvent |
initiatorAddEvent |
PATCH /users/{userId}/events/{eventId} |
updateEvent |
initiatorUpdateEvent |
GET /users/{userId}/events/{eventId}/requests |
getEventParticipants |
initiatorGetEventRequests |
PATCH /users/{userId}/events/{eventId}/requests |
changeRequestStatus |
initiatorChangeRequestStatus |
PARTICIPANT | ||
GET /users/{userId}/requests |
getUserRequests |
participantGetRequests |
POST /users/{userId}/requests |
addParticipationRequest |
participantAddRequest |
PATCH /users/{userId}/requests/{requestId}/cancel |
cancelRequest |
participantCancelRequest |
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.