[java-identity-provider COMMIT] in /trunk: idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/fil...

noreply at shibboleth.net noreply at shibboleth.net
Thu Jul 31 05:38:16 EDT 2014


Author: rdw
Date: Thu Jul 31 05:38:16 2014
New Revision: 6370

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6370&view=rev
Log:
IDP-354 defer handling of string in script parsing (attribute definition and filtering) to a factory.  Allows for property replacement.

Modified:
    trunk/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/ScriptedMatcherParser.java
    trunk/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/BaseAttributeFilterParserTest.java
    trunk/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/basic/ScriptedTest.java
    trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/ScriptedAttributeDefinitionParser.java
    trunk/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseAttributeDefinitionParserTest.java
    trunk/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/ScriptedAttributeParserTest.java

Modified: trunk/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/ScriptedMatcherParser.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/ScriptedMatcherParser.java?rev=6370&r1=6369&r2=6370&view=diff
==============================================================================
--- trunk/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/ScriptedMatcherParser.java (original)
+++ trunk/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/ScriptedMatcherParser.java Thu Jul 31 05:38:16 2014
@@ -17,18 +17,15 @@
 
 package net.shibboleth.idp.attribute.filter.spring.basic;
 
-import java.io.FileInputStream;
-import java.io.IOException;
 import java.util.List;
 
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
+import net.shibboleth.ext.spring.factory.EvaluableScriptFactoryBean;
 import net.shibboleth.idp.attribute.filter.matcher.impl.ScriptedMatcher;
 import net.shibboleth.idp.attribute.filter.policyrule.impl.ScriptedPolicyRule;
 import net.shibboleth.idp.attribute.filter.spring.BaseFilterParser;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.scripting.EvaluableScript;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
 
 import org.slf4j.Logger;
@@ -56,48 +53,12 @@
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(AttributeFilterBasicNamespaceHandler.class);
 
-    /** Prefix for log messages. */
-    private String logPrefix;
-
     /** {@inheritDoc} */
     @Override @Nonnull protected Class<?> getBeanClass(@Nonnull final Element element) {
         if (isPolicyRule(element)) {
             return ScriptedPolicyRule.class;
         }
         return ScriptedMatcher.class;
-    }
-
-    /**
-     * Query the DOM and get the script from the appropriate subelements.
-     * 
-     * @param config The DOM we are interested in
-     * @return The script as a string or throws an {@link BeanCreationException}
-     */
-    @Nonnull private String getScript(@Nonnull final Element config) {
-        String script = null;
-        final List<Element> scriptElem = ElementSupport.getChildElements(config, SCRIPT_ELEMENT_NAME);
-        final List<Element> scriptFileElem = ElementSupport.getChildElements(config, SCRIPT_FILE_ELEMENT_NAME);
-        if (scriptElem != null && scriptElem.size() > 0) {
-            if (scriptFileElem != null && scriptFileElem.size() > 0) {
-                log.info("{} definition contains both <Script> and <ScriptFile> elements, using the <Script> element",
-                        logPrefix);
-            }
-            script = scriptElem.get(0).getTextContent();
-        } else {
-            if (scriptFileElem != null && scriptFileElem.size() > 0) {
-                String scriptFile = scriptFileElem.get(0).getTextContent();
-                try {
-                    script = StringSupport.inputStreamToString(new FileInputStream(scriptFile), null);
-                } catch (IOException e) {
-                    throw new BeanCreationException("{} Unable to read script file {}" + logPrefix, scriptFile, e);
-                }
-            }
-        }
-
-        if (script == null) {
-            throw new BeanCreationException("No script specified for this attribute definition");
-        }
-        return script;
     }
 
     /**
@@ -108,22 +69,38 @@
         super.doParse(config, parserContext, builder);
 
         final String myId = builder.getBeanDefinition().getAttribute("qualifiedId").toString();
+        final String logPrefix = new StringBuilder("Scipted Filter '").append(myId).append("' :").toString();
+
+        BeanDefinitionBuilder scriptBuilder =

[... 299 lines stripped ...]


More information about the commits mailing list