SGF-289 - Enumeration restrictions (xsd:enumeration) should be avoided in the XML schema.
Removed the XSD enumeration restriction on the 'scope' attribute of the 'baseReplicatedRegionType' complexType, Region element definition in the SDG XSD allowing the use of property placeholders to specify a GemFire Cache Region's Scope for different distribution patterns. In addition, completely removed the 'scopeType' simpleType element definition in the SDG XSD.
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright 2010-2013 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
|
||||
*
|
||||
* http://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.data.gemfire;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.gemstone.gemfire.cache.Scope;
|
||||
|
||||
/**
|
||||
* The ScopeConverterTest class is a test suite of test cases testing the contract and functionality
|
||||
* of the ScopeConverter class.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
* @see org.springframework.data.gemfire.ScopeConverter
|
||||
* @since 1.6.0
|
||||
*/
|
||||
public class ScopeConverterTest {
|
||||
|
||||
private final ScopeConverter converter = new ScopeConverter();
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
converter.setValue(null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConvert() {
|
||||
assertEquals(Scope.DISTRIBUTED_ACK, converter.convert("distributed-ACK"));
|
||||
assertEquals(Scope.DISTRIBUTED_NO_ACK, converter.convert(" Distributed_NO-aCK"));
|
||||
assertEquals(Scope.LOCAL, converter.convert("loCAL "));
|
||||
assertEquals(Scope.GLOBAL, converter.convert(" GLOBal "));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testConvertIllegalValue() {
|
||||
try {
|
||||
converter.convert("illegal-value");
|
||||
}
|
||||
catch (IllegalArgumentException expected) {
|
||||
assertEquals("(illegal-value) is not a valid Scope!", expected.getMessage());
|
||||
throw expected;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAsText() {
|
||||
assertNull(converter.getValue());
|
||||
converter.setAsText("DisTributeD-nO_Ack");
|
||||
assertEquals(Scope.DISTRIBUTED_NO_ACK, converter.getValue());
|
||||
converter.setAsText("distributed-ack");
|
||||
assertEquals(Scope.DISTRIBUTED_ACK, converter.getValue());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testSetAsTextWithIllegalValue() {
|
||||
try {
|
||||
assertNull(converter.getValue());
|
||||
converter.setAsText("d!5tr!but3d-n0_@ck");
|
||||
}
|
||||
catch (IllegalArgumentException expected) {
|
||||
assertEquals("(d!5tr!but3d-n0_@ck) is not a valid Scope!", expected.getMessage());
|
||||
throw expected;
|
||||
}
|
||||
finally {
|
||||
assertNull(converter.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* Copyright 2010-2013 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
|
||||
*
|
||||
* http://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.data.gemfire;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.gemstone.gemfire.cache.Scope;
|
||||
|
||||
/**
|
||||
* The ScopeTypeTest class is a test suite of test cases testing the contract and functionality of the ScopeType enum.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
* @see org.springframework.data.gemfire.ScopeType
|
||||
* @see com.gemstone.gemfire.cache.Scope
|
||||
* @since 1.6.0
|
||||
*/
|
||||
public class ScopeTypeTest {
|
||||
|
||||
@Test
|
||||
public void testStaticGetScope() {
|
||||
assertEquals(Scope.GLOBAL, ScopeType.getScope(ScopeType.GLOBAL));
|
||||
assertEquals(Scope.LOCAL, ScopeType.getScope(ScopeType.LOCAL));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStaticGetScopeWithNull() {
|
||||
assertNull(ScopeType.getScope(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetScope() {
|
||||
assertEquals(Scope.DISTRIBUTED_ACK, ScopeType.DISTRIBUTED_ACK.getScope());
|
||||
assertEquals(Scope.DISTRIBUTED_NO_ACK, ScopeType.DISTRIBUTED_NO_ACK.getScope());
|
||||
assertEquals(Scope.LOCAL, ScopeType.LOCAL.getScope());
|
||||
assertEquals(Scope.GLOBAL, ScopeType.GLOBAL.getScope());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValueOf() {
|
||||
try {
|
||||
for (int ordinal = 0; ordinal < Integer.MAX_VALUE; ordinal++) {
|
||||
Scope expectedScope = Scope.fromOrdinal(ordinal);
|
||||
ScopeType scopeType = ScopeType.valueOf(expectedScope);
|
||||
|
||||
assertNotNull(scopeType);
|
||||
assertSame(expectedScope, scopeType.getScope());
|
||||
}
|
||||
}
|
||||
catch (ArrayIndexOutOfBoundsException ignore) {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValueOfWithNull() {
|
||||
assertNull(ScopeType.valueOf((Scope) null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValueOfIgnoreCase() {
|
||||
assertEquals(ScopeType.DISTRIBUTED_ACK, ScopeType.valueOfIgnoreCase("distributed_ack"));
|
||||
assertEquals(ScopeType.DISTRIBUTED_NO_ACK, ScopeType.valueOfIgnoreCase("Distributed_No_Ack"));
|
||||
assertEquals(ScopeType.LOCAL, ScopeType.valueOfIgnoreCase("LOCal "));
|
||||
assertEquals(ScopeType.GLOBAL, ScopeType.valueOfIgnoreCase("GLOBAL"));
|
||||
assertEquals(ScopeType.GLOBAL, ScopeType.valueOfIgnoreCase(" global "));
|
||||
assertEquals(ScopeType.DISTRIBUTED_ACK, ScopeType.valueOfIgnoreCase("DisTRIBUTEd-acK"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValueOfIgnoreCaseWithInvalidValues() {
|
||||
assertNull(ScopeType.valueOfIgnoreCase(" distributed ack "));
|
||||
assertNull(ScopeType.valueOfIgnoreCase("D!str!but3d_N0_@ck"));
|
||||
assertNull(ScopeType.valueOfIgnoreCase("DISTRIBUTED_CANT_ACK"));
|
||||
assertNull(ScopeType.valueOfIgnoreCase("Dist_ACK"));
|
||||
assertNull(ScopeType.valueOfIgnoreCase("NOT-Distributed-ACK"));
|
||||
assertNull(ScopeType.valueOfIgnoreCase("LOCALE"));
|
||||
assertNull(ScopeType.valueOfIgnoreCase("GLO-BAL"));
|
||||
assertNull(ScopeType.valueOfIgnoreCase(" "));
|
||||
assertNull(ScopeType.valueOfIgnoreCase(""));
|
||||
assertNull(ScopeType.valueOfIgnoreCase(null));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,6 +32,7 @@ import org.springframework.data.gemfire.IndexMaintenancePolicyType;
|
||||
import org.springframework.data.gemfire.IndexType;
|
||||
import org.springframework.data.gemfire.IndexTypeConverter;
|
||||
import org.springframework.data.gemfire.InterestPolicyConverter;
|
||||
import org.springframework.data.gemfire.ScopeConverter;
|
||||
import org.springframework.data.gemfire.client.InterestResultPolicyConverter;
|
||||
import org.springframework.data.gemfire.server.SubscriptionEvictionPolicy;
|
||||
import org.springframework.data.gemfire.server.SubscriptionEvictionPolicyConverter;
|
||||
@@ -40,6 +41,7 @@ import com.gemstone.gemfire.cache.EvictionAction;
|
||||
import com.gemstone.gemfire.cache.ExpirationAction;
|
||||
import com.gemstone.gemfire.cache.InterestPolicy;
|
||||
import com.gemstone.gemfire.cache.InterestResultPolicy;
|
||||
import com.gemstone.gemfire.cache.Scope;
|
||||
|
||||
/**
|
||||
* The CustomEditorRegistrationBeanFactoryPostProcessorTest class...
|
||||
@@ -66,12 +68,12 @@ public class CustomEditorRegistrationBeanFactoryPostProcessorTest {
|
||||
eq(ExpirationActionConverter.class));
|
||||
verify(mockBeanFactory, times(1)).registerCustomEditor(eq(IndexMaintenancePolicyType.class),
|
||||
eq(IndexMaintenancePolicyConverter.class));
|
||||
verify(mockBeanFactory, times(1)).registerCustomEditor(eq(IndexType.class),
|
||||
eq(IndexTypeConverter.class));
|
||||
verify(mockBeanFactory, times(1)).registerCustomEditor(eq(IndexType.class), eq(IndexTypeConverter.class));
|
||||
verify(mockBeanFactory, times(1)).registerCustomEditor(eq(InterestPolicy.class),
|
||||
eq(InterestPolicyConverter.class));
|
||||
verify(mockBeanFactory, times(1)).registerCustomEditor(eq(InterestResultPolicy.class),
|
||||
eq(InterestResultPolicyConverter.class));
|
||||
verify(mockBeanFactory, times(1)).registerCustomEditor(eq(Scope.class), eq(ScopeConverter.class));
|
||||
verify(mockBeanFactory, times(1)).registerCustomEditor(eq(SubscriptionEvictionPolicy.class),
|
||||
eq(SubscriptionEvictionPolicyConverter.class));
|
||||
}
|
||||
|
||||
@@ -20,15 +20,12 @@ import static org.junit.Assert.assertEquals;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
import com.gemstone.gemfire.cache.Cache;
|
||||
import com.gemstone.gemfire.cache.Region;
|
||||
import com.gemstone.gemfire.cache.query.Index;
|
||||
|
||||
@@ -41,6 +38,9 @@ import com.gemstone.gemfire.cache.query.Index;
|
||||
* @author John Blum
|
||||
* @see org.springframework.data.gemfire.IndexFactoryBean
|
||||
* @see org.springframework.data.gemfire.config.IndexParser
|
||||
* @see org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer
|
||||
* @see org.springframework.test.context.ContextConfiguration
|
||||
* @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner
|
||||
* @since 1.1.0
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@@ -48,10 +48,7 @@ import com.gemstone.gemfire.cache.query.Index;
|
||||
@SuppressWarnings({ "deprecation", "unused" })
|
||||
public class IndexNamespaceTest {
|
||||
|
||||
private static final String TEST_REGION_NAME = "TestIndexRegion";
|
||||
|
||||
@Autowired
|
||||
private Cache cache;
|
||||
private static final String TEST_REGION_NAME = "IndexedRegion";
|
||||
|
||||
@Resource(name = "simple")
|
||||
private Index simple;
|
||||
@@ -59,13 +56,6 @@ public class IndexNamespaceTest {
|
||||
@Resource(name = "complex")
|
||||
private Index complex;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
if (cache.getRegion(TEST_REGION_NAME) == null) {
|
||||
cache.createRegionFactory().create(TEST_REGION_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBasicIndex() throws Exception {
|
||||
assertEquals("simple", simple.getName());
|
||||
|
||||
@@ -188,6 +188,7 @@ public class ReplicatedRegionNamespaceTest {
|
||||
assertEquals(Region.SEPARATOR + "Compressed", compressed.getFullPath());
|
||||
assertNotNull(compressed.getAttributes());
|
||||
assertEquals(DataPolicy.REPLICATE, compressed.getAttributes().getDataPolicy());
|
||||
assertEquals(Scope.DISTRIBUTED_NO_ACK, compressed.getAttributes().getScope());
|
||||
assertTrue(compressed.getAttributes().getCompressor() instanceof TestCompressor);
|
||||
assertEquals("XYZ", compressed.getAttributes().getCompressor().toString());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user