[java-metadata-aggregator COMMIT] in /trunk/aggregator-pipeline/src: main/java/net/shibboleth/metadata/ItemCollection...

noreply at shibboleth.net noreply at shibboleth.net
Wed Mar 25 07:11:06 EDT 2015


Author: iay
Date: Wed Mar 25 07:11:06 2015
New Revision: 400

URL: http://svn.shibboleth.net/view/java-metadata-aggregator?rev=400&view=rev
Log:
MDA-134: refactor approach to serialization

Introduce ItemCollectionSerializer interface, enhance DOMItemSerializer to support it for backwards compatibility.
SerializationStage now takes an ItemCollectionSerializer.

Added:
    trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/ItemCollectionSerializer.java   (with props)
    trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/SimpleItemCollectionSerializer.java   (with props)
    trunk/aggregator-pipeline/src/test/java/net/shibboleth/metadata/SimpleItemCollectionSerializerTest.java   (with props)
    trunk/aggregator-pipeline/src/test/java/net/shibboleth/metadata/dom/DOMElementSerializerTest.java   (with props)
    trunk/aggregator-pipeline/src/test/resources/net/shibboleth/metadata/dom/DOMElementSerializer-1.xml
    trunk/aggregator-pipeline/src/test/resources/net/shibboleth/metadata/dom/DOMElementSerializer-2.xml
Modified:
    trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java
    trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SerializationStage.java

Modified: trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java
URL: http://svn.shibboleth.net/view/java-metadata-aggregator/trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java?rev=400&r1=399&r2=400&view=diff
==============================================================================
--- trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java (original)
+++ trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java Wed Mar 25 07:11:06 2015
@@ -18,6 +18,8 @@
 package net.shibboleth.metadata.dom;
 
 import java.io.OutputStream;
+import java.util.Collection;
+import java.util.Iterator;
 
 import javax.annotation.Nonnull;
 import javax.annotation.concurrent.ThreadSafe;
@@ -28,6 +30,7 @@
 import javax.xml.transform.stream.StreamResult;
 
 import net.shibboleth.metadata.Item;
+import net.shibboleth.metadata.ItemCollectionSerializer;
 import net.shibboleth.metadata.ItemSerializer;
 
 import org.slf4j.Logger;
@@ -35,17 +38,21 @@
 import org.w3c.dom.Element;
 
 /**
- * Very simple serializer that serializes the document element of the given {@link Element}-based {@link Item}.
+ * Very simple {@link ItemSerializer} that serializes the document element of the given
+ * {@link Element}-based {@link Item}.
+ * 
+ * When used as an {@link ItemCollectionSerializer}, just serializes the first {@link Item} in the collection.
+ * This will result in well-formed XML, but other items in the collection will simply be ignored.
  */
 @ThreadSafe
-public class DOMElementSerializer implements ItemSerializer<Element> {
+public class DOMElementSerializer implements ItemSerializer<Element>, ItemCollectionSerializer<Element> {
 
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(DOMElementSerializer.class);
 
     /** {@inheritDoc} */
     @Override
-    public void serialize(@Nonnull final Item<Element> item, @Nonnull OutputStream output) {
+    public void serialize(@Nonnull final Item<Element> item, @Nonnull final OutputStream output) {
         if (item == null) {
             return;
         }
@@ -62,4 +69,19 @@
         }
     }
 
-}
+    /** {@inheritDoc} */
+    @Override
+    public void serializeCollection(@Nonnull final Collection<Item<Element>> items,
+            @Nonnull final OutputStream output) {
+        final Iterator<Item<Element>> iter = items.iterator();
+        if (iter.hasNext()) {
+            serialize(iter.next(), output);
+            if (iter.hasNext()) {
+                log.warn("collection contained more than one Item; rest ignored");
+            }
+        } else {
+            log.warn("collection was empty");
+        }
+    }
+
+}

Modified: trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SerializationStage.java
URL: http://svn.shibboleth.net/view/java-metadata-aggregator/trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SerializationStage.java?rev=400&r1=399&r2=400&view=diff
==============================================================================
--- trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SerializationStage.java (original)
+++ trunk/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/SerializationStage.java Wed Mar 25 07:11:06 2015
@@ -28,7 +28,7 @@
 import javax.annotation.concurrent.ThreadSafe;
 
 import net.shibboleth.metadata.Item;
-import net.shibboleth.metadata.ItemSerializer;
+import net.shibboleth.metadata.ItemCollectionSerializer;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;

[... 68 lines stripped ...]


More information about the commits mailing list