[spring-extensions] 02/03: JSE-18 Add support for embedded <beans> statements
Rod Widdowson
rdw at steadingsoftware.com
Fri Sep 9 11:23:09 EDT 2016
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch master
in repository spring-extensions.
View the commit online:
http://git.shibboleth.net/view/?p=spring-extensions.git;a=commit;h=a0ee93c16746e9dcb4c5a38dbc1f3480b35ad9d7
commit a0ee93c16746e9dcb4c5a38dbc1f3480b35ad9d7
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Sep 9 16:18:33 2016 +0100
JSE-18 Add support for embedded <beans> statements
https://issues.shibboleth.net/jira/browse/JSE-18
Add a new BeanDefinitionDocumentReader which can process such statements.
---
.../spring/util/EmbeddedAndSchemaAwareReader.java | 58 ++++++++++++++++++++++
...chemaTypeAwareBeanDefinitionDocumentReader.java | 6 +--
2 files changed, 61 insertions(+), 3 deletions(-)
diff --git a/src/main/java/net/shibboleth/ext/spring/util/EmbeddedAndSchemaAwareReader.java b/src/main/java/net/shibboleth/ext/spring/util/EmbeddedAndSchemaAwareReader.java
new file mode 100644
index 0000000..54ed1e5
--- /dev/null
+++ b/src/main/java/net/shibboleth/ext/spring/util/EmbeddedAndSchemaAwareReader.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements. See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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 net.shibboleth.ext.spring.util;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.utilities.java.support.xml.ElementSupport;
+
+import org.springframework.beans.factory.BeanDefinitionStoreException;
+import org.springframework.beans.factory.xml.BeanDefinitionParserDelegate;
+import org.springframework.beans.factory.xml.XmlReaderContext;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * An extension to our {@link SchemaTypeAwareBeanDefinitionDocumentReader} which, in addition
+ * allows parsing of embedded <beans> statements (by the native spring parsers).
+ */
+public class EmbeddedAndSchemaAwareReader extends SchemaTypeAwareBeanDefinitionDocumentReader {
+
+ /** {@inheritDoc}
+ *
+ * We call the parent method for the custom schema (which is expected to not do anything special
+ * with the <beans> statement) and then we call again to handle the beans statements which
+ * we have explicitly pulled out.
+ * */
+ @Override public void registerBeanDefinitions(final Document doc, final XmlReaderContext readerContext)
+ throws BeanDefinitionStoreException {
+
+ super.registerBeanDefinitions(doc, readerContext);
+
+ final List<Element> beans = ElementSupport.getChildElements(doc.getDocumentElement(),
+ new QName(BeanDefinitionParserDelegate.BEANS_NAMESPACE_URI, NESTED_BEANS_ELEMENT));
+ if (beans.isEmpty()) {
+ return;
+ }
+ for (final Element elem : beans) {
+ doRegisterBeanDefinitions(elem);
+ }
+ }
+}
diff --git a/src/main/java/net/shibboleth/ext/spring/util/SchemaTypeAwareBeanDefinitionDocumentReader.java b/src/main/java/net/shibboleth/ext/spring/util/SchemaTypeAwareBeanDefinitionDocumentReader.java
index a12b7e9..6d152b6 100644
--- a/src/main/java/net/shibboleth/ext/spring/util/SchemaTypeAwareBeanDefinitionDocumentReader.java
+++ b/src/main/java/net/shibboleth/ext/spring/util/SchemaTypeAwareBeanDefinitionDocumentReader.java
@@ -29,13 +29,13 @@ import org.w3c.dom.Element;
public class SchemaTypeAwareBeanDefinitionDocumentReader extends DefaultBeanDefinitionDocumentReader {
/** {@inheritDoc} */
- @Override
- protected BeanDefinitionParserDelegate createDelegate(final XmlReaderContext readerContext, final Element root,
+ @Override protected BeanDefinitionParserDelegate createDelegate(final XmlReaderContext readerContext,
+ final Element root,
final BeanDefinitionParserDelegate parentDelegate) {
final BeanDefinitionParserDelegate delegate =
new SchemaTypeAwareBeanDefinitionParserDelegate(readerContext);
delegate.initDefaults(root, parentDelegate);
return delegate;
}
-
+
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list