SGF-289 - Enumeration restrictions (xsd:enumeration) should be avoided in the XML schema.

Removed the XSD enumeration restriction on the 'type' attribute of the 'evictionType' XSD complex-type definition in the SDG XML namespace schema, which is used by the 'eviction' sub-elements in the LOCAL, PARTITION and REPLICATE Region element schema types.  In addition, created the ExpirationAttributesFactoryBean class in the org.springframework.data.gemfire package which serves as a Spring FactoryBean and builder for constructing GemFire EvictionAttributes used in Region configuration.  Updated tests to assert and validate the use of property placeholders on both the Eviction 'type' and Expiration 'action' attributes in the Spring Data GemFire XML namespace configuration meta-data.
This commit is contained in:
John Blum
2015-01-19 18:16:06 -08:00
parent 844c630614
commit 3f72ab8928
9 changed files with 278 additions and 54 deletions

View File

@@ -35,6 +35,12 @@ import com.gemstone.gemfire.cache.ExpirationAction;
*/
public class ExpirationActionTypeTest {
@Test
public void testDefault() {
assertEquals(ExpirationActionType.INVALIDATE, ExpirationActionType.DEFAULT);
assertEquals(ExpirationAction.INVALIDATE, ExpirationActionType.DEFAULT.getExpirationAction());
}
@Test
public void testValueOf() {
assertEquals(ExpirationActionType.DESTROY, ExpirationActionType.valueOf(ExpirationAction.DESTROY));

View File

@@ -0,0 +1,96 @@
/*
* 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.assertTrue;
import org.junit.Test;
import com.gemstone.gemfire.cache.ExpirationAction;
import com.gemstone.gemfire.cache.ExpirationAttributes;
/**
* The ExpirationAttributesFactoryBeanTest class is a test suite of test cases testing the contract and functionality
* of the ExpirationAttributesFactoryBean class.
*
* @author John Blum
* @see org.junit.Test
* @see org.springframework.data.gemfire.ExpirationAttributesFactoryBean
* @since 1.6.0
*/
public class ExpirationAttributesFactoryBeanTest {
@Test
public void testIsSingleton() {
assertTrue(new ExpirationAttributesFactoryBean().isSingleton());
}
@Test
public void testSetAndGetAction() {
ExpirationAttributesFactoryBean expirationAttributesFactoryBean = new ExpirationAttributesFactoryBean();
assertEquals(ExpirationAttributesFactoryBean.DEFAULT_EXPIRATION_ACTION,
expirationAttributesFactoryBean.getAction());
expirationAttributesFactoryBean.setAction(ExpirationActionType.LOCAL_DESTROY);
assertEquals(ExpirationActionType.LOCAL_DESTROY, expirationAttributesFactoryBean.getAction());
expirationAttributesFactoryBean.setAction(null);
assertEquals(ExpirationAttributesFactoryBean.DEFAULT_EXPIRATION_ACTION,
expirationAttributesFactoryBean.getAction());
}
@Test
public void testSetAndGetTimeout() {
ExpirationAttributesFactoryBean expirationAttributesFactoryBean = new ExpirationAttributesFactoryBean();
assertEquals(0, expirationAttributesFactoryBean.getTimeout());
expirationAttributesFactoryBean.setTimeout(60000);
assertEquals(60000, expirationAttributesFactoryBean.getTimeout());
expirationAttributesFactoryBean.setTimeout(null);
assertEquals(0, expirationAttributesFactoryBean.getTimeout());
}
@Test
public void testAfterPropertiesSet() throws Exception {
ExpirationAttributesFactoryBean expirationAttributesFactoryBean = new ExpirationAttributesFactoryBean();
assertNull(expirationAttributesFactoryBean.getObject());
assertEquals(ExpirationAttributes.class, expirationAttributesFactoryBean.getObjectType());
expirationAttributesFactoryBean.setAction(ExpirationActionType.DESTROY);
expirationAttributesFactoryBean.setTimeout(8192);
expirationAttributesFactoryBean.afterPropertiesSet();
ExpirationAttributes expirationAttributes = expirationAttributesFactoryBean.getObject();
assertNotNull(expirationAttributes);
assertEquals(ExpirationAction.DESTROY, expirationAttributes.getAction());
assertEquals(8192, expirationAttributes.getTimeout());
assertEquals(expirationAttributes.getClass(), expirationAttributesFactoryBean.getObjectType());
}
}