Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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.config;
 
 import java.util.List;
 
 
 import  com.gemstone.gemfire.internal.datasource.ConfigProperty;

Parser for <cache;gt; definitions.

Author(s):
Costin Leau
Oliver Gierke
David Turanski
 
 
 	protected Class<?> getBeanClass(Element element) {
 		return CacheFactoryBean.class;
 	}
 
 	protected void doParse(Element elementParserContext parserContextBeanDefinitionBuilder builder) {
 		super.doParse(elementbuilder);
 
 		ParsingUtils.setPropertyValue(elementbuilder"cache-xml-location""cacheXml");
 		ParsingUtils.setPropertyReference(elementbuilder"properties-ref""properties");
 		ParsingUtils.setPropertyReference(elementbuilder"pdx-serializer-ref""pdxSerializer");
 		parsePdxDiskStore(elementparserContextbuilder);
 		ParsingUtils.setPropertyValue(elementbuilder"pdx-persistent");
 		ParsingUtils.setPropertyValue(elementbuilder"pdx-read-serialized");
 		ParsingUtils.setPropertyValue(elementbuilder"pdx-ignore-unread-fields");
 		ParsingUtils.setPropertyValue(elementbuilder"use-bean-factory-locator");
 		ParsingUtils.setPropertyValue(elementbuilder"copy-on-read");
 		ParsingUtils.setPropertyValue(elementbuilder"lock-timeout");
 		ParsingUtils.setPropertyValue(elementbuilder"lock-lease");
 		ParsingUtils.setPropertyValue(elementbuilder"message-sync-interval");
 		ParsingUtils.setPropertyValue(elementbuilder"search-timeout");
 		ParsingUtils.setPropertyValue(elementbuilder"critical-heap-percentage");
 		ParsingUtils.setPropertyValue(elementbuilder"eviction-heap-percentage");
 		ParsingUtils.setPropertyValue(elementbuilder"close");
 		ParsingUtils.setPropertyValue(elementbuilder"lazy-init","lazyInitialize");
 
 		List<ElementtxListeners = DomUtils.getChildElementsByTagName(element"transaction-listener");
 		if (!CollectionUtils.isEmpty(txListeners)) {
 			ManagedList<ObjecttransactionListeners = new ManagedList<Object>();
 			for (Element txListener : txListeners) {
 				transactionListeners.add(ParsingUtils.parseRefOrNestedBeanDeclaration(parserContexttxListener,
 						builder));
 			}
 			builder.addPropertyValue("transactionListeners"transactionListeners);
 		}
 		Element txWriter = DomUtils.getChildElementByTagName(element"transaction-writer");
 		if (txWriter != null) {
 			builder.addPropertyValue("transactionWriter",
 					ParsingUtils.parseRefOrNestedBeanDeclaration(parserContexttxWriterbuilder));
 		}
 
 		Element gatewayConflictResolver = DomUtils.getChildElementByTagName(element"gateway-conflict-resolver");
 		if (gatewayConflictResolver != null) {
 			ParsingUtils.throwExceptionIfNotGemfireV7(element.getLocalName(), "gateway-conflict-resolver",
 					parserContext);
 			builder.addPropertyValue("gatewayConflictResolver",
 					ParsingUtils.parseRefOrSingleNestedBeanDeclaration(parserContextgatewayConflictResolverbuilder));
 		}
 
 		Element function = DomUtils.getChildElementByTagName(element"function");
 		if (function != null) {
			builder.addPropertyValue("functions",
					ParsingUtils.parseRefOrNestedBeanDeclaration(parserContextfunctionbuilder));
		}
		parseDynamicRegionFactory(elementbuilder);
		parseJndiBindings(elementbuilder);
	}
	private void parsePdxDiskStore(Element elementParserContext parserContextBeanDefinitionBuilder builder) {
		ParsingUtils.setPropertyValue(elementbuilder"pdx-disk-store""pdxDiskStoreName");
		final String pdxDiskStoreName = element.getAttribute("pdx-disk-store");
		if (!StringUtils.isEmpty(pdxDiskStoreName)) {
			registerPdxDiskStoreAwareBeanFactoryPostProcessor(parserContextpdxDiskStoreName);
		}
	}
	private void registerPdxDiskStoreAwareBeanFactoryPostProcessor(ParserContext parserContextString pdxDiskStoreName) {
		BeanDefinitionReaderUtils.registerWithGeneratedName(
				parserContext.getRegistry());
	}
		BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
		builder.addConstructorArgValue(pdxDiskStoreName);
		return builder.getBeanDefinition();
	}
	private void parseDynamicRegionFactory(Element elementBeanDefinitionBuilder builder) {
		Element dynamicRegionFactory = DomUtils.getChildElementByTagName(element"dynamic-region-factory");
		if (dynamicRegionFactory != null) {
			BeanDefinitionBuilder dynamicRegionSupport = buildDynamicRegionSupport(dynamicRegionFactory);
			postProcessDynamicRegionSupport(elementdynamicRegionSupport);
			builder.addPropertyValue("dynamicRegionSupport"dynamicRegionSupport.getBeanDefinition());
		}
	}

Parameters:
dynamicRegionSupport BDB for <dynamic-region-factory> element
	protected void postProcessDynamicRegionSupport(Element elementBeanDefinitionBuilder dynamicRegionSupport) {
	}
	private BeanDefinitionBuilder buildDynamicRegionSupport(Element dynamicRegionFactory) {
		BeanDefinitionBuilder result = null;
		if (dynamicRegionFactory != null) {
			BeanDefinitionBuilder dynamicRegionSupport = BeanDefinitionBuilder
			String diskDir = dynamicRegionFactory.getAttribute("disk-dir");
			if (StringUtils.hasText(diskDir)) {
				dynamicRegionSupport.addPropertyValue("diskDir"diskDir);
			}
			String persistent = dynamicRegionFactory.getAttribute("persistent");
			if (StringUtils.hasText(persistent)) {
				dynamicRegionSupport.addPropertyValue("persistent"persistent);
			}
			String registerInterest = dynamicRegionFactory.getAttribute("register-interest");
			if (StringUtils.hasText(registerInterest)) {
				dynamicRegionSupport.addPropertyValue("registerInterest"registerInterest);
			}
			result = dynamicRegionSupport;
		}
		return result;
	}
	private void parseJndiBindings(Element elementBeanDefinitionBuilder builder) {
		List<ElementjndiBindings = DomUtils.getChildElementsByTagName(element"jndi-binding");
		if (!CollectionUtils.isEmpty(jndiBindings)) {
			ManagedList<ObjectjndiDataSources = new ManagedList<Object>();
			ManagedMap<StringStringjndiAttributes = new ManagedMap<StringString>();
			for (Element jndiBinding : jndiBindings) {
				BeanDefinitionBuilder jndiDataSource = BeanDefinitionBuilder
				NamedNodeMap nnm = jndiBinding.getAttributes();
				for (int i = 0; i < nnm.getLength(); i++) {
					Attr attr = (Attrnnm.item(i);
					jndiAttributes.put(attr.getLocalName(), attr.getValue());
				}
				jndiDataSource.addPropertyValue("attributes"jndiAttributes);
				List<ElementjndiProps = DomUtils.getChildElementsByTagName(element"jndi-prop");
				if (!CollectionUtils.isEmpty(jndiProps)) {
					ManagedList<ConfigProperty> props = new ManagedList<ConfigProperty>();
					for (Element jndiProp : jndiProps) {
						String key = jndiProp.getAttribute("key");
						String value = jndiProp.getNodeValue();
						String type = StringUtils.hasText(jndiProp.getAttribute("type")) ? jndiProp
								.getAttribute("type") : String.class.getName();
						props.add(new ConfigProperty(keyvaluetype));
					}
					jndiDataSource.addPropertyValue("props"props);
				}
				jndiDataSources.add(jndiDataSource.getBeanDefinition());
			}
			builder.addPropertyValue("jndiDataSources"jndiDataSources);
		}
	}
	protected String resolveId(Element elementAbstractBeanDefinition definitionParserContext parserContext)
		String name = super.resolveId(elementdefinitionparserContext);
		if (!StringUtils.hasText(name)) {
			//For backward compatibility
		}
		return name;
	}
New to GrepCode? Check out our FAQ X