You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2013/03/15 14:53:44 UTC
svn commit: r1456955 - in /chemistry/opencmis/trunk:
chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/
chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apach...
Author: fmui
Date: Fri Mar 15 13:53:44 2013
New Revision: 1456955
URL: http://svn.apache.org/r1456955
Log:
CMIS 1.1 AtomPub: optimization and small fixes
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/DateTimeHelper.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLUtils.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/misc/DateTimeTest.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomDocumentBase.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/DateTimeHelper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/DateTimeHelper.java?rev=1456955&r1=1456954&r2=1456955&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/DateTimeHelper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/DateTimeHelper.java Fri Mar 15 13:53:44 2013
@@ -18,14 +18,12 @@
*/
package org.apache.chemistry.opencmis.commons.impl;
-import java.lang.ref.SoftReference;
import java.math.BigDecimal;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
-import java.util.Locale;
+import java.util.HashMap;
+import java.util.Map;
import java.util.TimeZone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -38,15 +36,26 @@ public class DateTimeHelper {
.compile("(\\d{4,9})-([01]\\d)-([0-3]\\d)T([0-2]\\d):([0-5]\\d):([0-5]\\d)(\\.(\\d+))?(([+-][0-2]\\d:[0-5]\\d)|Z)?");
private static final BigDecimal BD1000 = new BigDecimal(1000);
- private static final String[] HTTP_DATETIME = new String[] { "EEE, dd MMM yyyy HH:mm:ss zzz",
- "EEE, dd-MMM-yy HH:mm:ss zzz", "EEE MMM d HH:mm:ss yyyy" };
+ private static final String[] WDAYS = new String[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
- private static final ThreadLocal<SoftReference<SimpleDateFormat[]>> THREADLOCAL_HTTP_FORMATS = new ThreadLocal<SoftReference<SimpleDateFormat[]>>() {
- @Override
- protected SoftReference<SimpleDateFormat[]> initialValue() {
- return new SoftReference<SimpleDateFormat[]>(new SimpleDateFormat[HTTP_DATETIME.length]);
+ private static final String[] MONTHS = new String[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
+ "Sep", "Oct", "Nov", "Dec" };
+
+ private static final Map<String, Integer> MONTHS_MAP = new HashMap<String, Integer>();
+ static {
+ for (int i = 0; i < MONTHS.length; i++) {
+ MONTHS_MAP.put(MONTHS[i], i);
}
- };
+ }
+
+ private static final Pattern HTTP_DATETIME1 = Pattern
+ .compile("\\w{3}, ([0-3]\\d) (\\w{3}) (\\d{4}) ([0-2]\\d):([0-5]\\d):([0-5]\\d) GMT");
+
+ private static final Pattern HTTP_DATETIME2 = Pattern
+ .compile("\\w{6,9}, ([0-3]\\d)-(\\w{3})-(\\d{2}) ([0-2]\\d):([0-5]\\d):([0-5]\\d) GMT");
+
+ private static final Pattern HTTP_DATETIME3 = Pattern
+ .compile("\\w{3} (\\w{3}) ([0-3 ]\\d) ([0-2]\\d):([0-5]\\d):([0-5]\\d) (\\d{4})");
/**
* Parses a xsd:dateTime string.
@@ -56,7 +65,7 @@ public class DateTimeHelper {
return null;
}
- Matcher m = XML_DATETIME.matcher(s);
+ final Matcher m = XML_DATETIME.matcher(s);
if (!m.matches()) {
return null;
@@ -81,7 +90,7 @@ public class DateTimeHelper {
tz = TimeZone.getTimeZone("GMT" + m.group(10));
}
- GregorianCalendar result = new GregorianCalendar();
+ final GregorianCalendar result = new GregorianCalendar();
result.clear();
result.setTimeZone(tz);
@@ -98,7 +107,7 @@ public class DateTimeHelper {
* Returns a xsd:dateTime string.
*/
public static String formatXmlDateTime(long millis) {
- GregorianCalendar cal = new GregorianCalendar(GMT);
+ final GregorianCalendar cal = new GregorianCalendar(GMT);
cal.setTimeInMillis(millis);
return formatXmlDateTime(cal);
@@ -112,18 +121,26 @@ public class DateTimeHelper {
throw new IllegalArgumentException();
}
- StringBuilder sb = new StringBuilder(String.format("%04d-%02d-%02dT%02d:%02d:%02d", cal.get(Calendar.YEAR),
- cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY),
- cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)));
+ final StringBuilder sb = new StringBuilder();
+ add4d(sb, cal.get(Calendar.YEAR));
+ sb.append('-');
+ add2d(sb, cal.get(Calendar.MONTH) + 1);
+ sb.append('-');
+ add2d(sb, cal.get(Calendar.DAY_OF_MONTH));
+ sb.append('T');
+ add2d(sb, cal.get(Calendar.HOUR_OF_DAY));
+ sb.append(':');
+ add2d(sb, cal.get(Calendar.MINUTE));
+ sb.append(':');
+ add2d(sb, cal.get(Calendar.SECOND));
int ms = cal.get(Calendar.MILLISECOND);
if (ms > 0) {
- StringBuilder mssb = new StringBuilder(String.format("%03d", ms));
- while (mssb.charAt(mssb.length() - 1) == '0') {
- mssb.deleteCharAt(mssb.length() - 1);
+ sb.append('.');
+ add3d(sb, ms);
+ while (sb.charAt(sb.length() - 1) == '0') {
+ sb.deleteCharAt(sb.length() - 1);
}
- sb.append(".");
- sb.append(mssb);
}
int tz = cal.getTimeZone().getRawOffset();
@@ -136,10 +153,10 @@ public class DateTimeHelper {
sb.append("-");
tz *= -1;
}
- sb.append(String.format("%02d", tz / 3600000));
+ add2d(sb, tz / 3600000);
sb.append(":");
int tzm = tz % 3600000;
- sb.append(String.format("%02d", tzm == 0 ? 0 : tzm / 60000));
+ add2d(sb, tzm == 0 ? 0 : tzm / 60000);
}
return sb.toString();
@@ -158,14 +175,66 @@ public class DateTimeHelper {
s = s.substring(1, s.length() - 1);
}
- for (int i = 0; i < HTTP_DATETIME.length; i++) {
- SimpleDateFormat sdf = getFormatter(i);
+ final GregorianCalendar cal = new GregorianCalendar(GMT);
+ cal.set(Calendar.MILLISECOND, 0);
+
+ Matcher m = null;
+
+ m = HTTP_DATETIME1.matcher(s);
+ if (m.matches()) {
+ final Integer month = MONTHS_MAP.get(m.group(2));
+ if (month == null) {
+ return null;
+ }
+
+ cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(m.group(1)));
+ cal.set(Calendar.MONTH, month);
+ cal.set(Calendar.YEAR, Integer.parseInt(m.group(3)));
+ cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(m.group(4)));
+ cal.set(Calendar.MINUTE, Integer.parseInt(m.group(5)));
+ cal.set(Calendar.SECOND, Integer.parseInt(m.group(6)));
+
+ return cal.getTime();
+ }
+
+ m = HTTP_DATETIME2.matcher(s);
+ if (m.matches()) {
+ final Integer month = MONTHS_MAP.get(m.group(2));
+ if (month == null) {
+ return null;
+ }
+
+ cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(m.group(1)));
+ cal.set(Calendar.MONTH, month);
+ int year = Integer.parseInt(m.group(3));
+ if (year < 100) {
+ final int thisYear = (new GregorianCalendar(GMT)).get(Calendar.YEAR);
+ final int testYear = year + thisYear - thisYear % 100;
+ year = (testYear < thisYear + 20 ? testYear : testYear - 100);
+ }
+ cal.set(Calendar.YEAR, year);
+ cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(m.group(4)));
+ cal.set(Calendar.MINUTE, Integer.parseInt(m.group(5)));
+ cal.set(Calendar.SECOND, Integer.parseInt(m.group(6)));
+
+ return cal.getTime();
+ }
- try {
- return sdf.parse(s);
- } catch (ParseException e) {
- // try next
+ m = HTTP_DATETIME3.matcher(s);
+ if (m.matches()) {
+ final Integer month = MONTHS_MAP.get(m.group(1));
+ if (month == null) {
+ return null;
}
+
+ cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(m.group(2).trim()));
+ cal.set(Calendar.MONTH, month);
+ cal.set(Calendar.YEAR, Integer.parseInt(m.group(6)));
+ cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(m.group(3)));
+ cal.set(Calendar.MINUTE, Integer.parseInt(m.group(4)));
+ cal.set(Calendar.SECOND, Integer.parseInt(m.group(5)));
+
+ return cal.getTime();
}
return null;
@@ -174,47 +243,71 @@ public class DateTimeHelper {
/**
* Returns a HTTP date.
*/
- public static String formateHttpDateTime(long millis) {
- return getFormatter(0).format(millis);
+ public static String formatHttpDateTime(long millis) {
+ final GregorianCalendar cal = new GregorianCalendar(GMT);
+ cal.setTimeInMillis(millis);
+
+ final StringBuilder sb = new StringBuilder();
+ sb.append(WDAYS[cal.get(Calendar.DAY_OF_WEEK) - 1]);
+ sb.append(", ");
+ add2d(sb, cal.get(Calendar.DAY_OF_MONTH));
+ sb.append(' ');
+ sb.append(MONTHS[cal.get(Calendar.MONTH)]);
+ sb.append(' ');
+ add4d(sb, cal.get(Calendar.YEAR));
+ sb.append(' ');
+ add2d(sb, cal.get(Calendar.HOUR_OF_DAY));
+ sb.append(':');
+ add2d(sb, cal.get(Calendar.MINUTE));
+ sb.append(':');
+ add2d(sb, cal.get(Calendar.SECOND));
+ sb.append(" GMT");
+
+ return sb.toString();
}
/**
* Returns a HTTP date.
*/
- public static String formateHttpDateTime(Date date) {
- return getFormatter(0).format(date);
+ public static String formatHttpDateTime(final Date date) {
+ return formatHttpDateTime(date.getTime());
}
/**
* Returns a HTTP date.
*/
- public static String formateHttpDateTime(GregorianCalendar cal) {
- return getFormatter(0).format(cal.getTimeInMillis());
+ public static String formatHttpDateTime(final GregorianCalendar cal) {
+ return formatHttpDateTime(cal.getTimeInMillis());
}
- /**
- * Clears out cached formatters.
- */
- public static void clear() {
- THREADLOCAL_HTTP_FORMATS.remove();
+ private static void add2d(final StringBuilder sb, int value) {
+ if (value < 10) {
+ sb.append('0');
+ }
+ sb.append(value);
}
- private static SimpleDateFormat getFormatter(int x) {
- SoftReference<SimpleDateFormat[]> ref = THREADLOCAL_HTTP_FORMATS.get();
- SimpleDateFormat[] sdfs = ref.get();
- if (sdfs == null) {
- ref = new SoftReference<SimpleDateFormat[]>(new SimpleDateFormat[HTTP_DATETIME.length]);
- THREADLOCAL_HTTP_FORMATS.set(ref);
- sdfs = ref.get();
+ private static void add3d(final StringBuilder sb, int value) {
+ if (value < 10) {
+ sb.append('0');
}
-
- SimpleDateFormat sdf = sdfs[x];
- if (sdf == null) {
- sdf = new SimpleDateFormat(HTTP_DATETIME[x], Locale.US);
- sdf.setTimeZone(GMT);
- sdfs[x] = sdf;
+ if (value < 100) {
+ sb.append('0');
}
+ sb.append(value);
+ }
- return sdf;
+ private static void add4d(final StringBuilder sb, int value) {
+ if (value < 10) {
+ sb.append('0');
+ }
+ if (value < 100) {
+ sb.append('0');
+ }
+ if (value < 1000) {
+ sb.append('0');
+ }
+ sb.append(value);
}
+
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java?rev=1456955&r1=1456954&r2=1456955&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java Fri Mar 15 13:53:44 2013
@@ -147,9 +147,13 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.impl.dataobjects.RepositoryInfoImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.SecondaryTypeDefinitionImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.TypeMutabilityImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class XMLConverter {
+ private static final Logger LOG = LoggerFactory.getLogger(XMLConverter.class);
+
private XMLConverter() {
}
@@ -184,6 +188,8 @@ public class XMLConverter {
if (source.getChangesOnType() != null) {
for (BaseTypeId baseType : source.getChangesOnType()) {
if (cmisVersion == CmisVersion.CMIS_1_0 && baseType == BaseTypeId.CMIS_ITEM) {
+ LOG.warn("Receiver only understands CMIS 1.0 but the Changes On Type list in the Repository info contains the base type Item. "
+ + "The Item base type has been removed from the list.");
continue;
}
XMLUtils.write(writer, PREFIX_CMIS, NAMESPACE_CMIS, TAG_REPINFO_CHANGES_ON_TYPE, baseType);
@@ -375,10 +381,12 @@ public class XMLConverter {
return;
}
- // suppress cmis:item and cmis:secondary type for CMIS 1.0 repositories
- if (cmisVersion == CmisVersion.CMIS_1_0
- && (source.getBaseTypeId() == BaseTypeId.CMIS_ITEM || source.getBaseTypeId() == BaseTypeId.CMIS_SECONDARY)) {
- return;
+ if (cmisVersion == CmisVersion.CMIS_1_0) {
+ if (source.getBaseTypeId() == BaseTypeId.CMIS_ITEM) {
+ LOG.warn("Receiver only understands CMIS 1.0. It may not able to handle an Item type definition.");
+ } else if (source.getBaseTypeId() == BaseTypeId.CMIS_SECONDARY) {
+ LOG.warn("Receiver only understands CMIS 1.0. It may not able to handle a Secondary type definition.");
+ }
}
writer.writeStartElement(namespace, TAG_TYPE);
@@ -661,6 +669,12 @@ public class XMLConverter {
return;
}
+ if (cmisVersion == CmisVersion.CMIS_1_0) {
+ if (source.getBaseTypeId() == BaseTypeId.CMIS_ITEM) {
+ LOG.warn("Receiver only understands CMIS 1.0. It may not be able to handle an Item object.");
+ }
+ }
+
if (root) {
writer.writeStartElement(PREFIX_CMIS, name, NAMESPACE_CMIS);
writer.writeNamespace(PREFIX_CMIS, NAMESPACE_CMIS);
@@ -850,6 +864,8 @@ public class XMLConverter {
if (source.getAllowableActions() != null) {
for (Action action : Action.values()) {
if (action == Action.CAN_CREATE_ITEM && cmisVersion == CmisVersion.CMIS_1_0) {
+ LOG.warn("Receiver only understands CMIS 1.0 but the Allowable Actions contain the canCreateItem action. "
+ + "The canCreateItem action has been removed from the Allowable Actions.");
continue;
}
if (source.getAllowableActions().contains(action)) {
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLUtils.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLUtils.java?rev=1456955&r1=1456954&r2=1456955&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLUtils.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLUtils.java Fri Mar 15 13:53:44 2013
@@ -31,28 +31,36 @@ import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class XMLUtils {
- public static final ThreadLocal<XMLInputFactory> THREADLOCAL_XML_INPUT_FACTORY = new ThreadLocal<XMLInputFactory>() {
- @Override
- protected XMLInputFactory initialValue() {
- XMLInputFactory factory = XMLInputFactory.newInstance();
- factory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
- factory.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.FALSE);
- factory.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.FALSE);
- return factory;
- }
- };
-
- public static final ThreadLocal<XMLOutputFactory> THREADLOCAL_XML_OUTPUT_FACTORY = new ThreadLocal<XMLOutputFactory>() {
- @Override
- protected XMLOutputFactory initialValue() {
- XMLOutputFactory factory = XMLOutputFactory.newInstance();
- factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.FALSE);
- return factory;
+ private static final Logger LOG = LoggerFactory.getLogger(XMLUtils.class);
+
+ private static final XMLInputFactory XML_INPUT_FACTORY = XMLInputFactory.newInstance();
+ static {
+ try {
+ XML_INPUT_FACTORY.setProperty("reuse-instance", Boolean.FALSE);
+ LOG.warn("You are using an unsupported StAX parser.");
+ } catch (IllegalArgumentException ex) {
+ }
+
+ XML_INPUT_FACTORY.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
+ XML_INPUT_FACTORY.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.FALSE);
+ XML_INPUT_FACTORY.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.FALSE);
+ }
+
+ private static final XMLOutputFactory XML_OUTPUT_FACTORY = XMLOutputFactory.newInstance();
+ static {
+ try {
+ XML_OUTPUT_FACTORY.setProperty("reuse-instance", Boolean.FALSE);
+ LOG.warn("You are using an unsupported StAX parser.");
+ } catch (IllegalArgumentException ex) {
}
- };
+
+ XML_OUTPUT_FACTORY.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.FALSE);
+ }
// --------------
// --- writer ---
@@ -62,7 +70,7 @@ public class XMLUtils {
* Creates a new XML writer.
*/
public static XMLStreamWriter createWriter(OutputStream out) throws XMLStreamException {
- return THREADLOCAL_XML_OUTPUT_FACTORY.get().createXMLStreamWriter(out, "UTF-8");
+ return XML_OUTPUT_FACTORY.createXMLStreamWriter(out, "UTF-8");
}
/**
@@ -178,7 +186,7 @@ public class XMLUtils {
* Creates a new XML parser with OpenCMIS default settings.
*/
public static XMLStreamReader createParser(InputStream stream) throws XMLStreamException {
- return THREADLOCAL_XML_INPUT_FACTORY.get().createXMLStreamReader(stream);
+ return XML_INPUT_FACTORY.createXMLStreamReader(stream);
}
/**
@@ -277,12 +285,4 @@ public class XMLUtils {
return sb.toString();
}
-
- /**
- * Clears out cached XML factories.
- */
- public static void clear() {
- THREADLOCAL_XML_INPUT_FACTORY.remove();
- THREADLOCAL_XML_OUTPUT_FACTORY.remove();
- }
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/misc/DateTimeTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/misc/DateTimeTest.java?rev=1456955&r1=1456954&r2=1456955&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/misc/DateTimeTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/misc/DateTimeTest.java Fri Mar 15 13:53:44 2013
@@ -143,7 +143,7 @@ public class DateTimeTest {
cal1.set(2012, 11, 24, 9, 10, 11);
cal1.set(Calendar.MILLISECOND, 0);
- String dateStr1 = DateTimeHelper.formateHttpDateTime(cal1.getTime());
+ String dateStr1 = DateTimeHelper.formatHttpDateTime(cal1.getTime());
assertEquals("Mon, 24 Dec 2012 09:10:11 GMT", dateStr1);
Date date1 = DateTimeHelper.parseHttpDateTime(dateStr1);
@@ -154,7 +154,7 @@ public class DateTimeTest {
cal2.set(2013, 0, 1, 2, 3, 4);
cal2.set(Calendar.MILLISECOND, 0);
- String dateStr2 = " '" + DateTimeHelper.formateHttpDateTime(cal2.getTimeInMillis()) + "' ";
+ String dateStr2 = " '" + DateTimeHelper.formatHttpDateTime(cal2.getTimeInMillis()) + "' ";
Date date2 = DateTimeHelper.parseHttpDateTime(dateStr2);
assertEquals(cal2.getTime(), date2);
@@ -163,7 +163,7 @@ public class DateTimeTest {
cal3.set(2012, 11, 24, 9, 10, 11);
cal3.set(Calendar.MILLISECOND, 0);
- String dateStr3 = DateTimeHelper.formateHttpDateTime(cal3);
+ String dateStr3 = DateTimeHelper.formatHttpDateTime(cal3);
Date date3 = DateTimeHelper.parseHttpDateTime(dateStr3);
assertEquals(cal3.getTime(), date3);
@@ -183,6 +183,14 @@ public class DateTimeTest {
String dateStr5 = "Sun Nov 6 08:49:37 1994";
assertEquals(cal5.getTime(), DateTimeHelper.parseHttpDateTime(dateStr5));
+
+ GregorianCalendar cal6 = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
+ cal6.set(1994, 10, 16, 8, 49, 37);
+ cal6.set(Calendar.MILLISECOND, 0);
+
+ String dateStr6 = "Sun Nov 16 08:49:37 1994";
+
+ assertEquals(cal6.getTime(), DateTimeHelper.parseHttpDateTime(dateStr6));
}
@Test
@@ -204,8 +212,5 @@ public class DateTimeTest {
// invalid day
assertNull(DateTimeHelper.parseHttpDateTime("Mon, xy Dec 2012 09:10:11 GMT"));
-
- // invalid week day
- assertNull(DateTimeHelper.parseHttpDateTime("abc, 24 Dec 2012 09:10:11 GMT"));
}
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomDocumentBase.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomDocumentBase.java?rev=1456955&r1=1456954&r2=1456955&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomDocumentBase.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomDocumentBase.java Fri Mar 15 13:53:44 2013
@@ -92,7 +92,7 @@ public abstract class AtomDocumentBase e
* Writes an Atom updated tag.
*/
public void writeUpdated(long updated) throws XMLStreamException {
- String updatedStr = DateTimeHelper.formateHttpDateTime(updated);
+ String updatedStr = DateTimeHelper.formatHttpDateTime(updated);
XMLUtils.write(getWriter(), XMLConstants.PREFIX_APP, XMLConstants.NAMESPACE_APP, "edited", updatedStr);
XMLUtils.write(getWriter(), XMLConstants.PREFIX_ATOM, XMLConstants.NAMESPACE_ATOM, "updated", updatedStr);
}
@@ -109,7 +109,7 @@ public abstract class AtomDocumentBase e
*/
public void writePublished(long published) throws XMLStreamException {
XMLUtils.write(getWriter(), XMLConstants.PREFIX_ATOM, XMLConstants.NAMESPACE_ATOM, "published",
- DateTimeHelper.formateHttpDateTime(published));
+ DateTimeHelper.formatHttpDateTime(published));
}
/**
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java?rev=1456955&r1=1456954&r2=1456955&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java Fri Mar 15 13:53:44 2013
@@ -562,7 +562,7 @@ public final class ObjectService {
}
}
- response.setHeader("Last-Modified", DateTimeHelper.formateHttpDateTime(lastModifiedSecs * 1000));
+ response.setHeader("Last-Modified", DateTimeHelper.formatHttpDateTime(lastModifiedSecs * 1000));
}
}