~ubuntu-branches/ubuntu/saucy/apache-mime4j/saucy

« back to all changes in this revision

Viewing changes to src/main/java/org/apache/james/mime4j/parser/EntityStateMachine.java

  • Committer: Bazaar Package Importer
  • Author(s): David Paleino
  • Date: 2010-07-13 09:28:28 UTC
  • Revision ID: james.westby@ubuntu.com-20100713092828-g6wafdtidgmtx7su
Tags: upstream-0.6
ImportĀ upstreamĀ versionĀ 0.6

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
}