[java-metadata-aggregator] 01/02: Nullability: rework ElementMatcher and ElementMaker as functional interfaces
Ian Young
ian at iay.org.uk
Tue Apr 4 07:01:48 UTC 2023
This is an automated email from the git hooks/post-receive script.
iay pushed a commit to branch main
in repository java-metadata-aggregator.
View the commit online:
http://git.shibboleth.net/view/?p=java-metadata-aggregator.git;a=commit;h=58a176c4e8ed34fe8e763cfbd7df18629f4058d5
commit 58a176c4e8ed34fe8e763cfbd7df18629f4058d5
Author: Ian Young <ian at iay.org.uk>
AuthorDate: Tue Apr 4 06:50:42 2023 +0100
Nullability: rework ElementMatcher and ElementMaker as functional interfaces
---
.../net/shibboleth/metadata/dom/Container.java | 41 ++++++++++-----------
.../net/shibboleth/metadata/dom/ElementMaker.java | 35 +++++-------------
.../shibboleth/metadata/dom/ElementMatcher.java | 33 +++++------------
.../{ElementMaker.java => SimpleElementMaker.java} | 10 +++---
...ementMatcher.java => SimpleElementMatcher.java} | 10 +++---
.../metadata/dom/saml/AttributeElementMaker.java | 8 ++---
.../metadata/dom/saml/AttributeElementMatcher.java | 10 +++---
.../dom/saml/AttributeValueElementMaker.java | 8 ++---
.../dom/saml/AttributeValueElementMatcher.java | 10 +++---
.../shibboleth/metadata/dom/saml/SAMLSupport.java | 23 ++++++------
.../saml/mdattr/EntityAttributeAddingStage.java | 6 ++--
.../metadata/dom/saml/mdattr/MDAttrSupport.java | 15 ++++----
.../net/shibboleth/metadata/dom/ContainerTest.java | 42 +++++++++++-----------
.../shibboleth/metadata/dom/ElementMakerTest.java | 8 ++---
.../metadata/dom/ElementMatcherTest.java | 12 +++----
.../dom/saml/AttributeElementMakerTest.java | 2 +-
.../dom/saml/AttributeElementMatcherTest.java | 10 +++---
.../dom/saml/AttributeValueElementMakerTest.java | 2 +-
.../dom/saml/AttributeValueElementMatcherTest.java | 12 ++++---
19 files changed, 125 insertions(+), 172 deletions(-)
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/Container.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/Container.java
index ce70672..d4820a0 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/Container.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/Container.java
@@ -19,12 +19,11 @@ package net.shibboleth.metadata.dom;
import java.util.ArrayList;
import java.util.List;
-import java.util.function.Function;
-import java.util.function.Predicate;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.xml.ElementSupport;
@@ -205,17 +204,16 @@ public class Container {
}
/**
- * Find an existing child matching the {@link Predicate}, if there is one.
+ * Find an existing child matching the {@link ElementMatcher}, if there is one.
*
- * @param matcher {@link Predicate} to match against existing children
+ * @param matcher {@link ElementMatcher} to match against existing children
* @return a child {@link Container} whose {@link Element} matches
- * the supplied {@link Predicate}.
+ * the supplied {@link ElementMatcher}.
*/
- @Nullable
- public Container findChild(@Nonnull final Predicate<Element> matcher) {
+ public @Nullable Container findChild(final @Nonnull ElementMatcher matcher) {
for (final Element e : ElementSupport.getChildElements(element)) {
assert e != null;
- if (matcher.test(e)) {
+ if (matcher.match(e)) {
return new Container(e, this);
}
}
@@ -223,17 +221,16 @@ public class Container {
}
/**
- * Find all existing children matching the {@link Predicate}.
+ * Find all existing children matching the {@link ElementMatcher}.
*
- * @param matcher {@link Predicate} to match against existing children
+ * @param matcher {@link ElementMatcher} to match against existing children
* @return a {@link List} of all matching children
*/
- @Nonnull
- public List<Container> findChildren(@Nonnull final Predicate<Element> matcher) {
+ public @Nonnull @NonnullElements List<Container> findChildren(final @Nonnull ElementMatcher matcher) {
final List<Container> list = new ArrayList<>();
for (final Element e : ElementSupport.getChildElements(element)) {
assert e != null;
- if (matcher.test(e)) {
+ if (matcher.match(e)) {
list.add(new Container(e, this));
}
}
@@ -256,30 +253,28 @@ public class Container {
/**
* Add a child to the container.
*
- * @param maker {@link Function} to create the new child element
+ * @param maker {@link ElementMaker} to create the new child element
* @param adder strategy class to place the new child inside the container
* @return a container wrapping the new child element
*/
- @Nonnull
- public Container addChild(@Nonnull final Function<Container, Element> maker,
+ public @Nonnull Container addChild(@Nonnull final ElementMaker maker,
@Nonnull final ChildAddingStrategy adder) {
- final Element child = maker.apply(this);
+ final Element child = maker.make(this);
assert child != null;
return addChild(child, adder);
}
/**
- * Locate a child container matching the {@link Predicate}, creating one
+ * Locate a child container matching the {@link ElementMatcher}, creating one
* if necessary.
*
- * @param matcher {@link Predicate} to match against existing children
- * @param maker a {@link Function} to create a new child {@link Element}
+ * @param matcher {@link ElementMatcher} to match against existing children
+ * @param maker a {@link ElementMaker} to create a new child {@link Element}
* @param adder a {@link ChildAddingStrategy} determining where to place the new child
* @return a child {@link Container}, possibly just created
*/
- @Nonnull
- public Container locateChild(@Nonnull final Predicate<Element> matcher,
- @Nonnull final Function<Container, Element> maker,
+ public @Nonnull Container locateChild(final @Nonnull ElementMatcher matcher,
+ @Nonnull final ElementMaker maker,
@Nonnull final ChildAddingStrategy adder) {
// Return an existing child if one exists
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMaker.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMaker.java
index 0a20c71..4377f00 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMaker.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMaker.java
@@ -14,44 +14,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package net.shibboleth.metadata.dom;
-import java.util.function.Function;
-
import javax.annotation.Nonnull;
-import javax.annotation.concurrent.Immutable;
-import javax.xml.namespace.QName;
import org.w3c.dom.Element;
-import net.shibboleth.shared.xml.ElementSupport;
-
/**
- * Basic maker class for {@link Element}s for use with the {@link Container} system.
+ * Functional interface allowing for the construction of a new {@link Element}
+ * within the given {@link Container}.
*
* @since 0.10.0
*/
- at Immutable
-public class ElementMaker implements Function<Container, Element> {
-
- /** Qualified name for the {@link Element} to be created. */
- @Nonnull private final QName name;
+ at FunctionalInterface
+public interface ElementMaker {
/**
- * Constructor.
- *
- * @param qname qualified name for the {@link Element} to be created
+ * Construct an {@link Element} within the given {@link Container}.
+ *
+ * @param container parent {@link Container} for the new {@link Element}
+ * @return newly constructed {@link Element}
*/
- public ElementMaker(@Nonnull final QName qname) {
- name = qname;
- }
-
- @Override
- public Element apply(final Container input) {
- final var element = input.unwrap().getOwnerDocument();
- assert element != null;
- return ElementSupport.constructElement(element, name);
- }
+ @Nonnull Element make(@Nonnull Container container);
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMatcher.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMatcher.java
index f37c60b..72d5166 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMatcher.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMatcher.java
@@ -14,43 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package net.shibboleth.metadata.dom;
-import java.util.function.Predicate;
-
import javax.annotation.Nonnull;
-import javax.annotation.concurrent.Immutable;
-import javax.xml.namespace.QName;
import org.w3c.dom.Element;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.xml.ElementSupport;
-
/**
- * Basic matcher class for {@link Element}s for use with the {@link Container} system.
+ * Functional interface representing matching an {@link Element}.
*
* @since 0.10.0
*/
- at Immutable
-public class ElementMatcher implements Predicate<Element> {
-
- /** Element {@link QName} to match. */
- @Nonnull private final QName qname;
+ at FunctionalInterface
+public interface ElementMatcher {
/**
- * Constructor.
- *
- * @param qnameToMatch qualified name ({@link QName}) to match
+ * Match an {@link Element} against specified criteria.
+ *
+ * @param input the {@link Element} to match
+ * @return <code>true</code> if the {@link Element} matches
*/
- public ElementMatcher(@Nonnull final QName qnameToMatch) {
- qname = Constraint.isNotNull(qnameToMatch, "qnameToMatch must not be null");
- }
-
- @Override
- public boolean test(final Element input) {
- return ElementSupport.isElementNamed(input, qname);
- }
+ boolean match(@Nonnull Element input);
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMaker.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/SimpleElementMaker.java
similarity index 85%
copy from mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMaker.java
copy to mda-framework/src/main/java/net/shibboleth/metadata/dom/SimpleElementMaker.java
index 0a20c71..5850a67 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMaker.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/SimpleElementMaker.java
@@ -17,8 +17,6 @@
package net.shibboleth.metadata.dom;
-import java.util.function.Function;
-
import javax.annotation.Nonnull;
import javax.annotation.concurrent.Immutable;
import javax.xml.namespace.QName;
@@ -33,7 +31,7 @@ import net.shibboleth.shared.xml.ElementSupport;
* @since 0.10.0
*/
@Immutable
-public class ElementMaker implements Function<Container, Element> {
+public class SimpleElementMaker implements ElementMaker {
/** Qualified name for the {@link Element} to be created. */
@Nonnull private final QName name;
@@ -43,13 +41,13 @@ public class ElementMaker implements Function<Container, Element> {
*
* @param qname qualified name for the {@link Element} to be created
*/
- public ElementMaker(@Nonnull final QName qname) {
+ public SimpleElementMaker(@Nonnull final QName qname) {
name = qname;
}
@Override
- public Element apply(final Container input) {
- final var element = input.unwrap().getOwnerDocument();
+ public @Nonnull Element make(final @Nonnull Container container) {
+ final var element = container.unwrap().getOwnerDocument();
assert element != null;
return ElementSupport.constructElement(element, name);
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMatcher.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/SimpleElementMatcher.java
similarity index 86%
copy from mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMatcher.java
copy to mda-framework/src/main/java/net/shibboleth/metadata/dom/SimpleElementMatcher.java
index f37c60b..946d988 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementMatcher.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/SimpleElementMatcher.java
@@ -17,8 +17,6 @@
package net.shibboleth.metadata.dom;
-import java.util.function.Predicate;
-
import javax.annotation.Nonnull;
import javax.annotation.concurrent.Immutable;
import javax.xml.namespace.QName;
@@ -34,22 +32,22 @@ import net.shibboleth.shared.xml.ElementSupport;
* @since 0.10.0
*/
@Immutable
-public class ElementMatcher implements Predicate<Element> {
+public class SimpleElementMatcher implements ElementMatcher {
/** Element {@link QName} to match. */
- @Nonnull private final QName qname;
+ private final @Nonnull QName qname;
/**
* Constructor.
*
* @param qnameToMatch qualified name ({@link QName}) to match
*/
- public ElementMatcher(@Nonnull final QName qnameToMatch) {
+ public SimpleElementMatcher(@Nonnull final QName qnameToMatch) {
qname = Constraint.isNotNull(qnameToMatch, "qnameToMatch must not be null");
}
@Override
- public boolean test(final Element input) {
+ public boolean match(final @Nonnull Element input) {
return ElementSupport.isElementNamed(input, qname);
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeElementMaker.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeElementMaker.java
index f0943bb..d311232 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeElementMaker.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeElementMaker.java
@@ -23,7 +23,7 @@ import javax.annotation.concurrent.Immutable;
import org.w3c.dom.Element;
import net.shibboleth.metadata.dom.Container;
-import net.shibboleth.metadata.dom.ElementMaker;
+import net.shibboleth.metadata.dom.SimpleElementMaker;
import net.shibboleth.shared.logic.Constraint;
/**
@@ -33,7 +33,7 @@ import net.shibboleth.shared.logic.Constraint;
* @since 0.10.0
*/
@Immutable
-public class AttributeElementMaker extends ElementMaker {
+public class AttributeElementMaker extends SimpleElementMaker {
/** Value for the <code>Name</code> XML attribute. */
@Nonnull
@@ -56,8 +56,8 @@ public class AttributeElementMaker extends ElementMaker {
}
@Override
- public Element apply(final Container container) {
- final Element newElement = super.apply(container);
+ public @Nonnull Element make(final @Nonnull Container container) {
+ final Element newElement = super.make(container);
newElement.setAttributeNS(null, "Name", attributeName);
newElement.setAttributeNS(null, "NameFormat", attributeNameFormat);
return newElement;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeElementMatcher.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeElementMatcher.java
index dfd141f..c6a5da2 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeElementMatcher.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeElementMatcher.java
@@ -22,18 +22,18 @@ import javax.annotation.concurrent.Immutable;
import org.w3c.dom.Element;
-import net.shibboleth.metadata.dom.ElementMatcher;
+import net.shibboleth.metadata.dom.SimpleElementMatcher;
import net.shibboleth.shared.logic.Constraint;
/**
- * Match {@link java.util.function.Predicate} for SAML <code>Attribute</code> elements with specific
+ * {@link ElementMatcher} for SAML <code>Attribute</code> elements with specific
* <code>Name</code> and <code>NameFormat</code> attributes,
* for use with the {@link net.shibboleth.metadata.dom.Container} system.
*
* @since 0.10.0
*/
@Immutable
-public class AttributeElementMatcher extends ElementMatcher {
+public class AttributeElementMatcher extends SimpleElementMatcher {
/** <code>NameFormat</code> attribute value to match. */
@Nonnull private final String matchFormat;
@@ -54,9 +54,9 @@ public class AttributeElementMatcher extends ElementMatcher {
}
@Override
- public boolean test(@Nonnull final Element element) {
+ public boolean match(@Nonnull final Element element) {
// check for element name
- if (!super.test(element)) {
+ if (!super.match(element)) {
return false;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMaker.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMaker.java
index 5e32c35..e59d744 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMaker.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMaker.java
@@ -23,7 +23,7 @@ import javax.annotation.concurrent.Immutable;
import org.w3c.dom.Element;
import net.shibboleth.metadata.dom.Container;
-import net.shibboleth.metadata.dom.ElementMaker;
+import net.shibboleth.metadata.dom.SimpleElementMaker;
import net.shibboleth.shared.logic.Constraint;
/**
@@ -31,7 +31,7 @@ import net.shibboleth.shared.logic.Constraint;
* for use with the {@link Container} system.
*/
@Immutable
-public class AttributeValueElementMaker extends ElementMaker {
+public class AttributeValueElementMaker extends SimpleElementMaker {
/** Value for the attribute. */
@Nonnull
@@ -48,8 +48,8 @@ public class AttributeValueElementMaker extends ElementMaker {
}
@Override
- public Element apply(@Nonnull final Container container) {
- final Element newElement = super.apply(container);
+ public Element make(@Nonnull final Container container) {
+ final Element newElement = super.make(container);
newElement.setTextContent(attributeValue);
return newElement;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMatcher.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMatcher.java
index 150e3bb..ed8c016 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMatcher.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMatcher.java
@@ -22,16 +22,16 @@ import javax.annotation.concurrent.Immutable;
import org.w3c.dom.Element;
-import net.shibboleth.metadata.dom.ElementMatcher;
+import net.shibboleth.metadata.dom.SimpleElementMatcher;
import net.shibboleth.shared.logic.Constraint;
/**
- * Match {@link java.util.function.Predicate} for SAML <code>AttributeValue</code> elements with specific
+ * {@link ElementMatcher} for SAML <code>AttributeValue</code> elements with specific
* text values,
* for use with the {@link net.shibboleth.metadata.dom.Container} system.
*/
@Immutable
-public class AttributeValueElementMatcher extends ElementMatcher {
+public class AttributeValueElementMatcher extends SimpleElementMatcher {
/** <code>Attribute</code> value to match. */
@Nonnull private final String matchValue;
@@ -47,9 +47,9 @@ public class AttributeValueElementMatcher extends ElementMatcher {
}
@Override
- public boolean test(@Nonnull final Element element) {
+ public boolean match(@Nonnull final Element element) {
// check for element name
- if (!super.test(element)) {
+ if (!super.match(element)) {
return false;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/SAMLSupport.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/SAMLSupport.java
index b028519..7e3567e 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/SAMLSupport.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/SAMLSupport.java
@@ -17,9 +17,6 @@
package net.shibboleth.metadata.dom.saml;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
import javax.xml.namespace.QName;
@@ -29,7 +26,9 @@ import org.w3c.dom.Element;
import net.shibboleth.metadata.dom.Container;
import net.shibboleth.metadata.dom.ElementMaker;
+import net.shibboleth.metadata.dom.SimpleElementMaker;
import net.shibboleth.metadata.dom.ElementMatcher;
+import net.shibboleth.metadata.dom.SimpleElementMatcher;
/**
* Helper class for dealing with SAML documents.
@@ -49,7 +48,8 @@ public final class SAMLSupport {
public static final @Nonnull QName ATTRIBUTE_NAME = new QName(SAML_NS, "Attribute", SAML_PREFIX);
/** Unspecified default <code>NameFormat</code> value for <code>Attribute</code> elements. */
- public static final @Nonnull String ATTRNAME_FORMAT_UNSPECIFIED = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified";
+ public static final @Nonnull String ATTRNAME_FORMAT_UNSPECIFIED =
+ "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified";
/** saml:AttributeValue element. */
public static final @Nonnull QName ATTRIBUTE_VALUE_NAME = new QName(SAML_NS, "AttributeValue", SAML_PREFIX);
@@ -59,16 +59,16 @@ public final class SAMLSupport {
*
* @since 0.10.0
*/
- public static final @Nonnull Predicate<Element> EXTENSIONS_MATCHER =
- new ElementMatcher(SAMLMetadataSupport.EXTENSIONS_NAME);
+ public static final @Nonnull ElementMatcher EXTENSIONS_MATCHER =
+ new SimpleElementMatcher(SAMLMetadataSupport.EXTENSIONS_NAME);
/**
* Maker for the <code>Extensions</code> element, for use with the {@link Container} system.
*
* @since 0.10.0
*/
- public static final @Nonnull Function<Container, Element> EXTENSIONS_MAKER =
- new ElementMaker(SAMLMetadataSupport.EXTENSIONS_NAME);
+ public static final @Nonnull ElementMaker EXTENSIONS_MAKER =
+ new SimpleElementMaker(SAMLMetadataSupport.EXTENSIONS_NAME);
/** Constructor. */
private SAMLSupport() {
@@ -81,13 +81,14 @@ public final class SAMLSupport {
* @param attribute <code>Attribute</code> {@link Element}
* @return <code>NameFormat</code> value, or the "unspecified" default
*/
- @Nonnull
- public static String extractAttributeNameFormat(@Nonnull final Element attribute) {
+ public static @Nonnull String extractAttributeNameFormat(@Nonnull final Element attribute) {
final Attr attr = attribute.getAttributeNode("NameFormat");
if (attr == null) {
return ATTRNAME_FORMAT_UNSPECIFIED;
}
- return attr.getValue();
+ final var value = attr.getValue();
+ assert value != null;
+ return value;
}
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/EntityAttributeAddingStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/EntityAttributeAddingStage.java
index f82d958..9df0610 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/EntityAttributeAddingStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/EntityAttributeAddingStage.java
@@ -18,7 +18,6 @@
package net.shibboleth.metadata.dom.saml.mdattr;
import java.util.List;
-import java.util.function.Predicate;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.GuardedBy;
@@ -29,6 +28,7 @@ import org.w3c.dom.Element;
import net.shibboleth.metadata.Item;
import net.shibboleth.metadata.dom.Container;
+import net.shibboleth.metadata.dom.ElementMatcher;
import net.shibboleth.metadata.dom.saml.AttributeElementMaker;
import net.shibboleth.metadata.dom.saml.AttributeElementMatcher;
import net.shibboleth.metadata.dom.saml.AttributeValueElementMaker;
@@ -167,11 +167,11 @@ public class EntityAttributeAddingStage extends AbstractStage<Element> {
* Attribute container elements.
*
* @param attributes {@link List} of Attribute {@link Container}s
- * @param matcher {@link Predicate} that matches the {@link Element} we are looking for
+ * @param matcher {@link ElementMatcher} that matches the {@link Element} we are looking for
* @return true iff the value appears somewhere in the list of containers
*/
private boolean attributeValuePresent(@Nonnull final List<Container> attributes,
- @Nonnull final Predicate<Element> matcher) {
+ @Nonnull final ElementMatcher matcher) {
for (final Container attribute : attributes) {
if (attribute.findChild(matcher) != null) {
return true;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/MDAttrSupport.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/MDAttrSupport.java
index c6c855e..6ee85e8 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/MDAttrSupport.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/MDAttrSupport.java
@@ -17,18 +17,15 @@
package net.shibboleth.metadata.dom.saml.mdattr;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
import javax.xml.namespace.QName;
-import org.w3c.dom.Element;
-
import net.shibboleth.metadata.dom.Container;
import net.shibboleth.metadata.dom.ElementMaker;
import net.shibboleth.metadata.dom.ElementMatcher;
+import net.shibboleth.metadata.dom.SimpleElementMaker;
+import net.shibboleth.metadata.dom.SimpleElementMatcher;
/**
* Helper class for dealing with MDAttr metadata.
@@ -52,16 +49,16 @@ public final class MDAttrSupport {
*
* @since 0.10.0
*/
- public static final @Nonnull Predicate<Element> ENTITY_ATTRIBUTES_MATCHER =
- new ElementMatcher(ENTITY_ATTRIBUTES_NAME);
+ public static final @Nonnull ElementMatcher ENTITY_ATTRIBUTES_MATCHER =
+ new SimpleElementMatcher(ENTITY_ATTRIBUTES_NAME);
/**
* Maker for the <code>EntityAttributes</code> element, for use with the {@link Container} system.
*
* @since 0.10.0
*/
- public static final @Nonnull Function<Container, Element> ENTITY_ATTRIBUTES_MAKER =
- new ElementMaker(ENTITY_ATTRIBUTES_NAME);
+ public static final @Nonnull ElementMaker ENTITY_ATTRIBUTES_MAKER =
+ new SimpleElementMaker(ENTITY_ATTRIBUTES_NAME);
/** Constructor. */
private MDAttrSupport() {
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/ContainerTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/ContainerTest.java
index 77f7bed..fb1e224 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/ContainerTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/ContainerTest.java
@@ -2,8 +2,6 @@
package net.shibboleth.metadata.dom;
import java.util.List;
-import java.util.function.Function;
-import java.util.function.Predicate;
import javax.annotation.Nonnull;
@@ -111,10 +109,10 @@ public class ContainerTest extends BaseDOMTest {
assert e1 != null;
final Container c1 = new Container(e1);
- c1.addChild(new Function<Container, Element>(){
+ c1.addChild(new ElementMaker(){
@Override
- public Element apply(Container input) {
+ public @Nonnull Element make(@Nonnull Container input) {
final Element e2 = doc.createElementNS("ns", "child");
e2.setTextContent("child value");
return e2;
@@ -125,10 +123,10 @@ public class ContainerTest extends BaseDOMTest {
final Element ok = readXMLData("add1.xml");
assertXMLIdentical(ok, e1);
- c1.addChild(new Function<Container, Element>(){
+ c1.addChild(new ElementMaker(){
@Override
- public Element apply(Container input) {
+ public @Nonnull Element make(@Nonnull Container input) {
final Element e3 = doc.createElementNS("ns", "child2");
e3.setTextContent("child 2 value");
return e3;
@@ -146,10 +144,10 @@ public class ContainerTest extends BaseDOMTest {
assert e1 != null;
final Container c1 = new Container(e1);
- c1.addChild(new Function<Container, Element>(){
+ c1.addChild(new ElementMaker(){
@Override
- public Element apply(Container input) {
+ public @Nonnull Element make(@Nonnull Container input) {
final Element e2 = doc.createElementNS("ns", "child");
e2.setTextContent("child value");
return e2;
@@ -160,10 +158,10 @@ public class ContainerTest extends BaseDOMTest {
final Element ok = readXMLData("add1.xml");
assertXMLIdentical(ok, e1);
- c1.addChild(new Function<Container, Element>(){
+ c1.addChild(new ElementMaker(){
@Override
- public Element apply(Container input) {
+ public @Nonnull Element make(@Nonnull Container input) {
final Element e3 = doc.createElementNS("ns", "child2");
e3.setTextContent("child 2 value");
return e3;
@@ -195,10 +193,10 @@ public class ContainerTest extends BaseDOMTest {
@Test
public void findChild() throws Exception {
final Container root = new Container(readXMLData("find.xml"));
- final Container child = root.findChild(new Predicate<Element>(){
+ final Container child = root.findChild(new ElementMatcher(){
@Override
- public boolean test(Element input) {
+ public boolean match(@Nonnull Element input) {
return "findme".equals(input.getLocalName());
}
@@ -210,10 +208,10 @@ public class ContainerTest extends BaseDOMTest {
@Test
public void findChildren() throws Exception {
final Container root = new Container(readXMLData("find.xml"));
- final List<Container> children = root.findChildren(new Predicate<Element>(){
+ final List<Container> children = root.findChildren(new ElementMatcher(){
@Override
- public boolean test(Element input) {
+ public boolean match(@Nonnull Element input) {
return "findme".equals(input.getLocalName());
}
@@ -231,18 +229,18 @@ public class ContainerTest extends BaseDOMTest {
assert e1 != null;
final Container c1 = new Container(e1);
- c1.locateChild(new Predicate<Element>(){
+ c1.locateChild(new ElementMatcher(){
@Override
- public boolean test(Element input) {
+ public boolean match(@Nonnull Element input) {
return "child".equals(input.getLocalName());
}
- }, new Function<Container, Element>(){
+ }, new ElementMaker(){
@Override
- public Element apply(Container input) {
+ public @Nonnull Element make(@Nonnull Container input) {
final Element e2 = doc.createElementNS("ns", "child");
e2.setTextContent("child value");
return e2;
@@ -255,18 +253,18 @@ public class ContainerTest extends BaseDOMTest {
// same again should NOT change the result for locate
- c1.locateChild(new Predicate<Element>(){
+ c1.locateChild(new ElementMatcher(){
@Override
- public boolean test(Element input) {
+ public boolean match(@Nonnull Element input) {
return "child".equals(input.getLocalName());
}
- }, new Function<Container, Element>(){
+ }, new ElementMaker(){
@Override
- public Element apply(Container input) {
+ public @Nonnull Element make(@Nonnull Container input) {
final Element e2 = doc.createElementNS("ns", "child");
e2.setTextContent("child value");
return e2;
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/ElementMakerTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/ElementMakerTest.java
index 3792a7b..52b371c 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/ElementMakerTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/ElementMakerTest.java
@@ -1,8 +1,6 @@
package net.shibboleth.metadata.dom;
-import java.util.function.Function;
-
import javax.xml.namespace.QName;
import org.testng.Assert;
@@ -15,18 +13,18 @@ public class ElementMakerTest extends BaseDOMTest {
private final Document doc;
protected ElementMakerTest() throws Exception {
- super(ElementMaker.class);
+ super(SimpleElementMaker.class);
setUp();
doc = getParserPool().newDocument();
}
@Test
public void apply() {
- final Function<Container, Element> maker = new ElementMaker(new QName("ns", "local"));
+ final var maker = new SimpleElementMaker(new QName("ns", "local"));
final Element root = doc.createElementNS("ns", "root");
assert root != null;
final Container rootContainer = new Container(root);
- final Element newElement = maker.apply(rootContainer);
+ final Element newElement = maker.make(rootContainer);
Assert.assertNotNull(newElement);
Assert.assertEquals(newElement.getLocalName(), "local");
Assert.assertEquals(newElement.getNamespaceURI(), "ns");
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/ElementMatcherTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/ElementMatcherTest.java
index 2345209..06c6587 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/ElementMatcherTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/ElementMatcherTest.java
@@ -12,18 +12,18 @@ public class ElementMatcherTest extends BaseDOMTest {
private final Document doc;
protected ElementMatcherTest() throws Exception {
- super(ElementMatcher.class);
+ super(SimpleElementMatcher.class);
setUp();
doc = getParserPool().newDocument();
}
@Test
public void matcher() throws Exception {
- final var matcher = new ElementMatcher(new QName("ns", "xxx"));
- Assert.assertTrue(matcher.test(doc.createElementNS("ns", "xxx")));
- Assert.assertFalse(matcher.test(doc.createElementNS("ns", "yyy")));
- Assert.assertFalse(matcher.test(doc.createElementNS("ns2", "xxx")));
- Assert.assertFalse(matcher.test(doc.createElementNS("ns2", "yyy")));
+ final ElementMatcher matcher = new SimpleElementMatcher(new QName("ns", "xxx"));
+ Assert.assertTrue(matcher.match(doc.createElementNS("ns", "xxx")));
+ Assert.assertFalse(matcher.match(doc.createElementNS("ns", "yyy")));
+ Assert.assertFalse(matcher.match(doc.createElementNS("ns2", "xxx")));
+ Assert.assertFalse(matcher.match(doc.createElementNS("ns2", "yyy")));
}
}
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMakerTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMakerTest.java
index 294f6b1..edcd85c 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMakerTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMakerTest.java
@@ -27,7 +27,7 @@ public class AttributeElementMakerTest extends BaseDOMTest {
final Element root = doc.createElementNS("ns", "root");
assert root != null;
final Container rootContainer = new Container(root);
- final Element newElement = maker.apply(rootContainer);
+ final Element newElement = maker.make(rootContainer);
Assert.assertNotNull(newElement);
Assert.assertEquals(newElement.getLocalName(), "Attribute");
Assert.assertEquals(newElement.getNamespaceURI(), SAMLSupport.SAML_NS);
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMatcherTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMatcherTest.java
index ce3abf5..0856dfc 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMatcherTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMatcherTest.java
@@ -31,13 +31,13 @@ public class AttributeElementMatcherTest extends BaseDOMTest {
final var matcher1 = new AttributeElementMatcher("name", "name-format");
attr.setAttribute("Name", "name");
attr.setAttribute("NameFormat", "name-format");
- Assert.assertTrue(matcher1.test(attr));
+ Assert.assertTrue(matcher1.match(attr));
final var matcher2 = new AttributeElementMatcher("name2", "name-format");
- Assert.assertFalse(matcher2.test(attr));
+ Assert.assertFalse(matcher2.match(attr));
final var matcher3 = new AttributeElementMatcher("name", "name-format2");
- Assert.assertFalse(matcher3.test(attr));
+ Assert.assertFalse(matcher3.match(attr));
}
@Test
@@ -45,10 +45,10 @@ public class AttributeElementMatcherTest extends BaseDOMTest {
attr.setAttribute("Name", "name");
final var matcher1 = new AttributeElementMatcher("name", SAMLSupport.ATTRNAME_FORMAT_UNSPECIFIED);
- Assert.assertTrue(matcher1.test(attr));
+ Assert.assertTrue(matcher1.match(attr));
final var matcher2 = new AttributeElementMatcher("name2", SAMLSupport.ATTRNAME_FORMAT_UNSPECIFIED);
- Assert.assertFalse(matcher2.test(attr));
+ Assert.assertFalse(matcher2.match(attr));
}
}
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMakerTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMakerTest.java
index 5e79b5a..2c8b497 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMakerTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMakerTest.java
@@ -24,7 +24,7 @@ public class AttributeValueElementMakerTest extends BaseDOMTest {
final var maker = new AttributeValueElementMaker("value text");
final Element root = doc.createElementNS("ns", "root");
final Container rootContainer = new Container(root);
- final Element newElement = maker.apply(rootContainer);
+ final Element newElement = maker.make(rootContainer);
Assert.assertNotNull(newElement);
Assert.assertEquals(newElement.getLocalName(), "AttributeValue");
Assert.assertEquals(newElement.getNamespaceURI(), SAMLSupport.SAML_NS);
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMatcherTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMatcherTest.java
index 13cceb2..08f5fde 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMatcherTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeValueElementMatcherTest.java
@@ -1,6 +1,8 @@
package net.shibboleth.metadata.dom.saml;
+import javax.annotation.Nonnull;
+
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -12,7 +14,7 @@ import net.shibboleth.shared.xml.ElementSupport;
public class AttributeValueElementMatcherTest extends BaseDOMTest {
- private final Document doc;
+ private final @Nonnull Document doc;
private Element value;
protected AttributeValueElementMatcherTest() throws Exception {
@@ -31,18 +33,18 @@ public class AttributeValueElementMatcherTest extends BaseDOMTest {
final var matcher1 = new AttributeValueElementMatcher("value");
value.setTextContent("value");
- Assert.assertTrue(matcher1.test(value));
+ Assert.assertTrue(matcher1.match(value));
value.setTextContent("other");
- Assert.assertFalse(matcher1.test(value));
+ Assert.assertFalse(matcher1.match(value));
final var matcher2 = new AttributeValueElementMatcher("other");
value.setTextContent("value");
- Assert.assertFalse(matcher2.test(value));
+ Assert.assertFalse(matcher2.match(value));
value.setTextContent("other");
- Assert.assertTrue(matcher2.test(value));
+ Assert.assertTrue(matcher2.match(value));
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list