1
/****************************************************************
2
* Licensed to the Apache Software Foundation (ASF) under one *
3
* or more contributor license agreements. See the NOTICE file *
4
* distributed with this work for additional information *
5
* regarding copyright ownership. The ASF licenses this file *
6
* to you under the Apache License, Version 2.0 (the *
7
* "License"); you may not use this file except in compliance *
8
* with the License. You may obtain a copy of the License at *
10
* http://www.apache.org/licenses/LICENSE-2.0 *
12
* Unless required by applicable law or agreed to in writing, *
13
* software distributed under the License is distributed on an *
14
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15
* KIND, either express or implied. See the License for the *
16
* specific language governing permissions and limitations *
17
* under the License. *
18
****************************************************************/
20
package org.apache.james.mime4j.field;
22
import java.io.StringReader;
23
import java.util.Date;
25
import org.apache.commons.logging.Log;
26
import org.apache.commons.logging.LogFactory;
27
import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
28
import org.apache.james.mime4j.field.datetime.parser.ParseException;
29
import org.apache.james.mime4j.field.datetime.parser.TokenMgrError;
30
import org.apache.james.mime4j.util.ByteSequence;
33
* Date-time field such as <code>Date</code> or <code>Resent-Date</code>.
35
public class DateTimeField extends AbstractField {
36
private static Log log = LogFactory.getLog(DateTimeField.class);
38
private boolean parsed = false;
41
private ParseException parseException;
43
DateTimeField(String name, String body, ByteSequence raw) {
44
super(name, body, raw);
47
public Date getDate() {
55
public ParseException getParseException() {
59
return parseException;
62
private void parse() {
63
String body = getBody();
66
date = new DateTimeParser(new StringReader(body)).parseAll()
68
} catch (ParseException e) {
69
if (log.isDebugEnabled()) {
70
log.debug("Parsing value '" + body + "': " + e.getMessage());
73
} catch (TokenMgrError e) {
74
if (log.isDebugEnabled()) {
75
log.debug("Parsing value '" + body + "': " + e.getMessage());
77
parseException = new ParseException(e.getMessage());
83
static final FieldParser PARSER = new FieldParser() {
84
public ParsedField parse(final String name, final String body,
85
final ByteSequence raw) {
86
return new DateTimeField(name, body, raw);