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

« back to all changes in this revision

Viewing changes to src/main/java/org/apache/james/mime4j/parser/EntityStateMachine.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.parser;
21
 
 
22
 
import org.apache.james.mime4j.MimeException;
23
 
import org.apache.james.mime4j.descriptor.BodyDescriptor;
24
 
 
25
 
import java.io.IOException;
26
 
import java.io.InputStream;
27
 
 
28
 
/**
29
 
 * Represents the interal state of a MIME entity, which is being retrieved 
30
 
 * from an input stream by a MIME parser.
31
 
 */
32
 
public interface EntityStateMachine {
33
 
 
34
 
    /**
35
 
     * Return the current state of the entity.
36
 
     * 
37
 
     * @see EntityStates
38
 
     * 
39
 
     * @return current state
40
 
     */
41
 
    int getState();
42
 
    
43
 
    /**
44
 
     * Sets the current recursion mode.
45
 
     * The recursion mode specifies the approach taken to parsing parts.
46
 
     * {@link RecursionMode#M_RAW} mode does not parse the part at all.
47
 
     * {@link RecursionMode#M_RECURSE} mode recursively parses each mail
48
 
     * when an <code>message/rfc822</code> part is encounted;
49
 
     * {@link RecursionMode#M_NO_RECURSE} does not.
50
 
     * 
51
 
     * @see RecursionMode
52
 
     * 
53
 
     * @param recursionMode
54
 
     */
55
 
    void setRecursionMode(int recursionMode);
56
 
    
57
 
    /**
58
 
     * Advances the state machine to the next state in the 
59
 
     * process of the MIME stream parsing. This method 
60
 
     * may return an new state machine that represents an embedded 
61
 
     * entity, which must be parsed before the parsing process of 
62
 
     * the current entity can proceed.
63
 
     * 
64
 
     * @return a state machine of an embedded entity, if encountered, 
65
 
     * <code>null</code> otherwise.
66
 
     *  
67
 
     * @throws IOException if an I/O error occurs.
68
 
     * @throws MimeException if the message can not be processed due 
69
 
     *  to the MIME specification violation.
70
 
     */
71
 
    EntityStateMachine advance() throws IOException, MimeException;
72
 
    
73
 
    /**
74
 
     * Returns description of the entity body.
75
 
     * 
76
 
     * @return body description
77
 
     * 
78
 
     * @throws IllegalStateException if the body description cannot be
79
 
     *  obtained at the current stage of the parsing process. 
80
 
     */
81
 
    BodyDescriptor getBodyDescriptor() throws IllegalStateException;
82
 
    
83
 
    /**
84
 
     * Returns content stream of the entity body.
85
 
     * 
86
 
     * @return input stream
87
 
     * 
88
 
     * @throws IllegalStateException if the content stream cannot be
89
 
     *  obtained at the current stage of the parsing process. 
90
 
     */
91
 
    InputStream getContentStream() throws IllegalStateException;
92
 
 
93
 
    /**
94
 
     * Returns current header field.
95
 
     * 
96
 
     * @return header field
97
 
     * 
98
 
     * @throws IllegalStateException if a header field cannot be
99
 
     *  obtained at the current stage of the parsing process. 
100
 
     */
101
 
    Field getField() throws IllegalStateException;
102
 
    
103
 
}