You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2007/09/12 22:59:19 UTC
svn commit: r575075 - in
/roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol:
Collection.java RollerAtomHandler.java
Author: snoopdave
Date: Wed Sep 12 13:59:19 2007
New Revision: 575075
URL: http://svn.apache.org/viewvc?rev=575075&view=rev
Log:
Fix for http://opensource.atlassian.com/projects/roller/browse/ROL-1533
- Now uses multiple <accept> elements for resource collections
Modified:
roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/Collection.java
roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java
Modified: roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/Collection.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/Collection.java?rev=575075&r1=575074&r2=575075&view=diff
==============================================================================
--- roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/Collection.java (original)
+++ roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/Collection.java Wed Sep 12 13:59:19 2007
@@ -43,6 +43,7 @@
private String listTemplate = null;
private String href = null;
private List categories = new ArrayList(); // of Categories objects
+ private List accepts = new ArrayList(); // of Strings
/**
* Collection MUST have title and href.
@@ -59,12 +60,16 @@
/**
* Comma separated list of media-ranges accepted by collection.
*/
- public String getAccept() {
- return accept;
+ public List getAccepts() {
+ return accepts;
}
- public void setAccept(String accept) {
- this.accept = accept;
+ public void addAccept(String accept) {
+ this.accepts.add(accept);
+ }
+
+ public void setAccepts(List accepts) {
+ this.accepts = accepts;
}
/** The URI of the collection */
@@ -116,7 +121,7 @@
} else if (entry && entryType.equals(accept)) {
return true;
} else {
- String[] rules = accept.split(",");
+ String[] rules = (String[])accepts.toArray(new String[accepts.size()]);
for (int i=0; i<rules.length; i++) {
String rule = rules[i].trim();
if (rule.equals(ct)) return true;
@@ -168,9 +173,12 @@
element.addContent(catsElem);
}
- Element memberType = new Element("accept", AtomService.ATOM_PROTOCOL);
- memberType.setText(collection.getAccept());
- element.addContent(memberType);
+ for (Iterator it = collection.getAccepts().iterator(); it.hasNext();) {
+ String range = (String)it.next();
+ Element acceptElem = new Element("accept", AtomService.ATOM_PROTOCOL);
+ acceptElem.setText(range);
+ element.addContent(acceptElem);
+ }
return element;
}
@@ -186,9 +194,12 @@
}
Collection collection = new Collection(newTitle, newType, newHref);
- Element memberType = element.getChild("accept", AtomService.ATOM_PROTOCOL);
- if (memberType != null) {
- collection.setAccept(memberType.getText());
+ List acceptElems = element.getChildren("accept", AtomService.ATOM_PROTOCOL);
+ if (acceptElems != null && acceptElems.size() > 0) {
+ for (Iterator it = acceptElems.iterator(); it.hasNext();) {
+ Element acceptElem = (Element)it.next();
+ collection.addAccept(acceptElem.getTextTrim());
+ }
}
// Loop to parse <app:categories> element to Categories objects
Modified: roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java?rev=575075&r1=575074&r2=575075&view=diff
==============================================================================
--- roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java (original)
+++ roller/branches/roller_3.1/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java Wed Sep 12 13:59:19 2007
@@ -69,7 +69,7 @@
import org.apache.roller.pojos.WeblogEntryTagData;
import org.apache.roller.pojos.WeblogResource;
import org.apache.roller.util.URLUtilities;
-import org.apache.roller.util.cache.CacheManager;
+import org.apache.roller.util.cache.CacheManager;
/**
* Roller's Atom Protocol implementation.
@@ -177,9 +177,9 @@
} catch (RollerException re) {
throw new AtomException("ERROR: getting user's weblogs", re);
}
- String accept = null;
+ List uploadAccepts = new ArrayList();
try {
- accept = getAcceptedContentTypeRange();
+ uploadAccepts = getAcceptedContentTypeRange();
} catch (RollerException re) {
throw new AtomException("ERROR: getting site's accept range", re);
}
@@ -193,7 +193,7 @@
Collection entryCol = new Collection("Weblog Entries", "text",
URLUtilities.getAtomProtocolURL(true)+"/"+handle+"/entries");
- entryCol.setAccept("application/atom+xml;type=entry");
+ entryCol.addAccept("application/atom+xml;type=entry");
entryCol.setHref(URLUtilities.getAtomProtocolURL(true)+"/"+handle+"/entries");
try {
// Add fixed categories using scheme that points to
@@ -224,7 +224,7 @@
Collection uploadCol = new Collection("Media Files", "text",
URLUtilities.getAtomProtocolURL(true)+"/"+handle+"/resources/");
- uploadCol.setAccept(accept);
+ uploadCol.setAccepts(uploadAccepts);
uploadCol.setHref(URLUtilities.getAtomProtocolURL(true)+"/"+handle+"/resources");
workspace.addCollection(uploadCol);
}
@@ -236,20 +236,17 @@
* Build accept range by taking things that appear to be content-type rules
* from site's file-upload allowed extensions.
*/
- private String getAcceptedContentTypeRange() throws RollerException {
- StringBuffer sb = new StringBuffer();
+ private List getAcceptedContentTypeRange() throws RollerException {
+ List accepts = new ArrayList();
Roller roller = RollerFactory.getRoller();
Map config = roller.getPropertiesManager().getProperties();
String allows = ((RollerPropertyData)config.get("uploads.types.allowed")).getValue();
String[] rules = StringUtils.split(StringUtils.deleteWhitespace(allows), ",");
for (int i=0; i<rules.length; i++) {
if (rules[i].indexOf("/") == -1) continue;
- if (sb.length() != 0) {
- sb.append(",");
- }
- sb.append(rules[i]);
+ accepts.add(rules[i]);
}
- return sb.toString();
+ return accepts;
}
//----------------------------------------------------------------- collections
@@ -553,6 +550,7 @@
if (canEdit(rollerEntry)) {
WeblogManager mgr = mRoller.getWeblogManager();
copyToRollerEntry(entry, rollerEntry);
+ rollerEntry.setUpdateTime(new Timestamp(new Date().getTime()));
mgr.saveWeblogEntry(rollerEntry);
mRoller.flush();