added locale to parser to allow locale dependent date parsing (fixes

rometools/rome-modules#22)
This commit is contained in:
Martin Kurz 2013-10-13 16:14:23 +02:00
parent ed18ac115b
commit c3288555ab
33 changed files with 189 additions and 148 deletions

View file

@ -16,6 +16,8 @@
*/
package com.sun.syndication.io;
import java.util.Locale;
import org.jdom2.Element;
import com.sun.syndication.feed.module.Module;
@ -52,5 +54,5 @@ public interface ModuleParser {
* information.
*
*/
public Module parse(Element element);
public Module parse(Element element, Locale locale);
}

View file

@ -20,6 +20,7 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Reader;
import java.util.Locale;
import org.jdom2.Document;
import org.xml.sax.InputSource;
@ -47,7 +48,7 @@ public class SyndFeedInput {
*
*/
public SyndFeedInput() {
this(false);
this(false, Locale.US);
}
/**
@ -58,8 +59,8 @@ public class SyndFeedInput {
* IMPLEMENTED YET (validation does not happen)
*
*/
public SyndFeedInput(final boolean validate) {
feedInput = new WireFeedInput(validate);
public SyndFeedInput(final boolean validate, final Locale locale) {
feedInput = new WireFeedInput(validate, locale);
}
/**

View file

@ -23,6 +23,7 @@ import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.WeakHashMap;
@ -86,6 +87,7 @@ public class WireFeedInput {
private final boolean validate;
private boolean xmlHealerOn;
private final Locale locale;
/**
* Returns the list of supported input feed types.
@ -106,7 +108,7 @@ public class WireFeedInput {
*
*/
public WireFeedInput() {
this(false);
this(false, Locale.US);
}
/**
@ -117,9 +119,10 @@ public class WireFeedInput {
* IMPLEMENTED YET (validation does not happen)
*
*/
public WireFeedInput(final boolean validate) {
public WireFeedInput(final boolean validate, final Locale locale) {
this.validate = false; // TODO FIX THIS THINGY
xmlHealerOn = true;
this.locale = locale;
}
/**
@ -297,7 +300,7 @@ public class WireFeedInput {
if (parser == null) {
throw new IllegalArgumentException("Invalid document");
}
return parser.parse(document, validate);
return parser.parse(document, validate, locale);
}
/**

View file

@ -16,6 +16,8 @@
*/
package com.sun.syndication.io;
import java.util.Locale;
import org.jdom2.Document;
import com.sun.syndication.feed.WireFeed;
@ -73,6 +75,6 @@ public interface WireFeedParser {
* XML document (JDOM).
*
*/
public WireFeed parse(Document document, boolean validate) throws IllegalArgumentException, FeedException;
public WireFeed parse(Document document, boolean validate, final Locale locale) throws IllegalArgumentException, FeedException;
}

View file

@ -18,6 +18,7 @@ package com.sun.syndication.io.impl;
import java.io.StringReader;
import java.util.List;
import java.util.Locale;
import org.jdom2.Attribute;
import org.jdom2.Document;
@ -171,7 +172,7 @@ public class Atom03Generator extends BaseWireFeedGenerator {
if (feed.getModified() != null) {
final Element modifiedElement = new Element("modified", getFeedNamespace());
modifiedElement.addContent(DateParser.formatW3CDateTime(feed.getModified()));
modifiedElement.addContent(DateParser.formatW3CDateTime(feed.getModified(), Locale.US));
eFeed.addContent(modifiedElement);
}
}
@ -210,19 +211,19 @@ public class Atom03Generator extends BaseWireFeedGenerator {
if (entry.getModified() != null) {
final Element modifiedElement = new Element("modified", getFeedNamespace());
modifiedElement.addContent(DateParser.formatW3CDateTime(entry.getModified()));
modifiedElement.addContent(DateParser.formatW3CDateTime(entry.getModified(), Locale.US));
eEntry.addContent(modifiedElement);
}
if (entry.getIssued() != null) {
final Element issuedElement = new Element("issued", getFeedNamespace());
issuedElement.addContent(DateParser.formatW3CDateTime(entry.getIssued()));
issuedElement.addContent(DateParser.formatW3CDateTime(entry.getIssued(), Locale.US));
eEntry.addContent(issuedElement);
}
if (entry.getCreated() != null) {
final Element createdElement = new Element("created", getFeedNamespace());
createdElement.addContent(DateParser.formatW3CDateTime(entry.getCreated()));
createdElement.addContent(DateParser.formatW3CDateTime(entry.getCreated(), Locale.US));
eEntry.addContent(createdElement);
}

View file

@ -19,6 +19,7 @@ package com.sun.syndication.io.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import org.jdom2.Document;
import org.jdom2.Element;
@ -61,12 +62,12 @@ public class Atom03Parser extends BaseWireFeedParser {
}
@Override
public WireFeed parse(final Document document, final boolean validate) throws IllegalArgumentException, FeedException {
public WireFeed parse(final Document document, final boolean validate, final Locale locale) throws IllegalArgumentException, FeedException {
if (validate) {
validateFeed(document);
}
final Element rssRoot = document.getRootElement();
return parseFeed(rssRoot);
return parseFeed(rssRoot, locale);
}
protected void validateFeed(final Document document) throws FeedException {
@ -79,7 +80,7 @@ public class Atom03Parser extends BaseWireFeedParser {
// otherwise will have to check the document elements by hand.
}
protected WireFeed parseFeed(final Element eFeed) {
protected WireFeed parseFeed(final Element eFeed, final Locale locale) {
final Feed feed = new Feed(getType());
feed.setStyleSheet(getStyleSheet(eFeed.getDocument()));
@ -142,14 +143,14 @@ public class Atom03Parser extends BaseWireFeedParser {
e = eFeed.getChild("modified", getAtomNamespace());
if (e != null) {
feed.setModified(DateParser.parseDate(e.getText()));
feed.setModified(DateParser.parseDate(e.getText(), locale));
}
feed.setModules(parseFeedModules(eFeed));
feed.setModules(parseFeedModules(eFeed, locale));
eList = eFeed.getChildren("entry", getAtomNamespace());
if (eList.size() > 0) {
feed.setEntries(parseEntries(eList));
feed.setEntries(parseEntries(eList, locale));
}
final List<Element> foreignMarkup = extractForeignMarkup(eFeed, feed, getAtomNamespace());
@ -278,10 +279,10 @@ public class Atom03Parser extends BaseWireFeedParser {
}
// List(Elements) -> List(Entries)
private List<Entry> parseEntries(final List<Element> eEntries) {
private List<Entry> parseEntries(final List<Element> eEntries, final Locale locale) {
final List<Entry> entries = new ArrayList<Entry>();
for (int i = 0; i < eEntries.size(); i++) {
entries.add(parseEntry(eEntries.get(i)));
entries.add(parseEntry(eEntries.get(i), locale));
}
if (entries.size() > 0) {
return entries;
@ -290,7 +291,7 @@ public class Atom03Parser extends BaseWireFeedParser {
}
}
private Entry parseEntry(final Element eEntry) {
private Entry parseEntry(final Element eEntry, final Locale locale) {
final Entry entry = new Entry();
Element e = eEntry.getChild("title", getAtomNamespace());
@ -321,17 +322,17 @@ public class Atom03Parser extends BaseWireFeedParser {
e = eEntry.getChild("modified", getAtomNamespace());
if (e != null) {
entry.setModified(DateParser.parseDate(e.getText()));
entry.setModified(DateParser.parseDate(e.getText(), locale));
}
e = eEntry.getChild("issued", getAtomNamespace());
if (e != null) {
entry.setIssued(DateParser.parseDate(e.getText()));
entry.setIssued(DateParser.parseDate(e.getText(), locale));
}
e = eEntry.getChild("created", getAtomNamespace());
if (e != null) {
entry.setCreated(DateParser.parseDate(e.getText()));
entry.setCreated(DateParser.parseDate(e.getText(), locale));
}
e = eEntry.getChild("summary", getAtomNamespace());
@ -348,7 +349,7 @@ public class Atom03Parser extends BaseWireFeedParser {
entry.setContents(content);
}
entry.setModules(parseItemModules(eEntry));
entry.setModules(parseItemModules(eEntry, locale));
final List<Element> foreignMarkup = extractForeignMarkup(eEntry, entry, getAtomNamespace());
if (foreignMarkup.size() > 0) {

View file

@ -21,6 +21,7 @@ import java.io.StringReader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.jdom2.Attribute;
import org.jdom2.Document;
@ -203,7 +204,7 @@ public class Atom10Generator extends BaseWireFeedGenerator {
if (feed.getUpdated() != null) {
final Element updatedElement = new Element("updated", getFeedNamespace());
updatedElement.addContent(DateParser.formatW3CDateTime(feed.getUpdated()));
updatedElement.addContent(DateParser.formatW3CDateTime(feed.getUpdated(), Locale.US));
eFeed.addContent(updatedElement);
}
}
@ -257,13 +258,13 @@ public class Atom10Generator extends BaseWireFeedGenerator {
if (entry.getUpdated() != null) {
final Element updatedElement = new Element("updated", getFeedNamespace());
updatedElement.addContent(DateParser.formatW3CDateTime(entry.getUpdated()));
updatedElement.addContent(DateParser.formatW3CDateTime(entry.getUpdated(), Locale.US));
eEntry.addContent(updatedElement);
}
if (entry.getPublished() != null) {
final Element publishedElement = new Element("published", getFeedNamespace());
publishedElement.addContent(DateParser.formatW3CDateTime(entry.getPublished()));
publishedElement.addContent(DateParser.formatW3CDateTime(entry.getPublished(), Locale.US));
eEntry.addContent(publishedElement);
}

View file

@ -22,6 +22,7 @@ import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern;
import org.jdom2.Attribute;
@ -85,12 +86,12 @@ public class Atom10Parser extends BaseWireFeedParser {
}
@Override
public WireFeed parse(final Document document, final boolean validate) throws IllegalArgumentException, FeedException {
public WireFeed parse(final Document document, final boolean validate, final Locale locale) throws IllegalArgumentException, FeedException {
if (validate) {
validateFeed(document);
}
final Element rssRoot = document.getRootElement();
return parseFeed(rssRoot);
return parseFeed(rssRoot, locale);
}
protected void validateFeed(final Document document) throws FeedException {
@ -103,7 +104,7 @@ public class Atom10Parser extends BaseWireFeedParser {
// otherwise will have to check the document elements by hand.
}
protected WireFeed parseFeed(final Element eFeed) throws FeedException {
protected WireFeed parseFeed(final Element eFeed, final Locale locale) throws FeedException {
String baseURI = null;
try {
@ -112,7 +113,7 @@ public class Atom10Parser extends BaseWireFeedParser {
throw new FeedException("ERROR while finding base URI of feed", e);
}
final Feed feed = parseFeedMetadata(baseURI, eFeed);
final Feed feed = parseFeedMetadata(baseURI, eFeed, locale);
feed.setStyleSheet(getStyleSheet(eFeed.getDocument()));
final String xmlBase = eFeed.getAttributeValue("base", Namespace.XML_NAMESPACE);
@ -120,11 +121,11 @@ public class Atom10Parser extends BaseWireFeedParser {
feed.setXmlBase(xmlBase);
}
feed.setModules(parseFeedModules(eFeed));
feed.setModules(parseFeedModules(eFeed, locale));
final List<Element> eList = eFeed.getChildren("entry", getAtomNamespace());
if (eList.size() > 0) {
feed.setEntries(parseEntries(feed, baseURI, eList));
feed.setEntries(parseEntries(feed, baseURI, eList, locale));
}
final List<Element> foreignMarkup = extractForeignMarkup(eFeed, feed, getAtomNamespace());
@ -134,7 +135,7 @@ public class Atom10Parser extends BaseWireFeedParser {
return feed;
}
private Feed parseFeedMetadata(final String baseURI, final Element eFeed) {
private Feed parseFeedMetadata(final String baseURI, final Element eFeed, final Locale locale) {
final com.sun.syndication.feed.atom.Feed feed = new com.sun.syndication.feed.atom.Feed(getType());
Element e = eFeed.getChild("title", getAtomNamespace());
@ -154,12 +155,12 @@ public class Atom10Parser extends BaseWireFeedParser {
eList = eFeed.getChildren("author", getAtomNamespace());
if (eList.size() > 0) {
feed.setAuthors(parsePersons(baseURI, eList));
feed.setAuthors(parsePersons(baseURI, eList, locale));
}
eList = eFeed.getChildren("contributor", getAtomNamespace());
if (eList.size() > 0) {
feed.setContributors(parsePersons(baseURI, eList));
feed.setContributors(parsePersons(baseURI, eList, locale));
}
e = eFeed.getChild("subtitle", getAtomNamespace());
@ -207,7 +208,7 @@ public class Atom10Parser extends BaseWireFeedParser {
e = eFeed.getChild("updated", getAtomNamespace());
if (e != null) {
feed.setUpdated(DateParser.parseDate(e.getText()));
feed.setUpdated(DateParser.parseDate(e.getText(), locale));
}
return feed;
@ -281,7 +282,7 @@ public class Atom10Parser extends BaseWireFeedParser {
}
}
private Person parsePerson(final String baseURI, final Element ePerson) {
private Person parsePerson(final String baseURI, final Element ePerson, final Locale locale) {
final Person person = new Person();
Element e = ePerson.getChild("name", getAtomNamespace());
if (e != null) {
@ -298,15 +299,15 @@ public class Atom10Parser extends BaseWireFeedParser {
if (e != null) {
person.setEmail(e.getText());
}
person.setModules(parsePersonModules(ePerson));
person.setModules(parsePersonModules(ePerson, locale));
return person;
}
// List(Elements) -> List(Persons)
private List<SyndPerson> parsePersons(final String baseURI, final List<Element> ePersons) {
private List<SyndPerson> parsePersons(final String baseURI, final List<Element> ePersons, final Locale locale) {
final List<SyndPerson> persons = new ArrayList<SyndPerson>();
for (int i = 0; i < ePersons.size(); i++) {
persons.add(parsePerson(baseURI, ePersons.get(i)));
persons.add(parsePerson(baseURI, ePersons.get(i), locale));
}
if (persons.size() > 0) {
return persons;
@ -355,10 +356,10 @@ public class Atom10Parser extends BaseWireFeedParser {
}
// List(Elements) -> List(Entries)
protected List<Entry> parseEntries(final Feed feed, final String baseURI, final List<Element> eEntries) {
protected List<Entry> parseEntries(final Feed feed, final String baseURI, final List<Element> eEntries, final Locale locale) {
final List<Entry> entries = new ArrayList<Entry>();
for (int i = 0; i < eEntries.size(); i++) {
entries.add(this.parseEntry(feed, eEntries.get(i), baseURI));
entries.add(this.parseEntry(feed, eEntries.get(i), baseURI, locale));
}
if (entries.size() > 0) {
return entries;
@ -367,7 +368,7 @@ public class Atom10Parser extends BaseWireFeedParser {
}
}
protected Entry parseEntry(final Feed feed, final Element eEntry, final String baseURI) {
protected Entry parseEntry(final Feed feed, final Element eEntry, final String baseURI, final Locale locale) {
final Entry entry = new Entry();
final String xmlBase = eEntry.getAttributeValue("base", Namespace.XML_NAMESPACE);
@ -389,12 +390,12 @@ public class Atom10Parser extends BaseWireFeedParser {
eList = eEntry.getChildren("author", getAtomNamespace());
if (eList.size() > 0) {
entry.setAuthors(parsePersons(baseURI, eList));
entry.setAuthors(parsePersons(baseURI, eList, locale));
}
eList = eEntry.getChildren("contributor", getAtomNamespace());
if (eList.size() > 0) {
entry.setContributors(parsePersons(baseURI, eList));
entry.setContributors(parsePersons(baseURI, eList, locale));
}
e = eEntry.getChild("id", getAtomNamespace());
@ -404,12 +405,12 @@ public class Atom10Parser extends BaseWireFeedParser {
e = eEntry.getChild("updated", getAtomNamespace());
if (e != null) {
entry.setUpdated(DateParser.parseDate(e.getText()));
entry.setUpdated(DateParser.parseDate(e.getText(), locale));
}
e = eEntry.getChild("published", getAtomNamespace());
if (e != null) {
entry.setPublished(DateParser.parseDate(e.getText()));
entry.setPublished(DateParser.parseDate(e.getText(), locale));
}
e = eEntry.getChild("summary", getAtomNamespace());
@ -435,10 +436,10 @@ public class Atom10Parser extends BaseWireFeedParser {
// TODO: SHOULD handle Atom entry source element
e = eEntry.getChild("source", getAtomNamespace());
if (e != null) {
entry.setSource(parseFeedMetadata(baseURI, e));
entry.setSource(parseFeedMetadata(baseURI, e, locale));
}
entry.setModules(parseItemModules(eEntry));
entry.setModules(parseItemModules(eEntry, locale));
final List<Element> foreignMarkup = extractForeignMarkup(eEntry, entry, getAtomNamespace());
if (foreignMarkup.size() > 0) {
@ -659,7 +660,7 @@ public class Atom10Parser extends BaseWireFeedParser {
/**
* Parse entry from reader.
*/
public static Entry parseEntry(final Reader rd, final String baseURI) throws JDOMException, IOException, IllegalArgumentException, FeedException {
public static Entry parseEntry(final Reader rd, final String baseURI, final Locale locale) throws JDOMException, IOException, IllegalArgumentException, FeedException {
// Parse entry into JDOM tree
final SAXBuilder builder = new SAXBuilder();
final Document entryDoc = builder.build(rd);
@ -678,7 +679,7 @@ public class Atom10Parser extends BaseWireFeedParser {
feedDoc.getRootElement().setAttribute("base", baseURI, Namespace.XML_NAMESPACE);
}
final WireFeedInput input = new WireFeedInput();
final WireFeedInput input = new WireFeedInput(false, locale);
final Feed parsedFeed = (Feed) input.build(feedDoc);
return parsedFeed.getEntries().get(0);
}

View file

@ -3,6 +3,7 @@ package com.sun.syndication.io.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import org.jdom2.Attribute;
import org.jdom2.Content;
@ -67,16 +68,16 @@ public abstract class BaseWireFeedParser implements WireFeedParser {
return type;
}
protected List<Module> parseFeedModules(final Element feedElement) {
return feedModuleParsers.parseModules(feedElement);
protected List<Module> parseFeedModules(final Element feedElement, final Locale locale) {
return feedModuleParsers.parseModules(feedElement, locale);
}
protected List<Module> parseItemModules(final Element itemElement) {
return itemModuleParsers.parseModules(itemElement);
protected List<Module> parseItemModules(final Element itemElement, final Locale locale) {
return itemModuleParsers.parseModules(itemElement, locale);
}
protected List<Module> parsePersonModules(final Element itemElement) {
return personModuleParsers.parseModules(itemElement);
protected List<Module> parsePersonModules(final Element itemElement, final Locale locale) {
return personModuleParsers.parseModules(itemElement, locale);
}
protected List<Element> extractForeignMarkup(final Element e, final Extendable ext, final Namespace basens) {

View file

@ -21,6 +21,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import org.jdom2.Attribute;
@ -124,7 +125,7 @@ public class DCModuleGenerator implements ModuleGenerator {
}
if (dcModule.getDate() != null) {
for (final Date date : dcModule.getDates()) {
element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(date)));
element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(date, Locale.US)));
}
}
if (dcModule.getType() != null) {

View file

@ -19,6 +19,7 @@ package com.sun.syndication.io.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.jdom2.Attribute;
import org.jdom2.Element;
@ -65,10 +66,11 @@ public class DCModuleParser implements ModuleParser {
* <p>
*
* @param dcRoot the root element containing the module elements.
* @param locale for date/time parsing
* @return the module parsed from the element tree, <i>null</i> if none.
*/
@Override
public Module parse(final Element dcRoot) {
public Module parse(final Element dcRoot, final Locale locale) {
boolean foundSomething = false;
final DCModule dcm = new DCModuleImpl();
@ -105,7 +107,7 @@ public class DCModuleParser implements ModuleParser {
eList = dcRoot.getChildren("date", getDCNamespace());
if (eList.size() > 0) {
foundSomething = true;
dcm.setDates(parseElementListDate(eList));
dcm.setDates(parseElementListDate(eList, locale));
}
eList = dcRoot.getChildren("type", getDCNamespace());
if (eList.size() > 0) {
@ -229,11 +231,11 @@ public class DCModuleParser implements ModuleParser {
* @param eList the list of elements to parse.
* @return the list of dates.
*/
protected final List<Date> parseElementListDate(final List<Element> eList) {
protected final List<Date> parseElementListDate(final List<Element> eList, final Locale locale) {
final List<Date> values = new ArrayList<Date>();
for (final Element element : eList) {
final Element e = element;
values.add(DateParser.parseDate(e.getText()));
values.add(DateParser.parseDate(e.getText(), locale));
}
return values;

View file

@ -105,14 +105,14 @@ public class DateParser {
* the string with any of the masks.
*
*/
private static Date parseUsingMask(final String[] masks, String sDate) {
private static Date parseUsingMask(final String[] masks, String sDate, final Locale locale) {
if (sDate != null) {
sDate = sDate.trim();
}
ParsePosition pp = null;
Date d = null;
for (int i = 0; d == null && i < masks.length; i++) {
final DateFormat df = new SimpleDateFormat(masks[i], Locale.US);
final DateFormat df = new SimpleDateFormat(masks[i], locale);
// df.setLenient(false);
df.setLenient(true);
try {
@ -154,14 +154,14 @@ public class DateParser {
* a Date.
*
*/
public static Date parseRFC822(String sDate) {
public static Date parseRFC822(String sDate, final Locale locale) {
final int utIndex = sDate.indexOf(" UT");
if (utIndex > -1) {
final String pre = sDate.substring(0, utIndex);
final String post = sDate.substring(utIndex + 3);
sDate = pre + " GMT" + post;
}
return parseUsingMask(RFC822_MASKS, sDate);
return parseUsingMask(RFC822_MASKS, sDate, locale);
}
/**
@ -186,7 +186,7 @@ public class DateParser {
* string into a Date.
*
*/
public static Date parseW3CDateTime(String sDate) {
public static Date parseW3CDateTime(String sDate, final Locale locale) {
// if sDate has time on it, it injects 'GTM' before de TZ displacement
// to
// allow the SimpleDateFormat parser to parse it properly
@ -211,7 +211,7 @@ public class DateParser {
} else {
sDate += "T00:00GMT";
}
return parseUsingMask(W3CDATETIME_MASKS, sDate);
return parseUsingMask(W3CDATETIME_MASKS, sDate, locale);
}
/**
@ -225,12 +225,12 @@ public class DateParser {
* string into a Date.
*
* */
public static Date parseDate(final String sDate) {
Date d = parseW3CDateTime(sDate);
public static Date parseDate(final String sDate, final Locale locale) {
Date d = parseW3CDateTime(sDate, locale);
if (d == null) {
d = parseRFC822(sDate);
d = parseRFC822(sDate, locale);
if (d == null && ADDITIONAL_MASKS.length > 0) {
d = parseUsingMask(ADDITIONAL_MASKS, sDate);
d = parseUsingMask(ADDITIONAL_MASKS, sDate, locale);
}
}
return d;
@ -248,8 +248,8 @@ public class DateParser {
* if it was not possible to parse the date.
*
*/
public static String formatRFC822(final Date date) {
final SimpleDateFormat dateFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
public static String formatRFC822(final Date date, final Locale locale) {
final SimpleDateFormat dateFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", locale);
dateFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormater.format(date);
}
@ -266,8 +266,8 @@ public class DateParser {
* <b>null</b> if it was not possible to parse the date.
*
*/
public static String formatW3CDateTime(final Date date) {
final SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
public static String formatW3CDateTime(final Date date, final Locale locale) {
final SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", locale);
dateFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormater.format(date);
}

View file

@ -18,6 +18,7 @@ package com.sun.syndication.io.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.jdom2.Element;
import org.jdom2.Namespace;
@ -42,7 +43,7 @@ public class ModuleParsers extends PluginManager<ModuleParser> {
return getKeys();
}
public List<Module> parseModules(final Element root) {
public List<Module> parseModules(final Element root, final Locale locale) {
final List<ModuleParser> parsers = getPlugins();
List<Module> modules = null;
for (int i = 0; i < parsers.size(); i++) {
@ -50,7 +51,7 @@ public class ModuleParsers extends PluginManager<ModuleParser> {
final String namespaceUri = parser.getNamespaceUri();
final Namespace namespace = Namespace.getNamespace(namespaceUri);
if (hasElementsFrom(root, namespace)) {
final Module module = parser.parse(root);
final Module module = parser.parse(root, locale);
if (module != null) {
if (modules == null) {
modules = new ArrayList<Module>();

View file

@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import org.jdom2.Document;
import org.jdom2.Element;
@ -76,12 +77,12 @@ public class RSS090Parser extends BaseWireFeedParser {
}
@Override
public WireFeed parse(final Document document, final boolean validate) throws IllegalArgumentException, FeedException {
public WireFeed parse(final Document document, final boolean validate, final Locale locale) throws IllegalArgumentException, FeedException {
if (validate) {
validateFeed(document);
}
final Element rssRoot = document.getRootElement();
return parseChannel(rssRoot);
return parseChannel(rssRoot, locale);
}
protected void validateFeed(final Document document) throws FeedException {
@ -146,7 +147,7 @@ public class RSS090Parser extends BaseWireFeedParser {
* @param rssRoot the root element of the RSS document to parse.
* @return the parsed Channel bean.
*/
protected WireFeed parseChannel(final Element rssRoot) {
protected WireFeed parseChannel(final Element rssRoot, final Locale locale) {
final Element eChannel = rssRoot.getChild("channel", getRSSNamespace());
final Channel channel = new Channel(getType());
@ -174,8 +175,8 @@ public class RSS090Parser extends BaseWireFeedParser {
// and not inside the channel itself. So we also need to look for
// channel modules from the root RSS element.
final List<Module> allFeedModules = new ArrayList<Module>();
final List<Module> rootModules = parseFeedModules(rssRoot);
final List<Module> channelModules = parseFeedModules(eChannel);
final List<Module> rootModules = parseFeedModules(rssRoot, locale);
final List<Module> channelModules = parseFeedModules(eChannel, locale);
if (rootModules != null) {
allFeedModules.addAll(rootModules);
}
@ -183,7 +184,7 @@ public class RSS090Parser extends BaseWireFeedParser {
allFeedModules.addAll(channelModules);
}
channel.setModules(allFeedModules);
channel.setItems(parseItems(rssRoot));
channel.setItems(parseItems(rssRoot, locale));
final List<Element> foreignMarkup = extractForeignMarkup(eChannel, channel, getRSSNamespace());
if (foreignMarkup.size() > 0) {
@ -267,13 +268,13 @@ public class RSS090Parser extends BaseWireFeedParser {
* items information.
* @return a list with all the parsed RSSItem beans.
*/
protected List<Item> parseItems(final Element rssRoot) {
protected List<Item> parseItems(final Element rssRoot, final Locale locale) {
final Collection<Element> eItems = getItems(rssRoot);
final List<Item> items = new ArrayList<Item>();
for (final Element element : eItems) {
final Element eItem = element;
items.add(parseItem(rssRoot, eItem));
items.add(parseItem(rssRoot, eItem, locale));
}
return items;
}
@ -289,7 +290,7 @@ public class RSS090Parser extends BaseWireFeedParser {
* @param eItem the item element to parse.
* @return the parsed RSSItem bean.
*/
protected Item parseItem(final Element rssRoot, final Element eItem) {
protected Item parseItem(final Element rssRoot, final Element eItem, final Locale locale) {
final Item item = new Item();
Element e = eItem.getChild("title", getRSSNamespace());
if (e != null) {
@ -301,7 +302,7 @@ public class RSS090Parser extends BaseWireFeedParser {
item.setUri(e.getText());
}
item.setModules(parseItemModules(eItem));
item.setModules(parseItemModules(eItem, locale));
final List<Element> foreignMarkup = extractForeignMarkup(eItem, item, getRSSNamespace());
// content:encoded elements are treated special, without a module, they

View file

@ -18,6 +18,7 @@ package com.sun.syndication.io.impl;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.jdom2.Attribute;
import org.jdom2.Document;
@ -201,13 +202,13 @@ public class RSS091UserlandGenerator extends RSS090Generator {
final Date pubDate = channel.getPubDate();
if (pubDate != null) {
eChannel.addContent(generateSimpleElement("pubDate", DateParser.formatRFC822(pubDate)));
eChannel.addContent(generateSimpleElement("pubDate", DateParser.formatRFC822(pubDate, Locale.US)));
}
final Date lastBuildDate = channel.getLastBuildDate();
if (lastBuildDate != null) {
eChannel.addContent(generateSimpleElement("lastBuildDate", DateParser.formatRFC822(lastBuildDate)));
eChannel.addContent(generateSimpleElement("lastBuildDate", DateParser.formatRFC822(lastBuildDate, Locale.US)));
}
final String docs = channel.getDocs();

View file

@ -19,6 +19,7 @@ package com.sun.syndication.io.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import org.jdom2.Attribute;
import org.jdom2.Document;
@ -86,8 +87,8 @@ public class RSS091UserlandParser extends RSS090Parser {
* @return the parsed Channel bean.
*/
@Override
protected WireFeed parseChannel(final Element rssRoot) {
final Channel channel = (Channel) super.parseChannel(rssRoot);
protected WireFeed parseChannel(final Element rssRoot, final Locale locale) {
final Channel channel = (Channel) super.parseChannel(rssRoot, locale);
final Element eChannel = rssRoot.getChild("channel", getRSSNamespace());
@ -105,11 +106,11 @@ public class RSS091UserlandParser extends RSS090Parser {
}
e = eChannel.getChild("pubDate", getRSSNamespace());
if (e != null) {
channel.setPubDate(DateParser.parseDate(e.getText()));
channel.setPubDate(DateParser.parseDate(e.getText(), locale));
}
e = eChannel.getChild("lastBuildDate", getRSSNamespace());
if (e != null) {
channel.setLastBuildDate(DateParser.parseDate(e.getText()));
channel.setLastBuildDate(DateParser.parseDate(e.getText(), locale));
}
e = eChannel.getChild("docs", getRSSNamespace());
if (e != null) {
@ -251,8 +252,8 @@ public class RSS091UserlandParser extends RSS090Parser {
* @return the parsed RSSItem bean.
*/
@Override
protected Item parseItem(final Element rssRoot, final Element eItem) {
final Item item = super.parseItem(rssRoot, eItem);
protected Item parseItem(final Element rssRoot, final Element eItem, final Locale locale) {
final Item item = super.parseItem(rssRoot, eItem, locale);
final Element e = eItem.getChild("description", getRSSNamespace());
if (e != null) {
item.setDescription(parseItemDescription(rssRoot, e));

View file

@ -18,6 +18,7 @@ package com.sun.syndication.io.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.jdom2.Content;
import org.jdom2.Element;
@ -50,8 +51,8 @@ public class RSS092Parser extends RSS091UserlandParser {
}
@Override
protected WireFeed parseChannel(final Element rssRoot) {
final Channel channel = (Channel) super.parseChannel(rssRoot);
protected WireFeed parseChannel(final Element rssRoot, final Locale locale) {
final Channel channel = (Channel) super.parseChannel(rssRoot, locale);
final Element eChannel = rssRoot.getChild("channel", getRSSNamespace());
final Element eCloud = eChannel.getChild("cloud", getRSSNamespace());
@ -91,8 +92,8 @@ public class RSS092Parser extends RSS091UserlandParser {
}
@Override
protected Item parseItem(final Element rssRoot, final Element eItem) {
final Item item = super.parseItem(rssRoot, eItem);
protected Item parseItem(final Element rssRoot, final Element eItem, final Locale locale) {
final Item item = super.parseItem(rssRoot, eItem, locale);
Element e = eItem.getChild("source", getRSSNamespace());
if (e != null) {

View file

@ -18,6 +18,7 @@ package com.sun.syndication.io.impl;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.jdom2.Element;
@ -47,12 +48,12 @@ public class RSS093Generator extends RSS092Generator {
final Date pubDate = item.getPubDate();
if (pubDate != null) {
eItem.addContent(generateSimpleElement("pubDate", DateParser.formatRFC822(pubDate)));
eItem.addContent(generateSimpleElement("pubDate", DateParser.formatRFC822(pubDate, Locale.US)));
}
final Date expirationDate = item.getExpirationDate();
if (expirationDate != null) {
eItem.addContent(generateSimpleElement("expirationDate", DateParser.formatRFC822(expirationDate)));
eItem.addContent(generateSimpleElement("expirationDate", DateParser.formatRFC822(expirationDate, Locale.US)));
}
}

View file

@ -16,6 +16,8 @@
*/
package com.sun.syndication.io.impl;
import java.util.Locale;
import org.jdom2.Element;
import com.sun.syndication.feed.rss.Item;
@ -38,15 +40,15 @@ public class RSS093Parser extends RSS092Parser {
}
@Override
protected Item parseItem(final Element rssRoot, final Element eItem) {
final Item item = super.parseItem(rssRoot, eItem);
protected Item parseItem(final Element rssRoot, final Element eItem, final Locale locale) {
final Item item = super.parseItem(rssRoot, eItem, locale);
Element e = eItem.getChild("pubDate", getRSSNamespace());
if (e != null) {
item.setPubDate(DateParser.parseDate(e.getText()));
item.setPubDate(DateParser.parseDate(e.getText(), locale));
}
e = eItem.getChild("expirationDate", getRSSNamespace());
if (e != null) {
item.setExpirationDate(DateParser.parseDate(e.getText()));
item.setExpirationDate(DateParser.parseDate(e.getText(), locale));
}
e = eItem.getChild("description", getRSSNamespace());
if (e != null) {

View file

@ -17,6 +17,7 @@
package com.sun.syndication.io.impl;
import java.util.List;
import java.util.Locale;
import org.jdom2.Element;
@ -43,8 +44,8 @@ public class RSS094Parser extends RSS093Parser {
}
@Override
protected WireFeed parseChannel(final Element rssRoot) {
final Channel channel = (Channel) super.parseChannel(rssRoot);
protected WireFeed parseChannel(final Element rssRoot, final Locale locale) {
final Channel channel = (Channel) super.parseChannel(rssRoot, locale);
final Element eChannel = rssRoot.getChild("channel", getRSSNamespace());
final List<Element> eCats = eChannel.getChildren("category", getRSSNamespace());
@ -67,8 +68,8 @@ public class RSS094Parser extends RSS093Parser {
}
@Override
public Item parseItem(final Element rssRoot, final Element eItem) {
final Item item = super.parseItem(rssRoot, eItem);
public Item parseItem(final Element rssRoot, final Element eItem, final Locale locale) {
final Item item = super.parseItem(rssRoot, eItem, locale);
item.setExpirationDate(null);
Element e = eItem.getChild("author", getRSSNamespace());

View file

@ -16,6 +16,8 @@
*/
package com.sun.syndication.io.impl;
import java.util.Locale;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.Namespace;
@ -96,8 +98,8 @@ public class RSS10Parser extends RSS090Parser {
* @return the parsed RSSItem bean.
*/
@Override
protected Item parseItem(final Element rssRoot, final Element eItem) {
final Item item = super.parseItem(rssRoot, eItem);
protected Item parseItem(final Element rssRoot, final Element eItem, final Locale locale) {
final Item item = super.parseItem(rssRoot, eItem, locale);
final Element e = eItem.getChild("description", getRSSNamespace());
if (e != null) {
item.setDescription(parseItemDescription(rssRoot, e));
@ -119,8 +121,8 @@ public class RSS10Parser extends RSS090Parser {
}
@Override
protected WireFeed parseChannel(final Element rssRoot) {
final Channel channel = (Channel) super.parseChannel(rssRoot);
protected WireFeed parseChannel(final Element rssRoot, final Locale locale) {
final Channel channel = (Channel) super.parseChannel(rssRoot, locale);
final Element eChannel = rssRoot.getChild("channel", getRSSNamespace());
final String uri = eChannel.getAttributeValue("about", getRDFNamespace());

View file

@ -16,6 +16,8 @@
*/
package com.sun.syndication.io.impl;
import java.util.Locale;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.Namespace;
@ -68,8 +70,8 @@ public class RSS20wNSParser extends RSS20Parser {
*
*/
@Override
protected WireFeed parseChannel(final Element rssRoot) {
final WireFeed wFeed = super.parseChannel(rssRoot);
protected WireFeed parseChannel(final Element rssRoot, final Locale locale) {
final WireFeed wFeed = super.parseChannel(rssRoot, locale);
wFeed.setFeedType("rss_2.0");
return wFeed;
}

View file

@ -18,6 +18,7 @@ package com.sun.syndication.io.impl;
import java.util.Collections;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import org.jdom2.Element;
@ -87,7 +88,7 @@ public class SyModuleGenerator implements ModuleGenerator {
if (syModule.getUpdateBase() != null) {
final Element updateBaseElement = new Element("updateBase", SY_NS);
updateBaseElement.addContent(DateParser.formatW3CDateTime(syModule.getUpdateBase()));
updateBaseElement.addContent(DateParser.formatW3CDateTime(syModule.getUpdateBase(), Locale.US));
element.addContent(updateBaseElement);
}
}

View file

@ -16,6 +16,8 @@
*/
package com.sun.syndication.io.impl;
import java.util.Locale;
import org.jdom2.Element;
import org.jdom2.Namespace;
@ -37,7 +39,7 @@ public class SyModuleParser implements ModuleParser {
}
@Override
public Module parse(final Element syndRoot) {
public Module parse(final Element syndRoot, final Locale locale) {
boolean foundSomething = false;
final SyModule sm = new SyModuleImpl();
@ -54,7 +56,7 @@ public class SyModuleParser implements ModuleParser {
e = syndRoot.getChild("updateBase", getDCNamespace());
if (e != null) {
foundSomething = true;
sm.setUpdateBase(DateParser.parseDate(e.getText()));
sm.setUpdateBase(DateParser.parseDate(e.getText(), locale));
}
if (foundSomething) {
return sm;

View file

@ -8,6 +8,7 @@ package com.sun.syndication.unittest;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndImage;
@ -77,7 +78,7 @@ public abstract class SyndFeedTest extends FeedTest {
*/
public void testPublishedDate() throws Exception {
assertEquals(DateParser.parseRFC822("Mon, 01 Jan 2001 00:00:00 GMT"), this.getCachedSyndFeed().getPublishedDate());
assertEquals(DateParser.parseRFC822("Mon, 01 Jan 2001 00:00:00 GMT", Locale.US), this.getCachedSyndFeed().getPublishedDate());
}
// how do i get height and width?

View file

@ -19,6 +19,7 @@ package com.sun.syndication.unittest;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
import junit.framework.TestCase;
@ -39,7 +40,7 @@ public class TestDateParser extends TestCase {
// four-digit year
String sDate = "Tue, 19 Jul 2005 23:00:51 GMT";
cal.setTime(DateParser.parseRFC822(sDate));
cal.setTime(DateParser.parseRFC822(sDate, Locale.US));
assertEquals(2005, cal.get(Calendar.YEAR));
assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
@ -51,7 +52,7 @@ public class TestDateParser extends TestCase {
// two-digit year
sDate = "Tue, 19 Jul 05 23:00:51 GMT";
cal.setTime(DateParser.parseRFC822(sDate));
cal.setTime(DateParser.parseRFC822(sDate, Locale.US));
assertEquals(2005, cal.get(Calendar.YEAR));
assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
@ -63,7 +64,7 @@ public class TestDateParser extends TestCase {
// four-digit year
sDate = "Tue, 19 Jul 2005 23:00:51 UT";
cal.setTime(DateParser.parseRFC822(sDate));
cal.setTime(DateParser.parseRFC822(sDate, Locale.US));
assertEquals(2005, cal.get(Calendar.YEAR));
assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
@ -75,7 +76,7 @@ public class TestDateParser extends TestCase {
// two-digit year
sDate = "Tue, 19 Jul 05 23:00:51 UT";
cal.setTime(DateParser.parseRFC822(sDate));
cal.setTime(DateParser.parseRFC822(sDate, Locale.US));
assertEquals(2005, cal.get(Calendar.YEAR));
assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
@ -87,11 +88,11 @@ public class TestDateParser extends TestCase {
// RFC822
sDate = "Tue, 19 Jul 2005 23:00:51 GMT";
assertNotNull(DateParser.parseDate(sDate));
assertNotNull(DateParser.parseDate(sDate, Locale.US));
// RFC822
sDate = "Tue, 19 Jul 05 23:00:51 GMT";
assertNotNull(DateParser.parseDate(sDate));
assertNotNull(DateParser.parseDate(sDate, Locale.US));
final Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
c.set(2000, Calendar.JANUARY, 01, 0, 0, 0);
@ -99,31 +100,31 @@ public class TestDateParser extends TestCase {
// W3C
sDate = "2000-01-01T00:00:00Z";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate, Locale.US).getTime() / 1000);
// W3C
sDate = "2000-01-01T00:00Z";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate, Locale.US).getTime() / 1000);
// W3C
sDate = "2000-01-01";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate, Locale.US).getTime() / 1000);
// W3C
sDate = "2000-01";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate, Locale.US).getTime() / 1000);
// W3C
sDate = "2000";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate, Locale.US).getTime() / 1000);
// EXTRA
sDate = "18:10 2000/10/10";
assertNotNull(DateParser.parseDate(sDate));
assertNotNull(DateParser.parseDate(sDate, Locale.US));
// INVALID
sDate = "X20:10 2000-10-10";
assertNull(DateParser.parseDate(sDate));
assertNull(DateParser.parseDate(sDate, Locale.US));
}
}

View file

@ -6,6 +6,7 @@ package com.sun.syndication.unittest;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.io.impl.DateParser;
@ -48,7 +49,7 @@ public class TestSyndFeedAtom03 extends SyndFeedTest {
@Override
public void testPublishedDate() throws Exception {
final Date d = DateParser.parseW3CDateTime("2000-01-01T00:00:00Z");
final Date d = DateParser.parseW3CDateTime("2000-01-01T00:00:00Z", Locale.US);
assertEquals(this.getCachedSyndFeed().getPublishedDate(), d);
}
@ -58,7 +59,7 @@ public class TestSyndFeedAtom03 extends SyndFeedTest {
assertProperty(entry.getTitle(), "feed.entry[" + i + "].title");
assertProperty(entry.getLink(), "feed.entry[" + i + "].link^href");
assertProperty(entry.getAuthor(), "feed.entry[" + i + "].author.name");
final Date d = DateParser.parseW3CDateTime("2000-0" + (i + 1) + "-01T00:00:00Z");
final Date d = DateParser.parseW3CDateTime("2000-0" + (i + 1) + "-01T00:00:00Z", Locale.US);
assertEquals(entry.getPublishedDate(), d);
assertProperty(entry.getDescription().getValue(), "feed.entry[" + i + "].summary");
assertProperty(entry.getContents().get(0).getValue(), "feed.entry[" + i + "].content[0]");

View file

@ -8,6 +8,7 @@ package com.sun.syndication.unittest;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.sun.syndication.feed.module.DCModule;
import com.sun.syndication.feed.module.SyModule;
@ -67,7 +68,7 @@ public class TestSyndFeedAtom03DCSyModules extends TestSyndFeedAtom03 {
assertProperty(dc.getPublisher(), prefix + "dc:publisher");
assertProperty(dc.getContributors().get(0), prefix + "dc:contributor[0]");
assertProperty(dc.getContributors().get(1), prefix + "dc:contributor[1]");
final Date date = DateParser.parseW3CDateTime("2000-0" + (index + 1) + "-01T00:00:00Z");
final Date date = DateParser.parseW3CDateTime("2000-0" + (index + 1) + "-01T00:00:00Z", Locale.US);
assertEquals(dc.getDate(), date);
assertProperty(dc.getType(), prefix + "dc:type");
assertProperty(dc.getFormat(), prefix + "dc:format");
@ -93,7 +94,7 @@ public class TestSyndFeedAtom03DCSyModules extends TestSyndFeedAtom03 {
assertNotNull(sy);
assertEquals(sy.getUpdatePeriod(), SyModule.HOURLY);
assertEquals(sy.getUpdateFrequency(), 100);
final Date date = DateParser.parseW3CDateTime("2001-01-01T01:00+00:00");
final Date date = DateParser.parseW3CDateTime("2001-01-01T01:00+00:00", Locale.US);
assertEquals(sy.getUpdateBase(), date);
}

View file

@ -6,6 +6,7 @@ package com.sun.syndication.unittest;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.sun.syndication.feed.atom.Entry;
import com.sun.syndication.feed.synd.SyndEntry;
@ -68,7 +69,7 @@ public class TestSyndFeedAtom10 extends TestSyndFeedAtom03 {
@Override
public void testPublishedDate() throws Exception {
final Date d = DateParser.parseW3CDateTime("2000-01-01T00:00:00Z");
final Date d = DateParser.parseW3CDateTime("2000-01-01T00:00:00Z", Locale.US);
assertEquals(this.getCachedSyndFeed().getPublishedDate(), d);
}
@ -84,7 +85,7 @@ public class TestSyndFeedAtom10 extends TestSyndFeedAtom03 {
assertEquals("http://example.com/blog/entry" + (i + 1), entry.getLink());
assertEquals(entry.getEnclosures().get(0).getUrl(), "http://example.com/blog/enclosure" + (i + 1) + ".gif");
assertProperty(entry.getAuthor(), "feed.entry[" + i + "].author.name");
final Date d = DateParser.parseW3CDateTime("2000-0" + (i + 1) + "-01T01:00:00Z");
final Date d = DateParser.parseW3CDateTime("2000-0" + (i + 1) + "-01T01:00:00Z", Locale.US);
assertEquals(entry.getPublishedDate(), d);
assertProperty(entry.getDescription().getValue(), "feed.entry[" + i + "].summary");
assertProperty(entry.getContents().get(0).getValue(), "feed.entry[" + i + "].content[0]");

View file

@ -6,6 +6,7 @@ package com.sun.syndication.unittest;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.io.impl.DateParser;
@ -39,7 +40,7 @@ public class TestSyndFeedRSS091N extends SyndFeedTest {
@Override
public void testPublishedDate() throws Exception {
final Date d = DateParser.parseRFC822("Mon, 01 Jan 2001 00:00:00 GMT");
final Date d = DateParser.parseRFC822("Mon, 01 Jan 2001 00:00:00 GMT", Locale.US);
assertEquals(this.getCachedSyndFeed().getPublishedDate(), d);
}

View file

@ -6,6 +6,7 @@ package com.sun.syndication.unittest;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.io.impl.DateParser;
@ -33,7 +34,7 @@ public class TestSyndFeedRSS093 extends TestSyndFeedRSS092 {
super.testItem(i);
final List<SyndEntry> items = this.getCachedSyndFeed().getEntries();
final SyndEntry entry = items.get(i);
final Date d = DateParser.parseRFC822("Mon, 0" + (i + 1) + " Jan 2001 00:00:00 GMT");
final Date d = DateParser.parseRFC822("Mon, 0" + (i + 1) + " Jan 2001 00:00:00 GMT", Locale.US);
assertEquals(entry.getPublishedDate(), d);
testDescriptionType(entry, i);
}
@ -44,8 +45,8 @@ public class TestSyndFeedRSS093 extends TestSyndFeedRSS092 {
@Override
public void testEntryPublishedDate() throws Exception {
assertEquals(DateParser.parseRFC822("Mon, 01 Jan 2001 00:00:00 GMT"), getEntryPublishedDate(this.getCachedSyndFeed().getEntries().get(0)));
assertEquals(DateParser.parseRFC822("Tue, 02 Jan 2001 00:00:00 GMT"), getEntryPublishedDate(this.getCachedSyndFeed().getEntries().get(1)));
assertEquals(DateParser.parseRFC822("Mon, 01 Jan 2001 00:00:00 GMT", Locale.US), getEntryPublishedDate(this.getCachedSyndFeed().getEntries().get(0)));
assertEquals(DateParser.parseRFC822("Tue, 02 Jan 2001 00:00:00 GMT", Locale.US), getEntryPublishedDate(this.getCachedSyndFeed().getEntries().get(1)));
}
}

View file

@ -2,6 +2,7 @@ package com.sun.syndication.unittest;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.sun.syndication.feed.module.DCModule;
import com.sun.syndication.feed.synd.SyndEntry;
@ -60,7 +61,7 @@ public class TestSyndFeedRSS10DCMulti extends TestSyndFeedRSS10 {
assertProperty(dc.getContributors().get(0), prefix + "dc:contributor[0]");
assertProperty(dc.getContributors().get(1), prefix + "dc:contributor[1]");
final Date date = DateParser.parseW3CDateTime("2001-01-01T00:00+00:00");
final Date date = DateParser.parseW3CDateTime("2001-01-01T00:00+00:00", Locale.US);
assertEquals(dc.getDates().get(0), date);
assertEquals(dc.getDates().get(1), date);

View file

@ -8,6 +8,7 @@ package com.sun.syndication.unittest;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.sun.syndication.feed.module.DCModule;
import com.sun.syndication.feed.module.SyModule;
@ -57,7 +58,7 @@ public class TestSyndFeedRSS10DCSyModules extends TestSyndFeedRSS10 {
assertProperty(dc.getPublisher(), prefix + "dc:publisher");
assertProperty(dc.getContributors().get(0), prefix + "dc:contributor[0]");
assertProperty(dc.getContributors().get(1), prefix + "dc:contributor[1]");
final Date date = DateParser.parseW3CDateTime("2001-01-01T00:00+00:00");
final Date date = DateParser.parseW3CDateTime("2001-01-01T00:00+00:00", Locale.US);
assertEquals(dc.getDate(), date);
assertProperty(dc.getType(), prefix + "dc:type");
assertProperty(dc.getFormat(), prefix + "dc:format");
@ -74,7 +75,7 @@ public class TestSyndFeedRSS10DCSyModules extends TestSyndFeedRSS10 {
assertNotNull(sy);
assertEquals(sy.getUpdatePeriod(), SyModule.HOURLY);
assertEquals(sy.getUpdateFrequency(), 100);
final Date date = DateParser.parseW3CDateTime("2001-01-01T01:00+00:00");
final Date date = DateParser.parseW3CDateTime("2001-01-01T01:00+00:00", Locale.US);
assertEquals(sy.getUpdateBase(), date);
}