You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by nr...@apache.org on 2018/03/07 16:55:00 UTC
[geode] branch develop updated: GEODE-4217: Add validation to
CreateConnectionCommand (#1566)
This is an automated email from the ASF dual-hosted git repository.
nreich pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 18560c0 GEODE-4217: Add validation to CreateConnectionCommand (#1566)
18560c0 is described below
commit 18560c0c45f68601aa3cc6e6ddcaa7ba15f17be6
Author: Nick Reich <nr...@pivotal.io>
AuthorDate: Wed Mar 7 08:54:57 2018 -0800
GEODE-4217: Add validation to CreateConnectionCommand (#1566)
* Do not allow creation of connection if user is null but password is not
---
.../jdbc/internal/cli/CreateConnectionCommand.java | 20 +++++++++++++++++++-
.../cli/CreateConnectionCommandDUnitTest.java | 17 +++++++++++++++++
2 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionCommand.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionCommand.java
index c17e2f9..225a7f1 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionCommand.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionCommand.java
@@ -17,6 +17,7 @@ package org.apache.geode.connectors.jdbc.internal.cli;
import java.util.List;
import java.util.Set;
+import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
@@ -29,6 +30,8 @@ import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.AbstractCliAroundInterceptor;
+import org.apache.geode.management.internal.cli.GfshParseResult;
import org.apache.geode.management.internal.cli.commands.GfshCommand;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
@@ -62,7 +65,8 @@ public class CreateConnectionCommand implements GfshCommand {
private static final String ERROR_PREFIX = "ERROR: ";
@CliCommand(value = CREATE_CONNECTION, help = CREATE_CONNECTION__HELP)
- @CliMetaData(relatedTopic = CliStrings.DEFAULT_TOPIC_GEODE)
+ @CliMetaData(relatedTopic = CliStrings.DEFAULT_TOPIC_GEODE,
+ interceptor = "org.apache.geode.connectors.jdbc.internal.cli.CreateConnectionCommand$Interceptor")
@ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
operation = ResourcePermission.Operation.MANAGE)
public Result createConnection(
@@ -142,4 +146,18 @@ public class CreateConnectionCommand implements GfshCommand {
() -> getSharedConfiguration().addXmlEntity(xmlEntity, null));
}
}
+
+ public static class Interceptor extends AbstractCliAroundInterceptor {
+ @Override
+ public Result preExecution(GfshParseResult parseResult) {
+ String user = parseResult.getParamValueAsString(CREATE_CONNECTION__USER);
+ String password = parseResult.getParamValueAsString(CREATE_CONNECTION__PASSWORD);
+
+ if (StringUtils.isNotBlank(password) && StringUtils.isBlank(user)) {
+ return ResultBuilder
+ .createUserErrorResult("need to specify a user if a password is specified.");
+ }
+ return ResultBuilder.createInfoResult("");
+ }
+ }
}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionCommandDUnitTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionCommandDUnitTest.java
index 76c6bab..1019394 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionCommandDUnitTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionCommandDUnitTest.java
@@ -89,4 +89,21 @@ public class CreateConnectionCommandDUnitTest {
.containsEntry("param2", "value2");
});
}
+
+ @Test
+ public void doesNotCreateConnectionIfPasswordSpecifiedWithoutUser() throws Exception {
+ CommandStringBuilder csb = new CommandStringBuilder(CREATE_CONNECTION);
+ csb.addOption(CREATE_CONNECTION__NAME, "name");
+ csb.addOption(CREATE_CONNECTION__URL, "url");
+ csb.addOption(CREATE_CONNECTION__PASSWORD, "secret");
+ csb.addOption(CREATE_CONNECTION__PARAMS, "param1:value1,param2:value2");
+
+ gfsh.executeAndAssertThat(csb.toString()).statusIsError();
+
+ locator.invoke(() -> {
+ String xml = InternalLocator.getLocator().getSharedConfiguration().getConfiguration("cluster")
+ .getCacheXmlContent();
+ assertThat(xml).doesNotContain("jdbc:connector-service");
+ });
+ }
}
--
To stop receiving notification emails like this one, please contact
nreich@apache.org.