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);