diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/AbstractRegionParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/AbstractRegionParser.java
index eebbee1a..4a8f28a1 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/AbstractRegionParser.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/AbstractRegionParser.java
@@ -110,8 +110,8 @@ abstract class AbstractRegionParser extends AbstractSingleBeanDefinitionParser {
}
ParsingUtils.setPropertyValue(element, regionBuilder, "name");
- ParsingUtils.setPropertyValue(element, regionBuilder, "ignore-if-exists", "lookupEnabled");
ParsingUtils.setPropertyValue(element, regionBuilder, "data-policy");
+ ParsingUtils.setPropertyValue(element, regionBuilder, "ignore-if-exists", "lookupEnabled");
ParsingUtils.setPropertyValue(element, regionBuilder, "persistent");
ParsingUtils.setPropertyValue(element, regionBuilder, "shortcut");
@@ -120,34 +120,13 @@ abstract class AbstractRegionParser extends AbstractSingleBeanDefinitionParser {
regionBuilder.addDependsOn(element.getAttribute("disk-store-ref"));
}
- ParsingUtils.parseOptionalRegionAttributes(parserContext, element, regionAttributesBuilder);
- ParsingUtils.parseSubscription(parserContext, element, regionAttributesBuilder);
+ ParsingUtils.parseOptionalRegionAttributes(element, parserContext, regionAttributesBuilder);
+ ParsingUtils.parseSubscription(element, parserContext, regionAttributesBuilder);
ParsingUtils.parseStatistics(element, regionAttributesBuilder);
- ParsingUtils.parseMembershipAttributes(parserContext, element, regionAttributesBuilder);
- ParsingUtils.parseExpiration(parserContext, element, regionAttributesBuilder);
- ParsingUtils.parseEviction(parserContext, element, regionAttributesBuilder);
- ParsingUtils.parseCompressor(parserContext, element, regionAttributesBuilder);
-
- String enableGateway = element.getAttribute("enable-gateway");
- String hubId = element.getAttribute("hub-id");
-
- // Factory will enable gateway if it is not set and hub-id is set.
- if (StringUtils.hasText(enableGateway)) {
- log.warn("'enable-gateway' has been deprecated since Gemfire 7.0; use the new GatewaySender/Receiver WAN support instead");
- }
-
- ParsingUtils.setPropertyValue(element, regionBuilder, "enable-gateway");
-
- if (StringUtils.hasText(hubId)) {
- log.warn("'hub-id' has been deprecated since Gemfire 7.0; use the new GatewaySender/Receiver WAN support instead");
-
- if (!CollectionUtils.isEmpty(DomUtils.getChildElementsByTagName(element, "gateway-sender"))) {
- parserContext.getReaderContext().error("specifying both 'hub-id' and 'gateway-sender' is invalid",
- element);
- }
- }
-
- ParsingUtils.setPropertyValue(element, regionBuilder, "hub-id");
+ ParsingUtils.parseMembershipAttributes(element, parserContext, regionAttributesBuilder);
+ ParsingUtils.parseExpiration(element, parserContext, regionAttributesBuilder);
+ ParsingUtils.parseEviction(element, parserContext, regionAttributesBuilder);
+ ParsingUtils.parseCompressor(element, parserContext, regionAttributesBuilder);
parseCollectionOfCustomSubElements(element, parserContext, regionBuilder, AsyncEventQueue.class.getName(),
"async-event-queue", "asyncEventQueues");
@@ -160,15 +139,15 @@ abstract class AbstractRegionParser extends AbstractSingleBeanDefinitionParser {
for (Element subElement : subElements) {
if (subElement.getLocalName().equals("cache-listener")) {
regionBuilder.addPropertyValue("cacheListeners", ParsingUtils.parseRefOrNestedBeanDeclaration(
- parserContext, subElement, regionBuilder));
+ subElement, parserContext, regionBuilder));
}
else if (subElement.getLocalName().equals("cache-loader")) {
regionBuilder.addPropertyValue("cacheLoader", ParsingUtils.parseRefOrSingleNestedBeanDeclaration(
- parserContext, subElement, regionBuilder));
+ subElement, parserContext, regionBuilder));
}
else if (subElement.getLocalName().equals("cache-writer")) {
regionBuilder.addPropertyValue("cacheWriter", ParsingUtils.parseRefOrSingleNestedBeanDeclaration(
- parserContext, subElement, regionBuilder));
+ subElement, parserContext, regionBuilder));
}
}
@@ -229,7 +208,7 @@ abstract class AbstractRegionParser extends AbstractSingleBeanDefinitionParser {
ManagedArray array = new ManagedArray(className, subElements.size());
for (Element subElement : subElements) {
- array.add(ParsingUtils.parseRefOrNestedCustomElement(parserContext, subElement, builder));
+ array.add(ParsingUtils.parseRefOrNestedCustomElement(subElement, parserContext, builder));
}
builder.addPropertyValue(propertyName, array);
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/AsyncEventQueueParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/AsyncEventQueueParser.java
index 77b1632e..e50efe85 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/AsyncEventQueueParser.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/AsyncEventQueueParser.java
@@ -93,8 +93,9 @@ class AsyncEventQueueParser extends AbstractSingleBeanDefinitionParser {
private void parseAsyncEventListener(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
Element asyncEventListenerElement = DomUtils.getChildElementByTagName(element, "async-event-listener");
- Object asyncEventListener = ParsingUtils.parseRefOrSingleNestedBeanDeclaration(parserContext,
- asyncEventListenerElement, builder);
+ Object asyncEventListener = ParsingUtils.parseRefOrSingleNestedBeanDeclaration(asyncEventListenerElement,
+ parserContext,
+ builder);
builder.addPropertyValue("asyncEventListener", asyncEventListener);
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/CacheParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/CacheParser.java
index e31b6c49..fa241ce3 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/CacheParser.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/CacheParser.java
@@ -94,7 +94,7 @@ class CacheParser extends AbstractSingleBeanDefinitionParser {
for (Element txListener : txListeners) {
transactionListeners.add(ParsingUtils.parseRefOrNestedBeanDeclaration(
- parserContext, txListener, builder));
+ txListener, parserContext, builder));
}
builder.addPropertyValue("transactionListeners", transactionListeners);
@@ -104,7 +104,7 @@ class CacheParser extends AbstractSingleBeanDefinitionParser {
if (txWriter != null) {
builder.addPropertyValue("transactionWriter", ParsingUtils.parseRefOrNestedBeanDeclaration(
- parserContext, txWriter, builder));
+ txWriter, parserContext, builder));
}
Element gatewayConflictResolver = DomUtils.getChildElementByTagName(element, "gateway-conflict-resolver");
@@ -113,7 +113,7 @@ class CacheParser extends AbstractSingleBeanDefinitionParser {
ParsingUtils.throwExceptionWhenGemFireFeatureUnavailable(GemfireFeature.WAN, element.getLocalName(),
"gateway-conflict-resolver", parserContext);
builder.addPropertyValue("gatewayConflictResolver", ParsingUtils.parseRefOrSingleNestedBeanDeclaration(
- parserContext, gatewayConflictResolver, builder));
+ gatewayConflictResolver, parserContext, builder));
}
parseDynamicRegionFactory(element, builder);
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/ClientRegionParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/ClientRegionParser.java
index 100e14ec..30790f80 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/ClientRegionParser.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/ClientRegionParser.java
@@ -82,11 +82,11 @@ class ClientRegionParser extends AbstractRegionParser {
mergeRegionTemplateAttributes(element, parserContext, regionBuilder, regionAttributesBuilder);
- ParsingUtils.parseOptionalRegionAttributes(parserContext, element, regionAttributesBuilder);
+ ParsingUtils.parseOptionalRegionAttributes(element, parserContext, regionAttributesBuilder);
ParsingUtils.parseStatistics(element, regionAttributesBuilder);
- ParsingUtils.parseExpiration(parserContext, element, regionAttributesBuilder);
- ParsingUtils.parseEviction(parserContext, element, regionAttributesBuilder);
- ParsingUtils.parseCompressor(parserContext, element, regionAttributesBuilder);
+ ParsingUtils.parseExpiration(element, parserContext, regionAttributesBuilder);
+ ParsingUtils.parseEviction(element, parserContext, regionAttributesBuilder);
+ ParsingUtils.parseCompressor(element, parserContext, regionAttributesBuilder);
regionBuilder.addPropertyValue("attributes", regionAttributesBuilder.getBeanDefinition());
@@ -99,15 +99,15 @@ class ClientRegionParser extends AbstractRegionParser {
if ("cache-listener".equals(subElementLocalName)) {
regionBuilder.addPropertyValue("cacheListeners", ParsingUtils.parseRefOrNestedBeanDeclaration(
- parserContext, subElement, regionBuilder));
+ subElement, parserContext, regionBuilder));
}
else if ("cache-loader".equals(subElementLocalName)) {
regionBuilder.addPropertyValue("cacheLoader", ParsingUtils.parseRefOrNestedBeanDeclaration(
- parserContext, subElement, regionBuilder));
+ subElement, parserContext, regionBuilder));
}
else if ("cache-writer".equals(subElementLocalName)) {
regionBuilder.addPropertyValue("cacheWriter", ParsingUtils.parseRefOrNestedBeanDeclaration(
- parserContext, subElement, regionBuilder));
+ subElement, parserContext, regionBuilder));
}
else if ("key-interest".equals(subElementLocalName)) {
interests.add(parseKeyInterest(subElement, parserContext));
@@ -147,8 +147,9 @@ class ClientRegionParser extends AbstractRegionParser {
private Object parseKeyInterest(Element keyInterestElement, ParserContext parserContext) {
BeanDefinitionBuilder keyInterestBuilder = BeanDefinitionBuilder.genericBeanDefinition(KeyInterest.class);
- keyInterestBuilder.addConstructorArgValue(ParsingUtils.parseRefOrNestedBeanDeclaration(parserContext,
- keyInterestElement, keyInterestBuilder, "key-ref"));
+ keyInterestBuilder.addConstructorArgValue(ParsingUtils.parseRefOrNestedBeanDeclaration(keyInterestElement,
+ parserContext,
+ keyInterestBuilder, "key-ref"));
parseCommonInterestAttributes(keyInterestElement, keyInterestBuilder);
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/FunctionServiceParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/FunctionServiceParser.java
index 43a30115..94dcf867 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/FunctionServiceParser.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/FunctionServiceParser.java
@@ -57,7 +57,7 @@ class FunctionServiceParser extends AbstractSimpleBeanDefinitionParser {
if (functionElement != null) {
builder.addPropertyValue("functions", ParsingUtils.parseRefOrNestedBeanDeclaration(
- parserContext, functionElement, builder));
+ functionElement, parserContext, builder));
}
}
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/GatewaySenderParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/GatewaySenderParser.java
index 00f57f01..07a764ff 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/GatewaySenderParser.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/GatewaySenderParser.java
@@ -75,14 +75,14 @@ class GatewaySenderParser extends AbstractSimpleBeanDefinitionParser {
if (eventFilterElement != null) {
builder.addPropertyValue("eventFilters", ParsingUtils.parseRefOrNestedBeanDeclaration(
- parserContext, eventFilterElement, builder));
+ eventFilterElement, parserContext, builder));
}
Element eventSubstitutionFilterElement = DomUtils.getChildElementByTagName(element, "event-substitution-filter");
if (eventSubstitutionFilterElement != null) {
builder.addPropertyValue("eventSubstitutionFilter", ParsingUtils.parseRefOrSingleNestedBeanDeclaration(
- parserContext, eventSubstitutionFilterElement, builder));
+ eventSubstitutionFilterElement, parserContext, builder));
}
ParsingUtils.parseTransportFilters(element, parserContext, builder);
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/GemfireNamespaceHandler.java b/src/main/java/org/springframework/data/gemfire/config/xml/GemfireNamespaceHandler.java
index 6038b781..599b9fb3 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/GemfireNamespaceHandler.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/GemfireNamespaceHandler.java
@@ -49,6 +49,8 @@ class GemfireNamespaceHandler extends NamespaceHandlerSupport {
registerBeanDefinitionParser("local-region", new LocalRegionParser());
registerBeanDefinitionParser("local-region-template", new LocalRegionParser());
registerBeanDefinitionParser("lookup-region", new LookupRegionParser());
+ registerBeanDefinitionParser("lucene-index", new LuceneIndexParser());
+ registerBeanDefinitionParser("lucene-service", new LuceneServiceParser());
registerBeanDefinitionParser("partitioned-region", new PartitionedRegionParser());
registerBeanDefinitionParser("partitioned-region-template", new PartitionedRegionParser());
registerBeanDefinitionParser("pool", new PoolParser());
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/LookupRegionParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/LookupRegionParser.java
index 2c7dff69..900b8a73 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/LookupRegionParser.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/LookupRegionParser.java
@@ -60,7 +60,7 @@ class LookupRegionParser extends AbstractRegionParser {
ParsingUtils.setPropertyValue(element, builder, "cloning-enabled");
ParsingUtils.setPropertyValue(element, builder, "eviction-maximum");
ParsingUtils.setPropertyValue(element, builder, "name");
- ParsingUtils.parseExpiration(parserContext, element, builder);
+ ParsingUtils.parseExpiration(element, parserContext, builder);
parseCollectionOfCustomSubElements(element, parserContext, builder, AsyncEventQueue.class.getName(),
"async-event-queue", "asyncEventQueues");
@@ -71,22 +71,23 @@ class LookupRegionParser extends AbstractRegionParser {
Element cacheListenerElement = DomUtils.getChildElementByTagName(element, "cache-listener");
if (cacheListenerElement != null) {
- builder.addPropertyValue("cacheListeners", ParsingUtils.parseRefOrNestedBeanDeclaration(parserContext,
- cacheListenerElement, builder));
+ builder.addPropertyValue("cacheListeners", ParsingUtils.parseRefOrNestedBeanDeclaration(
+ cacheListenerElement, parserContext,
+ builder));
}
Element cacheLoaderElement = DomUtils.getChildElementByTagName(element, "cache-loader");
if (cacheLoaderElement != null) {
builder.addPropertyValue("cacheLoader", ParsingUtils.parseRefOrSingleNestedBeanDeclaration(
- parserContext, cacheLoaderElement, builder));
+ cacheLoaderElement, parserContext, builder));
}
Element cacheWriterElement = DomUtils.getChildElementByTagName(element, "cache-writer");
if (cacheWriterElement != null) {
builder.addPropertyValue("cacheWriter", ParsingUtils.parseRefOrSingleNestedBeanDeclaration(
- parserContext, cacheWriterElement, builder));
+ cacheWriterElement, parserContext, builder));
}
if (!subRegion) {
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/LuceneIndexParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/LuceneIndexParser.java
new file mode 100644
index 00000000..a7078b31
--- /dev/null
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/LuceneIndexParser.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2016 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.xml;
+
+import java.util.Arrays;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.data.gemfire.search.lucene.LuceneIndexFactoryBean;
+import org.springframework.util.StringUtils;
+import org.springframework.util.xml.DomUtils;
+import org.w3c.dom.Element;
+
+/**
+ * Spring XML {@link AbstractSingleBeanDefinitionParser parser} for the {@link LuceneIndexFactoryBean} bean definition.
+ *
+ * @author John Blum
+ * @see org.springframework.beans.factory.support.BeanDefinitionBuilder
+ * @see org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser
+ * @see org.springframework.data.gemfire.search.lucene.LuceneIndexFactoryBean
+ * @since 1.1.0
+ */
+class LuceneIndexParser extends AbstractSingleBeanDefinitionParser {
+
+ /**
+ * @inheritDoc
+ */
+ @Override
+ protected Class> getBeanClass(Element element) {
+ return LuceneIndexFactoryBean.class;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ @Override
+ protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
+ super.doParse(element, parserContext, builder);
+
+ ParsingUtils.setCacheReference(element, builder);
+ ParsingUtils.setPropertyValue(element, builder, "name", "indexName");
+ ParsingUtils.setPropertyValue(element, builder, "destroy");
+ ParsingUtils.setPropertyReference(element, builder, "lucene-service-ref", "luceneService");
+ ParsingUtils.setPropertyReference(element, builder, "region-ref", "region");
+ ParsingUtils.setPropertyValue(element, builder, "region-path");
+
+ Optional.ofNullable(element.getAttribute("fields")).filter(StringUtils::hasText).ifPresent((fields) -> {
+ builder.addPropertyValue("fields", Arrays.stream(fields.split(","))
+ .map(String::trim).collect(Collectors.toList()));
+ });
+
+ Optional.ofNullable(DomUtils.getChildElementByTagName(element, "field-analyzers"))
+ .ifPresent((fieldAnalyzersElement) -> builder.addPropertyValue("fieldAnalyzers",
+ ParsingUtils.parseRefOrSingleNestedBeanDeclaration(fieldAnalyzersElement, parserContext, builder)));
+ }
+}
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/LuceneServiceParser.java b/src/main/java/org/springframework/data/gemfire/config/xml/LuceneServiceParser.java
new file mode 100644
index 00000000..dfe92182
--- /dev/null
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/LuceneServiceParser.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2016 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.xml;
+
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.springframework.data.gemfire.search.lucene.LuceneServiceFactoryBean;
+import org.w3c.dom.Element;
+
+/**
+ * Spring XML {@link AbstractSingleBeanDefinitionParser parser} for a {@link LuceneServiceFactoryBean} bean definition.
+ *
+ * @author John Blum
+ * @see org.springframework.beans.factory.support.BeanDefinitionBuilder
+ * @see org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser
+ * @see org.springframework.data.gemfire.search.lucene.LuceneServiceFactoryBean
+ * @since 1.1.0
+ */
+class LuceneServiceParser extends AbstractSingleBeanDefinitionParser {
+
+ /**
+ * @inheritDoc
+ */
+ @Override
+ protected Class> getBeanClass(Element element) {
+ return LuceneServiceFactoryBean.class;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ @Override
+ protected void doParse(Element element, BeanDefinitionBuilder builder) {
+ super.doParse(element, builder);
+ ParsingUtils.setCacheReference(element, builder);
+ }
+}
diff --git a/src/main/java/org/springframework/data/gemfire/config/xml/ParsingUtils.java b/src/main/java/org/springframework/data/gemfire/config/xml/ParsingUtils.java
index 38f2a0ec..496a470b 100644
--- a/src/main/java/org/springframework/data/gemfire/config/xml/ParsingUtils.java
+++ b/src/main/java/org/springframework/data/gemfire/config/xml/ParsingUtils.java
@@ -39,12 +39,21 @@ import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Element;
/**
- * Utilities used by the Spring Data GemFire XML Namespace parsers.
+ * Utilities used by the Spring Data GemFire XML Namespace Parsers.
*
* @author Costin Leau
* @author David Turanski
* @author Lyndon Adams
* @author John Blum
+ * @see org.springframework.beans.factory.config.BeanDefinition
+ * @see org.springframework.beans.factory.config.RuntimeBeanReference
+ * @see org.springframework.beans.factory.support.BeanDefinitionBuilder
+ * @see org.springframework.beans.factory.support.ManagedList
+ * @see org.springframework.beans.factory.xml.ParserContext
+ * @see org.springframework.core.Conventions
+ * @see org.springframework.util.xml.DomUtils
+ * @see org.w3c.dom.Element
+ * @since 1.0.0
*/
abstract class ParsingUtils {
@@ -108,30 +117,8 @@ abstract class ParsingUtils {
setPropertyValue(builder, source, propertyName, false);
}
- /**
- * Utility method handling parsing of nested definition of the type:
- *
- *
- *
- *
- *
- * or
- *
- *
- *
- *
- *
- *
- *
- * @param element the XML element.
- * @return Bean reference or nested Bean definition.
- */
- static Object parseRefOrNestedBeanDeclaration(ParserContext parserContext, Element element,
- BeanDefinitionBuilder builder) {
- return parseRefOrNestedBeanDeclaration(parserContext, element, builder, "ref", false);
- }
+ static Object getBeanReference(Element element, ParserContext parserContext, String refAttributeName) {
- static Object getBeanReference(ParserContext parserContext, Element element, String refAttributeName) {
String refAttributeValue = element.getAttribute(refAttributeName);
Object returnValue = null;
@@ -148,27 +135,61 @@ abstract class ParsingUtils {
return returnValue;
}
- static Object parseRefOrNestedCustomElement(ParserContext parserContext, Element element,
+ static Object parseRefOrNestedCustomElement(Element element, ParserContext parserContext,
BeanDefinitionBuilder builder) {
- Object beanRef = ParsingUtils.getBeanReference(parserContext, element, "bean");
+
+ Object beanRef = ParsingUtils.getBeanReference(element, parserContext, "bean");
+
return (beanRef != null ? beanRef : parserContext.getDelegate().parseCustomElement(
element, builder.getBeanDefinition()));
}
- static Object parseRefOrSingleNestedBeanDeclaration(ParserContext parserContext, Element element,
+ /**
+ * Utility method handling parsing of nested bean definition of the type:
+ *
+ *
+ *
+ *
+ *
+ * or
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * @param element the XML element.
+ * @return Bean reference or nested Bean definition.
+ */
+ static Object parseRefOrNestedBeanDeclaration(Element element, ParserContext parserContext,
BeanDefinitionBuilder builder) {
- return parseRefOrNestedBeanDeclaration(parserContext, element, builder, "ref", true);
+
+ return parseRefOrNestedBeanDeclaration(element, parserContext, builder, "ref", false);
}
- static Object parseRefOrNestedBeanDeclaration(ParserContext parserContext, Element element,
+ static Object parseRefOrNestedBeanDeclaration(Element element, ParserContext parserContext,
BeanDefinitionBuilder builder, String refAttributeName) {
- return parseRefOrNestedBeanDeclaration(parserContext, element, builder, refAttributeName, false);
+
+ return parseRefOrNestedBeanDeclaration(element, parserContext, builder, refAttributeName, false);
}
- static Object parseRefOrNestedBeanDeclaration(ParserContext parserContext, Element element,
+ static Object parseRefOrSingleNestedBeanDeclaration(Element element, ParserContext parserContext,
+ BeanDefinitionBuilder builder) {
+
+ return parseRefOrNestedBeanDeclaration(element, parserContext, builder, "ref", true);
+ }
+
+ static Object parseRefOrSingleNestedBeanDeclaration(Element element, ParserContext parserContext,
+ BeanDefinitionBuilder builder, String refAttributeName) {
+
+ return parseRefOrNestedBeanDeclaration(element, parserContext, builder, refAttributeName, true);
+ }
+
+ static Object parseRefOrNestedBeanDeclaration(Element element, ParserContext parserContext,
BeanDefinitionBuilder builder, String refAttributeName, boolean single) {
- Object beanReference = getBeanReference(parserContext, element, refAttributeName);
+ Object beanReference = getBeanReference(element, parserContext, refAttributeName);
if (beanReference != null) {
return beanReference;
@@ -179,8 +200,8 @@ abstract class ParsingUtils {
// parse nested bean definition
if (childElements.size() == 1) {
- return parserContext.getDelegate().parsePropertySubElement(childElements.get(0),
- builder.getRawBeanDefinition());
+ return parserContext.getDelegate().parsePropertySubElement(
+ childElements.get(0), builder.getRawBeanDefinition());
}
else {
// TODO also triggered when there are no child elements; need to change the message...
@@ -191,7 +212,7 @@ abstract class ParsingUtils {
}
}
- ManagedList