You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2006/08/30 02:12:53 UTC
svn commit: r438306 - in /incubator/abdera/java/trunk:
core/src/main/java/org/apache/abdera/factory/
core/src/main/java/org/apache/abdera/model/
core/src/main/java/org/apache/abdera/util/
parser/src/main/java/org/apache/abdera/parser/stax/
Author: jmsnell
Date: Tue Aug 29 17:12:52 2006
New Revision: 438306
URL: http://svn.apache.org/viewvc?rev=438306&view=rev
Log:
The Atompub working group just completed another consensus call round with a number
of changes.
* A new app:categories element has been introduced to provide a listing of
atom:categories available.
- Created new Categories interface and FOMCategories impl
- Added methods to Factory and FOMFactory for creating Categories/FOMCategories
- Added methods to Collection and FOMCollection for supporting the new element
* pub:control and pub:draft now use the main APP XML namespace
More coming.
Added:
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Categories.java
incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java
Modified:
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractXPath.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/Constants.java
incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCollection.java
incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java?rev=438306&r1=438305&r2=438306&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java Tue Aug 29 17:12:52 2006
@@ -21,6 +21,7 @@
import javax.xml.namespace.QName;
import org.apache.abdera.model.Base;
+import org.apache.abdera.model.Categories;
import org.apache.abdera.model.Category;
import org.apache.abdera.model.Collection;
import org.apache.abdera.model.Content;
@@ -441,4 +442,13 @@
*/
void registerExtension(ExtensionFactory extensionFactory);
+ /**
+ * Create a new Categories element
+ */
+ Categories newCategories();
+
+ /**
+ * Create a new Categories element as a child of the given Element
+ */
+ Categories newCategories(Element parent);
}
Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Categories.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Categories.java?rev=438306&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Categories.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Categories.java Tue Aug 29 17:12:52 2006
@@ -0,0 +1,95 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. 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. For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.model;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.List;
+
+public interface Categories
+ extends ExtensibleElement {
+
+ /**
+ * Returns the value of the href attribute
+ * @throws URISyntaxException
+ */
+ URI getHref() throws URISyntaxException;
+
+ /**
+ * Returns the fully resolved href
+ * @throws URISyntaxException
+ */
+ URI getResolvedHref() throws URISyntaxException;
+
+ /**
+ * Sets the value of the href attribute
+ * @throws URISyntaxException
+ */
+ void setHref(String href) throws URISyntaxException;
+
+ /**
+ * Specifies whether or not this is a fixed listing of categories
+ */
+ boolean isFixed();
+
+ /**
+ * Sets whether or not this is a fixed listing of categories
+ */
+ void setFixed(boolean fixed);
+
+ /**
+ * Returns the common scheme for this listing of categories
+ * @throws URISyntaxException
+ */
+ URI getScheme() throws URISyntaxException;
+
+ /**
+ * Sets the common scheme for this listing of categories
+ * @throws URISyntaxException
+ */
+ void setScheme(String scheme) throws URISyntaxException;
+
+ /**
+ * Lists the complete set of categories listed for the entry
+ */
+ List<Category> getCategories();
+
+ /**
+ * Lists the complete set of categories using the specified scheme
+ * @throws URISyntaxException
+ */
+ List<Category> getCategories(String scheme) throws URISyntaxException;
+
+ /**
+ * Adds an individual category to the entry
+ */
+ void addCategory(Category category);
+
+ /**
+ * Adds a category to the feed
+ */
+ Category addCategory(String term);
+
+ /**
+ * Adds a category to the feed
+ * @throws URISyntaxException
+ */
+ Category addCategory(String scheme, String term, String label) throws URISyntaxException;
+
+}
+
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java?rev=438306&r1=438305&r2=438306&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java Tue Aug 29 17:12:52 2006
@@ -19,6 +19,7 @@
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.List;
import javax.activation.MimeType;
import javax.activation.MimeTypeParseException;
@@ -96,4 +97,13 @@
* Returns true if the collection accepts the specified media type
*/
boolean accepts(MimeType mediaType);
+
+ List<Categories> getCategories();
+
+ Categories addCategories();
+
+ void addCategories(Categories categories);
+
+ Categories addCategories(List<Category> categories, boolean fixed, String scheme) throws URISyntaxException;
+
}
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractXPath.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractXPath.java?rev=438306&r1=438305&r2=438306&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractXPath.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractXPath.java Tue Aug 29 17:12:52 2006
@@ -35,7 +35,7 @@
namespaces = new HashMap<String,String>();
namespaces.put("a", Constants.ATOM_NS);
namespaces.put("app", Constants.APP_NS);
- namespaces.put("pub", Constants.CONTROL_NS);
+ //namespaces.put("pub", Constants.CONTROL_NS);
return namespaces;
}
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/Constants.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/Constants.java?rev=438306&r1=438305&r2=438306&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/Constants.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/Constants.java Tue Aug 29 17:12:52 2006
@@ -36,6 +36,7 @@
public static final String ATOM_NS = "http://www.w3.org/2005/Atom";
public static final String APP_NS = "http://purl.org/atom/app#";
+ /** @deprecated **/
public static final String CONTROL_NS = "http://example.net/appns/";
public static final String XML_NS = "http://www.w3.org/XML/1998/namespace";
public static final String XHTML_NS = "http://www.w3.org/1999/xhtml";
@@ -82,10 +83,13 @@
public static final String LN_COLLECTION = "collection";
public static final String LN_CONTROL = "control";
public static final String LN_DRAFT = "draft";
+ public static final String LN_CATEGORIES = "categories";
+ public static final String LN_FIXED = "fixed";
public static final QName DIV = new QName(XHTML_NS, LN_DIV, "");
- public static final QName CONTROL = new QName(CONTROL_NS, LN_CONTROL, CONTROL_PREFIX);
- public static final QName DRAFT = new QName(CONTROL_NS, LN_DRAFT, CONTROL_PREFIX);
+ public static final QName CONTROL = new QName(APP_NS, LN_CONTROL, "app");
+ public static final QName DRAFT = new QName(APP_NS, LN_DRAFT, "app");
+ public static final QName CATEGORIES = new QName(APP_NS, LN_CATEGORIES, "app");
public static final QName FEED = new QName(ATOM_NS, LN_FEED, PREFIX);
public static final QName SERVICE = new QName(APP_NS, LN_SERVICE, "app");
public static final QName AUTHOR = new QName(ATOM_NS, LN_AUTHOR, PREFIX);
@@ -107,6 +111,7 @@
public static final QName ENTRY = new QName(ATOM_NS, LN_ENTRY, PREFIX);
public static final QName TERM = new QName(LN_TERM);
public static final QName SCHEME = new QName(LN_SCHEME);
+ public static final QName FIXED = new QName(LN_FIXED);
public static final QName LABEL = new QName(LN_LABEL);
public static final QName ATITLE = new QName(LN_TITLE);
public static final QName HREF = new QName(LN_HREF);
Added: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java?rev=438306&view=auto
==============================================================================
--- incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java (added)
+++ incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCategories.java Tue Aug 29 17:12:52 2006
@@ -0,0 +1,167 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. 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. For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.parser.stax;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.abdera.model.Categories;
+import org.apache.abdera.model.Category;
+import org.apache.abdera.parser.stax.util.FOMHelper;
+import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMXMLParserWrapper;
+
+public class FOMCategories
+ extends FOMExtensibleElement
+ implements Categories {
+
+ private static final long serialVersionUID = 5480273546375102411L;
+
+ public FOMCategories() {
+ super(CATEGORIES, new FOMDocument(), new FOMFactory());
+ init();
+ }
+
+ public FOMCategories(
+ String name,
+ OMNamespace namespace,
+ OMContainer parent,
+ OMFactory factory)
+ throws OMException {
+ super(name, namespace, parent, factory);
+ init();
+ }
+
+ public FOMCategories(
+ QName qname,
+ OMContainer parent,
+ OMFactory factory) {
+ super(qname, parent, factory);
+ init();
+ }
+
+ public FOMCategories(
+ QName qname,
+ OMContainer parent,
+ OMFactory factory,
+ OMXMLParserWrapper builder) {
+ super(qname, parent, factory, builder);
+ }
+
+ public FOMCategories(
+ OMContainer parent,
+ OMFactory factory)
+ throws OMException {
+ super(CATEGORIES, parent, factory);
+ init();
+ }
+
+ public FOMCategories(
+ OMContainer parent,
+ OMFactory factory,
+ OMXMLParserWrapper builder)
+ throws OMException {
+ super(CATEGORIES, parent, factory, builder);
+ }
+
+ private void init() {
+ this.declareNamespace(ATOM_NS, "atom");
+ }
+
+ public void addCategory(Category category) {
+ addChild((OMElement)category);
+ }
+
+ public Category addCategory(String term) {
+ FOMFactory factory = (FOMFactory) this.factory;
+ Category category = factory.newCategory(this);
+ category.setTerm(term);
+ return category;
+ }
+
+ public Category addCategory(
+ String scheme,
+ String term,
+ String label)
+ throws URISyntaxException {
+ FOMFactory factory = (FOMFactory) this.factory;
+ Category category = factory.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) throws URISyntaxException {
+ return FOMHelper.getCategories(this, scheme);
+ }
+
+ public java.net.URI getScheme() throws URISyntaxException {
+ String value = getAttributeValue(SCHEME);
+ return (value != null) ? new URI(value) : null;
+ }
+
+ public boolean isFixed() {
+ String value = getAttributeValue(FIXED);
+ return (value != null && value.equals(YES));
+ }
+
+ public void setFixed(boolean fixed) {
+ if (fixed && !isFixed())
+ setAttributeValue(FIXED, YES);
+ else if (!fixed && isFixed())
+ removeAttribute(FIXED);
+ }
+
+ public void setScheme(String scheme) throws URISyntaxException {
+ if (scheme != null)
+ setAttributeValue(SCHEME, new URI(scheme).toString());
+ else
+ removeAttribute(SCHEME);
+ }
+
+ public URI getHref() throws URISyntaxException {
+ return _getUriValue(getAttributeValue(HREF));
+ }
+
+ public URI getResolvedHref() throws URISyntaxException {
+ return _resolve(getResolvedBaseUri(), getHref());
+ }
+
+ public void setHref(String href) throws URISyntaxException {
+ if (href != null)
+ setAttributeValue(HREF, (new URI(href)).toString());
+ else
+ removeAttribute(HREF);
+ }
+
+
+
+}
Modified: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCollection.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCollection.java?rev=438306&r1=438305&r2=438306&view=diff
==============================================================================
--- incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCollection.java (original)
+++ incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCollection.java Tue Aug 29 17:12:52 2006
@@ -19,14 +19,18 @@
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.List;
import javax.activation.MimeType;
import javax.xml.namespace.QName;
+import org.apache.abdera.model.Categories;
+import org.apache.abdera.model.Category;
import org.apache.abdera.model.Collection;
import org.apache.abdera.util.Constants;
import org.apache.abdera.util.MimeTypeHelper;
import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
@@ -149,6 +153,35 @@
public boolean accepts(MimeType mediaType) {
return accepts(mediaType.toString());
+ }
+
+ public Categories addCategories() {
+ return ((FOMFactory)factory).newCategories(this);
+ }
+
+ public void addCategories(Categories categories) {
+ addChild((OMElement)categories);
+ }
+
+ public Categories addCategories(
+ List<Category> categories,
+ boolean fixed,
+ String scheme)
+ throws URISyntaxException {
+ Categories cats = ((FOMFactory)factory).newCategories();
+ cats.setFixed(fixed);
+ if (scheme != null) cats.setScheme(scheme);
+ if (categories != null) {
+ for (Category category : categories) {
+ cats.addCategory(category);
+ }
+ }
+ addCategories(cats);
+ return cats;
+ }
+
+ public List<Categories> getCategories() {
+ return _getChildrenAsSet(CATEGORIES);
}
}
Modified: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java?rev=438306&r1=438305&r2=438306&view=diff
==============================================================================
--- incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java (original)
+++ incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java Tue Aug 29 17:12:52 2006
@@ -31,6 +31,7 @@
import org.apache.abdera.factory.ExtensionFactory;
import org.apache.abdera.factory.Factory;
import org.apache.abdera.model.Base;
+import org.apache.abdera.model.Categories;
import org.apache.abdera.model.Category;
import org.apache.abdera.model.Collection;
import org.apache.abdera.model.Content;
@@ -699,6 +700,8 @@
element = new FOMControl(qname.getLocalPart(), namespace, parent, factory);
} else if (DIV.equals(qname)) {
element = new FOMDiv(qname.getLocalPart(), namespace, parent, factory);
+ } else if (CATEGORIES.equals(qname)) {
+ element = new FOMCategories(qname.getLocalPart(), namespace, parent, factory);
} else if (parent instanceof ExtensibleElement ||
parent instanceof Document) {
element = (OMElement) newExtensionElement(qname, parent);
@@ -769,6 +772,8 @@
element = (OMElement) newControl(qname, parent, builder);
} else if (DIV.equals(qname)) {
element = (OMElement) newDiv(qname, parent, builder);
+ } else if (CATEGORIES.equals(qname)) {
+ element = (OMElement) newCategories(qname, parent, builder);
} else if (parent instanceof ExtensibleElement || parent instanceof Document) {
element = (OMElement) newExtensionElement(qname, parent, builder);
}
@@ -849,5 +854,20 @@
}
return null;
}
-
+
+ public Categories newCategories() {
+ return newCategories(null);
+ }
+
+ public Categories newCategories(Element parent) {
+ return new FOMCategories((OMContainer)parent, this);
+ }
+
+ public Categories newCategories(
+ QName qname,
+ OMContainer parent,
+ OMXMLParserWrapper parserWrapper) {
+ return new FOMCategories(qname,parent, this, parserWrapper);
+ }
+
}
Re: svn commit: r438306 - in /incubator/abdera/java/trunk: core/src/main/java/org/apache/abdera/factory/ core/src/main/java/org/apache/abdera/model/ core/src/main/java/org/apache/abdera/util/ parser/src/main/java/org/apache/abdera/parser/stax/
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On 8/29/06, jmsnell@apache.org <jm...@apache.org> wrote:
> @@ -35,7 +35,7 @@
> namespaces = new HashMap<String,String>();
> namespaces.put("a", Constants.ATOM_NS);
> namespaces.put("app", Constants.APP_NS);
> - namespaces.put("pub", Constants.CONTROL_NS);
> + //namespaces.put("pub", Constants.CONTROL_NS);
> return namespaces;
> }
Any particular reason to comment that out instead of just deleting it?
Thanks to the magic of version control, you can always get it back if
you need it later ;-)
-garrett