Author: veithen
Date: Fri Sep 25 19:13:35 2015
New Revision: 1705341

URL: http://svn.apache.org/viewvc?rev=1705341&view=rev
Log:
Eliminate duplicate code.

Added:
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Categorizable.java
   (with props)
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategorizableMixin.aj
   (with props)
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMList.java
      - copied, changed from r1705175, 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMList.java
Removed:
    
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMList.java
Modified:
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaCategories.java
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElement.java
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaEntry.java
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaSource.java
    
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java
    
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMElement.java
    
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMEntry.java
    
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java
    
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMSource.java
    
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMHelper.java

Modified: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaCategories.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaCategories.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaCategories.java
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaCategories.java
 Fri Sep 25 19:13:35 2015
@@ -20,6 +20,6 @@ package org.apache.axiom.fom;
 
 import org.apache.abdera.model.Categories;
 
-public interface AbderaCategories extends Categories, AbderaExtensibleElement, 
HrefAttributeSupport {
+public interface AbderaCategories extends Categories, AbderaExtensibleElement, 
HrefAttributeSupport, Categorizable {
 
 }

Modified: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElement.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElement.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElement.java
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElement.java
 Fri Sep 25 19:13:35 2015
@@ -18,9 +18,13 @@
  */
 package org.apache.axiom.fom;
 
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
 import org.apache.abdera.model.Element;
 import org.apache.axiom.core.CoreNSAwareElement;
 
 public interface AbderaElement extends Element, AbderaChildNode, 
CoreNSAwareElement {
-
+    <E extends Element> List<E> _getChildrenAsSet(QName qname);
 }

Modified: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaEntry.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaEntry.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaEntry.java
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaEntry.java
 Fri Sep 25 19:13:35 2015
@@ -20,6 +20,6 @@ package org.apache.axiom.fom;
 
 import org.apache.abdera.model.Entry;
 
-public interface AbderaEntry extends Entry, AbderaExtensibleElement {
+public interface AbderaEntry extends Entry, AbderaExtensibleElement, 
Categorizable {
 
 }

Modified: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaSource.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaSource.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaSource.java
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaSource.java
 Fri Sep 25 19:13:35 2015
@@ -20,6 +20,6 @@ package org.apache.axiom.fom;
 
 import org.apache.abdera.model.Source;
 
-public interface AbderaSource extends Source, AbderaExtensibleElement {
+public interface AbderaSource extends Source, AbderaExtensibleElement, 
Categorizable {
 
 }

Added: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Categorizable.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Categorizable.java?rev=1705341&view=auto
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Categorizable.java
 (added)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Categorizable.java
 Fri Sep 25 19:13:35 2015
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.fom;
+
+public interface Categorizable extends AbderaElement {
+
+}

Propchange: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Categorizable.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategorizableMixin.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategorizableMixin.aj?rev=1705341&view=auto
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategorizableMixin.aj
 (added)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategorizableMixin.aj
 Fri Sep 25 19:13:35 2015
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.fom;
+
+import java.util.List;
+
+import org.apache.abdera.model.Category;
+import org.apache.abdera.util.Constants;
+import org.apache.axiom.core.Axis;
+import org.apache.axiom.core.ElementMatcher;
+
+// TODO: also handle addCategory(Category) here
+public aspect CategorizableMixin {
+    private static final ElementMatcher<AbderaCategory> CATEGORY_BY_SCHEME = 
new ElementMatcher<AbderaCategory>() {
+        public boolean matches(AbderaCategory element, String namespaceURI, 
String name) {
+            String scheme = element.getAttributeValue(Constants.SCHEME);
+            return scheme != null && scheme.equals(name);
+        }
+    };
+
+    public final Category Categorizable.addCategory(String term) {
+        Category category = getFactory().newCategory(this);
+        category.setTerm(term);
+        return category;
+    }
+
+    public final Category Categorizable.addCategory(String scheme, String 
term, String label) {
+        Category category = getFactory().newCategory(this);
+        category.setTerm(term);
+        category.setScheme(scheme);
+        category.setLabel(label);
+        return category;
+    }
+
+    public final List<Category> Categorizable.getCategories() {
+        return _getChildrenAsSet(Constants.CATEGORY);
+    }
+
+    public final List<Category> Categorizable.getCategories(String scheme) {
+        // TODO: we should probably set detachPolicy to null
+        return new FOMList<Category>(coreGetElements(
+                Axis.CHILDREN, AbderaCategory.class, CATEGORY_BY_SCHEME, null, 
scheme,
+                FOMExceptionTranslator.INSTANCE, Policies.DETACH_POLICY));
+    }
+}

Propchange: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategorizableMixin.aj
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMList.java
 (from r1705175, 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMList.java)
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMList.java?p2=webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMList.java&p1=webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMList.java&r1=1705175&r2=1705341&rev=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMList.java
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMList.java
 Fri Sep 25 19:13:35 2015
@@ -15,7 +15,7 @@
  * copyright in this work, please see the NOTICE file in the top level
  * directory of this distribution.
  */
-package org.apache.abdera.parser.stax.util;
+package org.apache.axiom.fom;
 
 import java.util.ArrayList;
 import java.util.Collection;

Modified: 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java
 (original)
+++ 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java
 Fri Sep 25 19:13:35 2015
@@ -23,7 +23,6 @@ import java.util.List;
 import org.apache.abdera.i18n.iri.IRI;
 import org.apache.abdera.model.Categories;
 import org.apache.abdera.model.Category;
-import org.apache.abdera.parser.stax.util.FOMHelper;
 import org.apache.axiom.fom.AbderaCategories;
 import org.apache.axiom.fom.IRIUtil;
 import org.apache.axiom.om.OMElement;
@@ -34,29 +33,6 @@ public class FOMCategories extends FOMEx
         return this;
     }
 
-    public Category addCategory(String term) {
-        Category category = getFactory().newCategory(this);
-        category.setTerm(term);
-        return category;
-    }
-
-    public Category addCategory(String scheme, String term, String label) {
-        Category category = getFactory().newCategory(this);
-        category.setTerm(term);
-        category.setScheme(scheme);
-        category.setLabel(label);
-        return category;
-
-    }
-
-    public List<Category> getCategories() {
-        return _getChildrenAsSet(CATEGORY);
-    }
-
-    public List<Category> getCategories(String scheme) {
-        return FOMHelper.getCategories(this, scheme);
-    }
-
     private List<Category> copyCategoriesWithScheme(List<Category> cats) {
         List<Category> newcats = new ArrayList<Category>();
         IRI scheme = getScheme();

Modified: 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMElement.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMElement.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMElement.java
 (original)
+++ 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMElement.java
 Fri Sep 25 19:13:35 2015
@@ -52,7 +52,6 @@ import org.apache.abdera.parser.ParseExc
 import org.apache.abdera.parser.Parser;
 import org.apache.abdera.parser.ParserOptions;
 import org.apache.abdera.parser.stax.util.FOMElementIteratorWrapper;
-import org.apache.abdera.parser.stax.util.FOMList;
 import org.apache.abdera.util.Constants;
 import org.apache.abdera.util.MimeTypeHelper;
 import org.apache.abdera.writer.Writer;
@@ -60,6 +59,7 @@ import org.apache.abdera.writer.WriterOp
 import org.apache.axiom.core.CoreChildNode;
 import org.apache.axiom.core.CoreNSAwareElement;
 import org.apache.axiom.fom.AbderaElement;
+import org.apache.axiom.fom.FOMList;
 import org.apache.axiom.fom.IRIUtil;
 import org.apache.axiom.fom.Policies;
 import org.apache.axiom.om.OMAttribute;
@@ -217,7 +217,7 @@ public class FOMElement extends FOMChild
         return (T)this;
     }
 
-    protected <E extends Element> List<E> _getChildrenAsSet(QName qname) {
+    public <E extends Element> List<E> _getChildrenAsSet(QName qname) {
         FOMFactory factory = (FOMFactory)getFactory();
         return new FOMList(new FOMElementIteratorWrapper(factory, 
getChildrenWithName(qname)));
     }

Modified: 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMEntry.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMEntry.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMEntry.java
 (original)
+++ 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMEntry.java
 Fri Sep 25 19:13:35 2015
@@ -80,14 +80,6 @@ public class FOMEntry extends FOMExtensi
         return person;
     }
 
-    public List<Category> getCategories() {
-        return _getChildrenAsSet(CATEGORY);
-    }
-
-    public List<Category> getCategories(String scheme) {
-        return FOMHelper.getCategories(this, scheme);
-    }
-
     public Entry addCategory(Category category) {
         Element el = category.getParentElement();
         if (el != null && el instanceof Categories) {
@@ -104,20 +96,6 @@ public class FOMEntry extends FOMExtensi
         return this;
     }
 
-    public Category addCategory(String term) {
-        Category category = getFactory().newCategory(this);
-        category.setTerm(term);
-        return category;
-    }
-
-    public Category addCategory(String scheme, String term, String label) {
-        Category category = getFactory().newCategory(this);
-        category.setTerm(term);
-        category.setScheme(scheme);
-        category.setLabel(label);
-        return category;
-    }
-
     public Content getContentElement() {
         return (Content)getFirstChildWithName(CONTENT);
     }

Modified: 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java
 (original)
+++ 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java
 Fri Sep 25 19:13:35 2015
@@ -26,8 +26,8 @@ import org.apache.abdera.model.ElementWr
 import org.apache.abdera.model.ExtensibleElement;
 import org.apache.abdera.parser.stax.util.FOMElementIteratorWrapper;
 import org.apache.abdera.parser.stax.util.FOMExtensionIterator;
-import org.apache.abdera.parser.stax.util.FOMList;
 import org.apache.axiom.fom.AbderaExtensibleElement;
+import org.apache.axiom.fom.FOMList;
 import org.apache.axiom.om.OMElement;
 
 @SuppressWarnings("unchecked")

Modified: 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMSource.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMSource.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMSource.java
 (original)
+++ 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMSource.java
 Fri Sep 25 19:13:35 2015
@@ -71,14 +71,6 @@ public class FOMSource extends FOMExtens
         return person;
     }
 
-    public List<Category> getCategories() {
-        return _getChildrenAsSet(CATEGORY);
-    }
-
-    public List<Category> getCategories(String scheme) {
-        return FOMHelper.getCategories(this, scheme);
-    }
-
     public <T extends Source> T addCategory(Category category) {
         Element el = category.getParentElement();
         if (el != null && el instanceof Categories) {
@@ -95,20 +87,6 @@ public class FOMSource extends FOMExtens
         return (T)this;
     }
 
-    public Category addCategory(String term) {
-        Category category = getFactory().newCategory(this);
-        category.setTerm(term);
-        return category;
-    }
-
-    public Category addCategory(String scheme, String term, String label) {
-        Category category = getFactory().newCategory(this);
-        category.setTerm(term);
-        category.setScheme(scheme);
-        category.setLabel(label);
-        return category;
-    }
-
     public List<Person> getContributors() {
         return _getChildrenAsSet(CONTRIBUTOR);
     }

Modified: 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMHelper.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMHelper.java?rev=1705341&r1=1705340&r2=1705341&view=diff
==============================================================================
--- 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMHelper.java
 (original)
+++ 
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/util/FOMHelper.java
 Fri Sep 25 19:13:35 2015
@@ -21,34 +21,14 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.abdera.model.Category;
 import org.apache.abdera.model.Element;
 import org.apache.abdera.model.Link;
 import org.apache.abdera.util.Constants;
-import org.apache.axiom.core.Axis;
-import org.apache.axiom.core.ElementMatcher;
-import org.apache.axiom.fom.AbderaCategory;
-import org.apache.axiom.fom.AbderaElement;
-import org.apache.axiom.fom.FOMExceptionTranslator;
-import org.apache.axiom.fom.Policies;
+import org.apache.axiom.fom.FOMList;
 import org.apache.axiom.util.UIDGenerator;
 
 @SuppressWarnings("unchecked")
 public class FOMHelper implements Constants {
-    private static final ElementMatcher<AbderaCategory> CATEGORY_BY_SCHEME = 
new ElementMatcher<AbderaCategory>() {
-        public boolean matches(AbderaCategory element, String namespaceURI, 
String name) {
-            String scheme = element.getAttributeValue(SCHEME);
-            return scheme != null && scheme.equals(name);
-        }
-    };
-
-    public static List<Category> getCategories(AbderaElement element, String 
scheme) {
-        // TODO: we should probably set detachPolicy to null
-        return new FOMList<Category>(element.coreGetElements(
-                Axis.CHILDREN, AbderaCategory.class, CATEGORY_BY_SCHEME, null, 
scheme,
-                FOMExceptionTranslator.INSTANCE, Policies.DETACH_POLICY));
-    }
-
     public static List<Link> getLinks(Element element, String rel) {
         Iterator i = new FOMLinkIterator(element, Link.class, REL, rel, 
Link.REL_ALTERNATE);
         return new FOMList<Link>(i);


Reply via email to