[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