Polish contribution

Closes gh-5335
This commit is contained in:
Stephane Nicoll 2016-03-08 09:45:35 +01:00
parent 79cd01eb7a
commit a83dae0e10
4 changed files with 58 additions and 9 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2015 the original author or authors. * Copyright 2012-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -77,12 +77,18 @@ class RawConfigurationMetadata {
} }
ConfigurationMetadataSource source = getSource(item.getSourceType()); ConfigurationMetadataSource source = getSource(item.getSourceType());
if (source != null) { if (source != null) {
String dottedPrefix = source.getGroupId() + "."; String groupId = source.getGroupId();
String dottedPrefix = groupId + ".";
String id = item.getId(); String id = item.getId();
if (id.startsWith(dottedPrefix)) { if (hasLength(groupId) && id.startsWith(dottedPrefix)) {
String name = id.substring(dottedPrefix.length(), id.length()); String name = id.substring(dottedPrefix.length(), id.length());
item.setName(name); item.setName(name);
} }
} }
} }
private static boolean hasLength(String s) {
return (s != null && s.length() > 0);
}
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2015 the original author or authors. * Copyright 2012-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -123,6 +123,22 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
} }
} }
@Test
public void emptyGroups() throws IOException {
InputStream in = getInputStreamFor("empty-groups");
try {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder
.create(in).build();
validateEmptyGroup(repo);
assertEquals(1, repo.getAllGroups().size());
contains(repo.getAllProperties(), "name", "title");
assertEquals(2, repo.getAllProperties().size());
}
finally {
in.close();
}
}
@Test @Test
public void builderInstancesAreIsolated() throws IOException { public void builderInstancesAreIsolated() throws IOException {
InputStream foo = getInputStreamFor("foo"); InputStream foo = getInputStreamFor("foo");
@ -184,6 +200,20 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
validatePropertyHints(repo.getAllProperties().get("spring.bar.counter"), 0, 0); validatePropertyHints(repo.getAllProperties().get("spring.bar.counter"), 0, 0);
} }
private void validateEmptyGroup(ConfigurationMetadataRepository repo) {
ConfigurationMetadataGroup group = repo.getAllGroups().get("");
contains(group.getSources(), "org.acme.Foo", "org.acme.Bar");
ConfigurationMetadataSource source = group.getSources().get("org.acme.Foo");
contains(source.getProperties(), "name");
assertEquals(1, source.getProperties().size());
ConfigurationMetadataSource source2 = group.getSources()
.get("org.acme.Bar");
contains(source2.getProperties(), "title");
assertEquals(1, source2.getProperties().size());
validatePropertyHints(repo.getAllProperties().get("name"), 0, 0);
validatePropertyHints(repo.getAllProperties().get("title"), 0, 0);
}
private void validatePropertyHints(ConfigurationMetadataProperty property, private void validatePropertyHints(ConfigurationMetadataProperty property,
int valueHints, int valueProviders) { int valueHints, int valueProviders) {
assertEquals(valueHints, property.getValueHints().size()); assertEquals(valueHints, property.getValueHints().size());

View File

@ -54,13 +54,14 @@ public class JsonReaderTests extends AbstractConfigurationMetadataTests {
@Test @Test
public void emptyGroupName() throws IOException { public void emptyGroupName() throws IOException {
RawConfigurationMetadata rawMetadata = readFor("emptygroup"); RawConfigurationMetadata rawMetadata = readFor("empty-groups");
List<ConfigurationMetadataItem> items = rawMetadata.getItems(); List<ConfigurationMetadataItem> items = rawMetadata.getItems();
assertEquals(1, items.size()); assertEquals(2, items.size());
ConfigurationMetadataItem item = items.get(0);
assertProperty(item, "name", "name", String.class, null);
ConfigurationMetadataItem name = items.get(0);
assertProperty(name, "name", "name", String.class, null);
ConfigurationMetadataItem dotTitle = items.get(1);
assertProperty(dotTitle, "title", "title", String.class, null);
} }
@Test @Test

View File

@ -6,6 +6,13 @@
"sourceType": "org.acme.config.FooApp", "sourceType": "org.acme.config.FooApp",
"sourceMethod": "foo()", "sourceMethod": "foo()",
"description": "This is Foo." "description": "This is Foo."
},
{
"name": "",
"type": "org.acme.Bar",
"sourceType": "org.acme.config.FooApp",
"sourceMethod": "bar()",
"description": "This is Bar."
} }
], ],
"properties": [ "properties": [
@ -13,6 +20,11 @@
"name": "name", "name": "name",
"type": "java.lang.String", "type": "java.lang.String",
"sourceType": "org.acme.Foo" "sourceType": "org.acme.Foo"
},
{
"name": "title",
"type": "java.lang.String",
"sourceType": "org.acme.Bar"
} }
] ]
} }