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
c8f57acc
Commit
c8f57acc
authored
May 29, 2018
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.0.x'
parents
32a9addb
faa9910e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
43 additions
and
1 deletion
+43
-1
CachingOperationInvokerAdvisor.java
...ndpoint/invoker/cache/CachingOperationInvokerAdvisor.java
+13
-1
CachingOperationInvokerAdvisorTests.java
...nt/invoker/cache/CachingOperationInvokerAdvisorTests.java
+14
-0
CachingOperationInvokerTests.java
.../endpoint/invoker/cache/CachingOperationInvokerTests.java
+16
-0
No files found.
spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisor.java
View file @
c8f57acc
...
@@ -19,8 +19,10 @@ package org.springframework.boot.actuate.endpoint.invoker.cache;
...
@@ -19,8 +19,10 @@ package org.springframework.boot.actuate.endpoint.invoker.cache;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
org.springframework.boot.actuate.endpoint.OperationType
;
import
org.springframework.boot.actuate.endpoint.OperationType
;
import
org.springframework.boot.actuate.endpoint.SecurityContext
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationInvoker
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationInvoker
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationInvokerAdvisor
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationInvokerAdvisor
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationParameter
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationParameters
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationParameters
;
/**
/**
...
@@ -40,7 +42,7 @@ public class CachingOperationInvokerAdvisor implements OperationInvokerAdvisor {
...
@@ -40,7 +42,7 @@ public class CachingOperationInvokerAdvisor implements OperationInvokerAdvisor {
@Override
@Override
public
OperationInvoker
apply
(
String
endpointId
,
OperationType
operationType
,
public
OperationInvoker
apply
(
String
endpointId
,
OperationType
operationType
,
OperationParameters
parameters
,
OperationInvoker
invoker
)
{
OperationParameters
parameters
,
OperationInvoker
invoker
)
{
if
(
operationType
==
OperationType
.
READ
&&
!
parameters
.
hasMandatoryParameter
(
))
{
if
(
operationType
==
OperationType
.
READ
&&
!
hasMandatoryParameter
(
parameters
))
{
Long
timeToLive
=
this
.
endpointIdTimeToLive
.
apply
(
endpointId
);
Long
timeToLive
=
this
.
endpointIdTimeToLive
.
apply
(
endpointId
);
if
(
timeToLive
!=
null
&&
timeToLive
>
0
)
{
if
(
timeToLive
!=
null
&&
timeToLive
>
0
)
{
return
new
CachingOperationInvoker
(
invoker
,
timeToLive
);
return
new
CachingOperationInvoker
(
invoker
,
timeToLive
);
...
@@ -49,4 +51,14 @@ public class CachingOperationInvokerAdvisor implements OperationInvokerAdvisor {
...
@@ -49,4 +51,14 @@ public class CachingOperationInvokerAdvisor implements OperationInvokerAdvisor {
return
invoker
;
return
invoker
;
}
}
private
boolean
hasMandatoryParameter
(
OperationParameters
parameters
)
{
for
(
OperationParameter
parameter
:
parameters
)
{
if
(
parameter
.
isMandatory
()
&&
!
SecurityContext
.
class
.
isAssignableFrom
(
parameter
.
getType
()))
{
return
true
;
}
}
return
false
;
}
}
}
spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisorTests.java
View file @
c8f57acc
...
@@ -25,6 +25,7 @@ import org.mockito.Mock;
...
@@ -25,6 +25,7 @@ import org.mockito.Mock;
import
org.mockito.MockitoAnnotations
;
import
org.mockito.MockitoAnnotations
;
import
org.springframework.boot.actuate.endpoint.OperationType
;
import
org.springframework.boot.actuate.endpoint.OperationType
;
import
org.springframework.boot.actuate.endpoint.SecurityContext
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationInvoker
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationInvoker
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationParameters
;
import
org.springframework.boot.actuate.endpoint.invoke.OperationParameters
;
import
org.springframework.boot.actuate.endpoint.invoke.reflect.OperationMethod
;
import
org.springframework.boot.actuate.endpoint.invoke.reflect.OperationMethod
;
...
@@ -111,6 +112,14 @@ public class CachingOperationInvokerAdvisorTests {
...
@@ -111,6 +112,14 @@ public class CachingOperationInvokerAdvisorTests {
assertAdviseIsApplied
(
parameters
);
assertAdviseIsApplied
(
parameters
);
}
}
@Test
public
void
applyWithSecurityContextShouldAddAdvise
()
{
OperationParameters
parameters
=
getParameters
(
"getWithSecurityContext"
,
SecurityContext
.
class
,
String
.
class
);
given
(
this
.
timeToLive
.
apply
(
any
())).
willReturn
(
100L
);
assertAdviseIsApplied
(
parameters
);
}
private
void
assertAdviseIsApplied
(
OperationParameters
parameters
)
{
private
void
assertAdviseIsApplied
(
OperationParameters
parameters
)
{
OperationInvoker
advised
=
this
.
advisor
.
apply
(
"foo"
,
OperationType
.
READ
,
OperationInvoker
advised
=
this
.
advisor
.
apply
(
"foo"
,
OperationType
.
READ
,
parameters
,
this
.
invoker
);
parameters
,
this
.
invoker
);
...
@@ -147,6 +156,11 @@ public class CachingOperationInvokerAdvisorTests {
...
@@ -147,6 +156,11 @@ public class CachingOperationInvokerAdvisorTests {
return
""
;
return
""
;
}
}
public
String
getWithSecurityContext
(
SecurityContext
securityContext
,
@Nullable
String
bar
)
{
return
""
;
}
}
}
}
}
spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerTests.java
View file @
c8f57acc
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
package
org
.
springframework
.
boot
.
actuate
.
endpoint
.
invoker
.
cache
;
package
org
.
springframework
.
boot
.
actuate
.
endpoint
.
invoker
.
cache
;
import
java.security.Principal
;
import
java.util.Collections
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -96,6 +97,21 @@ public class CachingOperationInvokerTests {
...
@@ -96,6 +97,21 @@ public class CachingOperationInvokerTests {
verify
(
target
,
times
(
3
)).
invoke
(
context
);
verify
(
target
,
times
(
3
)).
invoke
(
context
);
}
}
@Test
public
void
targetAlwaysInvokedWithPrincipal
()
{
OperationInvoker
target
=
mock
(
OperationInvoker
.
class
);
Map
<
String
,
Object
>
parameters
=
new
HashMap
<>();
SecurityContext
securityContext
=
mock
(
SecurityContext
.
class
);
given
(
securityContext
.
getPrincipal
()).
willReturn
(
mock
(
Principal
.
class
));
InvocationContext
context
=
new
InvocationContext
(
securityContext
,
parameters
);
given
(
target
.
invoke
(
context
)).
willReturn
(
new
Object
());
CachingOperationInvoker
invoker
=
new
CachingOperationInvoker
(
target
,
500L
);
invoker
.
invoke
(
context
);
invoker
.
invoke
(
context
);
invoker
.
invoke
(
context
);
verify
(
target
,
times
(
3
)).
invoke
(
context
);
}
@Test
@Test
public
void
targetInvokedWhenCacheExpires
()
throws
InterruptedException
{
public
void
targetInvokedWhenCacheExpires
()
throws
InterruptedException
{
OperationInvoker
target
=
mock
(
OperationInvoker
.
class
);
OperationInvoker
target
=
mock
(
OperationInvoker
.
class
);
...
...
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