Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
b6aa0f24
Commit
b6aa0f24
authored
Dec 13, 2017
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clean endpointIds in generated metadata
Closes gh-11107
parent
7f2af8b2
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
113 additions
and
11 deletions
+113
-11
ConfigurationMetadataAnnotationProcessor.java
...onprocessor/ConfigurationMetadataAnnotationProcessor.java
+5
-7
ConfigurationMetadata.java
...onfigurationprocessor/metadata/ConfigurationMetadata.java
+2
-1
ItemMetadata.java
...rk/boot/configurationprocessor/metadata/ItemMetadata.java
+7
-0
ConfigurationMetadataAnnotationProcessorTests.java
...cessor/ConfigurationMetadataAnnotationProcessorTests.java
+19
-3
ItemMetadataTests.java
...ot/configurationprocessor/metadata/ItemMetadataTests.java
+51
-0
CamelCaseEndpoint.java
.../boot/configurationsample/endpoint/CamelCaseEndpoint.java
+29
-0
No files found.
spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java
View file @
b6aa0f24
...
@@ -416,23 +416,21 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
...
@@ -416,23 +416,21 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
if
(
endpointId
==
null
||
""
.
equals
(
endpointId
))
{
if
(
endpointId
==
null
||
""
.
equals
(
endpointId
))
{
return
;
// Can't process that endpoint
return
;
// Can't process that endpoint
}
}
String
endpointKey
=
ItemMetadata
.
newItemMetadataPrefix
(
"management.endpoint."
,
endpointId
);
Boolean
enabledByDefault
=
(
Boolean
)
elementValues
.
get
(
"enableByDefault"
);
Boolean
enabledByDefault
=
(
Boolean
)
elementValues
.
get
(
"enableByDefault"
);
String
type
=
this
.
typeUtils
.
getQualifiedName
(
element
);
String
type
=
this
.
typeUtils
.
getQualifiedName
(
element
);
this
.
metadataCollector
this
.
metadataCollector
.
add
(
ItemMetadata
.
newGroup
(
endpointKey
(
endpointId
)
,
type
,
type
,
null
));
.
add
(
ItemMetadata
.
newGroup
(
endpointKey
,
type
,
type
,
null
));
this
.
metadataCollector
.
add
(
ItemMetadata
.
newProperty
(
endpointKey
(
endpointId
)
,
this
.
metadataCollector
.
add
(
ItemMetadata
.
newProperty
(
endpointKey
,
"enabled"
,
Boolean
.
class
.
getName
(),
type
,
null
,
"enabled"
,
Boolean
.
class
.
getName
(),
type
,
null
,
String
.
format
(
"Whether to enable the %s endpoint."
,
endpointId
),
String
.
format
(
"Whether to enable the %s endpoint."
,
endpointId
),
(
enabledByDefault
==
null
?
true
:
enabledByDefault
),
null
));
(
enabledByDefault
==
null
?
true
:
enabledByDefault
),
null
));
this
.
metadataCollector
.
add
(
ItemMetadata
.
newProperty
(
endpointKey
(
endpointId
)
,
this
.
metadataCollector
.
add
(
ItemMetadata
.
newProperty
(
endpointKey
,
"cache.time-to-live"
,
Duration
.
class
.
getName
(),
type
,
null
,
"cache.time-to-live"
,
Duration
.
class
.
getName
(),
type
,
null
,
"Maximum time that a response can be cached."
,
0
,
null
));
"Maximum time that a response can be cached."
,
0
,
null
));
}
}
private
String
endpointKey
(
String
suffix
)
{
return
"management.endpoint."
+
suffix
;
}
private
boolean
isNested
(
Element
returnType
,
VariableElement
field
,
private
boolean
isNested
(
Element
returnType
,
VariableElement
field
,
TypeElement
element
)
{
TypeElement
element
)
{
if
(
hasAnnotation
(
field
,
nestedConfigurationPropertyAnnotation
()))
{
if
(
hasAnnotation
(
field
,
nestedConfigurationPropertyAnnotation
()))
{
...
...
spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/ConfigurationMetadata.java
View file @
b6aa0f24
...
@@ -22,6 +22,7 @@ import java.util.Collections;
...
@@ -22,6 +22,7 @@ import java.util.Collections;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.Set
;
...
@@ -191,7 +192,7 @@ public class ConfigurationMetadata {
...
@@ -191,7 +192,7 @@ public class ConfigurationMetadata {
previous
=
current
;
previous
=
current
;
}
}
return
dashed
.
toString
().
toLowerCase
();
return
dashed
.
toString
().
toLowerCase
(
Locale
.
ENGLISH
);
}
}
private
static
<
T
extends
Comparable
<
T
>>
List
<
T
>
flattenValues
(
Map
<?,
List
<
T
>>
map
)
{
private
static
<
T
extends
Comparable
<
T
>>
List
<
T
>
flattenValues
(
Map
<?,
List
<
T
>>
map
)
{
...
...
spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/metadata/ItemMetadata.java
View file @
b6aa0f24
...
@@ -16,6 +16,8 @@
...
@@ -16,6 +16,8 @@
package
org
.
springframework
.
boot
.
configurationprocessor
.
metadata
;
package
org
.
springframework
.
boot
.
configurationprocessor
.
metadata
;
import
java.util.Locale
;
/**
/**
* A group or property meta-data item from some {@link ConfigurationMetadata}.
* A group or property meta-data item from some {@link ConfigurationMetadata}.
*
*
...
@@ -215,6 +217,11 @@ public final class ItemMetadata implements Comparable<ItemMetadata> {
...
@@ -215,6 +217,11 @@ public final class ItemMetadata implements Comparable<ItemMetadata> {
sourceMethod
,
description
,
defaultValue
,
deprecation
);
sourceMethod
,
description
,
defaultValue
,
deprecation
);
}
}
public
static
String
newItemMetadataPrefix
(
String
prefix
,
String
suffix
)
{
return
prefix
.
toLowerCase
(
Locale
.
ENGLISH
)
+
ConfigurationMetadata
.
toDashedCase
(
suffix
);
}
/**
/**
* The item type.
* The item type.
*/
*/
...
...
spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java
View file @
b6aa0f24
...
@@ -37,6 +37,7 @@ import org.springframework.boot.configurationprocessor.metadata.ItemHint;
...
@@ -37,6 +37,7 @@ import org.springframework.boot.configurationprocessor.metadata.ItemHint;
import
org.springframework.boot.configurationprocessor.metadata.ItemMetadata
;
import
org.springframework.boot.configurationprocessor.metadata.ItemMetadata
;
import
org.springframework.boot.configurationprocessor.metadata.Metadata
;
import
org.springframework.boot.configurationprocessor.metadata.Metadata
;
import
org.springframework.boot.configurationprocessor.metadata.TestJsonConverter
;
import
org.springframework.boot.configurationprocessor.metadata.TestJsonConverter
;
import
org.springframework.boot.configurationsample.endpoint.CamelCaseEndpoint
;
import
org.springframework.boot.configurationsample.endpoint.CustomPropertiesEndpoint
;
import
org.springframework.boot.configurationsample.endpoint.CustomPropertiesEndpoint
;
import
org.springframework.boot.configurationsample.endpoint.DisabledEndpoint
;
import
org.springframework.boot.configurationsample.endpoint.DisabledEndpoint
;
import
org.springframework.boot.configurationsample.endpoint.EnabledEndpoint
;
import
org.springframework.boot.configurationsample.endpoint.EnabledEndpoint
;
...
@@ -583,6 +584,16 @@ public class ConfigurationMetadataAnnotationProcessorTests {
...
@@ -583,6 +584,16 @@ public class ConfigurationMetadataAnnotationProcessorTests {
assertThat
(
metadata
.
getItems
()).
hasSize
(
3
);
assertThat
(
metadata
.
getItems
()).
hasSize
(
3
);
}
}
@Test
public
void
camelCaseEndpoint
()
{
ConfigurationMetadata
metadata
=
compile
(
CamelCaseEndpoint
.
class
);
assertThat
(
metadata
).
has
(
Metadata
.
withGroup
(
"management.endpoint.pascal-case"
)
.
fromSource
(
CamelCaseEndpoint
.
class
));
assertThat
(
metadata
).
has
(
enabledFlag
(
"PascalCase"
,
"pascal-case"
,
true
));
assertThat
(
metadata
).
has
(
cacheTtl
(
"pascal-case"
));
assertThat
(
metadata
.
getItems
()).
hasSize
(
3
);
}
@Test
@Test
public
void
incrementalEndpointBuildChangeGeneralEnabledFlag
()
throws
Exception
{
public
void
incrementalEndpointBuildChangeGeneralEnabledFlag
()
throws
Exception
{
TestProject
project
=
new
TestProject
(
this
.
temporaryFolder
,
TestProject
project
=
new
TestProject
(
this
.
temporaryFolder
,
...
@@ -623,11 +634,16 @@ public class ConfigurationMetadataAnnotationProcessorTests {
...
@@ -623,11 +634,16 @@ public class ConfigurationMetadataAnnotationProcessorTests {
assertThat
(
metadata
.
getItems
()).
hasSize
(
3
);
assertThat
(
metadata
.
getItems
()).
hasSize
(
3
);
}
}
private
Metadata
.
MetadataItemCondition
enabledFlag
(
String
endpointId
,
String
endpointSuffix
,
Boolean
defaultValue
)
{
return
Metadata
.
withEnabledFlag
(
"management.endpoint."
+
endpointSuffix
+
".enabled"
).
withDefaultValue
(
defaultValue
).
withDescription
(
String
.
format
(
"Whether to enable the %s endpoint."
,
endpointId
));
}
private
Metadata
.
MetadataItemCondition
enabledFlag
(
String
endpointId
,
private
Metadata
.
MetadataItemCondition
enabledFlag
(
String
endpointId
,
Boolean
defaultValue
)
{
Boolean
defaultValue
)
{
return
Metadata
.
withEnabledFlag
(
"management.endpoint."
+
endpointId
+
".enabled"
)
return
enabledFlag
(
endpointId
,
endpointId
,
defaultValue
);
.
withDefaultValue
(
defaultValue
).
withDescription
(
String
.
format
(
"Whether to enable the %s endpoint."
,
endpointId
));
}
}
private
Metadata
.
MetadataItemCondition
cacheTtl
(
String
endpointId
)
{
private
Metadata
.
MetadataItemCondition
cacheTtl
(
String
endpointId
)
{
...
...
spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/ItemMetadataTests.java
0 → 100644
View file @
b6aa0f24
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
configurationprocessor
.
metadata
;
import
org.junit.Test
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link ItemMetadata}.
*
* @author Stephane Nicoll
*/
public
class
ItemMetadataTests
{
@Test
public
void
newItemMetadataPrefixWithUpperCasePrefix
()
{
assertThat
(
newItemMetadataPrefix
(
"Prefix."
,
"value"
)).
isEqualTo
(
"prefix.value"
);
}
@Test
public
void
newItemMetadataPrefixWithCamelCaseSuffix
()
{
assertThat
(
newItemMetadataPrefix
(
"prefix."
,
"myValue"
))
.
isEqualTo
(
"prefix.my-value"
);
}
@Test
public
void
newItemMetadataPrefixWithUpperCamelCaseSuffix
()
{
assertThat
(
newItemMetadataPrefix
(
"prefix."
,
"MyValue"
))
.
isEqualTo
(
"prefix.my-value"
);
}
private
String
newItemMetadataPrefix
(
String
prefix
,
String
suffix
)
{
return
ItemMetadata
.
newItemMetadataPrefix
(
prefix
,
suffix
);
}
}
spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/endpoint/CamelCaseEndpoint.java
0 → 100644
View file @
b6aa0f24
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
configurationsample
.
endpoint
;
import
org.springframework.boot.configurationsample.Endpoint
;
/**
* An endpoint with a upper camel case id.
*
* @author Stephane Nicoll
*/
@Endpoint
(
id
=
"PascalCase"
)
public
class
CamelCaseEndpoint
{
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment