[java-identity-provider] 33/51: IDP-1121 sourceAttributeID is no more for attributes.

Rod Widdowson rdw at steadingsoftware.com
Wed Feb 6 08:43:04 EST 2019


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=51885e9dab87a44af6073cc698a3456889e985fb

commit 51885e9dab87a44af6073cc698a3456889e985fb
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Jan 22 17:24:22 2019 +0000

    IDP-1121 sourceAttributeID is no more for attributes.
    
    https://issues.shibboleth.net/jira/browse/IDP-1121
    
    Computed Data Connectors still have to be stripped.
---
 .../resolver/AbstractAttributeDefinition.java      | 22 --------------
 .../ResolverAttributeDefinitionDependency.java     | 34 ++--------------------
 .../resolver/AbstractAttributeDefinitionTest.java  |  2 --
 .../resolver/AbstractResolverPluginTest.java       |  4 ---
 .../resolver/PluginDependencySupportTest.java      | 12 --------
 .../resolver/ResolvedAttributeDefinitionTest.java  |  1 -
 .../resolver/ResolvedDataConnectorTest.java        |  1 -
 .../spring/ad/BaseAttributeDefinitionParser.java   | 10 -------
 .../attribute/resolver/spring/mappedTemplate.xml   |  2 +-
 .../resolver/spring/mapperTest-attributes.xml      | 10 +++----
 .../resolver/spring/simpleDependencies.xml         |  2 +-
 .../schema/shibboleth-attribute-resolver.xsd       | 17 ++---------
 12 files changed, 12 insertions(+), 105 deletions(-)

diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
index c335c91..8202da9 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
@@ -61,9 +61,6 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
     /** Whether this attribute definition is only a dependency and thus its values should never be released. */
     private boolean dependencyOnly;
 
-    /** The sourceAttributeID attributeName. */
-    @Nullable private String sourceAttributeID;
-
     /** Attribute encoders associated with this definition. */
     @Nonnull private Set<AttributeEncoder<?>> encoders = Collections.emptySet();
 
@@ -187,25 +184,6 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
         encoders = ImmutableSet.copyOf(checkedEncoders);
     }
 
-    /**
-     * Gets the source attribute id.
-     * @deprecated - only used for old style dependencies
-     * @return the source attribute id
-     */
-    public @Deprecated String getSourceAttributeId() {
-        return sourceAttributeID;
-    }
-
-    /**
-     * Sets the source attribute id.
-     * 
-     * @param attributeId the source attribute id
-     */
-    public void setSourceAttributeId(final String attributeId) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        sourceAttributeID = StringSupport.trimOrNull(attributeId);
-    }
-
     /** {@inheritDoc} */
     @Override
     protected void doInitialize() throws ComponentInitializationException {
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverAttributeDefinitionDependency.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverAttributeDefinitionDependency.java
index d91b17c..f3ec9fd 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverAttributeDefinitionDependency.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverAttributeDefinitionDependency.java
@@ -38,9 +38,6 @@ public final class ResolverAttributeDefinitionDependency  {
     /** ID of the plugin that will produce the attribute. */
     @Nonnull @NotEmpty private final String dependencyPluginId;
 
-    /** ID of the attribute, produced by the identified plugin, whose values will be used by the dependent plugin. */
-    @Nullable private String dependencyAttributeId;
-
     /**
      * Constructor.
      * 
@@ -62,33 +59,10 @@ public final class ResolverAttributeDefinitionDependency  {
         return dependencyPluginId;
     }
 
-    /**
-     * Set the attributeId.
-     * 
-     * @param attributeId ID of the attribute, produced by the identified plugin, whose values will be used by the
-     *            dependent plugin
-     */
-    public void setDependencyAttributeId(@Nullable final String attributeId) {
-        dependencyAttributeId = StringSupport.trimOrNull(attributeId);
-    }
-
-    /**
-     * Gets the ID of the attribute, produced by the identified plugin, whose values will be used by the dependent
-     * plugin.
-     * 
-     * @return ID of the attribute, produced by the identified plugin, whose values will be used by the dependent
-     *         plugin, never null or empty
-     */
-    @Nullable public String getDependencyAttributeId() {
-        return dependencyAttributeId;
-    }
-
     /** {@inheritDoc} */
     @Override
     public int hashCode() {
-        final int[] input = {getDependencyPluginId().hashCode(),
-                getDependencyAttributeId()!=null?getDependencyAttributeId().hashCode(): 0};
-        return Arrays.hashCode(input);
+        return getDependencyPluginId().hashCode();
     }
 
     /** {@inheritDoc} */
@@ -107,14 +81,12 @@ public final class ResolverAttributeDefinitionDependency  {
         }
 
         final ResolverAttributeDefinitionDependency other = (ResolverAttributeDefinitionDependency) obj;
-        return Objects.equals(getDependencyPluginId(), other.getDependencyPluginId())
-                && Objects.equals(getDependencyAttributeId(), other.getDependencyAttributeId());
+        return Objects.equals(getDependencyPluginId(), other.getDependencyPluginId());
     }
 
     /** {@inheritDoc} */
     @Override
     public String toString() {
-        return MoreObjects.toStringHelper(this).add("pluginId", dependencyPluginId)
-                .add("attributeId", dependencyAttributeId).toString();
+        return MoreObjects.toStringHelper(this).add("pluginId", getDependencyPluginId()).toString();
     }
 }
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
index e124afc..67fe772 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
@@ -203,13 +203,11 @@ public class AbstractAttributeDefinitionTest {
         final Set<ResolverDataConnectorDependency> dDepends = definition.getDataConnectorDependencies();
         
         Assert.assertEquals(dDepends.size(), 1);
-        Assert.assertNull(definition.getSourceAttributeId());
         Assert.assertTrue(dDepends.iterator().next().getAttributeNames().contains("da"));
         Assert.assertEquals(dDepends.iterator().next().getDependencyPluginId(), "dc");
 
         final Set<ResolverAttributeDefinitionDependency> aDepends = definition.getAttributeDependencies();
         Assert.assertEquals(aDepends.size(), 1);
-        Assert.assertNull(definition.getSourceAttributeId());
         Assert.assertEquals(aDepends.iterator().next().getDependencyPluginId(), "ad");
 
     }
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
index fe1a694..380d9a4 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
@@ -114,14 +114,10 @@ public class AbstractResolverPluginTest {
         Assert.assertTrue(plugin.getDataConnectorDependencies().isEmpty());
 
         final ResolverAttributeDefinitionDependency dep1 = new ResolverAttributeDefinitionDependency("foo");
-        dep1.setDependencyAttributeId("bar");
         final ResolverAttributeDefinitionDependency dep2 = new ResolverAttributeDefinitionDependency("foo2");
-        dep2.setDependencyAttributeId("baz");
 
         final ResolverDataConnectorDependency depd1 = new ResolverDataConnectorDependency("food");
-        dep1.setDependencyAttributeId("bard");
         final ResolverDataConnectorDependency depd2 = new ResolverDataConnectorDependency("food2");
-        dep2.setDependencyAttributeId("bazd");
 
         final HashSet<ResolverAttributeDefinitionDependency> adeps = new HashSet<>();
         final HashSet<ResolverDataConnectorDependency> ddeps = new HashSet<>();
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java
index 7d1999e..e8e8ec5 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java
@@ -309,18 +309,6 @@ public class PluginDependencySupportTest {
         Assert.assertEquals(ad1.hashCode(), ad2.hashCode());
         Assert.assertNotEquals(ad2.hashCode(), ad3.hashCode());
         
-        ad1.setDependencyAttributeId("ra1");
-        ad2.setDependencyAttributeId("bar");
-        Assert.assertNotEquals(ad1, ad2);
-        Assert.assertNotEquals(ad2, ad3);
-        Assert.assertNotEquals(ad1.hashCode(), ad2.hashCode());
-        Assert.assertNotEquals(ad2.hashCode(), ad3.hashCode());
-       
-        ad1.setDependencyAttributeId("bar");
-        Assert.assertEquals(ad1, ad2);
-        Assert.assertNotEquals(ad2, ad3);
-        Assert.assertEquals(ad1.hashCode(), ad2.hashCode());
-        Assert.assertNotEquals(ad2.hashCode(), ad3.hashCode());
     }
 
     @Test public void hashesDataConnectorDependency() {
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinitionTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinitionTest.java
index 9424a89..3bde4e9 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinitionTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinitionTest.java
@@ -94,7 +94,6 @@ public class ResolvedAttributeDefinitionTest {
         attrDef.setValue(attribute);
         attrDef.setId("Defn");
         final ResolverAttributeDefinitionDependency dep = new ResolverAttributeDefinitionDependency("doo");
-        dep.setDependencyAttributeId("foo");
         attrDef.setAttributeDependencies(Collections.singleton(dep));
         final ResolverDataConnectorDependency ddep = new ResolverDataConnectorDependency("ddoo");
         ddep.setAttributeNames(Collections.singletonList("foo"));
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnectorTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnectorTest.java
index d7583b2..c3f9191 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnectorTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnectorTest.java
@@ -99,7 +99,6 @@ public class ResolvedDataConnectorTest {
         dc.setId("Defn");
         
         final ResolverAttributeDefinitionDependency dep = new ResolverAttributeDefinitionDependency("doo");
-        dep.setDependencyAttributeId("foo");
         dc.setAttributeDependencies(Collections.singleton(dep));
         final ResolverDataConnectorDependency ddep = new ResolverDataConnectorDependency("ddoo");
         ddep.setAttributeNames(Collections.singletonList("foo"));
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
index aecbfe6..276c791 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
@@ -92,16 +92,6 @@ public abstract class BaseAttributeDefinitionParser extends BaseResolverPluginPa
             builder.addPropertyValue("dependencyOnly", dependencyOnly);
         }
 
-        if (config.hasAttributeNS(null, "sourceAttributeID")) {
-            final String sourceAttributeId = config.getAttributeNodeNS(null, "sourceAttributeID").getValue();
-            log.debug("{} Setting sourceAttributeID {}", getLogPrefix(), sourceAttributeId);
-            builder.addPropertyValue("sourceAttributeId", sourceAttributeId);
-            DeprecationSupport.warnOnce(ObjectType.ATTRIBUTE, "sourceAttributeID",
-                    parserContext.getReaderContext().getResource().getDescription(),
-                    InputAttributeDefinitionParser.ELEMENT_NAME.getLocalPart() + " or "
-                            + InputDataConnectorParser.ELEMENT_NAME.getLocalPart());
-        }
-
         final List<Element> attributeEncoders =
                 ElementSupport.getChildElements(config, new QName(AttributeResolverNamespaceHandler.NAMESPACE,
                         "AttributeEncoder"));
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/mappedTemplate.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/mappedTemplate.xml
index c2280c2..cb8b7e8 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/mappedTemplate.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/mappedTemplate.xml
@@ -18,7 +18,7 @@
     </AttributeDefinition>
 
     <AttributeDefinition xsi:type="Mapped"
-        id="mapped2" sourceAttributeID="attr1" dependencyOnly="true">
+        id="mapped2" dependencyOnly="true">
         <InputDataConnector ref="static" attributeNames="attr2"/>
         <DefaultValue>undefined</DefaultValue>
         <ValueMap>
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/mapperTest-attributes.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/mapperTest-attributes.xml
index a27b2b5..76b690b 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/mapperTest-attributes.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/mapperTest-attributes.xml
@@ -21,27 +21,27 @@
         </Attribute>
     </DataConnector>
 
-    <AttributeDefinition xsi:type="Simple" id="eduPersonAssurance" sourceAttributeID="assurance">
+    <AttributeDefinition xsi:type="Simple" id="eduPersonAssurance">
         <InputDataConnector allAttributes="true" ref="staticAttributes" />
         <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:eduPersonAssurance" />
         <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" friendlyName="feduPersonAssurance" />
         <AttributeEncoder xsi:type="SAML2String" nameFormat="http://example.org/Format" name="http://example.org/name/for/Attribute" friendlyName="fotherSAMLName" />
     </AttributeDefinition>
 
-    <AttributeDefinition xsi:type="Simple" id="otherPersonAssurance" sourceAttributeID="oAssurance">
+    <AttributeDefinition xsi:type="Simple" id="otherPersonAssurance" >
         <InputDataConnector allAttributes="true"  ref="staticAttributes" />
         <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:eduPersonAssurance" />
         <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" friendlyName="feduPersonAssurance" />
     </AttributeDefinition>
         
-    <AttributeDefinition xsi:type="Simple" id="otherFormatPersonAssurance" sourceAttributeID="ofAssurance">
+    <AttributeDefinition xsi:type="Simple" id="otherFormatPersonAssurance" >
         <InputDataConnector allAttributes="true"  ref="staticAttributes" />
         <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:eduPersonAssurance" />
         <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" nameFormat="http://example.org/Format" friendlyName="fOeduPersonAssurance" />
     </AttributeDefinition>
 
     <AttributeDefinition xsi:type="Scoped" id="eduPersonScopedAffiliation" scope="example.org" 
-                                  sourceAttributeID="assurance">
+                                  >
         <InputDataConnector allAttributes="true"  ref="staticAttributes" />
         <AttributeEncoder xsi:type="SAML1ScopedString" name="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" />
         <AttributeEncoder xsi:type="SAML2ScopedString" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" friendlyName="feduPersonScopedAffiliation" 
@@ -49,7 +49,7 @@
     </AttributeDefinition>
     
     <AttributeDefinition xsi:type="SAML2NameID" id="eduPersonTID" 
-                                  nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" sourceAttributeID="eduPersonEntitlement">
+                                  nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" >
         <InputDataConnector allAttributes="true"  ref="staticAttributes" />
         <AttributeEncoder xsi:type="SAML1XMLObject" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" />
         <AttributeEncoder xsi:type="SAML2XMLObject" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="feduPersonTargetedID" />
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/simpleDependencies.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/simpleDependencies.xml
index 977a5c1..1a522bc 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/simpleDependencies.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/simpleDependencies.xml
@@ -1,7 +1,7 @@
  <AttributeDefinition 
     xmlns="urn:mace:shibboleth:2.0:resolver"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-    xsi:type="Simple" id="simplePopulated" sourceAttributeID="flibble"
+    xsi:type="Simple" id="simplePopulated"
     xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
  
     <InputDataConnector ref="dep2" allAttributes="true"/>
diff --git a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
index a642aa6..9687ccd 100644
--- a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -45,7 +45,6 @@
                 Definitions derived from this type need to explicitly include (as a choice)
                 the Dependency, DisplayName, DisplayDescription and Encoder sub elements
 
-                Definitions derived from this type may add the sourceAttributeID element.
             </documentation>
         </annotation>
         <complexContent>
@@ -386,7 +385,6 @@
                     </element>
                     <element name="ValueMap" type="resolver:ValueMapType" maxOccurs="unbounded"/>
                 </choice>
-                <attribute name="sourceAttributeID" type="string"/>
             </extension>
         </complexContent>
     </complexType>
@@ -407,7 +405,6 @@
                     <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
                     <element ref="resolver:AttributeEncoder"/>
                 </choice>
-                <attribute name="sourceAttributeID" type="string"/>
                 <attribute name="scopeDelimiter" type="string">
                     <annotation>
                         <documentation>Delimiter between the value and scope.</documentation>
@@ -460,7 +457,6 @@
                     <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
                     <element ref="resolver:AttributeEncoder"/>
                 </choice>
-                <attribute name="sourceAttributeID" type="string"/>
                 <attribute name="regex" type="string" use="required">
                     <annotation>
                         <documentation>The regular expression used to split a value.</documentation>
@@ -490,7 +486,6 @@
                     <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
                     <element ref="resolver:AttributeEncoder"/>
                 </choice>
-                <attribute name="sourceAttributeID" type="string"/>
                 <attribute name="nameIdFormat" type="string">
                     <annotation>
                         <documentation>The SAML 1 NameFormat of the NameID.</documentation>
@@ -518,7 +513,6 @@
                     <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
                     <element ref="resolver:AttributeEncoder"/>
                 </choice>
-                <attribute name="sourceAttributeID" type="string"/>
                 <attribute name="nameIdFormat" type="string">
                     <annotation>
                         <documentation>The SAML 2 NameFormat of the NameID.</documentation>
@@ -551,7 +545,6 @@
                     <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
                     <element ref="resolver:AttributeEncoder"/>
                 </choice>
-                <attribute name="sourceAttributeID" type="string"/>
                 <attribute name="scope" type="string" use="required">
                     <annotation>
                         <documentation>Value to use for scoping the attribute.</documentation>
@@ -570,8 +563,6 @@
                 a script attribute corresponding to the script variable whose name is the ID of the definition. This
                 variable is injected into the script by the attribute definition.
 
-                NOTE that in this version Script does not have a sourceAttributeID - all the values for scripts
-                come from the Dependency elements.
             </documentation>
         </annotation>
         <complexContent>
@@ -628,7 +619,6 @@
                     <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
                     <element ref="resolver:AttributeEncoder"/>
                 </choice>
-                <attribute name="sourceAttributeID" type="string"/>
             </extension>
         </complexContent>
     </complexType>
@@ -686,11 +676,8 @@
                     <element name="SourceAttribute" type="string" maxOccurs="unbounded">
                         <annotation>
                             <documentation>
-                                Attribute IDs which should be used in this definition, rather than the sourceAttributeID
-                                attribute. Each source attribute is available to be used in the Template as
-                                ${attribute_name}. If the source attribute has multiple values, only one value is
-                                available to the template at a time, but the template will be evaluated once for each
-                                value.
+                                Attribute IDs which should be used in this definition.
+                                It is preferred to provide these using the dependencies.
                             </documentation>
                         </annotation>
                     </element>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list