This is an automated email from the ASF dual-hosted git repository. klund 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 7112b62 GEODE-5784: Remove unused duplicate condition from AbstractConfig (#2545) 7112b62 is described below commit 7112b626794091a6c8e1fa90b8e263808993d752 Author: Kirk Lund <kl...@apache.org> AuthorDate: Tue Oct 2 12:35:04 2018 -0700 GEODE-5784: Remove unused duplicate condition from AbstractConfig (#2545) Add new characterization tests for AbstractConfig.setAttribute --- .../org/apache/geode/internal/AbstractConfig.java | 12 ---- .../geode/internal/i18n/LocalizedStrings.java | 3 - .../apache/geode/internal/AbstractConfigTest.java | 74 ++++++++++++++++++++-- 3 files changed, 69 insertions(+), 20 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/AbstractConfig.java b/geode-core/src/main/java/org/apache/geode/internal/AbstractConfig.java index f5b1d3d..a1d36d0 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/AbstractConfig.java +++ b/geode-core/src/main/java/org/apache/geode/internal/AbstractConfig.java @@ -37,7 +37,6 @@ import java.util.StringTokenizer; import java.util.TreeSet; import org.apache.geode.InternalGemFireException; -import org.apache.geode.UnmodifiableException; import org.apache.geode.distributed.internal.FlowControlParams; import org.apache.geode.internal.i18n.LocalizedStrings; import org.apache.geode.internal.net.SocketCreator; @@ -224,7 +223,6 @@ public abstract class AbstractConfig implements Config { if (valueType.equals(String.class)) { attObjectValue = value; } else if (valueType.equals(String[].class)) { - // TODO:GEODE-5784: DUPLICATE CONDITION with different behavior attObjectValue = value.split(","); } else if (valueType.equals(Integer.class)) { attObjectValue = Integer.valueOf(value); @@ -252,16 +250,6 @@ public abstract class AbstractConfig implements Config { LocalizedStrings.AbstractConfig_0_VALUE_1_MUST_BE_A_VALID_HOST_NAME_2 .toLocalizedString(name, value, ex.toString())); } - } else if (valueType.equals(String[].class)) { - // TODO:GEODE-5784: DUPLICATE CONDITION with different behavior - if (value == null || value.length() == 0) { - attObjectValue = null; - } else { - String trimAttName = name.substring(0, name.length() - 1); - throw new UnmodifiableException( - LocalizedStrings.AbstractConfig_THE_0_CONFIGURATION_ATTRIBUTE_CAN_NOT_BE_SET_FROM_THE_COMMAND_LINE_SET_1_FOR_EACH_INDIVIDUAL_PARAMETER_INSTEAD - .toLocalizedString(name, trimAttName)); - } } else if (valueType.equals(FlowControlParams.class)) { String[] values = value.split(","); if (values.length != 3) { diff --git a/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java b/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java index 198f081..73030ee 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java +++ b/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java @@ -1888,9 +1888,6 @@ public class LocalizedStrings { public static final StringId AbstractConfig_0_VALUE_1_MUST_HAVE_THREE_ELEMENTS_SEPARATED_BY_COMMAS = new StringId(2155, "{0} value \"{1}\" must have three elements separated by commas"); - public static final StringId AbstractConfig_THE_0_CONFIGURATION_ATTRIBUTE_CAN_NOT_BE_SET_FROM_THE_COMMAND_LINE_SET_1_FOR_EACH_INDIVIDUAL_PARAMETER_INSTEAD = - new StringId(2157, - "The \"{0}\" configuration attribute can not be set from the command line. Set \"{1}\" for each individual parameter instead."); public static final StringId AbstractConfig_UNHANDLED_ATTRIBUTE_NAME_0 = new StringId(2158, "unhandled attribute name \"{0}\"."); public static final StringId AbstractConfig_UNHANDLED_ATTRIBUTE_TYPE_0_FOR_1 = diff --git a/geode-core/src/test/java/org/apache/geode/internal/AbstractConfigTest.java b/geode-core/src/test/java/org/apache/geode/internal/AbstractConfigTest.java index 9ad7403..aebb928 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/AbstractConfigTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/AbstractConfigTest.java @@ -15,18 +15,82 @@ package org.apache.geode.internal; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import org.junit.Before; import org.junit.Test; - public class AbstractConfigTest { + private ConfigSource source; + private AbstractConfig abstractConfig; + + private String stringArrayAttributeName; + + @Before + public void setUp() { + source = mock(ConfigSource.class); + abstractConfig = spy(AbstractConfig.class); + + stringArrayAttributeName = "stringArray"; + + when(abstractConfig.getAttributeType(stringArrayAttributeName)).thenReturn(String[].class); + } + + @Test + public void toStringCanBeMocked() { + when(abstractConfig.toString()).thenReturn("STRING"); + + assertThat(abstractConfig.toString()).isEqualTo("STRING"); + } + + @Test + public void setAttributeForStringArrayTypeWithEmpty() { + abstractConfig.setAttribute(stringArrayAttributeName, "", source); + + verify(abstractConfig).setAttributeObject(stringArrayAttributeName, new String[] {""}, source); + } + @Test - public void shouldBeMockable() throws Exception { - AbstractConfig mockAbstractConfig = mock(AbstractConfig.class); - when(mockAbstractConfig.toString()).thenReturn("STRING"); - assertThat(mockAbstractConfig.toString()).isEqualTo("STRING"); + public void setAttributeForStringArrayTypeWithNull() { + Throwable thrown = + catchThrowable(() -> abstractConfig.setAttribute(stringArrayAttributeName, null, source)); + assertThat(thrown).isInstanceOf(NullPointerException.class); + } + + @Test + public void setAttributeForStringArrayTypeWithNoCommas() { + abstractConfig.setAttribute(stringArrayAttributeName, "value", source); + + verify(abstractConfig).setAttributeObject(stringArrayAttributeName, new String[] {"value"}, + source); + } + + @Test + public void setAttributeForStringArrayTypeWithNestedComma() { + abstractConfig.setAttribute(stringArrayAttributeName, "value1,value2", source); + + verify(abstractConfig).setAttributeObject(stringArrayAttributeName, + new String[] {"value1", "value2"}, source); + } + + @Test + public void setAttributeForStringArrayTypeStartingWithComma() { + abstractConfig.setAttribute(stringArrayAttributeName, ",value", source); + + verify(abstractConfig).setAttributeObject(stringArrayAttributeName, new String[] {"", "value"}, + source); + } + + @Test + public void setAttributeForStringArrayTypeEndingWithComma() { + abstractConfig.setAttribute(stringArrayAttributeName, "value,", source); + + verify(abstractConfig).setAttributeObject(stringArrayAttributeName, new String[] {"value"}, + source); } }