~ubuntu-branches/ubuntu/utopic/apache-mime4j/utopic-proposed

« back to all changes in this revision

Viewing changes to dom/src/main/java/org/apache/james/mime4j/field/ContentLanguageFieldImpl.java

  • Committer: Package Import Robot
  • Author(s): David Paleino
  • Date: 2013-11-03 11:13:27 UTC
  • mfrom: (2.1.2 experimental)
  • Revision ID: package-import@ubuntu.com-20131103111327-09huep00ex05z113
Tags: 0.7.2-2
* Upload to unstable
* Fixed Vcs-* fields in debian/control
* Updated debian/watch
* Standards-Version bump to 3.9.5, no changes needed

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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   *
 
9
 *                                                              *
 
10
 *   http://www.apache.org/licenses/LICENSE-2.0                 *
 
11
 *                                                              *
 
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
 ****************************************************************/
 
19
 
 
20
package org.apache.james.mime4j.field;
 
21
 
 
22
import java.io.StringReader;
 
23
import java.util.ArrayList;
 
24
import java.util.Collections;
 
25
import java.util.List;
 
26
 
 
27
import org.apache.james.mime4j.codec.DecodeMonitor;
 
28
import org.apache.james.mime4j.dom.FieldParser;
 
29
import org.apache.james.mime4j.dom.field.ContentLanguageField;
 
30
import org.apache.james.mime4j.field.language.parser.ContentLanguageParser;
 
31
import org.apache.james.mime4j.field.language.parser.ParseException;
 
32
import org.apache.james.mime4j.stream.Field;
 
33
 
 
34
/**
 
35
 * Represents a <code>Content-Transfer-Encoding</code> field.
 
36
 */
 
37
public class ContentLanguageFieldImpl extends AbstractField implements ContentLanguageField {
 
38
 
 
39
    private boolean parsed = false;
 
40
    private List<String> languages;
 
41
    private ParseException parseException;
 
42
 
 
43
    ContentLanguageFieldImpl(Field rawField, DecodeMonitor monitor) {
 
44
        super(rawField, monitor);
 
45
    }
 
46
 
 
47
    private void parse() {
 
48
        parsed = true;
 
49
        languages = Collections.<String>emptyList();
 
50
        String body = getBody();
 
51
        if (body != null) {
 
52
            ContentLanguageParser parser = new ContentLanguageParser(new StringReader(body));
 
53
            try {
 
54
                languages = parser.parse();
 
55
            } catch (ParseException ex) {
 
56
                parseException = ex;
 
57
            }
 
58
        }
 
59
    }
 
60
 
 
61
    @Override
 
62
    public org.apache.james.mime4j.dom.field.ParseException getParseException() {
 
63
        return parseException;
 
64
    }
 
65
 
 
66
    public List<String> getLanguages() {
 
67
        if (!parsed) {
 
68
            parse();
 
69
        }
 
70
        return new ArrayList<String>(languages);
 
71
    }
 
72
 
 
73
    public static final FieldParser<ContentLanguageField> PARSER = new FieldParser<ContentLanguageField>() {
 
74
 
 
75
        public ContentLanguageField parse(final Field rawField, final DecodeMonitor monitor) {
 
76
            return new ContentLanguageFieldImpl(rawField, monitor);
 
77
        }
 
78
 
 
79
    };
 
80
 
 
81
}
 
82