4 changed files with 119 additions and 1 deletions
@ -0,0 +1,80 @@
@@ -0,0 +1,80 @@
|
||||
/* |
||||
* Copyright 2012-present 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 |
||||
* |
||||
* https://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.actuate.endpoint.jmx; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
import com.fasterxml.jackson.databind.JavaType; |
||||
import com.fasterxml.jackson.databind.ObjectMapper; |
||||
import org.jspecify.annotations.Nullable; |
||||
|
||||
import org.springframework.lang.Contract; |
||||
|
||||
/** |
||||
* {@link JmxOperationResponseMapper} that delegates to a Jackson 2 {@link ObjectMapper} |
||||
* to return a JSON response. |
||||
* |
||||
* @author Stephane Nicoll |
||||
* @since 4.0.0 |
||||
* @deprecated since 4.0.0 for removal in 4.2.0 in favor of |
||||
* {@link JacksonJmxOperationResponseMapper}. |
||||
*/ |
||||
@Deprecated(since = "4.0.0", forRemoval = true) |
||||
public class Jackson2JmxOperationResponseMapper implements JmxOperationResponseMapper { |
||||
|
||||
private final ObjectMapper objectMapper; |
||||
|
||||
private final JavaType listType; |
||||
|
||||
private final JavaType mapType; |
||||
|
||||
public Jackson2JmxOperationResponseMapper(@Nullable ObjectMapper objectMapper) { |
||||
this.objectMapper = (objectMapper != null) ? objectMapper : new ObjectMapper(); |
||||
this.listType = this.objectMapper.getTypeFactory().constructParametricType(List.class, Object.class); |
||||
this.mapType = this.objectMapper.getTypeFactory() |
||||
.constructParametricType(Map.class, String.class, Object.class); |
||||
} |
||||
|
||||
@Override |
||||
public Class<?> mapResponseType(Class<?> responseType) { |
||||
if (CharSequence.class.isAssignableFrom(responseType)) { |
||||
return String.class; |
||||
} |
||||
if (responseType.isArray() || Collection.class.isAssignableFrom(responseType)) { |
||||
return List.class; |
||||
} |
||||
return Map.class; |
||||
} |
||||
|
||||
@Override |
||||
@Contract("!null -> !null") |
||||
public @Nullable Object mapResponse(@Nullable Object response) { |
||||
if (response == null) { |
||||
return null; |
||||
} |
||||
if (response instanceof CharSequence) { |
||||
return response.toString(); |
||||
} |
||||
if (response.getClass().isArray() || response instanceof Collection) { |
||||
return this.objectMapper.convertValue(response, this.listType); |
||||
} |
||||
return this.objectMapper.convertValue(response, this.mapType); |
||||
} |
||||
|
||||
} |
||||
@ -1 +1,3 @@
@@ -1 +1,3 @@
|
||||
management.endpoints.jmx.exposure.include=* |
||||
management.endpoints.web.exposure.include=* |
||||
|
||||
|
||||
Loading…
Reference in new issue