[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