diff --git a/geode-gfsh/src/main/java/org/apache/geode/management/internal/web/shell/HttpOperationInvoker.java b/geode-gfsh/src/main/java/org/apache/geode/management/internal/web/shell/HttpOperationInvoker.java index bc70f5f4be6..c81202f1f82 100644 --- a/geode-gfsh/src/main/java/org/apache/geode/management/internal/web/shell/HttpOperationInvoker.java +++ b/geode-gfsh/src/main/java/org/apache/geode/management/internal/web/shell/HttpOperationInvoker.java @@ -17,6 +17,7 @@ import java.io.File; import java.io.IOException; import java.net.URI; +import java.util.Base64; import java.util.Properties; import java.util.Set; import java.util.concurrent.Executors; @@ -40,7 +41,6 @@ import org.apache.geode.management.internal.cli.CommandRequest; import org.apache.geode.management.internal.cli.shell.Gfsh; import org.apache.geode.management.internal.cli.shell.OperationInvoker; -import org.apache.geode.management.internal.web.domain.QueryParameterSource; import org.apache.geode.management.internal.web.http.support.HttpRequester; import org.apache.geode.management.internal.web.shell.support.HttpMBeanProxyFactory; @@ -383,8 +383,14 @@ public Object invoke(final String resourceName, final String operationName, fina public Set queryNames(final ObjectName objectName, final QueryExp queryExpression) { final URI link = HttpRequester.createURI(baseUrl, "/mbean/query"); - Object content = new QueryParameterSource(objectName, queryExpression); try { + final MultiValueMap content = new LinkedMultiValueMap(); + content.add("objectName", objectName.toString()); + if (queryExpression != null) { + content.add("queryExpression", + Base64.getEncoder().encodeToString(IOUtils.serializeObject(queryExpression))); + } + return (Set) IOUtils .deserializeObject(httpRequester.post(link, content, byte[].class)); } catch (Exception e) { diff --git a/geode-web/src/main/java/org/apache/geode/management/internal/web/controllers/ShellCommandsController.java b/geode-web/src/main/java/org/apache/geode/management/internal/web/controllers/ShellCommandsController.java index 3bc43a48e8d..8bb6cd8a2e0 100644 --- a/geode-web/src/main/java/org/apache/geode/management/internal/web/controllers/ShellCommandsController.java +++ b/geode-web/src/main/java/org/apache/geode/management/internal/web/controllers/ShellCommandsController.java @@ -20,6 +20,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Path; +import java.util.Base64; import java.util.Optional; import java.util.Set; @@ -29,6 +30,7 @@ import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; +import javax.management.QueryExp; import javax.management.ReflectionException; import org.apache.commons.io.FileUtils; @@ -39,7 +41,6 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @@ -55,7 +56,6 @@ import org.apache.geode.management.internal.cli.result.model.ResultModel; import org.apache.geode.management.internal.cli.util.CommandStringBuilder; import org.apache.geode.management.internal.i18n.CliStrings; -import org.apache.geode.management.internal.web.domain.QueryParameterSource; import org.apache.geode.util.internal.GeodeConverter; /** @@ -162,11 +162,17 @@ public ResponseEntity invoke(@RequestParam("resourceName") final String resou } @RequestMapping(method = RequestMethod.POST, value = "/mbean/query") - public ResponseEntity queryNames(@RequestBody final QueryParameterSource query) - throws IOException { + public ResponseEntity queryNames(@RequestParam("objectName") final String objectName, + @RequestParam(value = "queryExpression", required = false) final String queryExpressionBase64) + throws Exception { // Exceptions are caught by the @ExceptionHandler AbstractCommandsController.handleAppException - final Set objectNames = - getMBeanServer().queryNames(query.getObjectName(), query.getQueryExpression()); + ObjectName name = ObjectName.getInstance(decode(objectName)); + QueryExp query = null; + if (queryExpressionBase64 != null) { + query = + (QueryExp) IOUtils.deserializeObject(Base64.getDecoder().decode(queryExpressionBase64)); + } + final Set objectNames = getMBeanServer().queryNames(name, query); return new ResponseEntity<>(IOUtils.serializeObject(objectNames), HttpStatus.OK); } diff --git a/geode-web/src/main/webapp/WEB-INF/geode-mgmt-servlet.xml b/geode-web/src/main/webapp/WEB-INF/geode-mgmt-servlet.xml index 0ea3261d606..e3c417a4595 100644 --- a/geode-web/src/main/webapp/WEB-INF/geode-mgmt-servlet.xml +++ b/geode-web/src/main/webapp/WEB-INF/geode-mgmt-servlet.xml @@ -48,7 +48,6 @@ limitations under the License. -