Browse Source

fix: xml: FlatAttributes: #getAll

Ranides Atterwim 10 years ago
parent
commit
5c7d1c4668

+ 111 - 111
assira/src/main/java/net/ranides/assira/xml/impl/W3FlatAttributes.java

@@ -1,111 +1,111 @@
-/*
- * @author Ranides Atterwim <ranides@gmail.com>
- * @copyright Ranides Atterwim
- * @license WTFPL
- * @url http://ranides.net/projects/assira
- */
-
-package net.ranides.assira.xml.impl;
-
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.Set;
-import net.ranides.assira.collection.maps.MultiMap;
-import net.ranides.assira.collection.query.CQuery;
-import net.ranides.assira.xml.XMLElement;
-import net.ranides.assira.xml.XMLElements;
-
-/**
- *
- * @author Ranides Atterwim <ranides@gmail.com>
- */
-public class W3FlatAttributes extends CElements {
-    
-    public W3FlatAttributes(CQuery<XMLElement> nodes) {
-        super(nodes);
-    }
-    
-    @Override
-    public CQuery<XMLElement> stream() {
-        return super.stream().unfold(n -> n.attrs().stream());
-    }
-
-    @Override
-    public XMLElements attrs() {
-        return EMPTY;
-    }
-
-    @Override
-    public XMLElements attrs(String name) {
-        return EMPTY;
-    }
-    
-    @Override
-    public MultiMap<String, String> map() {
-        return new AttrMap();
-    }
-
-    private final class AttrMap extends AbstractMap<String, String> implements MultiMap<String, String> {
-
-        @Override
-        public Set<Entry<String, String>> entrySet() {
-            return new AttrSet();
-        }
-
-        @Override
-        public Collection<String> getAll(Object key) {
-            return W3FlatAttributes.this.stream().filter(n -> n.name().equals(key)).map(n->n.content()).list();
-        }
-
-        @Override
-        public String put(String key, String value) {
-            W3FlatAttributes.super.stream().each(node -> {
-                node.attrs().append(node.document().attr(key).content(value));
-            });
-            return null;
-            
-        }
-        
-    }
-    
-    private final class AttrSet extends AbstractSet<Entry<String,String>> {
-        @Override
-        public Iterator<Entry<String, String>> iterator() {
-            return W3FlatAttributes.this.stream().<Entry<String,String>>map(n -> new AttrEntry(n)).iterator();
-        }
-        @Override
-        public int size() {
-            return W3FlatAttributes.this.stream().size();
-        }
-    }
-    
-    private static final class AttrEntry implements Entry<String,String> {
-
-        private final XMLElement element;
-
-        public AttrEntry(XMLElement element) {
-            this.element = element;
-        }
-
-        @Override
-        public String getKey() {
-            return element.name();
-        }
-
-        @Override
-        public String getValue() {
-            return element.content();
-        }
-
-        @Override
-        public String setValue(String value) {
-            String prev = element.content();
-            element.content(value);
-            return prev;
-        }
-        
-    }
-}
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+
+package net.ranides.assira.xml.impl;
+
+import java.util.AbstractMap;
+import java.util.AbstractSet;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.Set;
+import net.ranides.assira.collection.maps.MultiMap;
+import net.ranides.assira.collection.query.CQuery;
+import net.ranides.assira.xml.XMLElement;
+import net.ranides.assira.xml.XMLElements;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+public class W3FlatAttributes extends CElements {
+    
+    public W3FlatAttributes(CQuery<XMLElement> nodes) {
+        super(nodes);
+    }
+    
+    @Override
+    public CQuery<XMLElement> stream() {
+        return super.stream().unfold(n -> n.attrs().stream());
+    }
+
+    @Override
+    public XMLElements attrs() {
+        return EMPTY;
+    }
+
+    @Override
+    public XMLElements attrs(String name) {
+        return EMPTY;
+    }
+    
+    @Override
+    public MultiMap<String, String> map() {
+        return new AttrMap();
+    }
+
+    private final class AttrMap extends AbstractMap<String, String> implements MultiMap<String, String> {
+
+        @Override
+        public Set<Entry<String, String>> entrySet() {
+            return new AttrSet();
+        }
+
+        @Override
+        public Collection<String> getAll(Object key) {
+            return W3FlatAttributes.this.stream().filter(n -> n.name().equals(key)).map(n->n.content()).distinct().list();
+        }
+
+        @Override
+        public String put(String key, String value) {
+            W3FlatAttributes.super.stream().each(node -> {
+                node.attrs().append(node.document().attr(key).content(value));
+            });
+            return null;
+            
+        }
+        
+    }
+    
+    private final class AttrSet extends AbstractSet<Entry<String,String>> {
+        @Override
+        public Iterator<Entry<String, String>> iterator() {
+            return W3FlatAttributes.this.stream().<Entry<String,String>>map(n -> new AttrEntry(n)).iterator();
+        }
+        @Override
+        public int size() {
+            return W3FlatAttributes.this.stream().size();
+        }
+    }
+    
+    private static final class AttrEntry implements Entry<String,String> {
+
+        private final XMLElement element;
+
+        public AttrEntry(XMLElement element) {
+            this.element = element;
+        }
+
+        @Override
+        public String getKey() {
+            return element.name();
+        }
+
+        @Override
+        public String getValue() {
+            return element.content();
+        }
+
+        @Override
+        public String setValue(String value) {
+            String prev = element.content();
+            element.content(value);
+            return prev;
+        }
+        
+    }
+}

+ 2 - 2
assira/src/test/java/net/ranides/assira/reflection/impl/AClassesTest.java

@@ -285,8 +285,8 @@ public class AClassesTest {
             "java.util.ArrayList<java.lang.Float>",
             "java.util.AbstractList<E>"
         );
-        TestReflective.assertEquals(exp1, new AClasses(array).parents());
-        TestReflective.assertEquals(exp2, new AClasses(array).parents().require(DECLARED));
+        TestReflective.assertEquals(exp1, FElements.newClasses(array).parents());
+        TestReflective.assertEquals(exp2, FElements.newClasses(array).parents().require(DECLARED));
     }
     
     @Test