mirror of
https://gitee.com/dcren/initializr.git
synced 2025-05-03 12:18:04 +08:00
Add dependency alias support
This commit allows to specify an arbitrary number of aliases for a dependency. A project can be generated using that dependency either referring to its main id or any of its registered aliases. Fixes gh-29
This commit is contained in:
parent
50ee4a5a91
commit
b5845ab3c4
@ -20,6 +20,8 @@ initializr:
|
||||
id: jdbc
|
||||
- name: JPA
|
||||
id: data-jpa
|
||||
aliases:
|
||||
- jpa
|
||||
- name: MongoDB
|
||||
id: data-mongodb
|
||||
- name: Redis
|
||||
|
@ -93,6 +93,9 @@ class InitializrMetadata {
|
||||
for (Dependency dependency : group.getContent()) {
|
||||
validateDependency(dependency)
|
||||
indexDependency(dependency.id, dependency)
|
||||
for (String alias : dependency.aliases) {
|
||||
indexDependency(alias, dependency)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -153,6 +156,9 @@ class InitializrMetadata {
|
||||
@ToString(ignoreNulls = true, includePackage = false)
|
||||
static class Dependency extends IdentifiableElement {
|
||||
|
||||
@JsonIgnore
|
||||
List<String> aliases = []
|
||||
|
||||
@JsonIgnore
|
||||
String groupId
|
||||
|
||||
|
@ -59,8 +59,6 @@ class ProjectRequest {
|
||||
if (!style.class.isArray() && !(style instanceof Collection)) {
|
||||
style = [style]
|
||||
}
|
||||
style = style.collect { it == 'jpa' ? 'data-jpa' : it }
|
||||
style.collect { it == '' ? '' : '-' + it }
|
||||
dependencies = style.collect {
|
||||
InitializrMetadata.Dependency dependency = metadata.getDependency(it)
|
||||
if (dependency == null) {
|
||||
|
@ -115,17 +115,12 @@ class InitializrMetadataTests {
|
||||
|
||||
@Test
|
||||
void indexedDependencies() {
|
||||
InitializrMetadata metadata = new InitializrMetadata()
|
||||
InitializrMetadata.DependencyGroup group = new InitializrMetadata.DependencyGroup()
|
||||
|
||||
InitializrMetadata.Dependency dependency = createDependency('first')
|
||||
group.content.add(dependency)
|
||||
InitializrMetadata.Dependency dependency2 = createDependency('second')
|
||||
group.content.add(dependency2)
|
||||
|
||||
metadata.dependencies.add(group)
|
||||
|
||||
metadata.validate()
|
||||
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
|
||||
.addDependencyGroup('foo', dependency, dependency2).get()
|
||||
|
||||
assertSame dependency, metadata.getDependency('first')
|
||||
assertSame dependency2, metadata.getDependency('second')
|
||||
@ -134,19 +129,46 @@ class InitializrMetadataTests {
|
||||
|
||||
@Test
|
||||
void addTwoDependenciesWithSameId() {
|
||||
InitializrMetadata metadata = new InitializrMetadata()
|
||||
InitializrMetadata.DependencyGroup group = new InitializrMetadata.DependencyGroup()
|
||||
|
||||
InitializrMetadata.Dependency dependency = createDependency('conflict')
|
||||
group.content.add(dependency)
|
||||
InitializrMetadata.Dependency dependency2 = createDependency('conflict')
|
||||
group.content.add(dependency2)
|
||||
|
||||
metadata.dependencies.add(group)
|
||||
InitializrMetadataBuilder builder = InitializrMetadataBuilder.withDefaults()
|
||||
.addDependencyGroup('foo', dependency, dependency2)
|
||||
|
||||
thrown.expect(IllegalArgumentException)
|
||||
thrown.expectMessage('conflict')
|
||||
metadata.validate()
|
||||
builder.get()
|
||||
}
|
||||
|
||||
@Test
|
||||
void addDependencyWithAliases() {
|
||||
InitializrMetadata.Dependency dependency = createDependency('first')
|
||||
dependency.aliases.add('alias1')
|
||||
dependency.aliases.add('alias2')
|
||||
|
||||
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
|
||||
.addDependencyGroup('foo', dependency).get()
|
||||
|
||||
assertSame dependency, metadata.getDependency('first')
|
||||
assertSame dependency, metadata.getDependency('alias1')
|
||||
assertSame dependency, metadata.getDependency('alias2')
|
||||
}
|
||||
|
||||
@Test
|
||||
void aliasClashWithAnotherDependency() {
|
||||
InitializrMetadata.Dependency dependency = createDependency('first')
|
||||
dependency.aliases.add('alias1')
|
||||
dependency.aliases.add('alias2')
|
||||
|
||||
InitializrMetadata.Dependency dependency2 = createDependency('alias2')
|
||||
|
||||
InitializrMetadataBuilder builder = InitializrMetadataBuilder.withDefaults()
|
||||
.addDependencyGroup('foo', dependency)
|
||||
.addDependencyGroup('bar', dependency2)
|
||||
|
||||
thrown.expect(IllegalArgumentException)
|
||||
thrown.expectMessage('alias2')
|
||||
builder.get()
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -13,6 +13,8 @@ initializr:
|
||||
id: security
|
||||
- name: Data JPA
|
||||
id: data-jpa
|
||||
aliases:
|
||||
- jpa
|
||||
- name: Other
|
||||
content:
|
||||
- name: Foo
|
||||
|
Loading…
Reference in New Issue
Block a user