-
-
Notifications
You must be signed in to change notification settings - Fork 184
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Allow to use constraints from jakarta namespace for Java and Ko…
…tlin models Description The JAVA_CONSTRAINT_PRESET uses constraints from the javax namespace. Since Java 17 the constraints are moved to the jakarta namespace. Add an options to the JAVA_CONSTRAINT_PRESET to use the jakarta namespace for constraint imports. Related issue fixes: (#1807)[#1807]
- Loading branch information
1 parent
dc6c9ac
commit 903edac
Showing
18 changed files
with
535 additions
and
112 deletions.
There are no files selected for viewing
17 changes: 17 additions & 0 deletions
17
examples/java-generate-jakarta-constraint-annotation/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Jakarta validation constraints annotations | ||
|
||
A basic example that shows how Java data models having `jakarta.validation.constraints` annotations can be generated. | ||
|
||
## How to run this example | ||
|
||
Run this example using: | ||
|
||
```sh | ||
npm i && npm run start | ||
``` | ||
|
||
If you are on Windows, use the `start:windows` script instead: | ||
|
||
```sh | ||
npm i && npm run start:windows | ||
``` |
35 changes: 35 additions & 0 deletions
35
examples/java-generate-jakarta-constraint-annotation/__snapshots__/index.spec.ts.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
// Jest Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`Should be able to generate models with jakarta.validation.constraints annotations and should log expected output to console 1`] = ` | ||
Array [ | ||
"public class JakartaAnnotation { | ||
@NotNull | ||
@Min(0) | ||
private double minNumberProp; | ||
@NotNull | ||
@Max(99) | ||
private double maxNumberProp; | ||
@Size(min=2, max=3) | ||
private Object[] arrayProp; | ||
@Pattern(regexp=\\"^I_\\") | ||
@Size(min=3) | ||
private String stringProp; | ||
private Map<String, Object> additionalProperties; | ||
public double getMinNumberProp() { return this.minNumberProp; } | ||
public void setMinNumberProp(double minNumberProp) { this.minNumberProp = minNumberProp; } | ||
public double getMaxNumberProp() { return this.maxNumberProp; } | ||
public void setMaxNumberProp(double maxNumberProp) { this.maxNumberProp = maxNumberProp; } | ||
public Object[] getArrayProp() { return this.arrayProp; } | ||
public void setArrayProp(Object[] arrayProp) { this.arrayProp = arrayProp; } | ||
public String getStringProp() { return this.stringProp; } | ||
public void setStringProp(String stringProp) { this.stringProp = stringProp; } | ||
public Map<String, Object> getAdditionalProperties() { return this.additionalProperties; } | ||
public void setAdditionalProperties(Map<String, Object> additionalProperties) { this.additionalProperties = additionalProperties; } | ||
}", | ||
] | ||
`; |
15 changes: 15 additions & 0 deletions
15
examples/java-generate-jakarta-constraint-annotation/index.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
const spy = jest.spyOn(global.console, 'log').mockImplementation(() => { | ||
return; | ||
}); | ||
import { generate } from './index'; | ||
|
||
describe('Should be able to generate models with jakarta.validation.constraints annotations', () => { | ||
afterAll(() => { | ||
jest.restoreAllMocks(); | ||
}); | ||
test('and should log expected output to console', async () => { | ||
await generate(); | ||
expect(spy.mock.calls.length).toEqual(1); | ||
expect(spy.mock.calls[0]).toMatchSnapshot(); | ||
}); | ||
}); |
34 changes: 34 additions & 0 deletions
34
examples/java-generate-jakarta-constraint-annotation/index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import { JavaGenerator, JAVA_CONSTRAINTS_PRESET } from '../../src'; | ||
|
||
const generator = new JavaGenerator({ | ||
presets: [ | ||
{ | ||
preset: JAVA_CONSTRAINTS_PRESET, | ||
options: { | ||
importFrom: 'jakarta' | ||
} | ||
} | ||
] | ||
}); | ||
const jsonSchemaDraft7 = { | ||
$schema: 'http://json-schema.org/draft-07/schema#', | ||
$id: 'JakartaAnnotation', | ||
type: 'object', | ||
properties: { | ||
min_number_prop: { type: 'number', minimum: 0 }, | ||
max_number_prop: { type: 'number', exclusiveMaximum: 100 }, | ||
array_prop: { type: 'array', minItems: 2, maxItems: 3 }, | ||
string_prop: { type: 'string', pattern: '^I_', minLength: 3 } | ||
}, | ||
required: ['min_number_prop', 'max_number_prop'] | ||
}; | ||
|
||
export async function generate(): Promise<void> { | ||
const models = await generator.generate(jsonSchemaDraft7); | ||
for (const model of models) { | ||
console.log(model.result); | ||
} | ||
} | ||
if (require.main === module) { | ||
generate(); | ||
} |
10 changes: 10 additions & 0 deletions
10
examples/java-generate-jakarta-constraint-annotation/package-lock.json
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
10 changes: 10 additions & 0 deletions
10
examples/java-generate-jakarta-constraint-annotation/package.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
"config" : { "example_name" : "java-generate-jakarta-constraint-annotation" }, | ||
"scripts": { | ||
"install": "cd ../.. && npm i", | ||
"start": "../../node_modules/.bin/ts-node --cwd ../../ ./examples/$npm_package_config_example_name/index.ts", | ||
"start:windows": "..\\..\\node_modules\\.bin\\ts-node --cwd ..\\..\\ .\\examples\\%npm_package_config_example_name%\\index.ts", | ||
"test": "../../node_modules/.bin/jest --config=../../jest.config.js ./examples/$npm_package_config_example_name/index.spec.ts", | ||
"test:windows": "..\\..\\node_modules\\.bin\\jest --config=..\\..\\jest.config.js examples/%npm_package_config_example_name%/index.spec.ts" | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
examples/kotlin-generate-jakarta-constraint-annotation/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Jakarta validation constraints annotations | ||
|
||
A basic example that shows how Kotlin data models having `jakarta.validation.constraints` annotations can be generated. | ||
|
||
## How to run this example | ||
|
||
Run this example using: | ||
|
||
```sh | ||
npm i && npm run start | ||
``` | ||
|
||
If you are on Windows, use the `start:windows` script instead: | ||
|
||
```sh | ||
npm i && npm run start:windows | ||
``` |
22 changes: 22 additions & 0 deletions
22
examples/kotlin-generate-jakarta-constraint-annotation/__snapshots__/index.spec.ts.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
// Jest Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`Should be able to generate models with jakarta.validation.constraints annotations and should log expected output to console 1`] = ` | ||
Array [ | ||
"data class JakartaAnnotation( | ||
@get:NotNull | ||
@get:Min(0) | ||
val minNumberProp: Double, | ||
@get:NotNull | ||
@get:Max(99) | ||
val maxNumberProp: Double, | ||
@get:Min(101) | ||
val minNumberPropExclusive: Double? = null, | ||
@get:Size(min=2, max=3) | ||
val arrayProp: List<Any>? = null, | ||
@get:Pattern(regexp=\\"^I_\\") | ||
@get:Size(min=3) | ||
val stringProp: String? = null, | ||
val additionalProperties: Map<String, Any>? = null, | ||
)", | ||
] | ||
`; |
15 changes: 15 additions & 0 deletions
15
examples/kotlin-generate-jakarta-constraint-annotation/index.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
const spy = jest.spyOn(global.console, 'log').mockImplementation(() => { | ||
return; | ||
}); | ||
import { generate } from './index'; | ||
|
||
describe('Should be able to generate models with jakarta.validation.constraints annotations', () => { | ||
afterAll(() => { | ||
jest.restoreAllMocks(); | ||
}); | ||
test('and should log expected output to console', async () => { | ||
await generate(); | ||
expect(spy.mock.calls.length).toEqual(1); | ||
expect(spy.mock.calls[0]).toMatchSnapshot(); | ||
}); | ||
}); |
35 changes: 35 additions & 0 deletions
35
examples/kotlin-generate-jakarta-constraint-annotation/index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import { KotlinGenerator, KOTLIN_CONSTRAINTS_PRESET } from '../../src'; | ||
|
||
const generator = new KotlinGenerator({ | ||
presets: [ | ||
{ | ||
preset: KOTLIN_CONSTRAINTS_PRESET, | ||
options: { | ||
importFrom: 'jakarta' | ||
} | ||
} | ||
] | ||
}); | ||
const jsonSchemaDraft7 = { | ||
$schema: 'http://json-schema.org/draft-07/schema#', | ||
$id: 'JakartaAnnotation', | ||
type: 'object', | ||
properties: { | ||
min_number_prop: { type: 'number', minimum: 0 }, | ||
max_number_prop: { type: 'number', exclusiveMaximum: 100 }, | ||
min_number_prop_exclusive: { type: 'number', exclusiveMinimum: 100 }, | ||
array_prop: { type: 'array', minItems: 2, maxItems: 3 }, | ||
string_prop: { type: 'string', pattern: '^I_', minLength: 3 } | ||
}, | ||
required: ['min_number_prop', 'max_number_prop'] | ||
}; | ||
|
||
export async function generate(): Promise<void> { | ||
const models = await generator.generate(jsonSchemaDraft7); | ||
for (const model of models) { | ||
console.log(model.result); | ||
} | ||
} | ||
if (require.main === module) { | ||
generate(); | ||
} |
10 changes: 10 additions & 0 deletions
10
examples/kotlin-generate-jakarta-constraint-annotation/package-lock.json
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
10 changes: 10 additions & 0 deletions
10
examples/kotlin-generate-jakarta-constraint-annotation/package.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
"config" : { "example_name" : "kotlin-generate-jakarta-constraint-annotation" }, | ||
"scripts": { | ||
"install": "cd ../.. && npm i", | ||
"start": "../../node_modules/.bin/ts-node --cwd ../../ ./examples/$npm_package_config_example_name/index.ts", | ||
"start:windows": "..\\..\\node_modules\\.bin\\ts-node --cwd ..\\..\\ .\\examples\\%npm_package_config_example_name%\\index.ts", | ||
"test": "../../node_modules/.bin/jest --config=../../jest.config.js ./examples/$npm_package_config_example_name/index.spec.ts", | ||
"test:windows": "..\\..\\node_modules\\.bin\\jest --config=..\\..\\jest.config.js examples/%npm_package_config_example_name%/index.spec.ts" | ||
} | ||
} |
Oops, something went wrong.